функция обратного вызова GET_SET_DEVICE_DATA (wdm.h)
Подпрограмма GetBusData считывает данные из пространства конфигурации устройства.
GET_SET_DEVICE_DATA GetSetDeviceData;
ULONG GetSetDeviceData(
[in] PVOID Context,
[in] ULONG DataType,
[in] PVOID Buffer,
[in] ULONG Offset,
[in] ULONG Length
)
{...}
[in] Context
Указатель на сведения о контексте для интерфейса. Вызывающий объект передает значение, передаваемое как элемент контекста контекста элемента структуры BUS_INTERFACE_STANDARD для интерфейса.
[in] DataType
Тип считываемых данных шины. Дополнительные сведения см. в обсуждении параметра WhichSpace в IRP_MN_READ_CONFIG.
[in] Buffer
Указатель на буфер, содержащий сведения о конфигурации, которые будут считываться из пространства конфигурации устройства.
[in] Offset
Смещение в данные устройства, относящиеся к шине, где начинается эта операция чтения. Например, если параметр DataTypePCI_WHICHSPACE_CONFIG, значение параметра Offset является смещением в пространство конфигурации PCI.
[in] Length
Длина данных в байтах для чтения.
Подпрограмма getBusData возвращает длину в байтах данных конфигурации, считываемых после успешной операции чтения. Если операция чтения не выполнена, возвращается значение нуля.
В зависимости от значения параметра dataType подпрограмма GetBusData может вызываться только из уровней запросов прерывания (IRQLs), определенных в следующей таблице.
значение DataType | IRQL |
---|---|
PCI_WHICHSPACE_CONFIG | <= DIRQL |
PCI_WHICHSPACE_ROM | <= APC_LEVEL |
PCCARD_COMMON_MEMORY
PCCARD_COMMON_MEMORY_INDIRECT |
<= DISPATCH_LEVEL |
PCCARD_ATTRIBUTE_MEMORY
PCCARD_ATTRIBUTE_MEMORY_INDIRECT |
<= DISPATCH_LEVEL |
PCCARD_PCI_CONFIGURATION_SPACE | <= DIRQL |
Следующие примечания применяются к драйверам для виртуальных функций PCI Express (PCIe) на устройствах, поддерживающих единый корневой интерфейс виртуализации ввода-вывода (SR-IOV):
- Драйверы для виртуальных машин PCIe должны вызывать подпрограмму GetBusData в IRQL <= APC_LEVEL.
- Чтобы считывать данные конфигурации PCI для VF в IRQL = DISPATCH_LEVEL, драйвер должен выдавать запросы ввода-вывода IRP_MN_READ_CONFIG.
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | wdm.h (include Ntddk.h) |
IRQL | См. раздел "Примечания". |