在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传过来。