]> xenbits.xensource.com Git - pvdrivers/win/xeniface.git/commitdiff
Cleanup fdo dispatch entry points
authorOwen Smith <owen.smith@citrix.com>
Thu, 29 Oct 2015 14:49:42 +0000 (14:49 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Mon, 2 Nov 2015 14:22:58 +0000 (14:22 +0000)
Signed-off-by: Owen Smith <owen.smith@citrix.com>
src/xeniface/fdo.c
src/xeniface/wmi.c
src/xeniface/wmi.h

index fdb3edf90b941b12b0773d79ed86444fb861cef3..f991e3f70a6d2a2e9d0ba7c556d0e5014e12f1cb 100644 (file)
@@ -1235,7 +1235,7 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchPnp(
-    IN  PXENIFACE_FDO     Fdo,
+    IN  PXENIFACE_FDO   Fdo,
     IN  PIRP            Irp
     )
 {
@@ -1946,7 +1946,7 @@ FdoSystemPower(
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchPower(
-    IN  PXENIFACE_FDO     Fdo,
+    IN  PXENIFACE_FDO   Fdo,
     IN  PIRP            Irp
     )
 {
@@ -2014,7 +2014,7 @@ done:
 
 static DECLSPEC_NOINLINE NTSTATUS
 FdoDispatchDefault(
-    IN  PXENIFACE_FDO     Fdo,
+    IN  PXENIFACE_FDO   Fdo,
     IN  PIRP            Irp
     )
 {
@@ -2026,80 +2026,44 @@ FdoDispatchDefault(
     return status;
 }
 
-NTSTATUS
-FdoCreateFile (
-    __in PXENIFACE_FDO  Fdo,
-    __inout PIRP        Irp
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchComplete(
+    IN  PXENIFACE_FDO   Fdo,
+    IN  PIRP            Irp
     )
 {
-    PIO_STACK_LOCATION  Stack = IoGetCurrentIrpStackLocation(Irp);
-    NTSTATUS            status;
-
-    XenIfaceDebugPrint(TRACE, "FO %p, Process %p\n", Stack->FileObject, PsGetCurrentProcess());
+    UNREFERENCED_PARAMETER(Fdo);
 
-    if (Deleted == Fdo->Dx->DevicePnpState) {
-        Irp->IoStatus.Status = STATUS_NO_SUCH_DEVICE;
-        IoCompleteRequest(Irp, IO_NO_INCREMENT);
-        return STATUS_NO_SUCH_DEVICE;
-    }
-
-    status = STATUS_SUCCESS;
     Irp->IoStatus.Information = 0;
-    Irp->IoStatus.Status = status;
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    Irp->IoStatus.Status = STATUS_SUCCESS;
+    IoCompleteRequest (Irp, IO_NO_INCREMENT);
 
-    return status;
+    return STATUS_SUCCESS;
 }
 
-
-NTSTATUS
-FdoClose (
-    __in PXENIFACE_FDO  Fdo,
-    __inout PIRP        Irp
+static DECLSPEC_NOINLINE NTSTATUS
+FdoDispatchSystemControl(
+    IN  PXENIFACE_FDO   Fdo,
+    IN  PIRP            Irp
     )
-
 {
-    PIO_STACK_LOCATION  Stack = IoGetCurrentIrpStackLocation(Irp);
     NTSTATUS            status;
 
-    XenIfaceDebugPrint(TRACE, "FO %p, Process %p\n", Stack->FileObject, PsGetCurrentProcess());
-
-    XenIfaceCleanup(Fdo, Stack->FileObject);
-
-    status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-    Irp->IoStatus.Status = status;
-    IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    return status;
-}
-
-
-NTSTATUS
-FdoReadWrite (
-    __in PXENIFACE_FDO fdoData,
-    __inout PIRP Irp
-    )
-
-{
-
-    NTSTATUS     status;
-
-    XenIfaceDebugPrint(TRACE, "ReadWrite called\n");
-
-    status = STATUS_SUCCESS;
-    Irp->IoStatus.Information = 0;
-    Irp->IoStatus.Status = status;
-    IoCompleteRequest (Irp, IO_NO_INCREMENT);
+    status = WmiProcessMinorFunction(Fdo, Irp);
+    if (status == STATUS_NOT_SUPPORTED) {
+        IoSkipCurrentIrpStackLocation(Irp);
+        status = IoCallDriver(Fdo->LowerDeviceObject, Irp);
+    } else {
+        Irp->IoStatus.Status = status;
+        IoCompleteRequest(Irp, IO_NO_INCREMENT);
+    }
 
     return status;
 }
 
-
-
 NTSTATUS
 FdoDispatch(
-    IN  PXENIFACE_FDO     Fdo,
+    IN  PXENIFACE_FDO   Fdo,
     IN  PIRP            Irp
     )
 {
@@ -2122,20 +2086,14 @@ FdoDispatch(
         break;
 
     case IRP_MJ_SYSTEM_CONTROL:
-        status = XenIfaceSystemControl(Fdo, Irp);
-        break;
-
-    case IRP_MJ_READ:
-    case IRP_MJ_WRITE:
-        status = FdoReadWrite(Fdo, Irp);
+        status = FdoDispatchSystemControl(Fdo, Irp);
         break;
 
     case IRP_MJ_CREATE:
-        status = FdoCreateFile(Fdo, Irp);
-        break;
-
     case IRP_MJ_CLOSE:
-        status = FdoClose(Fdo, Irp);
+    case IRP_MJ_READ:
+    case IRP_MJ_WRITE:
+        status = FdoDispatchComplete(Fdo, Irp);
         break;
 
     default:
index 82592e3c4967534ef96867e723f67b7f8d057911..0b14e9b2772fe86aae334227cb3bdf4c3576037f 100644 (file)
@@ -2995,85 +2995,57 @@ WmiRegInfoEx(
     return WmiRegInfo(fdoData, stack, byteswritten);
 }
 
-
-
 NTSTATUS
 WmiProcessMinorFunction(
-    IN PXENIFACE_FDO fdoData,
-    IN PIRP Irp
-)
+    IN  PXENIFACE_FDO   Fdo,
+    IN  PIRP            Irp
+    )
 {
-    PIO_STACK_LOCATION stack;
-    UCHAR MinorFunction;
-
-
+    PIO_STACK_LOCATION  Stack;
 
-    stack = IoGetCurrentIrpStackLocation(Irp);
+    Stack = IoGetCurrentIrpStackLocation(Irp);
 
-    if (stack->Parameters.WMI.ProviderId != (ULONG_PTR)fdoData->Dx->DeviceObject) {
-        XenIfaceDebugPrint(TRACE,"ProviderID %p %p", stack->Parameters.WMI.ProviderId, fdoData->PhysicalDeviceObject);
+    if (Stack->Parameters.WMI.ProviderId != (ULONG_PTR)Fdo->Dx->DeviceObject) {
+        XenIfaceDebugPrint(TRACE,
+                           "ProviderID %p %p",
+                           Stack->Parameters.WMI.ProviderId,
+                           Fdo->PhysicalDeviceObject);
         return STATUS_NOT_SUPPORTED;
+    } else {
+        XenIfaceDebugPrint(TRACE,
+                           "ProviderID Match %p %p",
+                           Stack->Parameters.WMI.ProviderId,
+                           Fdo->PhysicalDeviceObject);
     }
-    else {
-        XenIfaceDebugPrint(TRACE,"ProviderID Match %p %p", stack->Parameters.WMI.ProviderId, fdoData->PhysicalDeviceObject);
-    }
-    MinorFunction = stack->MinorFunction;
 
-    switch (MinorFunction)
-    {
+    switch (Stack->MinorFunction) {
     case IRP_MN_CHANGE_SINGLE_INSTANCE:
-        return WmiChangeSingleInstance(fdoData, stack);
+        return WmiChangeSingleInstance(Fdo, Stack);
     case IRP_MN_CHANGE_SINGLE_ITEM:
-        return WmiChangeSingleItem(fdoData, stack);
+        return WmiChangeSingleItem(Fdo, Stack);
     case IRP_MN_DISABLE_COLLECTION:
-        return WmiDisableCollection(fdoData, stack);
+        return WmiDisableCollection(Fdo, Stack);
     case IRP_MN_DISABLE_EVENTS:
-        return WmiDisableEvents(fdoData, stack);
+        return WmiDisableEvents(Fdo, Stack);
     case IRP_MN_ENABLE_COLLECTION:
-        return WmiEnableCollection(fdoData, stack);
+        return WmiEnableCollection(Fdo, Stack);
     case IRP_MN_ENABLE_EVENTS:
-        return WmiEnableEvents(fdoData, stack);
+        return WmiEnableEvents(Fdo, Stack);
     case IRP_MN_EXECUTE_METHOD:
-        return WmiExecuteMethod(fdoData, stack,  &Irp->IoStatus.Information);
+        return WmiExecuteMethod(Fdo, Stack,  &Irp->IoStatus.Information);
     case IRP_MN_QUERY_ALL_DATA:
-        return WmiQueryAllData(fdoData, stack, &Irp->IoStatus.Information);
+        return WmiQueryAllData(Fdo, Stack, &Irp->IoStatus.Information);
     case IRP_MN_QUERY_SINGLE_INSTANCE:
-        return WmiQuerySingleInstance(fdoData, stack, &Irp->IoStatus.Information);
+        return WmiQuerySingleInstance(Fdo, Stack, &Irp->IoStatus.Information);
     case IRP_MN_REGINFO:
-        return WmiRegInfo(fdoData, stack, &Irp->IoStatus.Information);
+        return WmiRegInfo(Fdo, Stack, &Irp->IoStatus.Information);
     case IRP_MN_REGINFO_EX:
-        return WmiRegInfoEx(fdoData, stack, &Irp->IoStatus.Information);
+        return WmiRegInfoEx(Fdo, Stack, &Irp->IoStatus.Information);
     default:
         return STATUS_NOT_SUPPORTED;
     }
 }
 
-NTSTATUS XenIfaceSystemControl(
-    __in PXENIFACE_FDO         fdoData,
-    __inout PIRP Irp
-    )
-{
-    NTSTATUS            status;
-
-
-
-    status = WmiProcessMinorFunction(fdoData, Irp);
-
-    if (status != STATUS_NOT_SUPPORTED) {
-        Irp->IoStatus.Status = status;
-        IoCompleteRequest(Irp, IO_NO_INCREMENT);
-
-    }
-    else {
-        IoSkipCurrentIrpStackLocation(Irp);
-        status = IoCallDriver(fdoData->LowerDeviceObject, Irp);
-    }
-
-    return(status);
-
-}
-
-
 PCHAR
 WMIMinorFunctionString (
     __in UCHAR MinorFunction
index a49f1b39c5ba9b550e4a8d0f8db145713d922598..f677ee3a96c4e7b791b3dd467f7268c5de21a473 100644 (file)
 #include "driver.h"
 #include "wmi_generated.h"
 
-NTSTATUS
+extern NTSTATUS
 WmiProcessMinorFunction(
-    IN PXENIFACE_FDO Fdo,
-    IN PIRP Irp
-);
+    IN  PXENIFACE_FDO   Fdo,
+    IN  PIRP            Irp
+    );
 
 NTSTATUS
 WmiInit(
@@ -54,11 +54,6 @@ WmiFinalise(
     PXENIFACE_FDO FdoData
 ); 
 
-NTSTATUS XenIfaceSystemControl(
-    __in PXENIFACE_FDO         fdoData,
-    __inout PIRP Irp
-    );
-
 void FireSuspendEvent(
     IN OUT PXENIFACE_FDO fdoData
     );