struktur DXGK_SPB_INTERFACE (dispmprt.h)

Struktur DXGK_SPB_INTERFACE berisi pointer ke fungsi di Antarmuka Simple Peripheral Bus (SPB) yang dapat dipanggil windows Display Driver Model (WDDM) 1.2 dan yang lebih baru untuk memeriksa dan mengubah sumber daya SPB.

Sintaks

typedef struct _DXGK_SPB_INTERFACE {
  USHORT                 Size;
  USHORT                 Version;
  PVOID                  Context;
  PINTERFACE_REFERENCE   InterfaceReference;
  PINTERFACE_DEREFERENCE InterfaceDereference;
  NTSTATUS(HANDLE DeviceHandle,LARGE_INTEGER SpbReourceId,UNICODE_STRING *SpbResourceSubName,ACCESS_MASK DesiredAccess,ULONG ShareAccess,ULONG OpenOptions,VOID **SpbResource)              * )(OpenSpbResource;
  NTSTATUS()(HANDLE DeviceHandle,VOID *SpbResource)              * CloseSpbResource;
  NTSTATUS(ANDLE DeviceHandle,VOID *SpbResource,ULONG Length,VOID *Buffer,LARGE_INTEGER *ByteOffset,HANDLE EventHandle,IO_STATUS_BLOCK *IoStatusBlock)              * )(HReadSpbResource;
  NTSTATUS(ANDLE DeviceHandle,VOID *SpbResource,ULONG Length,VOID *Buffer,LARGE_INTEGER *ByteOffset,HANDLE EventHandle,IO_STATUS_BLOCK *IoStatusBlock)              * )(HWriteSpbResource;
  NTSTATUS(ANDLE DeviceHandle,VOID *SpbResource,ULONG IoControlCode,ULONG InBufferSize,VOID *InputBuffer,ULONG OutBufferSize,VOID *OutputBuffer,HANDLE EventHandle,IO_STATUS_BLOCK *IoStatusBlock)              * )(HSpbResourceIoControl;
} DXGK_SPB_INTERFACE, *PDXGK_SPB_INTERFACE;

Anggota

Size

Ukuran, dalam byte, dari struktur ini.

Version

Nomor versi antarmuka SPB. Konstanta nomor versi ditentukan dalam Dispmprt.h (misalnya, DXGK_SPB_INTERFACE_VERSION_1).

Context

Penunjuk ke konteks yang disediakan oleh driver miniport tampilan.

InterfaceReference

Penunjuk ke fungsi referensi antarmuka yang diimplementasikan oleh driver miniport tampilan.

InterfaceDereference

Penunjuk ke fungsi dereferensi antarmuka yang diimplementasikan oleh driver miniport tampilan.

OpenSpbResource

Membuka sumber daya Simple Peripheral Bus (SPB). Semua parameter input disediakan oleh driver miniport tampilan.

OpenSpbResource Parameter Deskripsi
DeviceHandle Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke fungsi DxgkDdiStartDevice .
SpbReourceId ID sumber daya hub sumber daya SPB.
SpbResourceSubName Penunjuk opsional ke subname sumber daya SPB Unicode.
DesiredAccess Nilai ACCESS_MASK yang menentukan akses yang diminta ke sumber daya SPB. Untuk informasi selengkapnya, lihat parameter DesiredAccess dari fungsi ZwCreateFile .
ShareAccess Jenis akses berbagi untuk file. Untuk informasi selengkapnya, lihat parameter ShareAccess dari ZwCreateFile.
OpenOptions Opsi untuk diterapkan saat membuka sumber daya SPB. Untuk informasi selengkapnya, lihat parameter CreateOptions dari ZwCreateFile.
SpbResource Penunjuk ke buffer yang digunakan untuk mengembalikan handel ke sumber daya SPB.

CloseSpbResource

Menutup sumber daya SPB. Semua parameter input disediakan oleh driver miniport tampilan.

