Fungsi WdfDeviceSetAlignmentRequirement (wdfdevice.h)

[Berlaku untuk KMDF saja]

Metode WdfDeviceSetAlignmentRequirement mendaftarkan penyelarasan alamat pilihan driver untuk buffer data yang digunakan perangkat selama operasi transfer memori.

Sintaks

void WdfDeviceSetAlignmentRequirement(
  [in] WDFDEVICE Device,
  [in] ULONG     AlignmentRequirement
);

Parameter

[in] Device

Handel ke objek perangkat kerangka kerja.

[in] AlignmentRequirement

Persyaratan perataan yang bergantung pada perangkat keras untuk buffer data. Nilai ini harus kurang dari batas perataan. Misalnya, Anda dapat menentukan 15 untuk batas perataan 16 byte dan 31 untuk batas perataan 32 byte. Anda juga dapat menggunakan salah satu konstanta FILE_Xxxx_ALIGNMENT yang ditentukan dalam Wdm.h, misalnya:

//
// Define alignment requirement values
//
#define FILE_BYTE_ALIGNMENT             0x00000000
#define FILE_WORD_ALIGNMENT             0x00000001
#define FILE_LONG_ALIGNMENT             0x00000003
#define FILE_QUAD_ALIGNMENT             0x00000007
#define FILE_OCTA_ALIGNMENT             0x0000000f
#define FILE_32_BYTE_ALIGNMENT          0x0000001f
#define FILE_64_BYTE_ALIGNMENT          0x0000003f
#define FILE_128_BYTE_ALIGNMENT         0x0000007f
#define FILE_256_BYTE_ALIGNMENT         0x000000ff
#define FILE_512_BYTE_ALIGNMENT         0x000001ff

Nilai kembali

Tidak ada

Keterangan

Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.

Driver yang menggunakan I/O langsung dapat memanggil WdfDeviceSetAlignmentRequirement untuk mendaftarkan persyaratan penyelarasan pilihan. Penyelarasan berlaku untuk permintaan I/O yang melalui Manajer I/O, dan bukan yang dikirim ke driver Anda dari driver lain yang memanggil IoCallDriver.

Karena manajer I/O tidak selalu menggunakan penyelarasan yang diminta, driver harus siap untuk buffer yang tidak sejajar.

Driver dapat memanggil WdfDeviceGetAlignmentRequirement untuk mendapatkan nilai saat ini untuk persyaratan penyelarasan perangkat.

Manajer I/O menetapkan nilai persyaratan perataan untuk perangkat saat driver memanggil WdfDeviceCreate. Untuk informasi selengkapnya tentang nilai persyaratan perataan perangkat dan kapan driver harus mengubah nilai, lihat Menginisialisasi Objek Perangkat dalam dokumentasi WDM.

Jika driver Anda menentukan persyaratan perataan yang lebih besar sehingga ukuran halaman komputer (PAGE_SIZE), alamat logis yang dikembalikan metode WdfCommonBufferGetAlignedLogicalAddress selalu selaras dengan persyaratan perataan yang ditentukan, tetapi alamat virtual yang dikembalikan metode WdfCommonBufferGetAlignedVirtualAddress mungkin tidak selaras dengan persyaratan perataan.

Jika driver Anda menentukan persyaratan perataan yang kurang dari ukuran halaman komputer, semua alamat logis dan virtual diselaraskan dengan persyaratan perataan yang ditentukan.

Untuk informasi selengkapnya tentang memanggil WdfDeviceSetAlignmentRequirement, lihat Mengaktifkan Transaksi DMA dan Menggunakan Buffer Umum.

Contoh

Contoh kode berikut berasal dari driver sampel AMCC5933 . Contoh ini memeriksa persyaratan penyelarasan perangkat saat ini dan mengatur persyaratan perataan ke nilai baru, jika perlu. Perhatikan bahwa nilai perataan yang tepat tergantung pada perangkat keras.

ULONG alignReq;

alignReq = WdfDeviceGetAlignmentRequirement(device);
if (alignReq < AMCC5933_ALIGNMENT__32BITS) {
//
// Set the S5933 alignment requirement to a new value.
//
WdfDeviceSetAlignmentRequirement(
                                 device,
                                 AMCC5933_ALIGNMENT__32BITS
                                 );
}

Persyaratan

Persyaratan Nilai
Target Platform Universal
Versi KMDF minimum 1,0
Header wdfdevice.h (termasuk Wdf.h)
Pustaka Wdf01000.sys (lihat Penerapan Versi Pustaka Kerangka Kerja.)
IRQL <= DISPATCH_LEVEL
Aturan kepatuhan DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Lihat juga

WdfCommonBufferGetAlignedLogicalAddress

WdfCommonBufferGetAlignedVirtualAddress

WdfDeviceGetAlignmentRequirement