Fungsi WdfDeviceAllocAndQueryProperty (wdfdevice.h)
[Berlaku untuk KMDF dan UMDF]
Metode WdfDeviceAllocAndQueryProperty mengalokasikan buffer dan mengambil properti perangkat tertentu.
Sintaks
NTSTATUS WdfDeviceAllocAndQueryProperty(
[in] WDFDEVICE Device,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES PropertyMemoryAttributes,
[out] WDFMEMORY *PropertyMemory
);
Parameter
[in] Device
Handel ke objek perangkat kerangka kerja.
[in] DeviceProperty
Enumerator jenis DEVICE_REGISTRY_PROPERTY yang mengidentifikasi properti perangkat yang akan diambil.
[in] PoolType
Enumerator berjenis POOL_TYPE yang menentukan jenis memori yang akan dialokasikan.
[in, optional] PropertyMemoryAttributes
Penunjuk ke struktur WDF_OBJECT_ATTRIBUTES yang dialokasikan penelepon yang menjelaskan atribut objek untuk objek memori yang akan dialokasikan fungsi. Parameter ini bersifat opsional dan dapat WDF_NO_OBJECT_ATTRIBUTES.
[out] PropertyMemory
Penunjuk ke lokasi yang diketik WDFMEMORY yang menerima handel ke objek memori kerangka kerja.
Nilai kembali
Jika operasi berhasil, WdfDeviceAllocAndQueryProperty mengembalikan STATUS_SUCCESS. Nilai pengembalian tambahan meliputi:
Menampilkan kode | Deskripsi |
---|---|
|
Nilai DeviceProperty yang ditentukan tidak valid. |
|
Driver perangkat belum melaporkan properti perangkat. |
Metode ini mungkin mengembalikan nilai NTSTATUS lainnya.
Pemeriksaan bug terjadi jika driver menyediakan handel objek yang tidak valid.
Keterangan
Metode WdfDeviceAllocAndQueryProperty menentukan jumlah memori yang diperlukan untuk menahan properti perangkat yang diminta. Ini mengalokasikan memori yang cukup untuk menyimpan data, dan mengembalikan handel ke objek memori kerangka kerja yang menjelaskan memori yang dialokasikan. Untuk mengakses data, driver Anda dapat memanggil WdfMemoryGetBuffer.
Atau, Anda dapat menggunakan WdfDeviceAllocAndQueryPropertyEx untuk mengakses properti perangkat yang diekspos melalui Model Properti Terpadu.
Contoh
Contoh kode berikut menginisialisasi struktur WDF_OBJECT_ATTRIBUTES dengan atribut untuk objek memori kerangka kerja yang akan dibuat kerangka kerja untuk properti yang diminta. Kemudian, contoh memanggil WdfDeviceAllocAndQueryProperty untuk mendapatkan properti DevicePropertyPhysicalDeviceObjectName . Setelah WdfDeviceAllocAndQueryProperty kembali, driver dapat memanggil WdfMemoryGetBuffer untuk mendapatkan penunjuk ke buffer yang berisi string nama.
WDF_OBJECT_ATTRIBUTES attributes;
NTSTATUS status;
WDFDEVICE device;
WDFMEMORY memory;
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
attributes.ParentObject = device;
status = WdfDeviceAllocAndQueryProperty(device,
DevicePropertyPhysicalDeviceObjectName,
NonPagedPool,
&attributes,
&memory
);
if (!NT_SUCCESS(status)) {
return STATUS_UNSUCCESSFUL;
}
Persyaratan
Persyaratan | Nilai |
---|---|
Target Platform | Universal |
Versi KMDF minimum | 1,0 |
Versi UMDF minimum | 2.0 |
Header | wdfdevice.h (termasuk Wdf.h) |
Pustaka | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Aturan kepatuhan DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |