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) |