Freigeben über


RTL_QUERY_REGISTRY_ROUTINE Rückruffunktion (wdm.h)

Die QueryRoutine-Routine stellt Informationen zu einem Registrierungswert bereit, der in einem vorherigen Aufruf der RtlQueryRegistryValues-Routine angefordert wurde.

Syntax

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

Parameter

[in] ValueName

Gibt den Registrierungsschlüssel an, der dem angeforderten Registrierungswert zugeordnet ist. Dieser Parameter ist ein Zeiger auf eine Unicode-Zeichenfolge, die null beendet ist, die den Schlüssel enthält.

[in] ValueType

Gibt den Typ des Registrierungswerts an, der mit dem angegebenen Registrierungsschlüssel gespeichert wird. Weitere Informationen zu Registrierungswerttypen finden Sie in der Definition des Type-Parameters in KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Ein Zeiger auf den Datenwert, der dem angegebenen Registrierungsschlüssel zugeordnet ist. Der Treiber muss diesen Wert als schreibgeschützt behandeln. Weitere Informationen zum Typ der Wertdaten, auf die ValueData verweist, finden Sie in der Definition des Type-Parameters in KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Gibt die Länge des Werts in Bytes an, auf den ValueData verweist.

[in, optional] Context

Gibt den Wert des Context-Parameters an, den der Treiber im vorherigen Aufruf von RtlQueryRegistryValues angegeben hat.

[in, optional] EntryContext

Gibt einen EntryContext-Wert in einem QueryTable-Arrayelement an, den der Treiber im vorherigen Aufruf von RtlQueryRegistryValues angegeben hat.

Rückgabewert

QueryRoutine gibt STATUS_SUCCESS zurück, wenn der Aufruf erfolgreich ist. Andernfalls wird ein entsprechender Fehler status Code zurückgegeben. Verwenden Sie nur status Codes, die in der Ntstatus.h-Headerdatei definiert sind.

Hinweise

Ein Kernelmodustreiber implementiert eine QueryRoutine-Routine . Diese Routine wird von der RtlQueryRegistryValues-Routine aufgerufen.

Um Informationen zu einem oder mehreren Registrierungswerten zu erhalten, ruft der Treiber RtlQueryRegistryValues auf und übergibt einen Zeiger als Eingabeparameter an ein Array von RTL_QUERY_REGISTRY_TABLE Strukturen. Jede Struktur in diesem Array enthält einen Zeiger auf eine vom Treiber implementierte QueryRoutine-Routine und eine Anforderung für Informationen zu einem bestimmten Registrierungswert. Für jede Struktur im Array ruft RtlQueryRegistryValues die angegebene QueryRoutine-Routine auf und übergibt an diese Routine einen Satz von Parametern, die die angeforderten Informationen zum angegebenen Registrierungswert enthalten.

Weitere Informationen zur RTL_QUERY_REGISTRY_TABLE-Struktur finden Sie unter RtlQueryRegistryValues.

Beispiele

Um eine QueryRoutine-Rückrufroutine zu definieren, müssen Sie zunächst eine Funktionsdeklaration bereitstellen, die den Typ der Rückrufroutine identifiziert, die Sie definieren. Windows bietet eine Reihe von Rückruffunktionstypen für Treiber. Das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen hilft der Codeanalyse für Treiber, der statischen Treiberüberprüfung (Static Driver Verifier , SDV) und anderen Überprüfungstools, Fehler zu finden, und es ist eine Voraussetzung für das Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine QueryRoutine-RückrufroutineMyQueryRoutinenamens zu definieren, verwenden Sie den typ RTL_QUERY_REGISTRY_ROUTINE, wie in diesem Codebeispiel gezeigt:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

Implementieren Sie dann Ihre Rückrufroutine wie folgt:

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

Der RTL_QUERY_REGISTRY_ROUTINE Funktionstyp ist in der Wdm.h-Headerdatei definiert. Um Fehler beim Ausführen der Codeanalysetools genauer zu identifizieren, fügen Sie die _Use_decl_annotations_ Anmerkung ihrer Funktionsdefinition hinzu. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen verwendet werden, die auf den RTL_QUERY_REGISTRY_ROUTINE Funktionstyp in der Headerdatei angewendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für WDM-Treiber. Informationen zu _Use_decl_annotations_finden Sie unter Verhalten von Funktionen mit Anmerkungen.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
IRQL Wird unter PASSIVE_LEVEL aufgerufen.

Weitere Informationen

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues