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
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryQueryMemory non è stato chiamato in IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
È stato specificato un parametro non valido.
STATUS_INSUFFICIENT_RESOURCES
Impossibile allocare un oggetto memoria.
STATUS_ACCESS_DENIED
Il driver non ha aperto la chiave del Registro di sistema con KEY_QUERY_VALUE, KEY_READ o accesso KEY_ALL_ACCESS.
STATUS_OBJECT_NAME_NOT_FOUND
Il valore del Registro di sistema non è stato disponibile.
STATUS_RESOURCE_DATA_NOT_FOUND
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)

Vedi anche

KEY_VALUE_BASIC_INFORMATION

POOL_TYPE

UNICODE_STRING

WDF_OBJECT_ATTRIBUTES

WdfMemoryGetBuffer

WdfRegistryQueryMultiString

WdfRegistryQueryString

WdfRegistryQueryULong

WdfRegistryQueryUnicodeString

WdfRegistryQueryValue