Menutup handel objek terbuka menyebabkan handel tersebut menjadi tidak valid. Sistem juga mengurangi jumlah handel untuk objek dan memeriksa apakah objek dapat dihapus. Sistem tidak benar-benar menghapus objek sampai semua handel objek ditutup dan tidak ada penunjuk yang dirujuk yang tersisa.

Driver harus memanggil CloseSpbResource untuk menutup setiap handel yang telah dibuka dengan OpenSpbResource segera setelah handel tidak lagi diperlukan.

Penelepon CloseSpbResource tidak boleh berasumsi bahwa fungsi ini secara otomatis menunggu semua I/O selesai sebelum kembali.

CloseSpbResource Parameter Deskripsi
DeviceHandle Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke fungsi DxgkDdiStartDevice .
SpbResource Penunjuk ke sumber daya SPB yang dibuka driver miniport tampilan menggunakan fungsi OpenSpbResource .

ReadSpbResource

Membaca data dari sumber daya SPB terbuka. Semua parameter input disediakan oleh driver miniport tampilan.

Jika panggilan ke OpenSpbResource mengatur salah satu bendera OpenOptionsFILE_SYNCHRONOUS_IO_ALERT atau FILE_SYNCHRONOUS_IO_NONALERT (ditentukan dalam Wdm.h), Manajer I/O mempertahankan posisi file saat ini. Jika demikian, pemanggil ReadSpbResource dapat menentukan bahwa offset posisi file saat ini digunakan alih-alih nilai ByteOffset eksplisit. Spesifikasi ini dapat dibuat dengan menggunakan salah satu metode berikut:

  • Tentukan pointer ke nilai LARGE_INTEGER dengan anggota HighPart diatur ke -1 dan anggota LowPart diatur ke nilai yang ditentukan sistem FILE_USE_FILE_POINTER_POSITION (ditentukan dalam Wdm.h).
  • Berikan penunjuk NULL untuk ByteOffset.

ReadSpbResource memperbarui posisi file saat ini dengan menambahkan jumlah byte yang dibaca ketika menyelesaikan operasi baca, jika menggunakan posisi file saat ini yang dikelola oleh Manajer I/O.

Bahkan ketika Manajer I/O mempertahankan posisi file saat ini, pemanggil dapat mengatur ulang posisi ini dengan meneruskan nilai ByteOffset eksplisit ke ReadSpbResource. Melakukan ini secara otomatis mengubah posisi file saat ini ke nilai ByteOffset tersebut, melakukan operasi baca, lalu memperbarui posisi sesuai dengan jumlah byte yang benar-benar dibaca. Teknik ini memberikan layanan pencarian dan baca atom penelepon.

OpenSpbResource Parameter Deskripsi
DeviceHandle Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke fungsi DxgkDdiStartDevice .
SpbResource Penunjuk ke sumber daya SPB yang dibuka driver miniport tampilan menggunakan fungsi OpenSpbResource .
Panjang Ukuran, dalam byte, dari buffer yang diacu oleh parameter Buffer .
Buffer Penunjuk ke buffer yang menerima data yang dibaca dari sumber daya SPB yang ditentukan.
ByteOffset Penunjuk opsional ke variabel yang menentukan offset byte awal di sumber daya SPB tempat operasi baca akan dimulai. Jika upaya dilakukan untuk membaca di luar akhir file, ReadSpbResource mengembalikan kesalahan.
EventHandle Handel opsional untuk peristiwa yang dibuat penelepon. Jika parameter ini disediakan, pemanggil akan dimasukkan ke dalam status tunggu hingga operasi baca selesai dan peristiwa yang diberikan diatur ke status Sinyal . Parameter ini bisa NULL.
IoStatusBlock Penunjuk ke struktur IO_STATUS_BLOCK yang menerima status penyelesaian akhir dan informasi tentang operasi baca yang diminta. Anggota Informasi dari struktur IO_STATUS_BLOCK menerima jumlah byte yang benar-benar dibaca dari sumber daya SPB.

