BUS_INTERFACE_STANDARD struttura (wdm.h)
La struttura dell'interfaccia BUS_INTERFACE_STANDARD consente ai driver di dispositivo di effettuare chiamate dirette alle routine del driver del bus padre. Questa struttura definisce l'interfaccia GUID_BUS_INTERFACE_STANDARD .
Sintassi
typedef struct _BUS_INTERFACE_STANDARD {
USHORT Size;
USHORT Version;
PVOID Context;
PINTERFACE_REFERENCE InterfaceReference;
PINTERFACE_DEREFERENCE InterfaceDereference;
PTRANSLATE_BUS_ADDRESS TranslateBusAddress;
PGET_DMA_ADAPTER GetDmaAdapter;
PGET_SET_DEVICE_DATA SetBusData;
PGET_SET_DEVICE_DATA GetBusData;
} BUS_INTERFACE_STANDARD, *PBUS_INTERFACE_STANDARD;
Members
Size
Dimensione, in byte, della struttura.
Version
Versione dell'interfaccia definita dal driver.
Context
Puntatore a informazioni di contesto specifiche dell'interfaccia.
InterfaceReference
Puntatore a una routine InterfaceReference che incrementa il numero di riferimenti dell'interfaccia.
InterfaceDereference
Puntatore a una routine InterfaceDereference che decreta il conteggio dei riferimenti dell'interfaccia.
TranslateBusAddress
Puntatore a una routine TranslateBusAddress che converte gli indirizzi nel bus padre in indirizzi logici.
GetDmaAdapter
Puntatore a una routine GetDmaAdapter che restituisce una struttura di adattatore DMA (DMA_ADAPTER) per il dispositivo di destinazione.
SetBusData
Puntatore a una routine SetBusData che scrive i dati nello spazio di configurazione del dispositivo.
GetBusData
Puntatore a una routine GetBusData che legge i dati dallo spazio di configurazione del dispositivo.
Commenti
La struttura BUS_INTERFACE_STANDARD è un'estensione della struttura INTERFACE .
Alcune operazioni su un dispositivo sono riservate per il driver del bus padre del dispositivo. Queste operazioni possono includere l'accesso allo spazio di configurazione specifico del dispositivo di un bus o di programmazione di un controller DMA.
Per leggere o scrivere nello spazio di configurazione di un dispositivo, un driver del dispositivo deve basarsi sull'agenzia del conducente del bus in uno dei due modi seguenti:
Inviando i pacchetti di richiesta I/O (IRP) IRP_MN_READ_CONFIG e IRP_MN_WRITE_CONFIG al driver del bus.
Recuperando un'interfaccia dal driver del bus. Il driver del dispositivo può quindi accedere allo spazio di configurazione del dispositivo eseguendo chiamate dirette alle routine del driver del bus fornite dalla struttura dell'interfaccia BUS_INTERFACE_STANDARD . Le routine membro, GetBusData e SetBusData, possono essere usate rispettivamente per leggere e scrivere nello spazio di configurazione di un dispositivo.
Per altre informazioni sui modi per accedere allo spazio di configurazione, vedere Accesso allo spazio di configurazione del dispositivo.
Alcuni tipi di dispositivi, ad esempio un dispositivo di archiviazione con mastering del bus, dispongono di controller DMA su scheda. Tuttavia, i driver di dispositivo per questi dispositivi non possono programmare direttamente questi controller DMA. Devono invece basarsi sulle routine fornite dal conducente del bus padre. Per un driver di dispositivo per programmare il controller DMA per il dispositivo, deve prima richiedere un oggetto adapter dal driver del bus padre. L'oggetto adapter contiene le routine fornite dal driver del bus che può essere usato per programmare il controller DMA del dispositivo. I driver di dispositivo devono basarsi sul BUS_INTERFACE_STANDARD, direttamente o indirettamente, per ottenere l'oggetto adapter.
Se il driver viene eseguito in IRQL = PASSIVE_LEVEL, deve ottenere un oggetto adattatore DMA del dispositivo chiamando IoGetDmaAdapter. IoGetDmaAdapter rileva se il driver del bus supporta l'interfaccia di BUS_INTERFACE_STANDARD . In caso contrario, IoGetDmaAdapter chiama la routine a cui fa riferimento il membro GetDmaAdapter di questa interfaccia per ottenere l'oggetto adapter. In caso contrario, IoGetDmaAdapter chiama una routine legacy equivalente.
Tuttavia, se un driver deve ottenere un oggetto adapter durante l'esecuzione in IRQL >= DISPATCH_LEVEL, non può farlo con IoGetDmaAdapter. In questo caso, il driver deve eseguire una query per l'interfaccia BUS_INTERFACE_STANDARD mentre è ancora in IRQL = PASSIVE_LEVEL usando IRP_MN_QUERY_INTERFACE.
Requisiti
Requisito | Valore |
---|---|
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |