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 |