Partager via


PFREE_ADAPTER_OBJECT fonction de rappel (wdm.h)

La routine FreeAdapterObject libère l’objet d’adaptateur spécifié une fois qu’un pilote a terminé toutes les opérations DMA.

Syntaxe

PFREE_ADAPTER_OBJECT PfreeAdapterObject;

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

Paramètres

[in] DmaAdapter

Pointeur vers une structure DMA_ADAPTER . Cette structure est l’objet d’adaptateur qui doit être libéré. Cet objet représente le canal DMA système ou master périphérique DMA du pilote. L’appelant a obtenu ce pointeur à partir d’un appel précédent à la routine IoGetDmaAdapter .

[in] AllocationAction

Type de deallocation demandé par le pilote appelant. Définissez ce paramètre sur une valeur d’énumération IO_ALLOCATION_ACTION . Pour plus d'informations, consultez la section Notes.

Valeur de retour

None

Remarques

FreeAdapterObject n’est pas une routine système qui peut être appelée directement par nom. Cette routine peut être appelée uniquement par un pointeur à partir de l’adresse retournée dans une structure de DMA_OPERATIONS . Les pilotes obtiennent l’adresse de cette routine en appelant IoGetDmaAdapter avec le membre Version du paramètre DeviceDescription défini sur DEVICE_DESCRIPTION_VERSION3. Si IoGetDmaAdapter retourne NULL, la routine n’est pas disponible sur votre plateforme.

Si AllocationAction = DeallocateObject, l’appel FreeAdapterObject libère l’objet d’adaptateur et libère tous les registres de carte qui peuvent être alloués pour cet objet.

Si AllocationAction = DeallocateObjectKeepRegisters, l’appel FreeAdapterObject libère l’objet adaptateur, mais ne libère aucun registre de carte. Dans ce cas, le pilote doit libérer explicitement tous les registres de carte alloués en appelant la routine FreeMapRegisters .

Si AllocationAction = KeepObject, l’appel FreeAdapterObject n’a aucun effet.

FreeAdapterObject peut être utilisé pour libérer les ressources DMA allouées par des appels aux routines AllocateAdapterChannelEx, GetScatterGatherListEx et BuildScatterGatherListEx . Si le pilote appelle l’une de ces routines de manière synchrone, le paramètre ExecutionRoutine est facultatif et peut être omis. Dans ce cas, le pilote peut utiliser l’objet d’adaptateur et les registres de mappage alloués par l’appel. Une fois que le pilote a lancé le transfert DMA, le pilote peut appeler FreeAdapterObject pour libérer l’objet d’adaptateur et, si nécessaire, inscrire la carte.

La routine FreeAdapterChannel est similaire à FreeAdapterObject. FreeAdapterChannel libère toujours l’objet d’adaptateur et tous les registres de carte alloués. Ce comportement est similaire à celui de FreeAdapterObject si AllocationAction = DeallocateObject.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible à partir de Windows 8.
Plateforme cible Desktop (Expérience utilisateur)
En-tête wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h)
IRQL <= DISPATCH_LEVEL

Voir aussi

AdapterControl

AdapterListControl

AllocationAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter