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…
==============================================================================
--- 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);