Compartir a través de


Función WdfLookasideListCreate (wdfmemory.h)

[Solo se aplica a KMDF]

El método WdfLookasideListCreate crea un objeto lookaside-list, desde el que el controlador puede obtener objetos de memoria.

Sintaxis

NTSTATUS WdfLookasideListCreate(
  [in, optional] PWDF_OBJECT_ATTRIBUTES LookasideAttributes,
  [in]           size_t                 BufferSize,
  [in]           POOL_TYPE              PoolType,
  [in, optional] PWDF_OBJECT_ATTRIBUTES MemoryAttributes,
  [in, optional] ULONG                  PoolTag,
  [out]          WDFLOOKASIDE           *Lookaside
);

Parámetros

[in, optional] LookasideAttributes

Puntero a una estructura WDF_OBJECT_ATTRIBUTES que contiene atributos de objeto para el nuevo objeto lookaside-list. Este parámetro es opcional y puede ser WDF_NO_OBJECT_ATTRIBUTES.

[in] BufferSize

Tamaño distinto de cero, en bytes, del búfer que asignará el marco para cada objeto de memoria.

[in] PoolType

Valor de tipo POOL_TYPE que especifica el tipo de memoria que se va a asignar.

[in, optional] MemoryAttributes

Puntero a una estructura de WDF_OBJECT_ATTRIBUTES que contiene atributos de objeto para cada objeto de memoria que obtiene el controlador de la lista lookaside. Este parámetro es opcional y puede ser WDF_NO_OBJECT_ATTRIBUTES.

[in, optional] PoolTag

Etiqueta de grupo definida por el controlador para el búfer de cada objeto de memoria. Los depuradores muestran esta etiqueta. Normalmente, los controladores especifican una cadena de caracteres de hasta cuatro caracteres, delimitadas por comillas simples, en orden inverso (por ejemplo, "dcba"). El valor ASCII de cada carácter de la etiqueta debe estar comprendido entre 0 y 127. La depuración del controlador es más fácil si cada etiqueta de grupo es única.

Si PoolTag es cero, el marco proporciona una etiqueta de grupo predeterminada que usa los cuatro primeros caracteres del nombre del servicio en modo kernel del controlador. Si el nombre del servicio comienza por "WDF" (el nombre no distingue mayúsculas de minúsculas y no incluye las comillas), se usan los cuatro caracteres siguientes. Si hay menos de cuatro caracteres disponibles, se usa "FxDr".

Para las versiones 1.5 y posteriores de KMDF, el controlador puede usar el miembro DriverPoolTag de la estructura de WDF_DRIVER_CONFIG para especificar una etiqueta de grupo predeterminada.

[out] Lookaside

Puntero a una ubicación que recibe un identificador para el nuevo objeto lookaside-list.

Valor devuelto

WdfLookasideListCreate 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
STATUS_INVALID_PARAMETER
Se ha detectado un parámetro no válido.
STATUS_INSUFFICIENT_RESOURCES
No había memoria suficiente.
 

Para obtener una lista de otros valores devueltos que puede devolver el método WdfLookasideListCreate , vea Errores de creación de objetos de marco.

Este método también podría devolver otros valores NTSTATUS.

Comentarios

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.

De forma predeterminada, el nuevo elemento primario del objeto lookaside-list es el objeto de controlador de marco que crea el método WdfDriverCreate . Puede usar el miembro ParentObject de la estructura WDF_OBJECT_ATTRIBUTES para especificar otro elemento primario. El marco elimina el objeto lookaside-list cuando elimina el objeto primario. Si el controlador no cambia el elemento primario predeterminado, el controlador debe eliminar el objeto lookaside-list cuando haya terminado de usar el objeto ; De lo contrario, el objeto lookaside-list permanecerá hasta que el administrador de E/S descargue el controlador.

Si el controlador proporciona una estructura de WDF_OBJECT_ATTRIBUTES para los parámetros LookasideAttributes y MemoryAttributes , y si ambas estructuras especifican un objeto de dispositivo como objeto primario, el identificador del objeto de dispositivo debe ser el mismo.

Para obtener más información sobre los objetos de memoria de marco y las listas de búsqueda, consulte Uso de búferes de memoria.

Si el controlador especifica PagedPool para el parámetro PoolType , se debe llamar al método WdfLookasideListCreate en IRQL <= APC_LEVEL. De lo contrario, se puede llamar al método en IRQL <= DISPATCH_LEVEL.

Ejemplos

Para obtener un ejemplo de código que usa WdfLookasideListCreate, vea WdfMemoryCreateFromLookaside.

Requisitos

Requisito Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Encabezado wdfmemory.h (incluir 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), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Consulte también

WDF_OBJECT_ATTRIBUTES

WdfDriverCreate

WdfMemoryCreateFromLookaside