Функция 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.
Возвращаемое значение
Никакой
Замечания
При вызове этой функции мини-driver должен размещать данных и CallBackContext в заблокированном сегменте данных, отличном от страниц. Кроме того, обратите внимание, что обратного вызова выполняется в DISPATCH_LEVEL. Функция обратного вызова должна находиться в заблокированном сегменте и должна быть готова к выполнению в IRQL = DISPATCH_LEVEL. Обратите внимание, что в DX8 существует дополнительная проблема только: Набор событий должен находиться в заблокированном сегменте данных.
Мини-drivers обычно не вызывают эту функцию напрямую и вместо этого используют одну из версий, которые выполняют соответствующую приведение: KsFiltererateEvents или KsPinGenerateEvents.
Событие создается, если он присутствует в списке событий *Object и *EventId *соответствует идентификатору события, EventSet совпадает с заданным идентификатором GUID события или NULL, а *CallBack *NULL или авторизует совпадение.
callBack — это обратный вызов, указанный вызывающим абонентом, используемый для дополнительного определения соответствия. Он прототипируется следующим образом:
BOOLEAN CallBack (IN PVOID Context, IN PKSEVENT_ENTRY EventEntry);
AVStream передает содержимое параметра KsGenerateEvents подпрограммы CallBackContext в параметре контекст а обратного вызова. EventEntry — это указатель на структуру KSEVENT_ENTRY, указывающую событие, которое будет создано. Функция обратного вызова должна возвращать TRUE, если это событие должно быть создано.
Дополнительные сведения см. в обработке событий в AVStream и событиях KS.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Доступно в Microsoft Windows XP и более поздних операционных системах и версиях DirectX 8.0 и более поздних версий DirectX. |
целевая платформа | Всеобщий |
заголовка | ks.h (include Ks.h) |
библиотеки | Ks.lib |
IRQL | <=DISPATCH_LEVEL |