PBUILD_MDL_FROM_SCATTER_GATHER_LIST función de devolución de llamada (wdm.h)
La rutina BuildMdlFromScatterGatherList crea una MDL a partir de una lista de dispersión y recopilación asignada por el sistema.
Esta rutina está reservada para uso del sistema.
Sintaxis
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
Parámetros
[in] DmaAdapter
Puntero a la estructura de DMA_ADAPTER devuelta por IoGetDmaAdapter que representa el adaptador de bus-master o el controlador DMA.
[in] ScatterGather
Puntero a la estructura SCATTER_GATHER_LIST pasada a la rutina AdapterListControl del controlador.
[in] OriginalMdl
Puntero al MDL original que el controlador usó para compilar la lista de dispersión y recopilación.
[out] TargetMdl
Puntero a una variable que usa la rutina para devolver el MDL creado para contener el búfer descrito por la lista de dispersión y recopilación. El valor devuelto puede ser el mismo que OriginalMdl.
Valor devuelto
BuildMdlFromScatterGatherList devuelve uno de los siguientes códigos de estado:
Código devuelto | Descripción |
---|---|
STATUS_SUCCESS | La operación se realizó correctamente. |
STATUS_INVALID_PARAMETER | El parámetro OriginalMdl es NULL. |
STATUS_INSUFFICIENT_RESOURCES | No hay suficiente memoria disponible para asignar una nueva MDL. |
STATUS_NONE_MAPPED | El sistema ya ha creado una nueva MDL para las ubicaciones de memoria en la lista de dispersión y recopilación. (Esto solo sucede si se llama a la rutina dos veces en la misma lista de dispersión o recopilación). |
Comentarios
BuildMdlFromScatterGatherList no es una rutina del sistema a la que se puede llamar directamente por nombre. Solo el puntero de la dirección devuelta en una estructura de DMA_OPERATIONS puede llamar a esta rutina. Los controladores obtienen la dirección de esta rutina llamando a IoGetDmaAdapter con el miembro Version del parámetro DeviceDescription establecido en DEVICE_DESCRIPTION_VERSION2. Si IoGetDmaAdapter devuelve NULL, la rutina no está disponible en la plataforma.
Cuando un controlador crea una lista de dispersión o recopilación para escribir en un dispositivo, el sistema puede realizar una copia de los datos que se van a escribir y usar esa copia para realizar la operación DMA. Use esta rutina para acceder a las ubicaciones de memoria de la lista de dispersión y recopilación, independientemente de si esas ubicaciones son una copia.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible en Windows XP y versiones posteriores de Windows. |
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wdm.h) |
IRQL | <= DISPATCH_LEVEL |
Reglas de cumplimiento de DDI | IrqlDispatch(wdm) |