Функция KsGenerateEvents (ks.h)

Функция KsGenerateEvents создает события указанного типа, которые присутствуют в списке событий Объекта.

Синтаксис

void KsGenerateEvents(
  [in]           PVOID                      Object,
  [in, optional] const GUID                 *EventSet,
  [in]           ULONG                      EventId,
  [in]           ULONG                      DataSize,
  [in, optional] PVOID                      Data,
  [in, optional] PFNKSGENERATEEVENTCALLBACK CallBack,
  [in, optional] PVOID                      CallBackContext
);

Параметры

[in] Object

Объект, для которого создаются события. Это может быть фильтр AVStream или закрепленный объект.

[in, optional] EventSet

Идентификатор GUID набора событий для сопоставления, чтобы определить, какие события следует создать. Если этот параметр имеет значение NULL, при определении соответствующих событий не учитывается заданный GUID.

[in] EventId

Идентификатор события, с которым нужно сопоставить, чтобы определить, какие события следует создать.

[in] DataSize

Размер данных в байтах, с помощью которых создается событие данных.

[in, optional] Data

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

[in, optional] CallBack

Указатель на функцию, указанную вызывающим объектом, которая вызывается для определения того, должно ли быть создано данное событие. Если значение равно NULL, проверка обратного вызова не выполняется, чтобы определить, следует ли создавать событие (используются только *EventSet *и EventId ).

[in, optional] CallBackContext

Указатель на контекст, заданный вызывающим объектом, который передается функции обратного вызова CallBack.

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

None

Remarks

При вызове этой функции мини-driver должен поместить Data и CallBackContext в заблокированный сегмент данных, не доступный для страницы. Кроме того, обратите внимание, что обратный вызов выполняется в DISPATCH_LEVEL. Функция обратного вызова должна находиться в заблокированном сегменте и быть готова к выполнению в IRQL = DISPATCH_LEVEL. Обратите внимание, что существует дополнительная проблема только в DX8: EventSet должен находиться в заблокированном сегменте данных.

Мини-драйверы обычно не вызывают эту функцию напрямую и вместо этого используют одну из версий, выполняющих соответствующее приведение: KsFilterGenerateEvents или KsPinGenerateEvents.

Событие создается, если оно присутствует в *списке событий *Object и *EventId *соответствует идентификатору события, EventSet либо соответствует заданному GUID события, либо имеет значение NULL, а *CallBack *имеет значение NULL или авторизует совпадение.

CallBack — это обратный вызов, заданный вызывающим абонентом, используемый для дополнительного определения соответствия. Он прототипируется следующим образом:

BOOLEAN CallBack (IN PVOID Context, IN PKSEVENT_ENTRY EventEntry);

AVStream передает содержимое параметра callBackContextподпрограммы KsGenerateEvents в параметре Context этого обратного вызова. EventEntry — это указатель на структуру KSEVENT_ENTRY , которая указывает событие, которое будет создано. Функция обратного вызова должна возвращать значение TRUE , если это событие должно быть создано.

Дополнительные сведения см. в разделе Обработка событий в AVStream и событиях KS.

Требования

Требование Значение
Минимальная версия клиента Доступно в операционных системах Microsoft Windows XP и более поздних версиях, а также DirectX 8.0 и более поздних версий.
Целевая платформа Универсальное
Верхняя часть ks.h (включая Ks.h)
Библиотека Ks.lib
IRQL <=DISPATCH_LEVEL

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

KSEVENT_ENTRY

KsAddEvent

KsFilterGenerateEvents

KsPinGenerateEvents