PFREE_ADAPTER_OBJECT Rückruffunktion (wdm.h)

Die FreeAdapterObject-Routine gibt das angegebene Adapterobjekt frei, nachdem ein Treiber alle DMA-Vorgänge abgeschlossen hat.

Syntax

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

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

Parameter

[in] DmaAdapter

Ein Zeiger auf eine DMA_ADAPTER-Struktur . Diese Struktur ist das Adapterobjekt, das freigegeben werden soll. Dieses Objekt stellt den Bus-master DMA-Gerät oder System-DMA-Kanal des Treibers dar. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf der IoGetDmaAdapter-Routine abgerufen.

[in] AllocationAction

Der Typ der Zuordnung, die der aufrufende Treiber anfordert. Legen Sie diesen Parameter auf einen IO_ALLOCATION_ACTION Enumerationswert fest. Weitere Informationen finden Sie im Abschnitt mit Hinweisen.

Rückgabewert

Keine

Bemerkungen

FreeAdapterObject ist keine Systemroutine, die direkt nach Namen aufgerufen werden kann. Diese Routine kann nur durch den Zeiger von der Adresse aufgerufen werden, die in einer DMA_OPERATIONS-Struktur zurückgegeben wird. Treiber erhalten die Adresse dieser Routine, indem sie IoGetDmaAdapter aufrufen, wobei der Version-Member des DeviceDescription-Parameters auf DEVICE_DESCRIPTION_VERSION3 festgelegt ist. Wenn IoGetDmaAdapterNULL zurückgibt, ist die Routine auf Ihrer Plattform nicht verfügbar.

Bei AllocationAction = DeallocateObject gibt der FreeAdapterObject-Aufruf das Adapterobjekt frei und gibt alle Zuordnungsregister frei, die diesem Objekt zugeordnet werden können.

Bei AllocationAction = DeallocateObjectKeepRegisters gibt der FreeAdapterObject-Aufruf das Adapterobjekt frei, aber keine Zuordnungsregister. In diesem Fall muss der Treiber alle zugeordneten Kartenregister explizit freigeben, indem die FreeMapRegisters-Routine aufgerufen wird.

Bei AllocationAction = KeepObject hat der FreeAdapterObject-Aufruf keine Auswirkung.

FreeAdapterObject kann zum Aufheben der Zuordnung von DMA-Ressourcen verwendet werden, die durch Aufrufe der Routinen AllocateAdapterChannelEx, GetScatterGatherListEx und BuildScatterGatherListEx zugeordnet werden. Wenn der Treiber synchron eine dieser Routinen aufruft, ist der ExecutionRoutine-Parameter optional und kann weggelassen werden. In diesem Fall kann der Treiber das Adapterobjekt und die Zuordnungsregister verwenden, die durch den Aufruf zugeordnet werden. Nachdem der Treiber die DMA-Übertragung initiiert hat, kann der Treiber FreeAdapterObject aufrufen, um die Zuordnung des Adapterobjekts freizusetzen, und bei Bedarf wird die Zuordnung registriert.

Die FreeAdapterChannel-Routine ähnelt FreeAdapterObject. FreeAdapterChannel gibt immer das Adapterobjekt und alle zugeordneten Kartenregister frei. Dieses Verhalten ähnelt dem von FreeAdapterObject , wenn AllocationAction = DeallocateObject.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar ab Windows 8.
Zielplattform Desktop
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter