Fungsi WdfDeviceInitSetIoTypeEx (wdfdevice.h)

[Berlaku untuk KMDF dan UMDF]

Metode WdfDeviceInitSetIoTypeEx mengatur metode atau preferensi tentang bagaimana driver akan mengakses buffer data yang disertakan dalam permintaan baca dan tulis, serta permintaan kontrol I/O perangkat, untuk perangkat tertentu.

Sintaks

void WdfDeviceInitSetIoTypeEx(
  [in] PWDFDEVICE_INIT     DeviceInit,
  [in] PWDF_IO_TYPE_CONFIG IoTypeConfig
);

Parameter

[in] DeviceInit

Penunjuk ke struktur WDFDEVICE_INIT .

[in] IoTypeConfig

Penunjuk ke struktur WDF_IO_TYPE_CONFIG diinisialisasi menggunakan makro WDF_IO_TYPE_CONFIG_INIT.

Nilai kembali

Tidak ada

Keterangan

Jika Anda menulis driver menggunakan KMDF versi 1.11 atau yang lebih lama, Anda harus menggunakan WdfDeviceInitSetIoType.

KMDF Driver KMDF memanggil WdfDeviceInitSetIoTypeEx untuk mengatur metode akses buffer untuk permintaan baca dan tulis. Untuk permintaan kontrol I/O perangkat, kerangka kerja menggunakan jenis buffer yang dikodekan dalam kode kontrol I/O (IOCTL).

UMDF Driver UMDF memanggil WdfDeviceInitSetIoTypeEx untuk mendaftarkan preferensi untuk permintaan baca dan tulis, serta permintaan kontrol I/O perangkat. Nilai yang disediakan driver UMDF untuk WdfDeviceInitSetIoTypeEx hanya preferensi, dan tidak dijamin untuk digunakan oleh kerangka kerja. Driver Anda dapat memanggil WdfDeviceGetDeviceStackIoType untuk menentukan metode akses buffer yang telah ditetapkan UMDF ke permintaan baca/tulis perangkat dan permintaan kontrol I/O. Untuk permintaan kontrol I/O, metode akses yang digunakan kerangka kerja mungkin berbeda dari metode akses yang ditentukan dalam IOCTL dan metode akses yang diminta oleh driver.

Jika driver memanggil WdfDeviceInitSetIoTypeEx, driver harus melakukannya sebelum memanggil WdfDeviceCreate.

Jika driver tidak memanggil WdfDeviceInitSetIoTypeEx, kerangka kerja mengatur metode akses buffer driver ke WdfDeviceIoBuffered, untuk perangkat yang ditentukan.

Memanggil WdfDeviceInitSetIoTypeEx dari driver filter KMDF tidak berpengaruh. Untuk driver filter KMDF, kerangka kerja menggunakan jenis I/O yang ditentukan driver berikutnya di tumpukan driver.

Namun, driver filter UMDF dapat mendaftarkan preferensi untuk metode akses buffer dengan memanggil WdfDeviceInitSetIoTypeEx.

Semua driver UMDF dalam tumpukan driver harus menggunakan metode yang sama untuk mengakses buffer perangkat. Jika UMDF menentukan bahwa beberapa driver lebih suka I/O buffer atau I/O langsung untuk perangkat sementara driver lain hanya lebih suka I/O buffer untuk perangkat, UMDF menggunakan I/O buffer untuk semua driver. Jika satu atau beberapa driver tumpukan hanya lebih suka I/O yang di-buffer sementara yang lain hanya lebih suka I/O langsung, UMDF mencatat peristiwa ke log peristiwa sistem dan tidak memulai tumpukan driver.

Untuk informasi selengkapnya tentang metode akses buffer, lihat Mengakses Buffer Data.

Metode ini setara dengan UMDF 2.0 dengan IWDFDeviceInitialize2::SetIoTypePreference.

Contoh

Contoh kode berikut menginisialisasi struktur WDF_IO_TYPE_CONFIG , mengatur preferensi akses buffer driver ke I/O langsung, menentukan bahwa transfer yang lebih kecil dari 32 KB harus menggunakan I/O yang di-buffer, dan memanggil WdfDeviceInitSetIoTypeEx.

WDF_IO_TYPE_CONFIG ioConfig;
WDF_IO_TYPE_CONFIG_INIT(&ioConfig);
ioConfig.ReadWriteIoType = WdfDeviceIoDirect;
ioConfig.DeviceControlIoType = WdfDeviceIoDirect;
ioConfig.DirectTransferThreshold = 32;

WdfDeviceInitSetIoTypeEx(DeviceInit, &ioConfig);
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1.13
Versi UMDF minimum 2.0
Header wdfdevice.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <= DISPATCH_LEVEL

Lihat juga

IWDFDeviceInitialize2::SetIoTypePreference

WDF_IO_TYPE_CONFIG

WDF_IO_TYPE_CONFIG_INIT

WdfDeviceGetDeviceStackIoType

WdfDeviceInitSetIoType