Fonction WdfRegistryAssignMemory (wdfregistry.h)

[S’applique à KMDF et UMDF]

La méthode WdfRegistryAssignMemory affecte les données contenues dans une mémoire tampon spécifiée à un nom de valeur spécifié dans le Registre.

Syntaxe

NTSTATUS WdfRegistryAssignMemory(
  [in]           WDFKEY            Key,
  [in]           PCUNICODE_STRING  ValueName,
  [in]           ULONG             ValueType,
  [in]           WDFMEMORY         Memory,
  [in, optional] PWDFMEMORY_OFFSET MemoryOffsets
);

Paramètres

[in] Key

Handle d’un objet de clé de Registre qui représente une clé de Registre ouverte.

[in] ValueName

Pointeur vers une structure UNICODE_STRING qui contient un nom de valeur.

[in] ValueType

Valeur qui identifie le type de données. Pour obtenir la liste des valeurs de type de données, consultez le membre type de KEY_VALUE_BASIC_INFORMATION.

[in] Memory

Handle d’un objet de mémoire framework. Cet objet représente une mémoire tampon qui contient des données qui seront affectées au nom de valeur vers lequel pointe ValueName .

[in, optional] MemoryOffsets

Pointeur vers une structure de WDFMEMORY_OFFSET fournie par le pilote qui identifie une sous-section de la mémoire tampon spécifiée par la mémoire . Ce paramètre est facultatif et peut être NULL.

Valeur retournée

WdfRegistryAssignMemory retourne STATUS_SUCCESS si l’opération réussit. Sinon, la méthode peut retourner l’une des valeurs suivantes :

Code de retour Description
STATUS_INVALID_DEVICE_REQUEST

WdfRegistryAssignMemory n’a pas été appelé à IRQL = PASSIVE_LEVEL.

STATUS_INVALID_PARAMETER
Un paramètre non valide a été spécifié.
STATUS_ACCESS_DENIED
Le pilote n’a pas ouvert la clé de Registre avec KEY_SET_VALUE accès.
STATUS_INTEGER_OVERFLOW
Le contenu de la structure WDFMEMORY_OFFSET que le paramètre MemoryOffsets a spécifié n’était pas valide.
 

Cette méthode peut également retourner d’autres valeurs NTSTATUS.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Si le nom de valeur spécifié par le paramètre ValueName existe déjà, WdfRegistryAssignMemory met à jour les données de la valeur.

Pour plus d’informations sur les objets de clé de Registre, consultez Utilisation du Registre dans les pilotes Framework-Based.

Exemples

L’exemple de code suivant crée un objet de mémoire framework, charge la mémoire tampon de l’objet avec de fausses données et affecte le contenu de la mémoire tampon à une valeur de Registre.

PUCHAR pBuffer;
WDFMEMORY memory;
NTSTATUS status;
UCHAR i;
DECLARE_UNICODE_STRING_SIZE(valueName, L"MyValueName");

status = WdfMemoryCreate(
                         WDF_NO_OBJECT_ATTRIBUTES,
                         NonPagedPool,
                         0,
                         MEMORY_LENGTH,
                         &memory,
                         (PVOID*)&pBuffer
                         );
if (NT_SUCCESS(status)) {

    // Fill the buffer with fake data.
    for (i = 1; i <= MEMORY_LENGTH; i++) {
        pBuffer[i-1] = i;
    }

    status = WdfRegistryAssignMemory(
                                     Key,
                                     &valueName,
                                     REG_BINARY,
                                     memory,
                                     NULL
                                     );
}

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfregistry.h (include Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL PASSIVE_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

KEY_VALUE_BASIC_INFORMATION

UNICODE_STRING

WDFMEMORY_OFFSET

WdfMemoryCreate

WdfRegistryAssignMultiString

WdfRegistryAssignString

WdfRegistryAssignULong

WdfRegistryAssignUnicodeString

WdfRegistryAssignValue