DuplicateHandle() и \Device\Afd

Тема в разделе "WASM.WIN32", создана пользователем ldr, 14 фев 2007.

  1. ldr

    ldr New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    5
    Доброго времени суток.

    Проблема такова: получаю список хендлов процесса с помощью NtQuerySystemInformation.

    Выбираю из них файловые, а из них - сокеты. Делаю это, проверяя имя, ассоциированное с хендлом на соответствие строке \Device\Afd.

    Но! Когда я хочу скопировать каждый из этих сокетов в свой процесс, то какой бы я хендл не выбрал - DuplicateHandle() возвращает всегда дескриптор на последнее открытое процессом подключение (тестировал на mirc.exe).

    Как решить эту проблему? Или, быть может, есть более красивый способ получения сокетов процесса?
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    Как ты вызываешь DuplicateHandle? (Какие параметры передаёшь?)
     
  3. ldr

    ldr New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    5
    За код на Delphi не бить :)

    Код (Text):
    1. ...
    2. ProcHandle := OpenProcess(PROCESS_DUP_HANDLE, False, PID);
    3. ...
    4. if DuplicateHandle(ProcHandle, Info^.Information[Loop].Handle,
    5.                          GetCurrentProcess, @CopiedHandle,
    6.                          0, False, DUPLICATE_SAME_ACCESS) then
    7. ...
    8. getpeername(CopiedHandle, r_sin, r_sin_len)
    9. ...
     
  4. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Вместо GetCurrentProcess поставь INVALID_HANDLE_VALUE, вдруг да поможет.
     
  5. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    Ошибка 10014 была но я ее победил, это из-за невнимательности. Интерес в том, что getpeername/getsockname выдают 10057 - т.е. сокет не соединен, на большей части из скопированных хэндлов сокетов.
     
  6. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    iphlpapi.dll смотри :))
    http://slow.alfamoon.com/?module=filesdb&id=1&fid=13&get=1
     
  7. slow

    slow New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2004
    Сообщения:
    615
    http://slow.alfamoon.com/?module=filesdb&id=1&fid=12&get=1