BUS_INTERFACE_STANDARD 結構 (wdm.h)

BUS_INTERFACE_STANDARD介面結構可讓設備驅動器直接呼叫父總線驅動程式例程。 這個結構會定義 GUID_BUS_INTERFACE_STANDARD 介面。

語法

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;

成員

Size

這個結構的大小,以位元組為單位。

Version

驅動程式定義的介面版本。

Context

介面特定內容資訊的指標。

InterfaceReference

InterfaceReference 例程的指標,這個例程會遞增介面的參考計數。

InterfaceDereference

InterfaceDereference 例程的指標,會遞減介面的參考計數。

TranslateBusAddress

TranslateBusAddress 例程的指標,可將父總線上的地址轉譯為邏輯位址。

GetDmaAdapter

GetDmaAdapter 例程的指標,傳回目標裝置的 DMA 配接器結構 (DMA_ADAPTER) 。

SetBusData

SetBusData 例程的指標,會將數據寫入裝置的設定空間。

GetBusData

GetBusData 例程的指標,可從裝置的設定空間讀取數據。

備註

BUS_INTERFACE_STANDARD 結構是 INTERFACE 結構的延伸。

裝置上的某些作業會保留給裝置的父總線驅動程式。 這些作業可能包括存取總線的裝置特定設定空間,或設計 DMA 控制器的程序設計。

若要讀取或寫入裝置的設定空間,裝置驅動程式必須透過下列兩種方式之一依賴總線驅動程序的機構:

  • 藉由將 I/O 要求封包傳送至總線驅動程式, (IRP) IRP_MN_READ_CONFIGIRP_MN_WRITE_CONFIG

  • 從總線驅動程式取得介面。 然後,裝置驅動程式可以透過直接呼叫 BUS_INTERFACE_STANDARD 介面結構所提供的總線驅動程式例程,來存取其裝置的設定空間。 其成員例程 GetBusDataSetBusData 可用來分別讀取和寫入裝置的設定空間。

如需存取設定空間方式的詳細資訊,請參閱 存取裝置設定空間

某些類型的裝置,例如總線主控儲存設備,具有內建 DMA 控制器。 不過,這些裝置的設備驅動器無法直接程式設計這些 DMA 控制器。 相反地,它們必須依賴父總線驅動程式所提供的例程。 若要讓裝置驅動程式為其裝置設計 DMA 控制器,它必須先向父總線驅動程式要求配接器物件。 配接器物件包含總線驅動程式所提供的例程,可用來設計裝置的 DMA 控制器。 設備驅動器必須直接或間接依賴 BUS_INTERFACE_STANDARD,才能取得配接器物件。

如果驅動程式在 IRQL = PASSIVE_LEVEL執行,它應該呼叫 IoGetDmaAdapter 來取得裝置的 DMA 配接器物件。 IoGetDmaAdapter 會偵測總線驅動程式是否支援 BUS_INTERFACE_STANDARD 介面。 如果這樣做, IoGetDmaAdapter 會呼叫這個介面 GetDmaAdapter 成員所指向的例程,以取得配接器物件。 否則, IoGetDmaAdapter 會呼叫對等的舊版例程。

不過,如果驅動程式必須在 IRQL >= DISPATCH_LEVEL上執行時取得配接器物件,它就無法搭配 IoGetDmaAdapter 執行。 在此情況下,驅動程式必須使用 IRP_MN_QUERY_INTERFACE,在 IRQL = PASSIVE_LEVEL 查詢BUS_INTERFACE_STANDARD介面。

規格需求

需求
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)

另請參閱

DEVICE_DESCRIPTION

DMA_ADAPTER

GUID_BUS_INTERFACE_STANDARD

GetBusData

GetDmaAdapter

介面

IRP_MN_QUERY_INTERFACE

IRP_MN_READ_CONFIG

IRP_MN_WRITE_CONFIG

InterfaceDereference

InterfaceReference

IoGetDmaAdapter

SetBusData

TranslateBusAddress