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 devuelto | Descripción |
---|---|
|
Se ha detectado 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 miembro ContextTypeInfo de la estructura WDF_OBJECT_ATTRIBUTES que especifica ContextAttributes . 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. |
|
El objeto que especifica el parámetro Handle se está eliminando. En esta situación, el marco no asigna espacio de contexto. |
Este método también podría devolver otros valores NTSTATUS.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Comentarios
Normalmente, los controladores crean espacio de contexto de objeto especificando una estructura 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 y EvtDestroyCallback independientes para cada contexto.
Al llamar a WdfObjectAllocateContext, no especifique parentObject 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 del objeto, vea Espacio de contexto de objeto 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 de objetos de marco.
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 de 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 | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Versión mínima de UMDF | 2.0 |
Encabezado | wdfobject.h (incluir Wdf.h) |
Library | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |