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
STATUS_INVALID_PARAMETER
Se ha detectado un parámetro no válido.
STATUS_INSUFFICIENT_RESOURCES
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)

Consulte también

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete