PFREE_ADAPTER_OBJECT función de devolución de llamada (wdm.h)
La rutina FreeAdapterObject libera el objeto de adaptador especificado después de que un controlador haya completado todas las operaciones DMA.
Sintaxis
PFREE_ADAPTER_OBJECT PfreeAdapterObject;
void PfreeAdapterObject(
[in] PDMA_ADAPTER DmaAdapter,
[in] IO_ALLOCATION_ACTION AllocationAction
)
{...}
Parámetros
[in] DmaAdapter
Puntero a una estructura de DMA_ADAPTER . Esta estructura es el objeto de adaptador que se va a liberar. Este objeto representa el dispositivo DMA maestro de bus del controlador o el canal DMA del sistema. El autor de la llamada obtuvo este puntero de una llamada anterior a la rutina IoGetDmaAdapter .
[in] AllocationAction
Tipo de desasignación que solicita el controlador que llama. Establezca este parámetro en un valor de enumeración IO_ALLOCATION_ACTION . Para obtener más información, vea la sección Comentarios.
Valor devuelto
None
Observaciones
FreeAdapterObject no es una rutina del sistema a la que se puede llamar directamente por su 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_VERSION3. Si IoGetDmaAdapter devuelve NULL, la rutina no está disponible en la plataforma.
Si AllocationAction = DeallocateObject, la llamada FreeAdapterObject libera el objeto de adaptador y libera los registros de mapa que se pueden asignar para este objeto.
Si AllocationAction = DeallocateObjectKeepRegisters, la llamada FreeAdapterObject libera el objeto de adaptador, pero no libera ningún registro de mapa. En este caso, el controlador debe liberar explícitamente los registros de mapa asignados llamando a la rutina FreeMapRegisters .
Si AllocationAction = KeepObject, la llamada FreeAdapterObject no tiene ningún efecto.
FreeAdapterObject se puede usar para desasignar recursos DMA asignados por llamadas a las rutinas AllocateAdapterChannelEx, GetScatterGatherListEx y BuildScatterGatherListEx . Si el controlador llama a una de estas rutinas de forma sincrónica, el parámetro ExecutionRoutine es opcional y se puede omitir. En este caso, el controlador puede usar el objeto de adaptador y los registros de mapa asignados por la llamada. Una vez que el controlador inicia la transferencia DMA, el controlador puede llamar a FreeAdapterObject para desasignar el objeto de adaptador y, si es necesario, el mapa se registra.
La rutina FreeAdapterChannel es similar a FreeAdapterObject. FreeAdapterChannel siempre libera el objeto de adaptador y los registros de mapa asignados. Este comportamiento es similar al de FreeAdapterObject si AllocationAction = DeallocateObject.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Disponible a partir de Windows 8. |
Plataforma de destino | Escritorio |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |