Функция 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 |