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

Функция KsFilterGenerateEvents создает события указанного типа, которые присутствуют в списке событий фильтра.

Синтаксис

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

Параметры

[in] Filter

Указатель на структуру KSFILTER , в которой создаются события.

[in, optional] EventSet

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

[in] EventId

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

[in] DataSize

Размер данных в байтах.

[in] Data

Указатель на буфер данных. Укажите, создает ли событие данных.

[in, optional] CallBack

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

[in, optional] CallBackContext

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

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

None

Remarks

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

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

Событие создается, если хранятся следующие условия:

  • Событие присутствует в списке событий фильтра, а EventId соответствует идентификатору события.

  • EventSet либо соответствует заданному GUID события, либо имеет значение NULL.

  • CallBack имеет значение NULL или авторизует совпадение.

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

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

AVStream передает содержимое параметра callBackContextподпрограммы KsFilterGenerateEvents в параметре 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

KsGenerateEvents

KsPinGenerateEvents