Partager via


Fonction WdfObjectAllocateContext (wdfobject.h)

[S’applique à KMDF et UMDF]

La méthode WdfObjectAllocateContext alloue de l’espace de contexte pour un objet framework spécifié.

Syntaxe

NTSTATUS WdfObjectAllocateContext(
  [in]  WDFOBJECT              Handle,
  [in]  PWDF_OBJECT_ATTRIBUTES ContextAttributes,
  [out] PVOID                  *Context
);

Paramètres

[in] Handle

Handle d’un objet framework.

[in] ContextAttributes

Pointeur vers une structure de WDF_OBJECT_ATTRIBUTES fournie par l’appelant qui décrit l’espace de contexte.

[out] Context

Pointeur vers un emplacement qui reçoit un pointeur vers l’espace de contexte alloué.

Valeur retournée

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

Code de retour Description
STATUS_INVALID_PARAMETER
Un paramètre non valide a été détecté.
STATUS_OBJECT_NAME_INVALID
Membre ContextTypeInfo de la structure WDF_OBJECT_ATTRIBUTES que le paramètre ContextAttributes spécifié n’était pas valide.
STATUS_INSUFFICIENT_RESOURCES
L’espace de contexte n’a pas pu être alloué.
STATUS_OBJECT_NAME_EXISTS
Le pilote a déjà alloué de l’espace de contexte qui correspond au membre ContextTypeInfo de la structure WDF_OBJECT_ATTRIBUTES spécifiée par ContextAttributes . Dans ce cas, le pointeur dans le paramètre Context reçoit un pointeur vers l’espace de contexte existant et n’alloue pas d’espace de contexte en double.
STATUS_DELETE_PENDING
L’objet spécifié par le paramètre Handle est en cours de suppression. Dans ce cas, l’infrastructure n’alloue pas d’espace de contexte.
 

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

En règle générale, les pilotes créent un espace de contexte d’objet en spécifiant une structure WDF_OBJECT_ATTRIBUTES lorsqu’ils appellent la méthode de création d’un objet framework, telle que WdfDeviceCreate.

Si vous souhaitez que votre pilote alloue plusieurs types d’espace de contexte à certains de ses objets, le pilote peut appeler WdfObjectAllocateContext une ou plusieurs fois après avoir appelé la méthode de création d’un objet. Chaque appel à WdfObjectAllocateContext doit spécifier un type de contexte différent. (Le membre ContextTypeInfo de la structure WDF_OBJECT_ATTRIBUTES identifie le type de contexte.)

Si votre pilote appelle WdfObjectAllocateContext plusieurs fois pour un objet donné, vous pouvez fournir des fonctions de rappel EvtCleanupCallback et EvtDestroyCallback distinctes pour chaque contexte.

Lorsque vous appelez WdfObjectAllocateContext, ne spécifiez pas de ParentObject dans la structure WDF_OBJECT_ATTRIBUTES .

Lorsque l’infrastructure alloue de l’espace de contexte pour un objet, elle l’initialise également à zéro.

Pour plus d’informations sur l’espace de contexte d’objet, consultez Espace de contexte d’objet Framework.

Pour plus d’informations sur les règles de nettoyage d’une hiérarchie d’objets framework, consultez Framework Object Life Cycle.

Exemples

L’exemple de code suivant crée un espace de contexte pour un objet de requête. L’espace de contexte est basé sur la structure REQUEST_CONTEXT de l’exemple.

typedef struct _REQUEST_CONTEXT {
  WDFMEMORY InputMemoryBuffer;
  WDFMEMORY OutputMemoryBuffer;
} REQUEST_CONTEXT, *PREQUEST_CONTEXT;

PREQUEST_CONTEXT  reqContext = NULL;
WDF_OBJECT_ATTRIBUTES  attributes;

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
                                        &attributes,
                                        REQUEST_CONTEXT
                                        );
status = WdfObjectAllocateContext(
                                  Request,
                                  &attributes,
                                  &reqContext
                                  );

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.0
Version UMDF minimale 2.0
En-tête wdfobject.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (KMDF) ; WUDFx02000.dll (UMDF)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf)

Voir aussi

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCreate