Freigeben über


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 losgelassen werden soll. Dieses Objekt stellt das Busmaster-DMA-Gerät oder den DMA-Systemkanal des Treibers dar. Der Aufrufer hat diesen Zeiger aus einem vorherigen Aufruf an die IoGetDmaAdapter Routine abgerufen.

[in] AllocationAction

Der Typ der Deallocation, die der aufrufende Treiber anfordert. Legen Sie diesen Parameter auf einen IO_ALLOCATION_ACTION Enumerationswert fest. Weitere Informationen finden Sie im Abschnitt "Hinweise".

Rückgabewert

Nichts

Bemerkungen

FreeAdapterObject- ist keine Systemroutine, die direkt anhand des Namens aufgerufen werden kann. Diese Routine kann nur durch Zeiger von der in einer DMA_OPERATIONS Struktur zurückgegebenen Adresse aufgerufen werden. Treiber rufen die Adresse dieser Routine ab, indem sie IoGetDmaAdapter- mit dem Version Mitglied des DeviceDescription- Parameters auf DEVICE_DESCRIPTION_VERSION3 festgelegt wird. Wenn IoGetDmaAdapterNULL-zurückgibt, ist die Routine auf Ihrer Plattform nicht verfügbar.

Wenn AllocationAction = DeallocateObject-, gibt der FreeAdapterObject-Aufruf das Adapterobjekt frei und gibt alle Kartenregister frei, die für dieses Objekt zugewiesen werden können.

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

Wenn AllocationAction = KeepObject, hat der FreeAdapterObject Aufruf keine Auswirkung.

FreeAdapterObject- können verwendet werden, um DMA-Ressourcen zuzuordnen, die durch Aufrufe der AllocateAdapterChannelEx-, GetScatterGatherListEx-und BuildScatterGatherListEx Routinen zugeordnet werden. Wenn der Treiber eine dieser Routinen synchron aufruft, ist die ExecutionRoutine Parameter optional und kann weggelassen werden. In diesem Fall kann der Treiber das Adapterobjekt und kartenregister verwenden, die vom Aufruf zugewiesen werden. Nachdem der Treiber die DMA-Übertragung initiiert hat, kann der Treiber FreeAdapterObject- aufrufen, um das Adapterobjekt zuzuordnen und ggf. die Kartenregister zu registrieren.

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

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar ab Windows 8.
Zielplattform- Desktop
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
IRQL- <= DISPATCH_LEVEL

Siehe auch

AdapterControl-

AdapterListControl-

AllocateAdapterChannel

AllocateAdapterChannelEx-

BuildScatterGatherListEx-

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel-

FreeMapRegisters-

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter-