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 |
---|---|
|
Se detectó un parámetro no válido. |
|
El miembro ContextTypeInfo de la estructura WDF_OBJECT_ATTRIBUTES que el parámetro contextAttributes especificado no era válido. |
|
No se pudo asignar espacio de contexto. |
|
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. |
|
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) |