PFREE_ADAPTER_OBJECT funzione di callback (wdm.h)

La routine FreeAdapterObject rilascia l'oggetto adapter specificato dopo che un driver ha completato tutte le operazioni DMA.

Sintassi

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

void PfreeAdapterObject(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] IO_ALLOCATION_ACTION AllocationAction
)
{...}

Parametri

[in] DmaAdapter

Puntatore a una struttura DMA_ADAPTER . Questa struttura è l'oggetto adapter da rilasciare. Questo oggetto rappresenta il dispositivo DMA master del driver o il canale DMA di sistema. Il chiamante ha ottenuto questo puntatore da una chiamata precedente alla routine IoGetDmaAdapter .

[in] AllocationAction

Tipo di deallocazione richiesto dal driver chiamante. Impostare questo parametro su un valore di enumerazione IO_ALLOCATION_ACTION . Per altre informazioni, vedere la sezione Osservazioni.

Valore restituito

nessuno

Osservazioni

FreeAdapterObject non è una routine di sistema che può essere chiamata direttamente per nome. Questa routine può essere chiamata solo dal puntatore dall'indirizzo restituito in una struttura DMA_OPERATIONS . I driver ottengono l'indirizzo di questa routine chiamando IoGetDmaAdapter con il membro Version del parametro DeviceDescription impostato su DEVICE_DESCRIPTION_VERSION3. Se IoGetDmaAdapter restituisce NULL, la routine non è disponibile nella piattaforma.

Se AllocationAction = DeallocateObject, la chiamata FreeAdapterObject rilascia l'oggetto adapter e rilascia tutti i registri mappa che potrebbero essere allocati per questo oggetto.

Se AllocationAction = DeallocateObjectKeepRegisters, la chiamata FreeAdapterObject rilascia l'oggetto adapter, ma non rilascia registri mappa. In questo caso, il driver deve rilasciare in modo esplicito eventuali registri mappa allocati chiamando la routine FreeMapRegisters .

Se AllocationAction = KeepObject, la chiamata FreeAdapterObject non ha alcun effetto.

FreeAdapterObject può essere usato per deallocare le risorse DMA allocate dalle chiamate alle routine AllocateAdapterChannelEx, GetScatterGatherListEx e BuildScatterGatherListEx . Se il driver chiama una di queste routine in modo sincrono, il parametro ExecutionRoutine è facoltativo e può essere omesso. In questo caso, il driver può utilizzare l'oggetto adapter e i registri mappa allocati dalla chiamata. Dopo che il driver avvia il trasferimento DMA, il driver può chiamare FreeAdapterObject per deallocare l'oggetto adapter e, se necessario, la mappa registra.

La routine FreeAdapterChannel è simile a FreeAdapterObject. FreeAdapterChannel rilascia sempre l'oggetto adapter e tutti i registri mappa allocati. Questo comportamento è simile a quello di FreeAdapterObject se AllocationAction = DeallocateObject.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 8.
Piattaforma di destinazione Desktop
Intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Vedi anche

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter