Compartir a través de


Función WdfObjectAllocateContext (wdfobject.h)

[Se aplica a KMDF y UMDF]

El método WdfObjectAllocateContext asigna espacio de contexto para un objeto de marco especificado.

Sintaxis

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

Parámetros

[in] Handle

Identificador de un objeto de marco.

[in] ContextAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES proporcionada por el autor de la llamada que describe el espacio de contexto.

[out] Context

Puntero a una ubicación que recibe un puntero al espacio de contexto asignado.

Valor devuelto

WdfObjectAllocateContext devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método podría devolver uno de los siguientes valores:

Código de retorno Descripción
STATUS_INVALID_PARAMETER
Se detectó un parámetro no válido.
STATUS_OBJECT_NAME_INVALID
El miembro ContextTypeInfo de la estructura WDF_OBJECT_ATTRIBUTES que el parámetro contextAttributes especificado no era válido.
STATUS_INSUFFICIENT_RESOURCES
No se pudo asignar espacio de contexto.
STATUS_OBJECT_NAME_EXISTS
El controlador ya ha asignado espacio de contexto que coincide con el contextTypeInfo miembro de la estructura de WDF_OBJECT_ATTRIBUTES que ContextAttributes especifica. En esta situación, el puntero del parámetro Context recibe un puntero al espacio de contexto existente y no asigna espacio de contexto duplicado.
STATUS_DELETE_PENDING
Objeto que el parámetro Handle especifica que se va a eliminar. En esta situación, el marco no asigna espacio de contexto.
 

Este método también puede devolver otros valores de NTSTATUS.

Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.

Observaciones

Normalmente, los controladores crean espacio de contexto de objeto especificando una estructura de WDF_OBJECT_ATTRIBUTES cuando llaman al método de creación de un objeto de marco, como WdfDeviceCreate.

Si desea que el controlador asigne más de un tipo de espacio de contexto a algunos de sus objetos, el controlador puede llamar a WdfObjectAllocateContext una o varias veces después de llamar al método de creación de un objeto. Cada llamada a WdfObjectAllocateContext debe especificar un tipo de contexto diferente. (El miembro ContextTypeInfo de la estructura WDF_OBJECT_ATTRIBUTES identifica el tipo de contexto).

Si el controlador llama a WdfObjectAllocateContext más de una vez para un objeto determinado, puede proporcionar funciones de devolución de llamada EvtCleanupCallback independientes y EvtDestroyCallback para cada contexto.

Al llamar a WdfObjectAllocateContext, no especifique un ParentObject de en la estructura WDF_OBJECT_ATTRIBUTES.

Cuando el marco asigna espacio de contexto para un objeto, también inicializa cero el espacio de contexto.

Para obtener más información sobre el espacio de contexto de objetos, vea Espacio de contexto de objetos de marco.

Para obtener más información sobre las reglas de limpieza de una jerarquía de objetos de marco, vea Ciclo de vida del objeto framework.

Ejemplos

En el ejemplo de código siguiente se crea espacio de contexto para un objeto de solicitud. El espacio de contexto se basa en la estructura REQUEST_CONTEXT del ejemplo.

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

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
versión mínima de UMDF 2.0
encabezado wdfobject.h (incluya Wdf.h)
Biblioteca Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
irQL <=DISPATCH_LEVEL
reglas de cumplimiento de DDI DriverCreate(kmdf)

Consulte también

WDF_OBJECT_ATTRIBUTES

WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE

WdfDeviceCrear