Поделиться через


функция обратного вызова PFREE_ADAPTER_OBJECT (wdm.h)

Программа 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

См. также

AdapterControl

AdapterListControl

AllocateAdapterChannel

AllocateAdapterChannelEx

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FreeAdapterChannel

FreeMapRegisters

GetScatterGatherListEx

IO_ALLOCATION_ACTION

IoGetDmaAdapter