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 mit Null beendete Unicode-Zeichenfolge, 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 parameters Type in KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Ein Zeiger auf den Datenwert, der dem angegebenen Registrierungsschlüssel zugeordnet ist. Der Treiber muss diesen Wert schreibgeschützt behandeln. Weitere Informationen zum Typ der Wertdaten, auf die ValueData- verweist, finden Sie in der Definition des parameters Type 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 im vorherigen Aufruf RtlQueryRegistryValuesangegebene Treiber angegeben hat.

[in, optional] EntryContext

Gibt einen EntryContext- Wert in einem QueryTable- Arrayelement an, das der treiber im vorherigen Aufruf von RtlQueryRegistryValuesangegeben hat.

Rückgabewert

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

Bemerkungen

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

Um Informationen zu einem oder mehreren Registrierungswerten abzurufen, 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 einen Treiber implementierten 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 eine Reihe 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 zuerst eine Funktionsdeklaration bereitstellen, die den Typ der von Ihnen definierten Rückrufroutine identifiziert. Windows stellt eine Reihe von Rückruffunktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Rückruffunktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine QueryRoutine Rückrufroutine zu definieren, die MyQueryRoutineheißt, verwenden Sie den RTL_QUERY_REGISTRY_ROUTINE Typ 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 wird in der Wdm.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die _Use_decl_annotations_ Anmerkung hinzufügen. Die _Use_decl_annotations_ Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp RTL_QUERY_REGISTRY_ROUTINE in der Headerdatei angewendet werden, verwendet 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 Annotating Function Behavior.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL- Wird bei PASSIVE_LEVEL aufgerufen.

Siehe auch

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues