по поводу имени... вы символическую ссылку как создали?
я обычно делаю так:
#define PCI_DEVICE_NAME_1 L"\\Device\\имя_1" //имя физического устройства (device)
#define DOS_DEVICE_NAME_1 L"\\DosDevices\\имя_драйвера_1"
RtlInitUnicodeString(&uniNtDeviceName,PCI_DEVICE_NAME_1);
status = IoCreateDevice( DriverObject,
sizeof(DEVICE_EXTENSION_MY),
&uniNtDeviceName, //имя
FILE_DEVICE_UNKNOWN, //тип
0, //FILE_AUTOGENERATED_DEVICE_NAME, //характеристики
FALSE, //эксклюзивность процесса(толкьо один handle)
&DeviceObject);
RtlInitUnicodeString(&uniWin32NameString, DOS_DEVICE_NAME_1);
status = IoCreateSymbolicLink(&uniWin32NameString,&uniNtDeviceName);
обращаюсь по DOS_DEVICE_NAME_1
а проверить - запустите DDK3790.1830\tools\devicetree\x86\devicetree.exe
и посмотрите зарегистрированные имена.
вторая причина в DriverEntry должны быть определены:
DriverObject->MajorFunction[IRP_MJ_CREATE]
и IRP_MJ_CLOSE, IRP_MJ_READ, IRP_MJ_WRITE (или IRP_MJ_DEVICE_CONTROL) смотря как интерфейс писать.
PS ну и само собой без ошибок в них)