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


Функция VideoPortStartDma (video.h)

Функция VideoPortStartDma подготавливает систему к операции DMA. Как только соответствующий ресурс будет доступен, VideoPortStartDma создает список точечной и сборной, инициализирует системные ресурсы и вызывает предоставленную драйвером видео минипорта подпрограмму HwVidExecuteDma для выполнения операции DMA.

Синтаксис

VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortStartDma(
  [in]      IN PVOID           HwDeviceExtension,
  [in]      IN PVP_DMA_ADAPTER VpDmaAdapter,
  [in]      IN PVOID           Mdl,
  [in]      IN ULONG           Offset,
  [in, out] IN OUT PULONG      pLength,
  [in]      IN PEXECUTE_DMA    ExecuteDmaRoutine,
  [in]      IN PVOID           Context,
  [in]      IN BOOLEAN         WriteToDevice
);

Параметры

[in] HwDeviceExtension

Указатель на расширение устройства драйвера мини-порта.

[in] VpDmaAdapter

Указатель на структуру VP_DMA_ADAPTER, представляющую адаптер master шины. Эта структура возвращается из вызова VideoPortGetDmaAdapter.

[in] Mdl

Указатель на MDL , описывающий буфер. Этот указатель возвращается при вызове функции VideoPortLockBuffer драйвера видеопорта.

[in] Offset

Указывает смещение байтов в буфере, с которого начинается операция DMA. Параметр Mdl описывает этот буфер.

[in, out] pLength

Указатель на переменную, которая задает запрошенный размер передачи в байтах и получает фактический размер для передачи. Переменная будет обновлена при возникновении любого из следующих событий: VideoPortStartDma возвращает или вызывается HwVidExecuteDma . Таким образом, эту переменную можно считывать из HwVidExecuteDma еще до возврата VideoPortStartDma .

[in] ExecuteDmaRoutine

Указатель на подпрограмму обратного вызова HwVidExecuteDma , предоставляемую драйвером минипорта. VideoPortStartDma вызывает эту подпрограмму для программирования аппаратных регистров и запуска фактической операции DMA.

[in] Context

Указатель на определяемый драйвером контекст для передачи в подпрограмму обратного вызова HwVidExecuteDma драйвера мини-порта. Так как подпрограмма обратного вызова HwVidExecuteDma выполняется в DISPATCH_LEVEL, данные, на которые указывает Контекст , должны находиться в памяти без памяти.

[in] WriteToDevice

Указывает направление передачи DMA. Значение TRUE обозначает передачу из буфера в устройство, а значение FALSE — передачу из устройства в буфер.

Возвращаемое значение

VideoPortStartDma возвращает один из следующих кодов состояния:

Код возврата Описание
NO_ERROR Операция была успешно проведена.
ERROR_NOT_ENOUGH_MEMORY Для этой операции недостаточно системных ресурсов.

Комментарии

Чтобы подготовиться к операции передачи DMA, VideoPortStartDma:

  • Очищает область памяти в кэшах процессора узла.
  • Создает точечный или собирающийся список.
  • Вызывает обратный вызов HwVidExecuteDma водителя видео минипорта.
Возможно, были переданы не все запрошенные данные, так как фактический объем переданной памяти ограничен количеством регистров карты, доступных драйверу. Вызывающие эту функцию должны проверить фактический размер передачи, возвращенный в pLength , чтобы определить, нужно ли передавать дополнительные данные. В этом случае драйвер мини-порта должен вызывать VideoPortStartDma (и, ранее, VideoPortCompleteDma) столько раз, сколько потребуется для выполнения всего запроса на передачу.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows XP и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть video.h (включить Video.h)
Библиотека Videoprt.lib
DLL Videoprt.sys
IRQL <=DISPATCH_LEVEL

См. также раздел

HwVidExecuteDma

VP_DMA_ADAPTER

VideoPortCompleteDma

VideoPortGetDmaAdapter