Нужно выполнить запись в видиобуфер из драйвера(fasm). Для того, чтобы узнать адрес использую GUID_DEVINTERFACE_DISPLAY_ADAPTER_V GUID 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99 ... invoke IoGetDeviceInterfaces,GUID_DEVINTERFACE_DISPLAY_ADAPTER_V1, NULL, DEVICE_INTERFACE_INCLUDE_NONACTIVE,pw invoke RtlInitUnicodeString,uDevName, dword[pw] invoke IoGetDeviceObjectPointer,uDevName, FILE_READ_DATA, FileObject, DeviceObject IoGetDeviceInterfaces возвращает 0, и записывает по адресу pw адрес на строку(UNICODE) с именем интерфейса, но по этому адресу лежат нули. В чём ошибка, может кто знает?
По ходу дело в GUID интерфейсе (странно брал я его из ntddvdeo.h) Вопрос: так-ли переводится команда DEFINE_GUID при компиляции на C: С: DEFINE_GUID(GUID_DEVINTERFACE_DISPLAY_ADAPTER, 0x5b45201d, 0xf2f2, 0x4f3b, 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99); FASM: dd 0x5b45201d dw 0xf2f2, 0x4f3b db 0x85, 0xbb, 0x30, 0xff, 0x1f, 0x95, 0x35, 0x99 Или я не прав? Может быть кто-то видел другое занчение для это интрефейса?
"If no device interface instances match the search criteria, this routine returns STATUS_SUCCESS and the string contains a single NULL character." и, IMHO, DEVICE_INTERFACE_INCLUDE_NONACTIVE лишний. Зачем тебе неактивные интерфейсы. GUID, вроде, правильный.
Bjarne Stroustrup, писал что всё работало: http://forum.sources.ru/index.php?showtopic=63435 Может я чего недопонял?