Condividi tramite


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)

Vedi anche

DEVICE_DESCRIPTION

DMA_ADAPTER

GUID_BUS_INTERFACE_STANDARD

GetBusData

GetDmaAdapter

INTERFACCIA

IRP_MN_QUERY_INTERFACE

IRP_MN_READ_CONFIG

IRP_MN_WRITE_CONFIG

InterfaceDereference

InterfaceReference

IoGetDmaAdapter

SetBusData

TranslateBusAddress