Función WdfMemoryCreateFromLookaside (wdfmemory.h)
[Solo se aplica a KMDF]
El método WdfMemoryCreateFromLookaside crea un objeto de memoria de marco y obtiene un búfer de memoria de una lista de lookaside especificada.
Sintaxis
NTSTATUS WdfMemoryCreateFromLookaside(
[in] WDFLOOKASIDE Lookaside,
[out] WDFMEMORY *Memory
);
Parámetros
[in] Lookaside
Identificador de un objeto lookaside-list de marco que se obtiene mediante una llamada a WdfLookasideListCreate.
[out] Memory
Puntero a una ubicación que recibe un identificador para el nuevo objeto de memoria del marco.
Valor devuelto
WdfMemoryCreateFromLookaside devuelve STATUS_SUCCESS si la operación se realiza correctamente. De lo contrario, este método devuelve uno de los siguientes valores:
Código devuelto | Descripción |
---|---|
|
Se ha detectado un parámetro no válido. |
|
No había memoria suficiente. |
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
Una vez que el controlador llama a WdfLookasideListCreate para crear un objeto lookaside-list, el controlador puede llamar a WdfMemoryCreateFromLookaside para obtener un búfer de la lista de aspecto.
El marco proporciona un identificador a un objeto de memoria que representa el búfer. Cuando el marco crea el objeto de memoria, usa atributos de objeto que el controlador proporcionó cuando llamó a WdfMemoryCreateFromLookaside.
Cuando el controlador haya terminado de usar un objeto de memoria que obtuvo de una lista de aspecto, el controlador debe llamar a WdfObjectDelete para devolver el objeto de memoria a la lista de aspecto.
Para obtener más información sobre los objetos de memoria del marco y las listas de búsqueda, consulte Uso de búferes de memoria.
Si se asignan búferes lookaside-list desde el grupo de memoria paginable, se debe llamar al método WdfMemoryCreateFromLookaside en IRQL <= APC_LEVEL. De lo contrario, se puede llamar al método en IRQL <= DISPATCH_LEVEL.
Ejemplos
En el ejemplo de código siguiente se crea una lista de aspecto y se almacena el identificador de la lista en el espacio de contexto del objeto de dispositivo definido por el controlador. A continuación, el controlador obtiene un búfer de la lista de aspecto.
PDRIVER_CONTEXT driverContext;
WDFMEMORY memHandle;
driverContext = GetDriverContext(driver);
status = WdfLookasideListCreate(
WDF_NO_OBJECT_ATTRIBUTES,
sizeof(MY_LOOKASIDE_BUFFER),
NonPagedPool,
WDF_NO_OBJECT_ATTRIBUTES,
MY_POOL_TAG,
&driverContext->LookasideListHandle
);
...
status = WdfMemoryCreateFromLookaside(
driverContext->LookasideListHandle,
&memHandle
);
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Universal |
Versión mínima de KMDF | 1.0 |
Encabezado | wdfmemory.h (incluya Wdf.h) |
Library | Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos). |
IRQL | vea la sección Comentarios. |
Reglas de cumplimiento de DDI | DriverCreate(kmdf) |