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 adaptateur à libérer. Cet objet représente le périphérique DMA maître de bus du pilote ou le canal DMA système. L’appelant a obtenu ce pointeur à partir d’un appel précédent à la routine IoGetDmaAdapter.
[in] AllocationAction
Type de désallocation que le pilote appelant demande. Définissez ce paramètre sur une valeur d’énumération IO_ALLOCATION_ACTION. Pour plus d’informations, consultez la section Remarques.
Valeur de retour
Aucun
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 le pointeur de l’adresse retournée dans une structure 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 adaptateur et libère tous les registres cartographiques 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 les FreeMapRegisters routine.
Si AllocationAction = KeepObject, l’appel FreeAdapterObject n’a aucun effet.
FreeAdapterObject pouvez être utilisé pour libérer des ressources DMA allouées par des appels aux routines AllocateAdapterChannelEx, GetScatterGatherListExet BuildScatterGatherListEx. Si le pilote appelle l’une de ces routines de façon 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 cartographiques 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 de l’adaptateur et, si nécessaire, les registres cartographiques.
La routine FreeAdapterChannel est similaire à FreeAdapterObject. FreeAdapterChannel libère toujours l’objet d’adaptateur et les registres de carte alloués. Ce comportement est similaire à celui de FreeAdapterObject si AllocationAction = DeallocateObject.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Disponible à partir de Windows 8. |
plateforme cible | Bureau |
d’en-tête | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |