Compartir a través de


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 llamando 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 de retorno Descripción
STATUS_INVALID_PARAMETER
Se detectó un parámetro no válido.
STATUS_INSUFFICIENT_RESOURCES
No había memoria suficiente.
 

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

Después de que el controlador llame a WdfLookasideListCreate para crear un objeto lookaside-list, el controlador puede llamar a WdfMemoryCreateFromLookaside para obtener un búfer de la lista de lookaside.

El marco proporciona un identificador para 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 búsqueda.

Para obtener más información sobre los objetos de memoria del marco y las listas de búsqueda, consulte Using Memory Buffers.

Si se asignan búferes de 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 lookaside 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 lookaside.

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 Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
encabezado wdfmemory.h (incluya Wdf.h)
Biblioteca Wdf01000.sys (consulte Control de versiones de la biblioteca de marcos).
irQL Consulte la sección Comentarios.
reglas de cumplimiento de DDI DriverCreate(kmdf)

Consulte también

WdfLookasideListCreate

WdfMemoryCreate

WdfMemoryCreatePreallocated

WdfObjectDelete