WriteSpbResource

Menulis data ke sumber daya SPB terbuka.

Jika panggilan ke fungsi OpenSpbResource hanya mengatur bendera DesiredAccessFILE_APPEND_DATA, parameter ByteOffset diabaikan. Dalam hal ini, data dalam buffer yang diacu oleh parameter Buffer , untuk Byte panjang , ditulis mulai dari akhir file saat ini.

Jika panggilan ke OpenSpbResource mengatur salah satu bendera CreateOptions , FILE_SYNCHRONOUS_IO_ALERT atau FILE_SYNCHRONOUS_IO_NONALERT, Manajer I/O mempertahankan posisi file saat ini. Jika demikian, pemanggil WriteSpbResource dapat menentukan bahwa offset posisi file saat ini digunakan alih-alih nilai ByteOffset eksplisit. Spesifikasi ini dapat dibuat dengan menggunakan salah satu metode berikut:

  • Tentukan penunjuk ke nilai LARGE_INTEGER dengan anggota HighPart diatur ke -1 dan anggota LowPart diatur ke nilai yang ditentukan sistem FILE_USE_FILE_POINTER_POSITION (ditentukan dalam Wdm.h).
  • Berikan penunjuk NULL untuk ByteOffset.

WriteSpbResource memperbarui posisi file saat ini dengan menambahkan jumlah byte yang ditulis ketika menyelesaikan operasi tulis, jika menggunakan posisi file saat ini yang dikelola oleh Manajer I/O.

Bahkan ketika Manajer I/O mempertahankan posisi file saat ini, pemanggil dapat mengatur ulang posisi ini dengan meneruskan nilai ByteOffset eksplisit ke WriteSpbResource. Melakukan ini secara otomatis mengubah posisi file saat ini ke nilai ByteOffset tersebut, melakukan operasi tulis, lalu memperbarui posisi sesuai dengan jumlah byte yang benar-benar ditulis. Teknik ini memberikan layanan pencarian dan penulisan atom penelepon.

Dimungkinkan juga untuk menyebabkan operasi tulis dimulai di akhir file saat ini dengan menentukan untuk ByteOffset pointer ke nilai LARGE_INTEGER dengan HighPart diatur ke -1 dan LowPart diatur ke FILE_WRITE_TO_END_OF_FILE. Ini berfungsi terlepas dari apakah Manajer I/O mempertahankan posisi file saat ini.

WriteSpbResource Parameter Deskripsi
DeviceHandle Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke fungsi DxgkDdiStartDevice .
SpbResource Penunjuk ke sumber daya SPB yang dibuka driver miniport tampilan menggunakan fungsi OpenSpbResource .
Panjang Ukuran, dalam byte, dari buffer yang ditujukkan oleh parameter Buffer .
Buffer Penunjuk ke buffer yang dialokasikan pemanggil yang berisi data yang akan ditulis ke sumber daya SPB yang ditentukan.
ByteOffset Penunjuk opsional ke variabel yang menentukan offset byte awal di sumber daya SPB tempat operasi tulis akan dimulai. Jika parameter Length dan ByteOffset menentukan operasi tulis melewati tanda akhir file saat ini, WriteSpbResource secara otomatis memperluas file dan memperbarui tanda akhir file; byte apa pun yang tidak ditulis secara eksplisit antara tanda akhir file lama dan baru tersebut didefinisikan nol.
EventHandle Handel opsional untuk peristiwa yang dibuat penelepon. Jika parameter ini disediakan, penelepon akan dimasukkan ke dalam status tunggu hingga operasi tulis selesai dan peristiwa yang diberikan diatur ke status Sinyal . Parameter ini bisa NULL.
IoStatusBlock Penunjuk ke struktur IO_STATUS_BLOCK yang menerima status penyelesaian akhir dan informasi tentang operasi tulis yang diminta. Anggota Informasi dari struktur IO_STATUS_BLOCK menerima jumlah byte yang benar-benar ditulis ke sumber daya SPB.

