Funzione WdfRegistryQueryMemory (wdfregistry.h)
[Si applica a KMDF e UMDF]
Il metodo WdfRegistryQueryMemory recupera i dati attualmente assegnati a un valore del Registro di sistema specificato, archivia i dati in un buffer allocato in un framework e crea un oggetto memoria framework per rappresentare il buffer.
Sintassi
NTSTATUS WdfRegistryQueryMemory(
[in] WDFKEY Key,
[in] PCUNICODE_STRING ValueName,
[in] POOL_TYPE PoolType,
[in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
[out] WDFMEMORY *Memory,
[out, optional] PULONG ValueType
);
Parametri
[in] Key
Handle per un oggetto chiave del Registro di sistema che rappresenta una chiave del Registro di sistema aperta.
[in] ValueName
Puntatore a una struttura UNICODE_STRING contenente un nome di valore.
[in] PoolType
Valore POOL_TYPE tipizzato che specifica il tipo di memoria da allocare per il buffer di dati.
[in, optional] MemoryAttributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES che contiene attributi di oggetto per il nuovo oggetto memoria. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[out] Memory
Puntatore a una posizione che riceve un handle per il nuovo oggetto memoria.
[out, optional] ValueType
Puntatore a una posizione che riceve il tipo di dati. Per un elenco di valori del tipo di dati, vedere Il membro Type di KEY_VALUE_BASIC_INFORMATION. Questo puntatore è facoltativo e può essere NULL.
Valore restituito
WdfRegistryQueryMemory restituisce STATUS_SUCCESS se l'operazione ha esito positivo. In caso contrario, il metodo potrebbe restituire uno dei valori seguenti:
Codice restituito | Descrizione |
---|---|
|
WdfRegistryQueryMemory non è stato chiamato in IRQL = PASSIVE_LEVEL. |
|
È stato specificato un parametro non valido. |
|
Impossibile allocare un oggetto memoria. |
|
Il driver non ha aperto la chiave del Registro di sistema con KEY_QUERY_VALUE, KEY_READ o accesso KEY_ALL_ACCESS. |
|
Il valore del Registro di sistema non è stato disponibile. |
|
Il valore del Registro di sistema esiste sotto la chiave specificata, ma è vuoto. |
Per un elenco di altri valori restituiti che il metodo WdfRegistryQueryMemory potrebbe restituire, vedere Errori di creazione dell'oggetto Framework.
Questo metodo potrebbe restituire anche altri valori NTSTATUS.
Un controllo di bug si verifica se il driver fornisce un handle di oggetti non valido.
Commenti
Quando un driver chiama WdfRegistryQueryMemory, il framework alloca un buffer sufficiente per contenere i dati del Registro di sistema specificati. Dopo aver restituito WdfRegistryQueryMemory , il driver può chiamare WdfMemoryGetBuffer per ottenere un puntatore al buffer e alle dimensioni del buffer.
Per altre informazioni sugli oggetti chiave del Registro di sistema, vedere Uso del Registro di sistema in Framework-Based Driver.
Esempio
Nell'esempio di codice seguente vengono recuperati i dati assegnati al valore MyValueName e quindi ottiene l'indirizzo e le dimensioni dei dati.
WDFMEMORY memory;
size_t size;
PUCHAR pBuf;
NTSTATUS status;
ULONG type;
DECLARE_CONST_UNICODE_STRING(valueName1, L"MyValueName");
status = WdfRegistryQueryMemory(
Key,
&valueName1,
PagedPool,
NULL,
&memory,
&type
);
pBuf = (PUCHAR)WdfMemoryGetBuffer(
memory,
&size
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfregistry.h (includere Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |