Partager via


WdfObjectAllocateContext, fonction (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 vers un objet framework.

[in] ContextAttributes

Pointeur vers une structure 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 de retour

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
Le 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 qui ContextAttributes spécifie. Dans ce cas, le pointeur du 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
Objet spécifié par le paramètre handle de. Dans ce cas, l’infrastructure n’alloue pas d’espace de contexte.
 

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

Une vérification de bogue 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 distinctes EvtCleanupCallback et EvtDestroyCallback fonctions de rappel 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 initialise également zéro l’espace de contexte.

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
                                  );

Spécifications

Besoin Valeur
plateforme cible Universel
version minimale de KMDF 1.0
version minimale de UMDF 2.0
En-tête wdfobject.h (include 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