[ros-diffs] [janderwald] 44076: [KS] - Implement KsGenerateEvent
janderwald at svn.reactos.org
janderwald at svn.reactos.org
Tue Nov 10 11:50:57 CET 2009
Author: janderwald
Date: Tue Nov 10 11:50:57 2009
New Revision: 44076
URL: http://svn.reactos.org/svn/reactos?rev=44076&view=rev
Log:
[KS]
- Implement KsGenerateEvent
Modified:
trunk/reactos/drivers/ksfilter/ks/event.c
Modified: trunk/reactos/drivers/ksfilter/ks/event.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/event.c?rev=44076&r1=44075&r2=44076&view=diff
==============================================================================
--- trunk/reactos/drivers/ksfilter/ks/event.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/ksfilter/ks/event.c [iso-8859-1] Tue Nov 10 11:50:57 2009
@@ -285,7 +285,7 @@
/*
- @unimplemented
+ @implemented
*/
KSDDKAPI
NTSTATUS
@@ -293,8 +293,38 @@
KsGenerateEvent(
IN PKSEVENT_ENTRY EntryEvent)
{
- UNIMPLEMENTED;
- return STATUS_UNSUCCESSFUL;
+ if (EntryEvent->NotificationType == KSEVENTF_EVENT_HANDLE || EntryEvent->NotificationType == KSEVENTF_EVENT_OBJECT)
+ {
+ // signal event
+ KeSetEvent(EntryEvent->Object, 0, FALSE);
+ }
+ else if (EntryEvent->NotificationType == KSEVENTF_SEMAPHORE_HANDLE || EntryEvent->NotificationType == KSEVENTF_SEMAPHORE_OBJECT)
+ {
+ // release semaphore
+ KeReleaseSemaphore(EntryEvent->Object, 0, EntryEvent->SemaphoreAdjustment, FALSE);
+ }
+ else if (EntryEvent->NotificationType == KSEVENTF_DPC)
+ {
+ // queue dpc
+ KeInsertQueueDpc((PRKDPC)EntryEvent->Object, NULL, NULL);
+ }
+ else if (EntryEvent->NotificationType == KSEVENTF_WORKITEM)
+ {
+ // queue work item
+ ExQueueWorkItem((PWORK_QUEUE_ITEM)EntryEvent->Object, PtrToUlong(EntryEvent->BufferItem));
+ }
+ else if (EntryEvent->NotificationType == KSEVENTF_KSWORKITEM)
+ {
+ // queue work item of ks worker
+ return KsQueueWorkItem((PKSWORKER)EntryEvent->Object, (PWORK_QUEUE_ITEM)EntryEvent->DpcItem);
+ }
+ else
+ {
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+ }
+
+ return STATUS_SUCCESS;
}
/*
More information about the Ros-diffs
mailing list