SpbResourceIoControl

Melakukan operasi kontrol I/O pada sumber daya Simple Peripheral Bus (SPB) terbuka. Semua parameter input disediakan oleh driver miniport tampilan.

Jika pemanggil membuka file untuk I/O asinkron (tanpa opsi buat/buka FILE_SYNCHRONOUS_XXX diatur), peristiwa yang ditentukan, jika ada, akan diatur ke status Sinyal saat operasi kontrol perangkat selesai. Jika tidak, objek file yang ditentukan oleh parameter DeviceHandle akan diatur ke status Sinyal .

SpbResourceIoControl Parameter Deskripsi
DeviceHandle Handel yang mewakili adaptor tampilan. Driver miniport tampilan sebelumnya memperoleh handel ini di anggota DeviceHandle dari struktur DXGKRNL_INTERFACE yang diteruskan ke fungsi DxgkDdiStartDevice .
SpbResource Penunjuk ke sumber daya SPB yang dibuka driver miniport tampilan menggunakan fungsi OpenSpbResource .
IoControlCode Kode kontrol I/O perangkat (IOCTL_XXX) yang menunjukkan operasi kontrol I/O perangkat mana yang akan dilakukan, biasanya oleh driver perangkat yang mendasar. Nilai parameter ini menentukan format dan panjang parameter InputBuffer dan OutputBuffer yang diperlukan, serta pasangan parameter berikut mana yang diperlukan.
InBufferSize Ukuran, dalam byte, dari buffer yang ditujukkan oleh parameter InputBuffer . Nilai ini diabaikan jika InputBuffer ADALAH NULL.
InputBuffer Penunjuk ke buffer input yang dialokasikan penelepon yang berisi informasi khusus perangkat yang akan diberikan ke perangkat target. Jika parameter IoControlCode menentukan operasi yang tidak memerlukan data input, penunjuk ini bisa NULL.
OutBufferSize Ukuran, dalam byte, dari buffer yang diacu oleh parameter OutputBuffer . Nilai ini diabaikan jika OutputBufferADALAH NULL.
OutputBuffer Penunjuk ke buffer output yang dialokasikan penelepon tempat informasi dikembalikan dari perangkat target. Jika parameter IoControlCode menentukan operasi yang tidak menghasilkan data output, penunjuk ini bisa NULL.
EventHandle Handel opsional untuk peristiwa yang dibuat penelepon. Jika parameter ini disediakan, pemanggil akan dimasukkan ke dalam status tunggu hingga operasi yang diminta selesai dan peristiwa yang diberikan diatur ke status Sinyal . Parameter ini bisa NULL.
IoStatusBlock Pointer ke variabel yang menerima status penyelesaian akhir dan informasi tentang operasi kontrol I/O yang diminta. Untuk panggilan yang berhasil mengembalikan data, jumlah byte yang ditulis ke buffer yang ditujukkan oleh parameter OutputBuffer dikembalikan dalam anggota Informasi dari struktur IO_STATUS_BLOCK .

Keterangan

Untuk menggunakan fungsi struktur ini, pertama-tama berikan anggota Ukuran dan Versi dari struktur DXGK_SPB_INTERFACE . Kemudian panggil fungsi DxgkCbQueryServices dengan parameter ServicesType yang diatur ke nilai DxgkServicesFirmwareTable, dan atur parameter Antarmuka ke alamat (transmisikan sebagai PINTERFACE) dari struktur DXGK_SPB_INTERFACE .

Untuk informasi selengkapnya tentang arsitektur SPB, lihat Panduan Desain Bus Periferal Sederhana dan SpB Peripheral Driver**.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 8
Server minimum yang didukung Windows Server 2012
Header dispmprt.h (termasuk Dispmprt.h)