Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Gilt für KMDF und UMDF]
Die WdfFdoInitQueryProperty--Methode ruft eine angegebene Geräteeigenschaft ab.
Syntax
NTSTATUS WdfFdoInitQueryProperty(
[in] PWDFDEVICE_INIT DeviceInit,
[in] DEVICE_REGISTRY_PROPERTY DeviceProperty,
[in] ULONG BufferLength,
[out] PVOID PropertyBuffer,
[out] PULONG ResultLength
);
Die Parameter
[in] DeviceInit
Ein Zeiger auf eine WDFDEVICE_INIT Struktur, die der Treiber aus seiner EvtDriverDeviceAdd Rückruffunktion abgerufen hat.
[in] DeviceProperty
Ein DEVICE_REGISTRY_PROPERTY-typed-Enumeratorwert, der die abzurufende Geräteeigenschaft identifiziert.
[in] BufferLength
Die Größe des Puffers in Bytes, auf den PropertyBufferverweist.
[out] PropertyBuffer
Ein vom Aufrufer bereitgestellter Zeiger auf einen vom Aufrufer zugewiesenen Puffer, der die angeforderte Geräteeigenschaft empfängt. Dieser Zeiger kann NULL- werden, wenn der parameter BufferLength null ist.
[out] ResultLength
Ein vom Aufrufer bereitgestellter Speicherort, der im Gegenzug die Größe der Informationen enthält, die WdfFdoInitQueryProper ty in PropertyBuffer-gespeichert sind. Wenn der Rückgabewert dieser Methode STATUS_BUFFER_TOO_SMALL ist, erhält ResultLength- die erforderliche Puffergröße.
Rückgabewert
Wenn der Vorgang erfolgreich ist, gibt die Methode STATUS_SUCCESS zurück. Weitere Rückgabewerte sind:
| Rückgabecode | BESCHREIBUNG |
|---|---|
|
Der bereitgestellte Puffer ist zu klein, um die Informationen zu empfangen. |
|
Der angegebene DeviceProperty Wert ist ungültig. |
|
Die WDFDEVICE_INIT Struktur wurde nicht aus der EvtDriverDeviceAdd Rückruffunktion des Treibers abgerufen. |
Die Methode kann auch andere NTSTATUS-Wertezurückgeben.
Bemerkungen
Bevor Geräteeigenschaftendaten empfangen werden, müssen Treiber in der Regel einen anfänglichen Aufruf WdfFdoInitQueryProperty- durchführen, um die erforderliche Puffergröße abzurufen. Bei einigen Eigenschaften kann sich die Datengröße zwischen dem Zeitpunkt ändern, zu dem die erforderliche Größe zurückgegeben wird, und der Zeit, zu der der Treiber diese Routine erneut aufruft. Daher sollten Treiber WdfFdoInitQueryProperty- in einer Schleife aufrufen, die ausgeführt wird, bis der Rückgabestatus nicht STATUS_BUFFER_TOO_SMALL ist.
Es empfiehlt sich, WdfFdoInitQueryProperty- nur zu verwenden, wenn die erforderliche Puffergröße bekannt und unveränderlich ist, da in diesem Fall der Treiber WdfFdoInitQueryProperty nur einmal aufrufen muss. Wenn die erforderliche Puffergröße unbekannt ist oder variiert, sollte der Treiber WdfFdoInitAllocAndQueryPropertyaufrufen.
Der Treiber kann WdfFdoInitQueryProperty- nur vor dem Aufrufen WdfDeviceCreateaufrufen. Weitere Informationen zum Aufrufen WdfDeviceCreatefinden Sie unter Creating a Framework Device Object.
Nach dem Aufrufen WdfDeviceCreatekann ein Treiber Geräteeigenschafteninformationen abrufen, indem WdfDeviceQueryPropertyaufgerufen wird.
Weitere Informationen zur WdfFdoInitQueryProperty--Methode finden Sie unter Erstellen von Geräteobjekten in einem Funktionstreiber-.
Alternativ können Sie WdfFdoInitQueryPropertyEx- verwenden, um auf Geräteeigenschaften zuzugreifen, die über das Unified Property Model verfügbar gemacht werden.
Beispiele
Im folgenden Codebeispiel wird eine Unicode-Zeichenfolge abgerufen, die den Namen des Enumerators eines Geräts darstellt, und gibt TRUE zurück, wenn die Zeichenfolge "PCI" lautet.
NTSTATUS status = STATUS_SUCCESS;
WCHAR enumeratorName[64] = {0};
ULONG returnSize;
UNICODE_STRING unicodeEnumName, temp;
status = WdfFdoInitQueryProperty(
DeviceInit,
DevicePropertyEnumeratorName,
sizeof(enumeratorName),
enumeratorName,
&returnSize
);
if(!NT_SUCCESS(status)){
return status;
}
RtlInitUnicodeString(
&unicodeEnumName,
enumeratorName
);
RtlInitUnicodeString(
&temp,
L"PCI"
);
if(RtlCompareUnicodeString(
&unicodeEnumName,
&temp,
TRUE
) == 0) {
//
// This device is a PCI device.
//
return TRUE;
}
Anforderungen
| Anforderung | Wert |
|---|---|
| Zielplattform | universell |
| Minimale KMDF-Version | 1.0 |
| Mindest-UMDF-Version | 2.0 |
| Kopfzeile | wdffdo.h (include Wdf.h) |
| Bibliothek | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| IRQL | PASSIVE_LEVEL |
| DDI-Complianceregeln | DeviceInitAPI(kmdf), DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |