Bagikan melalui


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
STATUS_INVALID_PARAMETER atau STATUS_INVALID_PARAMETER_2
Nilai DeviceProperty yang ditentukan tidak valid.
STATUS_INVALID_DEVICE_REQUEST
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)

Lihat juga

WdfDeviceQueryProperty