Re[6]: Как узнать открыто ли было устройство?
От: Аноним  
Дата: 26.03.07 19:30
Оценка: 3 (1)
Да, именно! Я уже нашел)
Если кому то интересно, делается это так:
ULONG BusNumber, propertyAddress, length;
USHORT FunctionNumber, DeviceNumber, DeviceID;
PCI_COMMON_CONFIG PCIDeviceConfig;

IoGetDeviceProperty(
    PhysicalDeviceObject,
    DevicePropertyBusNumber,
    sizeof(ULONG),
    (PVOID)&BusNumber,
    &length
    );
IoGetDeviceProperty(
    PhysicalDeviceObject,
    DevicePropertyAddress,
    sizeof(ULONG),
    (PVOID)&propertyAddress,
    &length
    );
FunctionNumber = (USHORT)((propertyAddress) & 0x0000FFFF);
DeviceNumber = (USHORT)(((propertyAddress) >> 16) & 0x0000FFFF);
HalGetBusData(
    PCIConfiguration,
    BusNumber,
    DeviceNumber | (FunctionNumber << 5),
    &PCIDeviceConfig,
    sizeof(PCIDeviceConfig)
    );
DeviceID = PCIDeviceConfig.DeviceID;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.