在WDM驱动中获得PCI卡的物理Slot号的方法

在WDM驱动中获得PCI卡的物理Slot号的方法

在WDM驱动中如何获得PCI卡的物理Slot号?

系统提供了一个函数 IoGetDeviceProperty() 来实现这个功能。该函数的声明如下:

NTSTATUS
IoGetDeviceProperty(
 IN PDEVICE_OBJECT  DeviceObject,
 IN DEVICE_REGISTRY_PROPERTY DeviceObject,
 IN DEVICE_REGISTRY_PROPERTY DeviceProperty,
 IN ULONG BufferLength,
 OUT PVOID BufferLength,
 OUT PVOID PropertyBuffer,
 OUT PULONG ResultLength
 );

当参数 DeviceProperty = DevicePropertyUINumber 时取回的就是PCI卡的物理Slot号。示例如下:

ULONG ulUINumber;
IoGetDeviceProperty(
pdo,
DevicePropertyUINumber,
sizeof( ULONG ),
( PVOID ) &ulUINumber,
&ulLength );
pdo参数可以在你的功能驱动的AddDevice例程中由BUS Driver传过来。