Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Программа FreeAdapterObject освобождает указанный объект адаптера после завершения всех операций DMA драйвера.
Синтаксис
PFREE_ADAPTER_OBJECT PfreeAdapterObject;
void PfreeAdapterObject(
[in] PDMA_ADAPTER DmaAdapter,
[in] IO_ALLOCATION_ACTION AllocationAction
)
{...}
Параметры
[in] DmaAdapter
Указатель на структуру DMA_ADAPTER. Эта структура является объектом адаптера, который должен быть выпущен. Этот объект представляет основное устройство DMA или системный канал DMA драйвера. Вызывающий объект получил этот указатель из предыдущего вызова подпрограммы IoGetDmaAdapter.
[in] AllocationAction
Тип размещения сделки, запрашиваемого вызывающим драйвером. Задайте для этого параметра значение перечисления IO_ALLOCATION_ACTION. Дополнительные сведения см. в разделе "Примечания".
Возвращаемое значение
Никакой
Замечания
FreeAdapterObject не является системной подпрограммой, которая может вызываться непосредственно по имени. Эта подпрограмма может вызываться только указателем из адреса, возвращаемого в структуре DMA_OPERATIONS. Драйверы получают адрес этой процедуры путем вызова IoGetDmaAdapter с версией членом параметра DeviceDescription значение DEVICE_DESCRIPTION_VERSION3. Если IoGetDmaAdapter возвращает NULL, подпрограмма недоступна на вашей платформе.
Если AllocationAction = DeallocateObject, вызов FreeAdapterObject освобождает объект адаптера и освобождает все регистры карты, которые могут быть выделены для этого объекта.
Если AllocationAction = DeallocateObjectKeepRegisters, вызов FreeAdapterObject освобождает объект адаптера, но не освобождает регистры карты. В этом случае драйвер должен явно освободить все выделенные регистры карты, вызвав подпрограмму FreeMapRegisters.
Если AllocationAction = KeepObjectвызов FreeAdapterObject не действует.
FreeAdapterObject можно использовать для освобождения ресурсов DMA, выделенных вызовами подпрограмм AllocateAdapterChannelEx, GetScatterGatherListExи подпрограмм BuildScatterGatherListEx. Если драйвер вызывает одну из этих подпрограмм синхронно, параметр ExecutionRoutine является необязательным и может быть опущен. В этом случае драйвер может использовать объект адаптера и регистры карты, выделенные вызовом. После запуска передачи DMA драйвер может вызвать FreeAdapterObject, чтобы освободить объект адаптера и при необходимости регистрирует карту.
Подпрограмма FreeAdapterChannel похожа на FreeAdapterObject. FreeAdapterChannel всегда освобождает объект адаптера и все выделенные регистры карты. Это поведение аналогично FreeAdapterObject, если AllocationAction = DeallocateObject.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно начиная с Windows 8. |
целевая платформа | Настольный |
заголовка | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
IRQL | <= DISPATCH_LEVEL |