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

Consulte también

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter