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