Пример к статье "Перехват функций Windows NT". Под Вистой IoCreateDevice выдает NT_STATUS_OBJECT_NAME_COLLISION Код (Text): PCWSTR dDeviceName = L"\\Device\\NoTerminate"; PCWSTR dSymbolicLinkName = L"\\DosDevices\\NoTerminate"; DPRINT("Driver loaded"); RtlInitUnicodeString(&DeviceName, dDeviceName); RtlInitUnicodeString(&SymbolicLinkName, dSymbolicLinkName); st = IoCreateDevice(DriverObject, // указатель на DriverObject 0, // размер дополнительной памяти связанной с устройством &DeviceName, // имя создаваемого устройства FILE_DEVICE_NULL,// тип создаваемого устройства 0, // характеристики устройства FALSE, // "эксклюзивное" устройство &deviceObject); // указатель на обьект устройства
Код (Text): // // MessageId: STATUS_OBJECT_NAME_COLLISION // // MessageText: // // Object Name already exists. // #define STATUS_OBJECT_NAME_COLLISION ((NTSTATUS)0xC0000035L) девайс с таким именем уже существует.
по названию, то я понял что сообщение означает, но не поверил, что в Висте уже есть устройство NoTerminate. хммм... в следующий раз буду подключать голову
Возможно штатно его и нет, а появилось оно в результате твоих же экспериментов. Поищи WinObjEx'ом сразу после ребута.