C добрым утром ALL! Или уже день...
Вот заколбасил я на стороне драйвера обработчик вызовов IRP_MJ_DEVICE_CONTROL.
А вот как из API до него добраться, непонимаю.
Вот так вот драйвер инициализируется:
IoCreateDevice( DriverObject,
sizeof(DEVICE_EXTENSION),
NULL,
FILE_DEVICE_KEYBOARD,
0,
FALSE,
&device );
//.....
IoAttachDevice( device,
L"\\Device\\KeyboardClass0",
//На самом деле здесь PUNICODE_STRING, но так короче и нагляднее.
&devExt->TopOfStack );
А потом хочу достучаться до него через IOCTL:
TCHAR dev[]="\\Device\\KeyboardClass0";
//TCHAR dev[]="\\\\.\\Device\\KeyboardClass0";
HANDLE hKeyDev=CreateFile(dev,MAXIMUM_ALLOWED, FILE_SHARE_WRITE,NULL, OPEN_EXISTING,NULL,NULL);
if(hKeyDev==INVALID_HANDLE_VALUE)
{
MessageBox("Can't open device!","ERROR");
return;
}
Вот и получаю INVALID_HANDLE_VALUE. А как правильно?