Функция KsPinGenerateEvents (ks.h)
Функция KsPinGenerateEvents создает события указанного типа, которые присутствуют в списке событий Pin.
Синтаксис
void KsPinGenerateEvents(
[in] PKSPIN Pin,
[in, optional] const GUID *EventSet,
[in] ULONG EventId,
[in] ULONG DataSize,
[in, optional] PVOID Data,
[in, optional] PFNKSGENERATEEVENTCALLBACK CallBack,
[in, optional] PVOID CallBackContext
);
Параметры
[in] Pin
Указатель на структуру KSPIN , в которой создаются события.
[in, optional] EventSet
Указатель на идентификатор GUID набора событий, с которым нужно сопоставить, чтобы определить, какие события следует создать. Если этот параметр имеет значение NULL, при определении соответствующих событий не учитывается заданный GUID.
[in] EventId
Идентификатор события, с которым нужно сопоставить, чтобы определить, какие события следует создать.
[in] DataSize
Размер данных в байтах, с помощью которых создается событие данных.
[in, optional] Data
Указатель на буфер данных. Укажите, создает ли событие данных.
[in, optional] CallBack
Указатель на функцию, указанную вызывающим объектом, которая вызывается для определения того, должно ли быть создано данное событие. Если значение РАВНО NULL, проверка обратного вызова не выполняется, чтобы определить, следует ли создавать событие (используются только *EventSet *и EventId ). Прототип выглядит следующим образом:
BOOLEAN CallBack
(IN PVOID Context,
IN PKSEVENT_ENTRY EventEntry);
KsPinGenerateEvents передает параметр CallBackContext без изменений в качестве параметра Context для обратного вызова. Функция обратного вызова возвращает значение TRUE , если необходимо создать EventEntry . В противном случае возвращается значение FALSE.
[in, optional] CallBackContext
Указатель на контекст, заданный вызывающим объектом, который передается функции обратного вызова CallBack.
Возвращаемое значение
None
Remarks
При вызове этой функции мини-driver должен поместить Data и CallBackContext в заблокированный сегмент данных, не доступный для страницы. Обратный вызов выполняется в DISPATCH_LEVEL. Функция обратного вызова должна находиться в заблокированном сегменте и быть готова к выполнению в IRQL = DISPATCH_LEVEL. Обратите внимание, что существует дополнительная проблема только в DX8: EventSet должен находиться в заблокированном сегменте данных.
Это встроенный вызов функции KsGenerateEvents, который выполняет необходимое преобразование типов. Мини-драйверы обычно должны вызывать эту версию вместо прямого вызова KsGenerateEvents.
Событие создается при выполнении следующих трех условий:
Событие присутствует в *списке событий *Pin, а *EventId *соответствует идентификатору события.
EventSet соответствует заданному идентификатору GUID события или имеет значение NULL.
*CallBack *имеет значение NULL или авторизует совпадение.
Дополнительные сведения см. в разделе Обработка событий в AVStream и событиях KS.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Доступно в операционных системах Microsoft Windows XP и более поздних версиях, а также DirectX 8.0 и более поздних версий. |
Целевая платформа | Персональный компьютер |
Верхняя часть | ks.h (включая Ks.h) |
Библиотека | Ks.lib |
IRQL | <=DISPATCH_LEVEL (см. примечания) |