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 DEVICE_REGISTRY_PROPERTY typée qui identifie la propriété de l’appareil à récupérer.

[in] PoolType

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

[in, optional] PropertyMemoryAttributes

Pointeur vers une structure 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 typé WDFMEMORY qui reçoit un handle vers un objet mémoire d’infrastructure.

Valeur de retour

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 d’appareil exposées via le modèle de propriété unifié.

Exemples

L’exemple de code suivant appelle WdfFdoInitAllocAndQueryProperty pour obtenir un handle vers un objet mémoire framework 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 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
                                    );
}

Spécifications

   
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2,0
En-tête wdffdo.h (inclure 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