про TDI-драйвер

Тема в разделе "WASM.NT.KERNEL", создана пользователем buktak, 9 сен 2007.

  1. buktak

    buktak New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    84
    Создание TransportAdress и TDI-endpoint условно состоит из опрделения EA-атрибутов + вызова двух функций:
    1) ZwCreateFile(...)
    2) ObReferenceObjectByHandle(...)

    Вопрос первый (с учетом того, что мне нужно использовать протоко TCP/IP):
    при создании TransportAdress/TDI-endpoint функция ZwCreateFile(OUT PHANDLE FileHandle, ...) открывает объект "\\Device\\Tcp" или создает какой-то другой? На что будет указывать FileHandle?
     
  2. buktak

    buktak New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2007
    Сообщения:
    84
    Повнимательней посмотрел в исходник, так нписано
    Код (Text):
    1. status = ZwCreateFile(&TDI_Address_Handle,GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE,&TDI_Object_Attr,&IoStatus,0,FILE_ATTRIBUTE_NORMAL,FILE_SHARE_READ,FILE_OPEN,0,pEA_Buffer,sizeof(EA_Buffer));
    там написано FILE_OPEN, т.е. открывается устройство "\\Device\\Tcp".
    Тогда непонятно зачем функция ObReferenceObjectByHandle(...) вызывается при содании и TransportAdress, и TDI-endpoint, если по идее они должны возвращать указатель на один и тот же объект.
    ЗЫ я может как-то путанно объясняю - новичек еще в драйверах.
    ЗЫ2 ссылка на исходник, по которому спрашиваю http://slil.ru/24510633