PBUILD_MDL_FROM_SCATTER_GATHER_LIST función de devolución de llamada (wdm.h)
El BuildMdlFromScatterGatherList rutina crea una MDL a partir de una lista de dispersión y recopilación asignada por el sistema.
Esta rutina está reservada para el uso del sistema.
PBUILD_MDL_FROM_SCATTER_GATHER_LIST PbuildMdlFromScatterGatherList;
NTSTATUS PbuildMdlFromScatterGatherList(
[in] PDMA_ADAPTER DmaAdapter,
[in] PSCATTER_GATHER_LIST ScatterGather,
[in] PMDL OriginalMdl,
[out] PMDL *TargetMdl
)
{...}
[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 de AdapterListControl del controlador.
[in] OriginalMdl
Puntero a la 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 la MDL creada para contener el búfer descrito por la lista de dispersión y recopilación. El valor devuelto puede ser el mismo que OriginalMdl.
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 de 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/recopilación). |
BuildMdlFromScatterGatherList no es una rutina del sistema a la que se puede llamar directamente por nombre. Este puntero solo puede llamar a esta rutina desde la dirección devuelta en una estructura de DMA_OPERATIONS. 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.
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible en Windows XP y versiones posteriores de Windows. |
de la plataforma de destino de | Escritorio |
encabezado de | wdm.h (incluya Wdm.h) |
irQL | <= DISPATCH_LEVEL |
reglas de cumplimiento de DDI | irqlDispatch(wdm) |