Bagikan melalui


struktur BUS_INTERFACE_STANDARD (wdm.h)

Struktur antarmuka BUS_INTERFACE_STANDARD memungkinkan driver perangkat melakukan panggilan langsung ke rutinitas driver bus induk. Struktur ini mendefinisikan antarmuka GUID_BUS_INTERFACE_STANDARD .

Sintaks

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;

Anggota

Size

Ukuran, dalam byte, dari struktur ini.

Version

Versi antarmuka yang ditentukan driver.

Context

Penunjuk ke informasi konteks khusus antarmuka.

InterfaceReference

Penunjuk ke rutinitas InterfaceReference yang menaikkan jumlah referensi antarmuka.

InterfaceDereference

Penunjuk ke rutinitas InterfaceDereference yang mengurangi jumlah referensi antarmuka.

TranslateBusAddress

Penunjuk ke rutinitas TranslateBusAddress yang menerjemahkan alamat di bus induk ke alamat logis.

GetDmaAdapter

Penunjuk ke rutinitas GetDmaAdapter yang mengembalikan struktur adaptor DMA (DMA_ADAPTER) untuk perangkat target.

SetBusData

Penunjuk ke rutinitas SetBusData yang menulis data ke ruang konfigurasi perangkat.

GetBusData

Penunjuk ke rutinitas GetBusData yang membaca data dari ruang konfigurasi perangkat.

Keterangan

Struktur BUS_INTERFACE_STANDARD adalah perpanjangan dari struktur INTERFACE .

Beberapa operasi pada perangkat dicadangkan untuk driver bus induk perangkat. Operasi ini mungkin termasuk mengakses ruang konfigurasi khusus perangkat dari bus atau memprogram pengontrol DMA.

Untuk membaca dari atau menulis ke ruang konfigurasi perangkat, driver perangkat harus mengandalkan agensi driver bus dengan salah satu dari dua cara:

  • Dengan mengirim paket permintaan I/O (IRP) IRP_MN_READ_CONFIG dan IRP_MN_WRITE_CONFIG ke pengemudi bus.

  • Dengan mendapatkan antarmuka dari sopir bus. Driver perangkat kemudian dapat mengakses ruang konfigurasi perangkatnya dengan melakukan panggilan langsung ke rutinitas driver bus yang disediakan oleh struktur antarmuka BUS_INTERFACE_STANDARD . Anggotanya rutinitas, GetBusData dan SetBusData, masing-masing dapat digunakan untuk membaca dan menulis ke ruang konfigurasi perangkat.

Untuk informasi selengkapnya tentang cara mengakses ruang konfigurasi, lihat Mengakses Ruang Konfigurasi Perangkat.

Beberapa jenis perangkat, seperti perangkat penyimpanan yang menguasai bus, memiliki pengontrol DMA on-board. Namun, driver perangkat untuk perangkat ini tidak dapat memprogram pengontrol DMA ini secara langsung. Sebaliknya mereka harus mengandalkan rutinitas yang disediakan oleh sopir bus induk. Agar driver perangkat dapat memprogram pengontrol DMA untuk perangkatnya, ia harus terlebih dahulu meminta objek adaptor dari driver bus induk. Objek adaptor berisi rutinitas yang disediakan oleh driver bus yang dapat digunakan untuk memprogram pengontrol DMA perangkat. Driver perangkat harus mengandalkan BUS_INTERFACE_STANDARD, baik secara langsung maupun tidak langsung, untuk mendapatkan objek adaptor.

Jika driver dijalankan di IRQL = PASSIVE_LEVEL, driver harus mendapatkan objek adaptor DMA perangkat dengan memanggil IoGetDmaAdapter. IoGetDmaAdapter mendeteksi apakah driver bus mendukung antarmuka BUS_INTERFACE_STANDARD . Jika ya, IoGetDmaAdapter memanggil rutinitas yang ditujukkan oleh anggota GetDmaAdapter antarmuka ini untuk mendapatkan objek adaptor. Jika tidak, IoGetDmaAdapter memanggil rutinitas warisan yang setara.

Namun, jika driver harus mendapatkan objek adaptor saat berjalan di IRQL >= DISPATCH_LEVEL, driver tidak dapat melakukannya dengan IoGetDmaAdapter. Dalam hal ini, driver harus meminta antarmuka BUS_INTERFACE_STANDARD saat masih di IRQL = PASSIVE_LEVEL dengan menggunakan IRP_MN_QUERY_INTERFACE.

Persyaratan

Persyaratan Nilai
Header wdm.h (termasuk Wdm.h, Ntddk.h, Ntifs.h)

Lihat juga

DEVICE_DESCRIPTION

DMA_ADAPTER

GUID_BUS_INTERFACE_STANDARD

GetBusData

GetDmaAdapter

ANTARMUKA

IRP_MN_QUERY_INTERFACE

IRP_MN_READ_CONFIG

IRP_MN_WRITE_CONFIG

InterfaceDereference

InterfaceReference

IoGetDmaAdapter

SetBusData

TranslateBusAddress