Здравствуйте! Я пишу свой первый драйвер для PCI платы. Проблема возникла когда решил переделать драйвер для работы с несколькими устройствами (с одним все работает). Для этого в AddDevice поменял в IoCreateDevice параметр Characteristics с 0 на FILE_AUTOGENERATED_DEVICE_NAME. Как я понимаю после этого имя устройства надо получать перечислением. У меня получилось следующее:
HDEVINFO hDevinfo;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
GUID pClassGuid;
int index = 0;
pClassGuid.Data1 = 0xDB84F863;
pClassGuid.Data2 = 0x53E2;
pClassGuid.Data3 = 0x4b3f;
pClassGuid.Data4[0] = 0xAD;
pClassGuid.Data4[1] = 0x22;
pClassGuid.Data4[2] = 0xA0;
pClassGuid.Data4[3] = 0xEB;
pClassGuid.Data4[4] = 0x79;
pClassGuid.Data4[5] = 0x5D;
pClassGuid.Data4[6] = 0x87;
pClassGuid.Data4[7] = 0x11;
//GUID моего класса устройств, который я прописываю в Inf-файле
do{
hDevinfo = SetupDiGetClassDevs(&pClassGuid, NULL, NULL,
DIGCF_DEVICEINTERFACE |DIGCF_PRESENT);
//hDevinfo в любом случае мне выдает НЕ INVALID_HANDLE_VALUE!!! Даже если подаю заведомо ложный GUID
if(hDevinfo == INVALID_HANDLE_VALUE)
{
return INVALID_HANDLE_VALUE;
}
if (!SetupDiEnumDeviceInterfaces( hDevinfo, NULL, &pClassGuid, index,
&DeviceInterfaceData))
{
return INVALID_HANDLE_VALUE; //Всегда происходит переход на эту ветку!
}
Искал свой GUID в реестре, нашел только в ветках типа HKLM\System\CurrentControlSet (ControlSet001...)\Class, а в Deviceclasses Guid отсутствует!
Где искать ошибку в драйвере, inf файле?