RTL_QUERY_REGISTRY_ROUTINE funzione di callback (wdm.h)

La routine QueryRoutine fornisce informazioni su un valore del Registro di sistema richiesto in una chiamata precedente alla routine RtlQueryRegistryValues .

Sintassi

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
)
{...}

Parametri

[in] ValueName

Specifica la chiave del Registro di sistema associata al valore del Registro di sistema richiesto. Questo parametro è un puntatore a una stringa Unicode con terminazione Null che contiene la chiave.

[in] ValueType

Specifica il tipo di valore del Registro di sistema archiviato con la chiave del Registro di sistema specificata. Per altre informazioni sui tipi di valore del Registro di sistema, vedere la definizione del parametro Type in KEY_VALUE_BASIC_INFORMATION.

[in] ValueData

Puntatore al valore di dati associato alla chiave del Registro di sistema specificata. Il driver deve considerare questo valore come di sola lettura. Per altre informazioni sul tipo di dati di valore a cui ValueData punta, vedere la definizione del parametro Type in KEY_VALUE_BASIC_INFORMATION.

[in] ValueLength

Specifica la lunghezza, in byte, del valore a cui ValueData punta.

[in, optional] Context

Specifica il valore del parametro Context specificato dal driver nella chiamata precedente a RtlQueryRegistryValues.

[in, optional] EntryContext

Specifica un valore EntryContext in un elemento della matrice QueryTable specificato nel driver specificato nella chiamata precedente a RtlQueryRegistryValues.

Valore restituito

QueryRoutine restituisce STATUS_SUCCESS se la chiamata ha esito positivo. In caso contrario, restituisce un codice di stato di errore appropriato. Usare solo i codici di stato definiti nel file di intestazione Ntstatus.h.

Commenti

Un driver in modalità kernel implementa una routine QueryRoutine . Questa routine viene chiamata dalla routine RtlQueryRegistryValues .

Per ottenere informazioni su uno o più valori del Registro di sistema, il driver chiama RtlQueryRegistryValues e passa un puntatore, come parametro di input, a una matrice di strutture RTL_QUERY_REGISTRY_TABLE . Ogni struttura in questa matrice contiene un puntatore a una routine QueryRoutine implementata dal driver e una richiesta di informazioni su un determinato valore del Registro di sistema. Per ogni struttura della matrice , RtlQueryRegistryValues chiama la routine QueryRoutine specificata e passa a questa routine un set di parametri che contengono le informazioni richieste sul valore del Registro di sistema specificato.

Per altre informazioni sulla struttura RTL_QUERY_REGISTRY_TABLE , vedere RtlQueryRegistryValues.

Esempio

Per definire una routine di callback di QueryRoutine , è necessario innanzitutto fornire una dichiarazione di funzione che identifica il tipo di routine di callback che si sta definendo. Windows fornisce un set di tipi di funzione di callback per i driver. La dichiarazione di una funzione tramite i tipi di funzione di callback consente di analizzare il codice per i driver, l'SDV ( Static Driver Verifier ) e altri strumenti di verifica di trovare errori ed è un requisito per la scrittura di driver per il sistema operativo Windows.

Ad esempio, per definire una routine di callback QueryRoutine denominata MyQueryRoutine, usare il tipo di RTL_QUERY_REGISTRY_ROUTINE come illustrato nell'esempio di codice seguente:

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

Implementare quindi la routine di callback come indicato di seguito:

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

Il tipo di funzione RTL_QUERY_REGISTRY_ROUTINE è definito nel file di intestazione Wdm.h. Per identificare in modo più accurato gli errori quando si eseguono gli strumenti di analisi del codice, assicurarsi di aggiungere l'annotazione _Use_decl_annotations_ alla definizione della funzione. L'annotazione _Use_decl_annotations_ garantisce che vengano utilizzate le annotazioni applicate al tipo di funzione RTL_QUERY_REGISTRY_ROUTINE nel file di intestazione. Per altre informazioni sui requisiti per le dichiarazioni di funzione, vedere Dichiarazione di funzioni tramite tipi di ruolo di funzione per i driver WDM. Per informazioni su _Use_decl_annotations_, vedere Annotazione del comportamento della funzione.

Requisiti

Requisito Valore
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL Chiamato a PASSIVE_LEVEL.

Vedi anche

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues