Partager via


WdfFdoInitAllocAndQueryProperty, fonction (wdffdo.h)

[S’applique à KMDF et UMDF]

La méthode WdfFdoInitAllocAndQueryProperty alloue une mémoire tampon et récupère une propriété d’appareil spécifiée.

Syntaxe

NTSTATUS WdfFdoInitAllocAndQueryProperty(
  [in]           PWDFDEVICE_INIT          DeviceInit,
  [in]           DEVICE_REGISTRY_PROPERTY DeviceProperty,
  [in]           POOL_TYPE                PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES   PropertyMemoryAttributes,
  [out]          WDFMEMORY                *PropertyMemory
);

Paramètres

[in] DeviceInit

Pointeur vers une structure WDFDEVICE_INIT que le pilote a obtenue à partir de sa fonction de rappel EvtDriverDeviceAdd .

[in] DeviceProperty

Valeur d’énumérateur de type DEVICE_REGISTRY_PROPERTY qui identifie la propriété d’appareil à récupérer.

[in] PoolType

Valeur d’énumérateur de type POOL_TYPE qui spécifie le type de mémoire à allouer.

[in, optional] PropertyMemoryAttributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES allouée par l’appelant qui décrit les attributs d’objet pour l’objet mémoire que WdfFdoInitAllocAndQueryProperty allouera. Ce paramètre est facultatif et peut être WDF_NO_OBJECT_ATTRIBUTES.

[out] PropertyMemory

Pointeur vers un emplacement de type WDFMEMORY qui reçoit un handle vers un objet mémoire d’infrastructure.

Valeur retournée

Si l’opération réussit, la méthode retourne STATUS_SUCCESS. Les valeurs de retour supplémentaires sont les suivantes :

Code de retour Description
STATUS_INVALID_PARAMETER ou STATUS_INVALID_PARAMETER_2
La valeur DeviceProperty spécifiée n’est pas valide.
STATUS_INVALID_DEVICE_REQUEST
La structure WDFDEVICE_INIT n’a pas été obtenue à partir de la fonction de rappel EvtDriverDeviceAdd du pilote.
 

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

Remarques

Le pilote doit appeler WdfFdoInitAllocAndQueryProperty avant d’appeler WdfDeviceCreate. Pour plus d’informations sur l’appel de WdfDeviceCreate, consultez Création d’un objet d’appareil framework.

Après avoir appelé WdfDeviceCreate, un pilote peut obtenir des informations de propriété de périphérique en appelant WdfDeviceAllocAndQueryProperty.

Pour plus d’informations sur la méthode WdfFdoInitAllocAndQueryProperty , consultez Création d’objets d’appareil dans un pilote de fonction.

Vous pouvez également utiliser WdfFdoInitAllocAndQueryPropertyEx pour accéder aux propriétés de l’appareil exposées via le modèle de propriété unifié.

Exemples

L’exemple de code suivant appelle WdfFdoInitAllocAndQueryProperty pour obtenir un handle pour un objet de mémoire d’infrastructure qui contient le nom de la classe d’installation d’un appareil. Ensuite, l’exemple appelle WdfMemoryGetBuffer pour obtenir un pointeur vers la mémoire tampon qui contient la chaîne Unicode du nom de la classe d’installation.

NTSTATUS  status = STATUS_SUCCESS;
PVOID  pMemoryBuffer = NULL;
WDFMEMORY  memory = NULL;

status = WdfFdoInitAllocAndQueryProperty(
                                         DeviceInit,
                                         DevicePropertyClassName, 
                                         NonPagedPool,
                                         WDF_NO_OBJECT_ATTRIBUTES,
                                         &memory
                                         );
if(NT_SUCCESS(status)){
 pMemoryBuffer = WdfMemoryGetBuffer(
                                    memory,
                                    NULL
                                    );
}

Configuration requise

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

Voir aussi

WdfDeviceAllocAndQueryProperty

WdfFdoInitQueryProperty