IoCreateDevice вылетает под Вистой

Тема в разделе "WASM.NT.KERNEL", создана пользователем Weberd, 19 июн 2007.

  1. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    Пример к статье "Перехват функций Windows NT". Под Вистой IoCreateDevice выдает
    NT_STATUS_OBJECT_NAME_COLLISION
    Код (Text):
    1. PCWSTR dDeviceName       = L"\\Device\\NoTerminate";
    2. PCWSTR dSymbolicLinkName = L"\\DosDevices\\NoTerminate";
    3.  
    4. DPRINT("Driver loaded");
    5.  
    6. RtlInitUnicodeString(&DeviceName,       dDeviceName);
    7. RtlInitUnicodeString(&SymbolicLinkName, dSymbolicLinkName);
    8.    
    9.     st = IoCreateDevice(DriverObject,  // указатель на DriverObject
    10.                         0,           // размер дополнительной памяти связанной с устройством
    11.                         &DeviceName,     // имя создаваемого устройства
    12.                                 FILE_DEVICE_NULL,// тип создаваемого устройства  
    13.                 0,               // характеристики устройства
    14.                                 FALSE,           // "эксклюзивное" устройство
    15.                 &deviceObject);  // указатель на обьект устройства
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Код (Text):
    1. //
    2. // MessageId: STATUS_OBJECT_NAME_COLLISION
    3. //
    4. // MessageText:
    5. //
    6. //  Object Name already exists.
    7. //
    8. #define STATUS_OBJECT_NAME_COLLISION     ((NTSTATUS)0xC0000035L)
    девайс с таким именем уже существует.
     
  3. Weberd

    Weberd New Member

    Публикаций:
    0
    Регистрация:
    14 июн 2007
    Сообщения:
    67
    по названию, то я понял что сообщение означает, но не поверил, что в Висте уже есть устройство NoTerminate. хммм... в следующий раз буду подключать голову :)
     
  4. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Возможно штатно его и нет, а появилось оно в результате твоих же экспериментов. Поищи WinObjEx'ом сразу после ребута.