Author: janderwald
Date: Tue Apr 21 14:02:57 2009
New Revision: 40633

URL: http://svn.reactos.org/svn/reactos?rev=40633&view=rev
Log:
- Implement handling a FastDeviceIoControl path (not yet used in portcls)

Modified:
    trunk/reactos/drivers/ksfilter/ks/misc.c

Modified: trunk/reactos/drivers/ksfilter/ks/misc.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/misc.c?rev=40633&r1=40632&r2=40633&view=diff
==============================================================================
--- trunk/reactos/drivers/ksfilter/ks/misc.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/ksfilter/ks/misc.c [iso-8859-1] Tue Apr 21 14:02:57 
2009
@@ -265,6 +265,7 @@
     IN  ULONG OutSize,
     OUT PULONG BytesReturned)
 {
+    PKSIOBJECT_HEADER ObjectHeader;
     PDEVICE_OBJECT DeviceObject;
     KEVENT Event;
     PIRP Irp;
@@ -281,6 +282,23 @@
     if (!DeviceObject)
         return STATUS_UNSUCCESSFUL;
 
+    /* get object header */
+    ObjectHeader = (PKSIOBJECT_HEADER)FileObject->FsContext;
+    /* check if there is fast device io function */
+    if (ObjectHeader->DispatchTable.FastDeviceIoControl)
+    {
+        /* it is send the request */
+        Status = ObjectHeader->DispatchTable.FastDeviceIoControl(FileObject, 
TRUE, InBuffer, InSize, OutBuffer, OutSize, IoControl, &IoStatusBlock, 
DeviceObject);
+        /* check if the request was handled */
+        if (Status)
+        {
+            /* store bytes returned */
+            *BytesReturned = IoStatusBlock.Information;
+            /* return status */
+            return IoStatusBlock.Status;
+        }
+    }
+
     /* initialize the event */
     KeInitializeEvent(&Event, NotificationEvent, FALSE);
 

Reply via email to