int FlFdcDeviceIo(int DeviceObject , int Ioctl , int Data ) 
{ int ntStatus ;
  int irp ;
  int irpStack ;
  int doneEvent = __VERIFIER_nondet_int() ;
  int ioStatus = __VERIFIER_nondet_int() ;
  int irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int irpStack__Parameters__DeviceIoControl__Type3InputBuffer ;
  long __cil_tmp11 ;

  {
  {
  irp = IoBuildDeviceIoControlRequest(Ioctl, DeviceObject, 0, 0, 0, 0, 1, doneEvent,
                                      ioStatus);
  }
  if (irp == 0) {
    return (-1073741670);
  }
  {
  irpStack = irp__Tail__Overlay__CurrentStackLocation - 1;
  irpStack__Parameters__DeviceIoControl__Type3InputBuffer = Data;
  ntStatus = IofCallDriver(DeviceObject, irp);
  }
  {
  __cil_tmp11 = (long )ntStatus;
  if (__cil_tmp11 == 259L) {
    {
    KeWaitForSingleObject(doneEvent, Suspended, KernelMode, 0, 0);
    ntStatus = myStatus;
    }
  }
  }
  return (ntStatus);
}
}
int DiskPerfSendToNextDriver(int DeviceObject , int Irp ) 
{ int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int tmp ;

  {
#line 199
  if (s == NP) {
#line 200
    s = SKIP1;
  } else {
    {
#line 203
    errorFn();
    }
  }
  {
#line 207
  Irp__CurrentLocation ++;
#line 208
  Irp__Tail__Overlay__CurrentStackLocation ++;
#line 209
  deviceExtension = DeviceObject__DeviceExtension;
#line 210
  tmp = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
  }
#line 212
  return (tmp);
}
}
int KbFilter_DispatchPassThrough(int DeviceObject , int Irp ) 
{ int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension__TopOfStack = __VERIFIER_nondet_int() ;
  int irpStack ;
  int tmp ;

  {
#line 691
  irpStack = Irp__Tail__Overlay__CurrentStackLocation;
#line 692
  if (s == NP) {
#line 693
    s = SKIP1;
  } else {
    {
#line 696
    errorFn();
    }
  }
  {
#line 700
  Irp__CurrentLocation ++;
#line 701
  Irp__Tail__Overlay__CurrentStackLocation ++;
#line 702
  tmp = IofCallDriver(DeviceObject__DeviceExtension__TopOfStack, Irp);
  }
#line 704
  return (tmp);
}
}
int DiskPerfSendToNextDriver(int DeviceObject , int Irp ) 
{ int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int tmp ;

  {
  if (s == NP) {
    s = SKIP1;
  } else {
    {
    errorFn();
    }
  }
  {
  Irp__CurrentLocation ++;
  Irp__Tail__Overlay__CurrentStackLocation ++;
  deviceExtension = DeviceObject__DeviceExtension;
  tmp = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
  }
  return (tmp);
}
}
Esempio n. 5
0
NTSTATUS
NTAPI
BatteryIoctl(IN ULONG IoControlCode, 
             IN PDEVICE_OBJECT DeviceObject,
             IN PVOID InputBuffer,
             IN ULONG InputBufferLength,
             IN PVOID OutputBuffer,
             IN ULONG OutputBufferLength,
             IN BOOLEAN InternalDeviceIoControl)
{
    IO_STATUS_BLOCK IoStatusBlock;
    KEVENT Event;
    NTSTATUS Status;
    PIRP Irp;
    PAGED_CODE();
    if (CompBattDebug & 0x100) DbgPrint("CompBatt: ENTERING BatteryIoctl\n");

    /* Initialize the event and IRP */
    KeInitializeEvent(&Event, SynchronizationEvent, 0);
    Irp = IoBuildDeviceIoControlRequest(IoControlCode,
                                        DeviceObject,
                                        InputBuffer,
                                        InputBufferLength,
                                        OutputBuffer,
                                        OutputBufferLength,
                                        InternalDeviceIoControl,
                                        &Event,
                                        &IoStatusBlock);
    if (Irp)
    {
        /* Call the class driver miniport */
        Status = IofCallDriver(DeviceObject, Irp);
        if (Status == STATUS_PENDING)
        {
            /* Wait for result */
            KeWaitForSingleObject(&Event, Executive, KernelMode, FALSE, NULL);
            Status = IoStatusBlock.Status;
        }
        
        /* Print failure */
        if (!(NT_SUCCESS(Status)) && (CompBattDebug & 8))
            DbgPrint("BatteryIoctl: Irp failed - %x\n", Status);
        
        /* Done */
        if (CompBattDebug & 0x100) DbgPrint("CompBatt: EXITING BatteryIoctl\n");
    }
    else
    {
        /* Out of memory */
        if (CompBattDebug & 8) DbgPrint("BatteryIoctl: couldn't create Irp\n");
        Status = STATUS_INSUFFICIENT_RESOURCES;
    }
    
    /* Return status */
    return Status;
}
int DiskPerfForwardIrpSynchronous(int DeviceObject , int Irp ) 
{ int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int event = __VERIFIER_nondet_int() ;
  int status ;
  int nextIrpSp__Control ;
  int irpSp ;
  int nextIrpSp ;
  int irpSp__Context ;
  int irpSp__Control ;
  int irpSp___0 ;
  long __cil_tmp15 ;

  {
  deviceExtension = DeviceObject__DeviceExtension;
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
  nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
  nextIrpSp__Control = 0;
  if (s != NP) {
    {
    errorFn();
    }
  } else {
    if (compRegistered != 0) {
      {
      errorFn();
      }
    } else {
      compRegistered = 1;
      routine = 0;
    }
  }
  {
  irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation - 1;
  irpSp__Context = event;
  irpSp__Control = 224;
  status = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
  }
  {
  __cil_tmp15 = (long )status;
  if (__cil_tmp15 == 259L) {
    {
    KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
    status = myStatus;
    }
  }
  }
  return (status);
}
}
Esempio n. 7
0
int DiskPerfShutdownFlush(int DiskPerfShutdownFlush_DeviceObject , int DiskPerfShutdownFlush_Irp ) 
{ int DiskPerfShutdownFlush_DeviceObject__DeviceExtension ;
  int DiskPerfShutdownFlush_Irp__CurrentLocation ;
  int DiskPerfShutdownFlush_Irp__Tail__Overlay__CurrentStackLocation ;
  int DiskPerfShutdownFlush_deviceExtension__TargetDeviceObject ;
  int DiskPerfShutdownFlush_deviceExtension ;
  int DiskPerfShutdownFlush_tmp ;

  {
  DiskPerfShutdownFlush_deviceExtension = DiskPerfShutdownFlush_DeviceObject__DeviceExtension;
  DiskPerfShutdownFlush_Irp__CurrentLocation = DiskPerfShutdownFlush_Irp__CurrentLocation + 1;
  DiskPerfShutdownFlush_Irp__Tail__Overlay__CurrentStackLocation = DiskPerfShutdownFlush_Irp__Tail__Overlay__CurrentStackLocation + 1;
  DiskPerfShutdownFlush_tmp = IofCallDriver(DiskPerfShutdownFlush_deviceExtension__TargetDeviceObject, DiskPerfShutdownFlush_Irp);
  return (DiskPerfShutdownFlush_tmp);
}
}
Esempio n. 8
0
int KbFilter_DispatchPassThrough(int KbFilter_DispatchPassThrough_DeviceObject , int KbFilter_DispatchPassThrough_Irp ) 
{ int KbFilter_DispatchPassThrough_Irp__Tail__Overlay__CurrentStackLocation ;
  int KbFilter_DispatchPassThrough_Irp__CurrentLocation ;
  int KbFilter_DispatchPassThrough_DeviceObject__DeviceExtension__TopOfStack ;
  int KbFilter_DispatchPassThrough_irpStack ;
  int KbFilter_DispatchPassThrough_tmp ;

  {
  KbFilter_DispatchPassThrough_irpStack = KbFilter_DispatchPassThrough_Irp__Tail__Overlay__CurrentStackLocation;
  safety = safety + (s - NP);
  s = SKIP1;
  KbFilter_DispatchPassThrough_Irp__CurrentLocation = KbFilter_DispatchPassThrough_Irp__CurrentLocation + 1;
  KbFilter_DispatchPassThrough_Irp__Tail__Overlay__CurrentStackLocation = KbFilter_DispatchPassThrough_Irp__Tail__Overlay__CurrentStackLocation + 1;
  KbFilter_DispatchPassThrough_tmp = IofCallDriver(KbFilter_DispatchPassThrough_DeviceObject__DeviceExtension__TopOfStack, KbFilter_DispatchPassThrough_Irp);
  return (KbFilter_DispatchPassThrough_tmp);
}
}
int DiskPerfShutdownFlush(int DeviceObject , int Irp ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int tmp ;

  {
  {
  deviceExtension = DeviceObject__DeviceExtension;
  Irp__CurrentLocation ++;
  Irp__Tail__Overlay__CurrentStackLocation ++;
  tmp = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
  }
  return (tmp);
}
}
Esempio n. 10
0
int DiskPerfSendToNextDriver(int DiskPerfSendToNextDriver_DeviceObject , int DiskPerfSendToNextDriver_Irp ) 
{ int DiskPerfSendToNextDriver_Irp__CurrentLocation ;
  int DiskPerfSendToNextDriver_Irp__Tail__Overlay__CurrentStackLocation ;
  int DiskPerfSendToNextDriver_DeviceObject__DeviceExtension ;
  int DiskPerfSendToNextDriver_deviceExtension__TargetDeviceObject ;
  int DiskPerfSendToNextDriver_deviceExtension ;
  int DiskPerfSendToNextDriver_tmp ;

  {
  safety = safety + (s - NP);
  s = SKIP1;
  DiskPerfSendToNextDriver_Irp__CurrentLocation = DiskPerfSendToNextDriver_Irp__CurrentLocation + 1;
  DiskPerfSendToNextDriver_Irp__Tail__Overlay__CurrentStackLocation = DiskPerfSendToNextDriver_Irp__Tail__Overlay__CurrentStackLocation + 1;
  DiskPerfSendToNextDriver_deviceExtension = DiskPerfSendToNextDriver_DeviceObject__DeviceExtension;
  DiskPerfSendToNextDriver_tmp = IofCallDriver(DiskPerfSendToNextDriver_deviceExtension__TargetDeviceObject, DiskPerfSendToNextDriver_Irp);
  return (DiskPerfSendToNextDriver_tmp);
}
}
Esempio n. 11
0
int DiskPerfForwardIrpSynchronous(int DiskPerfForwardIrpSynchronous_DeviceObject , int DiskPerfForwardIrpSynchronous_Irp ) 
{ int DiskPerfForwardIrpSynchronous_Irp__Tail__Overlay__CurrentStackLocation ;
  int DiskPerfForwardIrpSynchronous_DeviceObject__DeviceExtension ;
  int DiskPerfForwardIrpSynchronous_deviceExtension__TargetDeviceObject ;
  int DiskPerfForwardIrpSynchronous_deviceExtension ;
  int DiskPerfForwardIrpSynchronous_event ;
  int DiskPerfForwardIrpSynchronous_status ;
  int DiskPerfForwardIrpSynchronous_nextIrpSp__Control ;
  int DiskPerfForwardIrpSynchronous_irpSp ;
  int DiskPerfForwardIrpSynchronous_nextIrpSp ;
  int DiskPerfForwardIrpSynchronous_irpSp__Context ;
  int DiskPerfForwardIrpSynchronous_irpSp__Control ;
  int DiskPerfForwardIrpSynchronous_irpSp___0 ;
  int DiskPerfForwardIrpSynchronous_CIL___Tmp15 ;

  {
  DiskPerfForwardIrpSynchronous_deviceExtension = DiskPerfForwardIrpSynchronous_DeviceObject__DeviceExtension;
  DiskPerfForwardIrpSynchronous_irpSp = DiskPerfForwardIrpSynchronous_Irp__Tail__Overlay__CurrentStackLocation;
  DiskPerfForwardIrpSynchronous_nextIrpSp = DiskPerfForwardIrpSynchronous_Irp__Tail__Overlay__CurrentStackLocation - 1;
  DiskPerfForwardIrpSynchronous_nextIrpSp__Control = 0;
  safety = safety + (s - NP);
  safety = safety + (compRegistered - 0);
  compRegistered = 1;
  routine = 0;
  DiskPerfForwardIrpSynchronous_irpSp___0 = DiskPerfForwardIrpSynchronous_Irp__Tail__Overlay__CurrentStackLocation - 1;
  DiskPerfForwardIrpSynchronous_irpSp__Context = DiskPerfForwardIrpSynchronous_event;
  DiskPerfForwardIrpSynchronous_irpSp__Control = 224;
  DiskPerfForwardIrpSynchronous_status = IofCallDriver(DiskPerfForwardIrpSynchronous_deviceExtension__TargetDeviceObject, DiskPerfForwardIrpSynchronous_Irp);
  DiskPerfForwardIrpSynchronous_CIL___Tmp15 = DiskPerfForwardIrpSynchronous_status;
  if ((DiskPerfForwardIrpSynchronous_CIL___Tmp15 >= 259) && (DiskPerfForwardIrpSynchronous_CIL___Tmp15 <= 259)) {
    KeWaitForSingleObject(DiskPerfForwardIrpSynchronous_event, Executive, KernelMode, 0, 0);
    DiskPerfForwardIrpSynchronous_status = myStatus;
  }
  return (DiskPerfForwardIrpSynchronous_status);
}
}
int DiskPerfDeviceControl(int DeviceObject , int Irp ) 
{ int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int currentIrpStack__Parameters__DeviceIoControl__IoControlCode = __VERIFIER_nondet_int() ;
  int currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength = __VERIFIER_nondet_int() ;
  int sizeof__DISK_PERFORMANCE = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Information ;
  int deviceExtension__DiskCounters = __VERIFIER_nondet_int() ;
  int Irp__AssociatedIrp__SystemBuffer = __VERIFIER_nondet_int() ;
  int deviceExtension__Processors = __VERIFIER_nondet_int() ;
  int totalCounters__QueueDepth ;
  int deviceExtension__QueueDepth = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Status ;
  int deviceExtension ;
  int currentIrpStack ;
  int status ;
  int i ;
  int totalCounters ;
  int diskCounters ;
  int tmp ;
  int __cil_tmp24 ;
  int __cil_tmp25 ;
  int __cil_tmp26 ;

  {
  deviceExtension = DeviceObject__DeviceExtension;
  currentIrpStack = Irp__Tail__Overlay__CurrentStackLocation;
  {
  __cil_tmp24 = 32;
  __cil_tmp25 = 458752;
  __cil_tmp26 = 458784;
  if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode == __cil_tmp26) {
    if (currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength < sizeof__DISK_PERFORMANCE) {
      status = -1073741789;
      Irp__IoStatus__Information = 0;
    } else {
      diskCounters = deviceExtension__DiskCounters;
      if (diskCounters == 0) {
        {
        Irp__IoStatus__Status = -1073741823;
        myStatus = -1073741823;
        IofCompleteRequest(Irp, 0);
        }
        return (-1073741823);
      }
      totalCounters = Irp__AssociatedIrp__SystemBuffer;
      i = 0;
      {
      while (1) {
        while_0_continue: /* CIL Label */ ;

        if (i >= deviceExtension__Processors) {
          goto while_1_break;
        }
        i ++;
      }
      while_0_break: /* CIL Label */ ;
      }
      while_1_break: 
      totalCounters__QueueDepth = deviceExtension__QueueDepth;
      status = 0;
      Irp__IoStatus__Information = sizeof__DISK_PERFORMANCE;
    }
    {
    Irp__IoStatus__Status = status;
    myStatus = status;
    IofCompleteRequest(Irp, 0);
    }
    return (status);
  } else {
    {
    Irp__CurrentLocation ++;
    Irp__Tail__Overlay__CurrentStackLocation ++;
    tmp = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
    }
    return (tmp);
  }
  }
}
}
Esempio n. 13
0
int DiskPerfDeviceControl(int DiskPerfDeviceControl_DeviceObject , int DiskPerfDeviceControl_Irp ) 
{ int DiskPerfDeviceControl_Irp__CurrentLocation ;
  int DiskPerfDeviceControl_Irp__Tail__Overlay__CurrentStackLocation ;
  int DiskPerfDeviceControl_DeviceObject__DeviceExtension ;
  int DiskPerfDeviceControl_deviceExtension__TargetDeviceObject ;
  int DiskPerfDeviceControl_currentIrpStack__Parameters__DeviceIoControl__IoControlCode ;
  int DiskPerfDeviceControl_currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength ;
  int DiskPerfDeviceControl_sizeof__DISK_PERFORMANCE ;
  int DiskPerfDeviceControl_Irp__IoStatus__Information ;
  int DiskPerfDeviceControl_deviceExtension__DiskCounters ;
  int DiskPerfDeviceControl_Irp__AssociatedIrp__SystemBuffer ;
  int DiskPerfDeviceControl_totalCounters__QueueDepth ;
  int DiskPerfDeviceControl_deviceExtension__QueueDepth ;
  int DiskPerfDeviceControl_Irp__IoStatus__Status ;
  int DiskPerfDeviceControl_deviceExtension ;
  int DiskPerfDeviceControl_currentIrpStack ;
  int DiskPerfDeviceControl_status ;
  int DiskPerfDeviceControl_i ;
  int DiskPerfDeviceControl_totalCounters ;
  int DiskPerfDeviceControl_diskCounters ;
  int DiskPerfDeviceControl_tmp ;
  int DiskPerfDeviceControl_CIL___Tmp24 ;
  int DiskPerfDeviceControl_CIL___Tmp25 ;
  int DiskPerfDeviceControl_CIL___Tmp26 ;
  int retres27 ;
  int TRACER_returning ;

  {
  TRACER_returning = 0;
  DiskPerfDeviceControl_deviceExtension = DiskPerfDeviceControl_DeviceObject__DeviceExtension;
  DiskPerfDeviceControl_currentIrpStack = DiskPerfDeviceControl_Irp__Tail__Overlay__CurrentStackLocation;
  DiskPerfDeviceControl_CIL___Tmp24 = 32;
  DiskPerfDeviceControl_CIL___Tmp25 = 458752;
  DiskPerfDeviceControl_CIL___Tmp26 = 458784;
  if ((DiskPerfDeviceControl_currentIrpStack__Parameters__DeviceIoControl__IoControlCode >= DiskPerfDeviceControl_CIL___Tmp26) && (DiskPerfDeviceControl_currentIrpStack__Parameters__DeviceIoControl__IoControlCode <= DiskPerfDeviceControl_CIL___Tmp26)) {
    if (DiskPerfDeviceControl_currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength < DiskPerfDeviceControl_sizeof__DISK_PERFORMANCE) {
      DiskPerfDeviceControl_status = -1073741789;
      DiskPerfDeviceControl_Irp__IoStatus__Information = 0;
    } else {
      DiskPerfDeviceControl_diskCounters = DiskPerfDeviceControl_deviceExtension__DiskCounters;
      if ((DiskPerfDeviceControl_diskCounters >= 0) && (DiskPerfDeviceControl_diskCounters <= 0)) {
        DiskPerfDeviceControl_Irp__IoStatus__Status = -1073741823;
        myStatus = -1073741823;
        IofCompleteRequest(DiskPerfDeviceControl_Irp, 0);
        retres27 = -1073741823;
        TRACER_returning = 1;
      } else {
        DiskPerfDeviceControl_totalCounters = DiskPerfDeviceControl_Irp__AssociatedIrp__SystemBuffer;
        DiskPerfDeviceControl_i = 0;
        DiskPerfDeviceControl_totalCounters__QueueDepth = DiskPerfDeviceControl_deviceExtension__QueueDepth;
        DiskPerfDeviceControl_status = 0;
        DiskPerfDeviceControl_Irp__IoStatus__Information = DiskPerfDeviceControl_sizeof__DISK_PERFORMANCE;
      }
    }
    if (TRACER_returning <= 0) {
      DiskPerfDeviceControl_Irp__IoStatus__Status = DiskPerfDeviceControl_status;
      myStatus = DiskPerfDeviceControl_status;
      IofCompleteRequest(DiskPerfDeviceControl_Irp, 0);
      retres27 = DiskPerfDeviceControl_status;
    }
  } else {
    DiskPerfDeviceControl_Irp__CurrentLocation = DiskPerfDeviceControl_Irp__CurrentLocation + 1;
    DiskPerfDeviceControl_Irp__Tail__Overlay__CurrentStackLocation = DiskPerfDeviceControl_Irp__Tail__Overlay__CurrentStackLocation + 1;
    DiskPerfDeviceControl_tmp = IofCallDriver(DiskPerfDeviceControl_deviceExtension__TargetDeviceObject, DiskPerfDeviceControl_Irp);
    retres27 = DiskPerfDeviceControl_tmp;
  }
  return (retres27);
}
}
Esempio n. 14
0
int KbFilter_PnP(int KbFilter_PnP_DeviceObject , int KbFilter_PnP_Irp ) 
{ int KbFilter_PnP_devExt ;
  int KbFilter_PnP_irpStack ;
  int KbFilter_PnP_status ;
  int KbFilter_PnP_event ;
  int KbFilter_PnP_DeviceObject__DeviceExtension ;
  int KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation ;
  int KbFilter_PnP_irpStack__MinorFunction ;
  int KbFilter_PnP_devExt__TopOfStack ;
  int KbFilter_PnP_devExt__Started ;
  int KbFilter_PnP_devExt__Removed ;
  int KbFilter_PnP_devExt__SurpriseRemoved ;
  int KbFilter_PnP_Irp__IoStatus__Status ;
  int KbFilter_PnP_Irp__IoStatus__Information ;
  int KbFilter_PnP_Irp__CurrentLocation ;
  int KbFilter_PnP_irpSp ;
  int KbFilter_PnP_nextIrpSp ;
  int KbFilter_PnP_nextIrpSp__Control ;
  int KbFilter_PnP_irpSp___0 ;
  int KbFilter_PnP_irpSp__Context ;
  int KbFilter_PnP_irpSp__Control ;
  long KbFilter_PnP_CIL___Tmp23 ;

  {
  KbFilter_PnP_status = 0;
  KbFilter_PnP_devExt = KbFilter_PnP_DeviceObject__DeviceExtension;
  KbFilter_PnP_irpStack = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation;
  if ((KbFilter_PnP_irpStack__MinorFunction >= 0) && (KbFilter_PnP_irpStack__MinorFunction <= 0)) {
    KbFilter_PnP_irpSp = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation;
    KbFilter_PnP_nextIrpSp = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation - 1;
    KbFilter_PnP_nextIrpSp__Control = 0;
    safety = safety + (s - NP);
    safety = safety + (compRegistered - 0);
    compRegistered = 1;
    KbFilter_PnP_irpSp___0 = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation - 1;
    KbFilter_PnP_irpSp__Context = KbFilter_PnP_event;
    KbFilter_PnP_irpSp__Control = 224;
    KbFilter_PnP_status = IofCallDriver(KbFilter_PnP_devExt__TopOfStack, KbFilter_PnP_Irp);
    KbFilter_PnP_CIL___Tmp23 = (long )KbFilter_PnP_status;
    if ((KbFilter_PnP_CIL___Tmp23 >= 259L) && (KbFilter_PnP_CIL___Tmp23 <= 259L)) {
      KeWaitForSingleObject(KbFilter_PnP_event, Executive, KernelMode, 0, 0);
    }
    if (KbFilter_PnP_status >= 0) {
      if (myStatus >= 0) {
        KbFilter_PnP_devExt__Started = 1;
        KbFilter_PnP_devExt__Removed = 0;
        KbFilter_PnP_devExt__SurpriseRemoved = 0;
      }
    }
    KbFilter_PnP_Irp__IoStatus__Status = KbFilter_PnP_status;
    myStatus = KbFilter_PnP_status;
    KbFilter_PnP_Irp__IoStatus__Information = 0;
    IofCompleteRequest(KbFilter_PnP_Irp, 0);
  } else {
    if ((KbFilter_PnP_irpStack__MinorFunction >= 23) && (KbFilter_PnP_irpStack__MinorFunction <= 23)) {
      KbFilter_PnP_devExt__SurpriseRemoved = 1;
      safety = safety + (s - NP);
      s = SKIP1;
      KbFilter_PnP_Irp__CurrentLocation = KbFilter_PnP_Irp__CurrentLocation + 1;
      KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation + 1;
      KbFilter_PnP_status = IofCallDriver(KbFilter_PnP_devExt__TopOfStack, KbFilter_PnP_Irp);
    } else {
      if ((KbFilter_PnP_irpStack__MinorFunction >= 2) && (KbFilter_PnP_irpStack__MinorFunction <= 2)) {
        KbFilter_PnP_devExt__Removed = 1;
        safety = safety + (s - NP);
        s = SKIP1;
        KbFilter_PnP_Irp__CurrentLocation = KbFilter_PnP_Irp__CurrentLocation + 1;
        KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation + 1;
        IofCallDriver(KbFilter_PnP_devExt__TopOfStack, KbFilter_PnP_Irp);
        KbFilter_PnP_status = 0;
      } else {
        safety = safety + (s - NP);
        s = SKIP1;
        KbFilter_PnP_Irp__CurrentLocation = KbFilter_PnP_Irp__CurrentLocation + 1;
        KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation = KbFilter_PnP_Irp__Tail__Overlay__CurrentStackLocation + 1;
        KbFilter_PnP_status = IofCallDriver(KbFilter_PnP_devExt__TopOfStack, KbFilter_PnP_Irp);
      }
    }
  }
  return (KbFilter_PnP_status);
}
}
Esempio n. 15
0
int KbFilter_PnP(int DeviceObject , int Irp ) 
{ int devExt ;
  int irpStack ;
  int status ;
  int event ;
  int DeviceObject__DeviceExtension ;
  int Irp__Tail__Overlay__CurrentStackLocation ;
  int irpStack__MinorFunction ;
  int devExt__TopOfStack ;
  int devExt__Started ;
  int devExt__Removed ;
  int devExt__SurpriseRemoved ;
  int Irp__IoStatus__Status ;
  int Irp__IoStatus__Information ;
  int Irp__CurrentLocation ;
  int irpSp ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___0 ;
  int irpSp__Context ;
  int irpSp__Control ;
  long __cil_tmp23 ;

  {
#line 101
  status = 0;
#line 102
  devExt = DeviceObject__DeviceExtension;
#line 103
  irpStack = Irp__Tail__Overlay__CurrentStackLocation;
#line 104
  if (irpStack__MinorFunction == 0) {
    goto switch_0_0;
  } else {
#line 107
    if (irpStack__MinorFunction == 23) {
      goto switch_0_23;
    } else {
#line 110
      if (irpStack__MinorFunction == 2) {
        goto switch_0_2;
      } else {
#line 113
        if (irpStack__MinorFunction == 1) {
          goto switch_0_1;
        } else {
#line 116
          if (irpStack__MinorFunction == 5) {
            goto switch_0_1;
          } else {
#line 119
            if (irpStack__MinorFunction == 3) {
              goto switch_0_1;
            } else {
#line 122
              if (irpStack__MinorFunction == 6) {
                goto switch_0_1;
              } else {
#line 125
                if (irpStack__MinorFunction == 13) {
                  goto switch_0_1;
                } else {
#line 128
                  if (irpStack__MinorFunction == 4) {
                    goto switch_0_1;
                  } else {
#line 131
                    if (irpStack__MinorFunction == 7) {
                      goto switch_0_1;
                    } else {
#line 134
                      if (irpStack__MinorFunction == 8) {
                        goto switch_0_1;
                      } else {
#line 137
                        if (irpStack__MinorFunction == 9) {
                          goto switch_0_1;
                        } else {
#line 140
                          if (irpStack__MinorFunction == 12) {
                            goto switch_0_1;
                          } else {
#line 143
                            if (irpStack__MinorFunction == 10) {
                              goto switch_0_1;
                            } else {
#line 146
                              if (irpStack__MinorFunction == 11) {
                                goto switch_0_1;
                              } else {
#line 149
                                if (irpStack__MinorFunction == 15) {
                                  goto switch_0_1;
                                } else {
#line 152
                                  if (irpStack__MinorFunction == 16) {
                                    goto switch_0_1;
                                  } else {
#line 155
                                    if (irpStack__MinorFunction == 17) {
                                      goto switch_0_1;
                                    } else {
#line 158
                                      if (irpStack__MinorFunction == 18) {
                                        goto switch_0_1;
                                      } else {
#line 161
                                        if (irpStack__MinorFunction == 19) {
                                          goto switch_0_1;
                                        } else {
#line 164
                                          if (irpStack__MinorFunction == 20) {
                                            goto switch_0_1;
                                          } else {
                                            goto switch_0_1;
#line 169
                                            if (0) {
                                              switch_0_0: 
#line 171
                                              irpSp = Irp__Tail__Overlay__CurrentStackLocation;
#line 172
                                              nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 173
                                              nextIrpSp__Control = 0;
#line 174
                                              if (s != NP) {
                                                {
#line 176
                                                errorFn();
                                                }
                                              } else {
#line 179
                                                if (compRegistered != 0) {
                                                  {
#line 181
                                                  errorFn();
                                                  }
                                                } else {
#line 184
                                                  compRegistered = 1;
                                                }
                                              }
                                              {
#line 188
                                              irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 189
                                              irpSp__Control = 224;
#line 192
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              {
#line 197
                                              __cil_tmp23 = (long )status;
#line 197
                                              if (__cil_tmp23 == 259 ) {
                                                {
#line 199
                                                KeWaitForSingleObject(event, Executive,
                                                                      KernelMode,
                                                                      0, 0);
                                                }
                                              }
                                              }
#line 206
                                              if (status >= 0) {
#line 207
                                                if (myStatus >= 0) {
#line 208
                                                  devExt__Started = 1;
#line 209
                                                  devExt__Removed = 0;
#line 210
                                                  devExt__SurpriseRemoved = 0;
                                                }
                                              }
                                              {
#line 218
                                              Irp__IoStatus__Status = status;
#line 219
                                              myStatus = status;
#line 220
                                              Irp__IoStatus__Information = 0;
#line 221
                                              IofCompleteRequest(Irp, 0);
                                              }
                                              goto switch_0_break;
                                              switch_0_23: 
#line 225
                                              devExt__SurpriseRemoved = 1;
#line 226
                                              if (s == NP) {
#line 227
                                                s = SKIP1;
                                              } else {
                                                {
#line 230
                                                errorFn();
                                                }
                                              }
                                              {
#line 234
                                              Irp__CurrentLocation ++;
#line 235
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 236
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              goto switch_0_break;
                                              switch_0_2: 
#line 241
                                              devExt__Removed = 1;
#line 242
                                              if (s == NP) {
#line 243
                                                s = SKIP1;
                                              } else {
                                                {
#line 246
                                                errorFn();
                                                }
                                              }
                                              {
#line 250
                                              Irp__CurrentLocation ++;
#line 251
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 252
                                              IofCallDriver(devExt__TopOfStack, Irp);
#line 253
                                              status = 0;
                                              }
                                              goto switch_0_break;
                                              switch_0_1: ;
#line 275
                                              if (s == NP) {
#line 276
                                                s = SKIP1;
                                              } else {
                                                {
#line 279
                                                errorFn();
                                                }
                                              }
                                              {
#line 283
                                              Irp__CurrentLocation ++;
#line 284
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 285
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              goto switch_0_break;
                                            } else {
                                              switch_0_break: ;
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
#line 314
  return (status);
}
}
Esempio n. 16
0
int FloppyPnp(int DeviceObject , int Irp ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Information ;
  int Irp__IoStatus__Status ;
  int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int disketteExtension__IsRemoved = __VERIFIER_nondet_int() ;
  int disketteExtension__IsStarted = __VERIFIER_nondet_int() ;
  int disketteExtension__TargetObject = __VERIFIER_nondet_int() ;
  int disketteExtension__HoldNewRequests ;
  int disketteExtension__FloppyThread = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString__Buffer = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString = __VERIFIER_nondet_int() ;
  int disketteExtension__ArcName__Length = __VERIFIER_nondet_int() ;
  int disketteExtension__ArcName = __VERIFIER_nondet_int() ;
  int irpSp__MinorFunction = __VERIFIER_nondet_int() ;
  int IoGetConfigurationInformation__FloppyCount = __VERIFIER_nondet_int() ;
  int irpSp ;
  int disketteExtension ;
  int ntStatus ;
  int doneEvent = __VERIFIER_nondet_int() ;
  int irpSp___0 ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___1 ;
  int irpSp__Context ;
  int irpSp__Control ;
  long __cil_tmp29 ;
  long __cil_tmp30 ;

  {
#line 197
  ntStatus = 0;
#line 198
  PagingReferenceCount ++;
#line 199
  if (PagingReferenceCount == 1) {

  }
#line 204
  disketteExtension = DeviceObject__DeviceExtension;
#line 205
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
#line 206
  if (disketteExtension__IsRemoved) {
    {
#line 208
    Irp__IoStatus__Information = 0;
#line 209
    Irp__IoStatus__Status = -1073741738;
#line 210
    myStatus = -1073741738;
#line 211
    IofCompleteRequest(Irp, 0);
    }
#line 213
    return (-1073741738);
  }
#line 217
  if (irpSp__MinorFunction == 0) {
    goto switch_0_0;
  } else {
#line 220
    if (irpSp__MinorFunction == 5) {
      goto switch_0_5;
    } else {
#line 223
      if (irpSp__MinorFunction == 1) {
        goto switch_0_5;
      } else {
#line 226
        if (irpSp__MinorFunction == 6) {
          goto switch_0_6;
        } else {
#line 229
          if (irpSp__MinorFunction == 3) {
            goto switch_0_6;
          } else {
#line 232
            if (irpSp__MinorFunction == 4) {
              goto switch_0_4;
            } else {
#line 235
              if (irpSp__MinorFunction == 2) {
                goto switch_0_2;
              } else {
                goto switch_0_default;
#line 240
                if (0) {
                  switch_0_0: 
                  {
#line 243
                  ntStatus = FloppyStartDevice(DeviceObject, Irp);
                  }
                  goto switch_0_break;
                  switch_0_5: 
#line 248
                  if (irpSp__MinorFunction == 5) {

                  }
#line 253
                  if (! disketteExtension__IsStarted) {
#line 254
                    if (s == NP) {
#line 255
                      s = SKIP1;
                    } else {
                      {
#line 258
                      errorFn();
                      }
                    }
                    {
#line 262
                    Irp__CurrentLocation ++;
#line 263
                    Irp__Tail__Overlay__CurrentStackLocation ++;
#line 264
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
#line 266
                    return (ntStatus);
                  }
                  {
#line 271
                  disketteExtension__HoldNewRequests = 1;
#line 272
                  ntStatus = FlQueueIrpToThread(Irp, disketteExtension);
                  }
                  {
#line 274
                  __cil_tmp29 = (long )ntStatus;
#line 274
                  if (__cil_tmp29 == 259L) {
                    {
#line 276
                    KeWaitForSingleObject(disketteExtension__FloppyThread, Executive,
                                          KernelMode, 0, 0);
                    }
#line 279
                    if (disketteExtension__FloppyThread != 0) {

                    }
#line 284
                    disketteExtension__FloppyThread = 0;
#line 285
                    Irp__IoStatus__Status = 0;
#line 286
                    myStatus = 0;
#line 287
                    if (s == NP) {
#line 288
                      s = SKIP1;
                    } else {
                      {
#line 291
                      errorFn();
                      }
                    }
                    {
#line 295
                    Irp__CurrentLocation ++;
#line 296
                    Irp__Tail__Overlay__CurrentStackLocation ++;
#line 297
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                  } else {
                    {
#line 301
                    ntStatus = -1073741823;
#line 302
                    Irp__IoStatus__Status = ntStatus;
#line 303
                    myStatus = ntStatus;
#line 304
                    Irp__IoStatus__Information = 0;
#line 305
                    IofCompleteRequest(Irp, 0);
                    }
                  }
                  }
                  goto switch_0_break;
                  switch_0_6: 
#line 311
                  if (irpSp__MinorFunction == 6) {

                  }
#line 316
                  if (! disketteExtension__IsStarted) {
#line 317
                    Irp__IoStatus__Status = 0;
#line 318
                    myStatus = 0;
#line 319
                    if (s == NP) {
#line 320
                      s = SKIP1;
                    } else {
                      {
#line 323
                      errorFn();
                      }
                    }
                    {
#line 327
                    Irp__CurrentLocation ++;
#line 328
                    Irp__Tail__Overlay__CurrentStackLocation ++;
#line 329
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                  } else {
#line 332
                    Irp__IoStatus__Status = 0;
#line 333
                    myStatus = 0;
#line 334
                    irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation;
#line 335
                    nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 336
                    nextIrpSp__Control = 0;
#line 337
                    if (s != NP) {
                      {
#line 339
                      errorFn();
                      }
                    } else {
#line 342
                      if (compRegistered != 0) {
                        {
#line 344
                        errorFn();
                        }
                      } else {
#line 347
                        compRegistered = 1;
                      }
                    }
                    {
#line 351
                    irpSp___1 = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 352
                    irpSp__Context = doneEvent;
#line 353
                    irpSp__Control = 224;
#line 357
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                    {
#line 359
                    __cil_tmp30 = (long )ntStatus;
#line 359
                    if (__cil_tmp30 == 259L) {
                      {
#line 361
                      KeWaitForSingleObject(doneEvent, Executive, KernelMode, 0, 0);
#line 362
                      ntStatus = myStatus;
                      }
                    }
                    }
                    {
#line 368
                    disketteExtension__HoldNewRequests = 0;
#line 369
                    Irp__IoStatus__Status = ntStatus;
#line 370
                    myStatus = ntStatus;
#line 371
                    Irp__IoStatus__Information = 0;
#line 372
                    IofCompleteRequest(Irp, 0);
                    }
                  }
                  goto switch_0_break;
                  switch_0_4: 
#line 377
                  disketteExtension__IsStarted = 0;
#line 378
                  Irp__IoStatus__Status = 0;
#line 379
                  myStatus = 0;
#line 380
                  if (s == NP) {
#line 381
                    s = SKIP1;
                  } else {
                    {
#line 384
                    errorFn();
                    }
                  }
                  {
#line 388
                  Irp__CurrentLocation ++;
#line 389
                  Irp__Tail__Overlay__CurrentStackLocation ++;
#line 390
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
                  goto switch_0_break;
                  switch_0_2: 
#line 394
                  disketteExtension__HoldNewRequests = 0;
#line 395
                  disketteExtension__IsStarted = 0;
#line 396
                  disketteExtension__IsRemoved = 1;
#line 397
                  if (s == NP) {
#line 398
                    s = SKIP1;
                  } else {
                    {
#line 401
                    errorFn();
                    }
                  }
                  {
#line 405
                  Irp__CurrentLocation ++;
#line 406
                  Irp__Tail__Overlay__CurrentStackLocation ++;
#line 407
                  Irp__IoStatus__Status = 0;
#line 408
                  myStatus = 0;
#line 409
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
#line 411
                  if (disketteExtension__InterfaceString__Buffer != 0) {
                    {
#line 413
                    IoSetDeviceInterfaceState(disketteExtension__InterfaceString,
                                              0);
                    }
                  }
#line 419
                  if (disketteExtension__ArcName__Length != 0) {
                    {
#line 421
                    IoDeleteSymbolicLink(disketteExtension__ArcName);
                    }
                  }
#line 426
                  IoGetConfigurationInformation__FloppyCount --;
                  goto switch_0_break;
                  switch_0_default: ;
#line 429
                  if (s == NP) {
#line 430
                    s = SKIP1;
                  } else {
                    {
#line 433
                    errorFn();
                    }
                  }
                  {
#line 437
                  Irp__CurrentLocation ++;
#line 438
                  Irp__Tail__Overlay__CurrentStackLocation ++;
#line 439
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
                } else {
                  switch_0_break: ;
                }
              }
            }
          }
        }
      }
    }
  }
#line 452
  PagingReferenceCount --;
#line 453
  if (PagingReferenceCount == 0) {

  }
#line 458
  return (ntStatus);
}
}
Esempio n. 17
0
int DiskPerfRegisterDevice(int DeviceObject ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int sizeof__number = __VERIFIER_nondet_int() ;
  int ioStatus__Status = __VERIFIER_nondet_int() ;
  int sizeof__VOLUME_NUMBER = __VERIFIER_nondet_int() ;
  int volumeNumber__VolumeManagerName__0 = __VERIFIER_nondet_int() ;
  int status ;
  int ioStatus = __VERIFIER_nondet_int() ;
  int event = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int irp ;
  int number = __VERIFIER_nondet_int() ;
  int registrationFlag ;
  int sizeof__MOUNTDEV_NAME = __VERIFIER_nondet_int() ;
  int output__NameLength = __VERIFIER_nondet_int() ;
  int outputSize ;
  int output = __VERIFIER_nondet_int() ;
  int volumeNumber = __VERIFIER_nondet_int() ;
  int __cil_tmp20 ;
  int __cil_tmp21 ;
  int __cil_tmp22 ;
  long __cil_tmp23 ;
  int __cil_tmp24 ;
  int __cil_tmp25 ;
  int __cil_tmp26 ;
  long __cil_tmp27 ;
  unsigned long __cil_tmp28 ;
  int __cil_tmp29 ;
  int __cil_tmp30 ;
  int __cil_tmp31 ;
  long __cil_tmp32 ;
  int __cil_tmp33 ;
  int __cil_tmp34 ;
  int __cil_tmp35 ;
  int __cil_tmp36 ;
  long __cil_tmp37 ;
  int __cil_tmp38 ;
  int __cil_tmp39 ;

  {
  {
#line 489
  registrationFlag = 0;
#line 490
  deviceExtension = DeviceObject__DeviceExtension;
#line 491
  __cil_tmp20 = 4224;
#line 491
  __cil_tmp21 = 2949120;
#line 491
  __cil_tmp22 = 2953344;
#line 491
  irp = IoBuildDeviceIoControlRequest(__cil_tmp22, deviceExtension__TargetDeviceObject,
                                      0, 0, number, sizeof__number, 0, event, ioStatus);
  }
#line 494
  if (! irp) {
#line 495
    return (-1073741670);
  }
  {
#line 500
  status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
  }
  {
#line 502
  __cil_tmp23 = (long )status;
#line 502
  if (__cil_tmp23 == 259L) {
    {
#line 504
    KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
#line 505
    status = ioStatus__Status;
    }
  }
  }
#line 510
  if (status < 0) {
#line 513
    outputSize = sizeof__MOUNTDEV_NAME;
#line 514
    if (! output) {
#line 515
      return (-1073741670);
    }
    {
#line 520
    __cil_tmp24 = 8;
#line 520
    __cil_tmp25 = 5046272;
#line 520
    __cil_tmp26 = 5046280;
#line 520
    irp = IoBuildDeviceIoControlRequest(__cil_tmp26, deviceExtension__TargetDeviceObject,
                                        0, 0, output, outputSize, 0, event, ioStatus);
    }
#line 523
    if (! irp) {
#line 524
      return (-1073741670);
    }
    {
#line 529
    status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
    }
    {
#line 531
    __cil_tmp27 = (long )status;
#line 531
    if (__cil_tmp27 == 259L) {
      {
#line 533
      KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
#line 534
      status = ioStatus__Status;
      }
    }
    }
    {
#line 539
    __cil_tmp28 = (unsigned long )status;
#line 539
    if (__cil_tmp28 == -2147483643) {
#line 540
      outputSize = sizeof__MOUNTDEV_NAME + output__NameLength;
#line 541
      if (! output) {
#line 542
        return (-1073741670);
      }
      {
#line 547
      __cil_tmp29 = 8;
#line 547
      __cil_tmp30 = 5046272;
#line 547
      __cil_tmp31 = 5046280;
#line 547
      irp = IoBuildDeviceIoControlRequest(__cil_tmp31, deviceExtension__TargetDeviceObject,
                                          0, 0, output, outputSize, 0, event, ioStatus);
      }
#line 550
      if (! irp) {
#line 551
        return (-1073741670);
      }
      {
#line 556
      status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
      }
      {
#line 558
      __cil_tmp32 = (long )status;
#line 558
      if (__cil_tmp32 == 259L) {
        {
#line 560
        KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
#line 561
        status = ioStatus__Status;
        }
      }
      }
    }
    }
    {
#line 569
    if (status < 0) {
#line 570
      return (status);
    }
    }
    {
#line 575
    __cil_tmp34 = 28;
#line 575
    __cil_tmp35 = 5636096;
#line 575
    __cil_tmp36 = 5636124;
#line 575
    irp = IoBuildDeviceIoControlRequest(__cil_tmp36, deviceExtension__TargetDeviceObject,
                                        0, 0, volumeNumber, sizeof__VOLUME_NUMBER,
                                        0, event, ioStatus);
    }
#line 579
    if (! irp) {
#line 580
      return (-1073741670);
    }
    {
#line 585
    status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
    }
    {
#line 587
    __cil_tmp37 = (long )status;
#line 587
    if (__cil_tmp37 == 259L) {
      {
#line 589
      KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
#line 590
      status = ioStatus__Status;
      }
    }
    }
    {
#line 595
    if (status < 0) {
      goto _L;
    } else {
#line 598
      if (volumeNumber__VolumeManagerName__0 == 0) {
        _L: 
#line 600
        if (status >= 0) {

        }
      }
    }
    }
  }
  {
#line 610
#line 610
  if (status < 0) {

  }
  }
#line 615
  return (status);
}
}
int FloppyStartDevice(int DeviceObject , int Irp ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Status ;
  int disketteExtension__TargetObject = __VERIFIER_nondet_int() ;
  int disketteExtension__MaxTransferSize ;
  int disketteExtension__DriveType = __VERIFIER_nondet_int() ;
  int disketteExtension__PerpendicularMode ;
  int disketteExtension__DeviceUnit ;
  int disketteExtension__DriveOnValue ;
  int disketteExtension__UnderlyingPDO = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString = __VERIFIER_nondet_int() ;
  int disketteExtension__IsStarted ;
  int disketteExtension__HoldNewRequests ;
  int ntStatus ;
  int pnpStatus ;
  int doneEvent = __VERIFIER_nondet_int() ;
  int fdcInfo = __VERIFIER_nondet_int() ;
  int fdcInfo__BufferCount ;
  int fdcInfo__BufferSize ;
  int fdcInfo__MaxTransferSize = __VERIFIER_nondet_int() ;
  int fdcInfo__AcpiBios = __VERIFIER_nondet_int() ;
  int fdcInfo__AcpiFdiSupported = __VERIFIER_nondet_int() ;
  int fdcInfo__PeripheralNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__BusType ;
  int fdcInfo__ControllerNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__UnitNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__BusNumber = __VERIFIER_nondet_int() ;
  int Dc ;
  int Fp ;
  int disketteExtension ;
  int irpSp ;
  int irpSp___0 ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___1 ;
  int irpSp__Control ;
  int irpSp__Context ;
  int InterfaceType ;
  int KUSER_SHARED_DATA__AlternativeArchitecture_NEC98x86 = __VERIFIER_nondet_int() ;
  long __cil_tmp42 ;
  int __cil_tmp43 ;
  int __cil_tmp44 ;
  int __cil_tmp45 ;
  int __cil_tmp46 ;
  int __cil_tmp47 ;
  int __cil_tmp48 ;
  int __cil_tmp49 ;

  {
  Dc = DiskController;
  Fp = FloppyDiskPeripheral;
  disketteExtension = DeviceObject__DeviceExtension;
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
  irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation;
  nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
  nextIrpSp__Control = 0;
  if (s != NP) {
    {
    errorFn();
    }
  } else {
    if (compRegistered != 0) {
      {
      errorFn();
      }
    } else {
      compRegistered = 1;
    }
  }
  {
  irpSp___1 = Irp__Tail__Overlay__CurrentStackLocation - 1;
  irpSp__Context = doneEvent;
  irpSp__Control = 224;
  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
  }
  {
  __cil_tmp42 = (long )ntStatus;
  if (__cil_tmp42 == 259L) {
    {
    ntStatus = KeWaitForSingleObject(doneEvent, Executive, KernelMode, 0, 0);
    ntStatus = myStatus;
    }
  }
  }
  {
  fdcInfo__BufferCount = 0;
  fdcInfo__BufferSize = 0;
  __cil_tmp43 = 3080;
  __cil_tmp44 = 458752;
  __cil_tmp45 = 461832;
  __cil_tmp46 = 461835;
  ntStatus = FlFdcDeviceIo(disketteExtension__TargetObject, __cil_tmp46, fdcInfo);
  }
  if (ntStatus >= 0) {
    disketteExtension__MaxTransferSize = fdcInfo__MaxTransferSize;
    if (fdcInfo__AcpiBios) {
      if (fdcInfo__AcpiFdiSupported) {
        {
        ntStatus = FlAcpiConfigureFloppy(disketteExtension, fdcInfo);
        }
        if (disketteExtension__DriveType == 4) {
          //__cil_tmp47 = uninf1();
          //disketteExtension__PerpendicularMode |= __cil_tmp47;
        }
      } else {
        goto _L;
      }
    } else {
      _L: 
      if (disketteExtension__DriveType == 4) {
        //__cil_tmp48 = uninf1();
        //disketteExtension__PerpendicularMode |= __cil_tmp48;
      }
      InterfaceType = 0;
      {
      while (1) {
        while_0_continue: /* CIL Label */ ;

        if (InterfaceType >= MaximumInterfaceType) {
          goto while_1_break;
        }
        {
        fdcInfo__BusType = InterfaceType;
        ntStatus = IoQueryDeviceDescription(fdcInfo__BusType, fdcInfo__BusNumber,
                                            Dc, fdcInfo__ControllerNumber, Fp, fdcInfo__PeripheralNumber,
                                            FlConfigCallBack, disketteExtension);
        }
        if (ntStatus >= 0) {
          goto while_1_break;
        }
        InterfaceType ++;
      }
      while_0_break: /* CIL Label */ ;
      }
      while_1_break: ;
    }
    if (ntStatus >= 0) {
      if (KUSER_SHARED_DATA__AlternativeArchitecture_NEC98x86 != 0) {
        disketteExtension__DeviceUnit = fdcInfo__UnitNumber;
        //disketteExtension__DriveOnValue = fdcInfo__UnitNumber;
      } else {
        disketteExtension__DeviceUnit = fdcInfo__PeripheralNumber;
        //__cil_tmp49 = 16 << fdcInfo__PeripheralNumber;
        //disketteExtension__DriveOnValue = fdcInfo__PeripheralNumber | __cil_tmp49;
      }
      {
      pnpStatus = IoRegisterDeviceInterface(disketteExtension__UnderlyingPDO, MOUNTDEV_MOUNTED_DEVICE_GUID,
                                            0, disketteExtension__InterfaceString);
      }
      if (pnpStatus >= 0) {
        {
        pnpStatus = IoSetDeviceInterfaceState(disketteExtension__InterfaceString,
                                              1);
        }
      }
      disketteExtension__IsStarted = 1;
      disketteExtension__HoldNewRequests = 0;
    }
  }
  {
  Irp__IoStatus__Status = ntStatus;
  myStatus = ntStatus;
  IofCompleteRequest(Irp, 0);
  }
  return (ntStatus);
}
}
Esempio n. 19
0
int DiskPerfRegisterDevice(int DiskPerfRegisterDevice_DeviceObject ) 
{ int DiskPerfRegisterDevice_DeviceObject__DeviceExtension ;
  int DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject ;
  int DiskPerfRegisterDevice_sizeof__number ;
  int DiskPerfRegisterDevice_ioStatus__Status ;
  int DiskPerfRegisterDevice_sizeof__VOLUME_NUMBER ;
  int DiskPerfRegisterDevice_status ;
  int DiskPerfRegisterDevice_ioStatus ;
  int DiskPerfRegisterDevice_event ;
  int DiskPerfRegisterDevice_deviceExtension ;
  int DiskPerfRegisterDevice_irp ;
  int DiskPerfRegisterDevice_number ;
  int DiskPerfRegisterDevice_registrationFlag ;
  int DiskPerfRegisterDevice_sizeof__MOUNTDEV_NAME ;
  int DiskPerfRegisterDevice_output__NameLength ;
  int DiskPerfRegisterDevice_outputSize ;
  int DiskPerfRegisterDevice_output ;
  int DiskPerfRegisterDevice_volumeNumber ;
  int DiskPerfRegisterDevice_CIL___Tmp20 ;
  int DiskPerfRegisterDevice_CIL___Tmp21 ;
  int DiskPerfRegisterDevice_CIL___Tmp22 ;
  int DiskPerfRegisterDevice_CIL___Tmp23 ;
  int DiskPerfRegisterDevice_CIL___Tmp24 ;
  int DiskPerfRegisterDevice_CIL___Tmp25 ;
  int DiskPerfRegisterDevice_CIL___Tmp26 ;
  int DiskPerfRegisterDevice_CIL___Tmp27 ;
  int DiskPerfRegisterDevice_CIL___Tmp28 ;
  int DiskPerfRegisterDevice_CIL___Tmp29 ;
  int DiskPerfRegisterDevice_CIL___Tmp30 ;
  int DiskPerfRegisterDevice_CIL___Tmp31 ;
  int DiskPerfRegisterDevice_CIL___Tmp32 ;
  int DiskPerfRegisterDevice_CIL___Tmp34 ;
  int DiskPerfRegisterDevice_CIL___Tmp35 ;
  int DiskPerfRegisterDevice_CIL___Tmp36 ;
  int DiskPerfRegisterDevice_CIL___Tmp37 ;
  int retres37 ;
  int TRACER_returning ;

  {
  TRACER_returning = 0;
  DiskPerfRegisterDevice_registrationFlag = 0;
  DiskPerfRegisterDevice_deviceExtension = DiskPerfRegisterDevice_DeviceObject__DeviceExtension;
  DiskPerfRegisterDevice_CIL___Tmp20 = 4224;
  DiskPerfRegisterDevice_CIL___Tmp21 = 2949120;
  DiskPerfRegisterDevice_CIL___Tmp22 = 2953344;
  DiskPerfRegisterDevice_irp = IoBuildDeviceIoControlRequest(DiskPerfRegisterDevice_CIL___Tmp22, DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, 0, 0, DiskPerfRegisterDevice_number, DiskPerfRegisterDevice_sizeof__number, 0, DiskPerfRegisterDevice_event, DiskPerfRegisterDevice_ioStatus);
  if ((DiskPerfRegisterDevice_irp >= 0) && (DiskPerfRegisterDevice_irp <= 0)) {
    retres37 = -1073741670;
  } else {
    DiskPerfRegisterDevice_status = IofCallDriver(DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, DiskPerfRegisterDevice_irp);
    DiskPerfRegisterDevice_CIL___Tmp23 = DiskPerfRegisterDevice_status;
    if ((DiskPerfRegisterDevice_CIL___Tmp23 >= 259) && (DiskPerfRegisterDevice_CIL___Tmp23 <= 259)) {
      KeWaitForSingleObject(DiskPerfRegisterDevice_event, Executive, KernelMode, 0, 0);
      DiskPerfRegisterDevice_status = DiskPerfRegisterDevice_ioStatus__Status;
    }
    if (DiskPerfRegisterDevice_status < 0) {
      DiskPerfRegisterDevice_outputSize = DiskPerfRegisterDevice_sizeof__MOUNTDEV_NAME;
      if ((DiskPerfRegisterDevice_output >= 0) && (DiskPerfRegisterDevice_output <= 0)) {
        retres37 = -1073741670;
        TRACER_returning = 1;
      } else {
        DiskPerfRegisterDevice_CIL___Tmp24 = 8;
        DiskPerfRegisterDevice_CIL___Tmp25 = 5046272;
        DiskPerfRegisterDevice_CIL___Tmp26 = 5046280;
        DiskPerfRegisterDevice_irp = IoBuildDeviceIoControlRequest(DiskPerfRegisterDevice_CIL___Tmp26, DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, 0, 0, DiskPerfRegisterDevice_output, DiskPerfRegisterDevice_outputSize, 0, DiskPerfRegisterDevice_event, DiskPerfRegisterDevice_ioStatus);
        if ((DiskPerfRegisterDevice_irp >= 0) && (DiskPerfRegisterDevice_irp <= 0)) {
          retres37 = -1073741670;
          TRACER_returning = 1;
        } else {
          DiskPerfRegisterDevice_status = IofCallDriver(DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, DiskPerfRegisterDevice_irp);
          DiskPerfRegisterDevice_CIL___Tmp27 = DiskPerfRegisterDevice_status;
          if ((DiskPerfRegisterDevice_CIL___Tmp27 >= 259) && (DiskPerfRegisterDevice_CIL___Tmp27 <= 259)) {
            KeWaitForSingleObject(DiskPerfRegisterDevice_event, Executive, KernelMode, 0, 0);
            DiskPerfRegisterDevice_status = DiskPerfRegisterDevice_ioStatus__Status;
          }
          DiskPerfRegisterDevice_CIL___Tmp28 = DiskPerfRegisterDevice_status;
          if ((DiskPerfRegisterDevice_CIL___Tmp28 >= -2147483643) && (DiskPerfRegisterDevice_CIL___Tmp28 <= -2147483643)) {
            DiskPerfRegisterDevice_outputSize = DiskPerfRegisterDevice_sizeof__MOUNTDEV_NAME + DiskPerfRegisterDevice_output__NameLength;
            if ((DiskPerfRegisterDevice_output >= 0) && (DiskPerfRegisterDevice_output <= 0)) {
              retres37 = -1073741670;
              TRACER_returning = 1;
            } else {
              DiskPerfRegisterDevice_CIL___Tmp29 = 8;
              DiskPerfRegisterDevice_CIL___Tmp30 = 5046272;
              DiskPerfRegisterDevice_CIL___Tmp31 = 5046280;
              DiskPerfRegisterDevice_irp = IoBuildDeviceIoControlRequest(DiskPerfRegisterDevice_CIL___Tmp31, DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, 0, 0, DiskPerfRegisterDevice_output, DiskPerfRegisterDevice_outputSize, 0, DiskPerfRegisterDevice_event, DiskPerfRegisterDevice_ioStatus);
              if ((DiskPerfRegisterDevice_irp >= 0) && (DiskPerfRegisterDevice_irp <= 0)) {
                retres37 = -1073741670;
                TRACER_returning = 1;
              } else {
                DiskPerfRegisterDevice_status = IofCallDriver(DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, DiskPerfRegisterDevice_irp);
                DiskPerfRegisterDevice_CIL___Tmp32 = DiskPerfRegisterDevice_status;
                if ((DiskPerfRegisterDevice_CIL___Tmp32 >= 259) && (DiskPerfRegisterDevice_CIL___Tmp32 <= 259)) {
                  KeWaitForSingleObject(DiskPerfRegisterDevice_event, Executive, KernelMode, 0, 0);
                  DiskPerfRegisterDevice_status = DiskPerfRegisterDevice_ioStatus__Status;
                }
              }
            }
          }
          if (TRACER_returning <= 0) {
            if (DiskPerfRegisterDevice_status < 0) {
              retres37 = DiskPerfRegisterDevice_status;
              TRACER_returning = 1;
            } else {
              DiskPerfRegisterDevice_CIL___Tmp34 = 28;
              DiskPerfRegisterDevice_CIL___Tmp35 = 5636096;
              DiskPerfRegisterDevice_CIL___Tmp36 = 5636124;
              DiskPerfRegisterDevice_irp = IoBuildDeviceIoControlRequest(DiskPerfRegisterDevice_CIL___Tmp36, DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, 0, 0, DiskPerfRegisterDevice_volumeNumber, DiskPerfRegisterDevice_sizeof__VOLUME_NUMBER, 0, DiskPerfRegisterDevice_event, DiskPerfRegisterDevice_ioStatus);
              if ((DiskPerfRegisterDevice_irp >= 0) && (DiskPerfRegisterDevice_irp <= 0)) {
                retres37 = -1073741670;
                TRACER_returning = 1;
              } else {
                DiskPerfRegisterDevice_status = IofCallDriver(DiskPerfRegisterDevice_deviceExtension__TargetDeviceObject, DiskPerfRegisterDevice_irp);
                DiskPerfRegisterDevice_CIL___Tmp37 = DiskPerfRegisterDevice_status;
                if ((DiskPerfRegisterDevice_CIL___Tmp37 >= 259) && (DiskPerfRegisterDevice_CIL___Tmp37 <= 259)) {
                  KeWaitForSingleObject(DiskPerfRegisterDevice_event, Executive, KernelMode, 0, 0);
                  DiskPerfRegisterDevice_status = DiskPerfRegisterDevice_ioStatus__Status;
                }
              }
            }
          }
        }
      }
    }
    if (TRACER_returning <= 0) {
      retres37 = DiskPerfRegisterDevice_status;
    }
  }
  return (retres37);
}
}
Esempio n. 20
0
int FloppyStartDevice(int DeviceObject , int Irp ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Status ;
  int disketteExtension__TargetObject = __VERIFIER_nondet_int() ;
  int disketteExtension__MaxTransferSize ;
  int disketteExtension__DriveType = __VERIFIER_nondet_int() ;
  int disketteExtension__PerpendicularMode ;
  int disketteExtension__DeviceUnit ;
  int disketteExtension__DriveOnValue ;
  int disketteExtension__UnderlyingPDO = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString = __VERIFIER_nondet_int() ;
  int disketteExtension__IsStarted ;
  int disketteExtension__HoldNewRequests ;
  int ntStatus ;
  int pnpStatus ;
  int doneEvent = __VERIFIER_nondet_int() ;
  int fdcInfo = __VERIFIER_nondet_int() ;
  int fdcInfo__BufferCount ;
  int fdcInfo__BufferSize ;
  int fdcInfo__MaxTransferSize = __VERIFIER_nondet_int() ;
  int fdcInfo__AcpiBios = __VERIFIER_nondet_int() ;
  int fdcInfo__AcpiFdiSupported = __VERIFIER_nondet_int() ;
  int fdcInfo__PeripheralNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__BusType ;
  int fdcInfo__ControllerNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__UnitNumber = __VERIFIER_nondet_int() ;
  int fdcInfo__BusNumber = __VERIFIER_nondet_int() ;
  int Dc ;
  int Fp ;
  int disketteExtension ;
  int irpSp ;
  int irpSp___0 ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___1 ;
  int irpSp__Control ;
  int irpSp__Context ;
  int InterfaceType ;
  int KUSER_SHARED_DATA__AlternativeArchitecture_NEC98x86 = __VERIFIER_nondet_int() ;
  long __cil_tmp42 ;
  int __cil_tmp43 ;
  int __cil_tmp44 ;
  int __cil_tmp45 ;
  int __cil_tmp46 ;
  int __cil_tmp47 ;
  int __cil_tmp48 ;
  int __cil_tmp49 ;

  {
#line 503
  Dc = DiskController;
#line 504
  Fp = FloppyDiskPeripheral;
#line 505
  disketteExtension = DeviceObject__DeviceExtension;
#line 506
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
#line 507
  irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation;
#line 508
  nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 509
  nextIrpSp__Control = 0;
#line 510
  if (s != NP) {
    {
#line 512
    errorFn();
    }
  } else {
#line 515
    if (compRegistered != 0) {
      {
#line 517
      errorFn();
      }
    } else {
#line 520
      compRegistered = 1;
    }
  }
  {
#line 524
  irpSp___1 = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 525
  irpSp__Context = doneEvent;
#line 526
  irpSp__Control = 224;
#line 530
  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
  }
  {
#line 532
  __cil_tmp42 = (long )ntStatus;
#line 532
  if (__cil_tmp42 == 259L) {
    {
#line 534
    ntStatus = KeWaitForSingleObject(doneEvent, Executive, KernelMode, 0, 0);
#line 535
    ntStatus = myStatus;
    }
  }
  }
  {
#line 541
  fdcInfo__BufferCount = 0;
#line 542
  fdcInfo__BufferSize = 0;
#line 543
  __cil_tmp43 = 3080;
#line 543
  __cil_tmp44 = 458752;
#line 543
  __cil_tmp45 = 461832;
#line 543
  __cil_tmp46 = 461835;
#line 543
  ntStatus = FlFdcDeviceIo(disketteExtension__TargetObject, __cil_tmp46, fdcInfo);
  }
#line 546
  if (ntStatus >= 0) {
#line 547
    disketteExtension__MaxTransferSize = fdcInfo__MaxTransferSize;
#line 548
    if (fdcInfo__AcpiBios) {
#line 549
      if (fdcInfo__AcpiFdiSupported) {
        {
#line 551
        ntStatus = FlAcpiConfigureFloppy(disketteExtension, fdcInfo);
        }
#line 553
        if (disketteExtension__DriveType == 4) {
#line 554
          //__cil_tmp47 = uninf1();
#line 554
          //disketteExtension__PerpendicularMode |= __cil_tmp47;
        }
      } else {
        goto _L;
      }
    } else {
      _L: 
#line 563
      if (disketteExtension__DriveType == 4) {
#line 564
        //__cil_tmp48 = uninf1();
#line 564
        //disketteExtension__PerpendicularMode |= __cil_tmp48;
      }
#line 568
      InterfaceType = 0;
      {
#line 570
      while (1) {
        while_0_continue: /* CIL Label */ ;

#line 572
        if (InterfaceType >= MaximumInterfaceType) {
          goto while_1_break;
        }
        {
#line 578
        fdcInfo__BusType = InterfaceType;
#line 579
        ntStatus = IoQueryDeviceDescription(fdcInfo__BusType, fdcInfo__BusNumber,
                                            Dc, fdcInfo__ControllerNumber, Fp, fdcInfo__PeripheralNumber,
                                            FlConfigCallBack, disketteExtension);
        }
#line 583
        if (ntStatus >= 0) {
          goto while_1_break;
        }
#line 588
        InterfaceType ++;
      }
      while_0_break: /* CIL Label */ ;
      }
      while_1_break: ;
    }
#line 593
    if (ntStatus >= 0) {
#line 594
      if (KUSER_SHARED_DATA__AlternativeArchitecture_NEC98x86 != 0) {
#line 595
        disketteExtension__DeviceUnit = fdcInfo__UnitNumber;
#line 596
        //disketteExtension__DriveOnValue = fdcInfo__UnitNumber;
      } else {
#line 598
        disketteExtension__DeviceUnit = fdcInfo__PeripheralNumber;
#line 599
        //__cil_tmp49 = 16 << fdcInfo__PeripheralNumber;
#line 599
        //disketteExtension__DriveOnValue = fdcInfo__PeripheralNumber | __cil_tmp49;
      }
      {
#line 602
      pnpStatus = IoRegisterDeviceInterface(disketteExtension__UnderlyingPDO, MOUNTDEV_MOUNTED_DEVICE_GUID,
                                            0, disketteExtension__InterfaceString);
      }
#line 605
      if (pnpStatus >= 0) {
        {
#line 607
        pnpStatus = IoSetDeviceInterfaceState(disketteExtension__InterfaceString,
                                              1);
        }
      }
#line 613
      disketteExtension__IsStarted = 1;
#line 614
      disketteExtension__HoldNewRequests = 0;
    }
  }
  {
#line 622
  Irp__IoStatus__Status = ntStatus;
#line 623
  myStatus = ntStatus;
#line 624
  IofCompleteRequest(Irp, 0);
  }
#line 626
  return (ntStatus);
}
}
Esempio n. 21
0
int KbFilter_PnP(int DeviceObject , int Irp ) 
{ int devExt ;
  int irpStack ;
  int status ;
  int event = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int irpStack__MinorFunction = __VERIFIER_nondet_int() ;
  int devExt__TopOfStack = __VERIFIER_nondet_int() ;
  int devExt__Started ;
  int devExt__Removed ;
  int devExt__SurpriseRemoved ;
  int Irp__IoStatus__Status ;
  int Irp__IoStatus__Information ;
  int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int irpSp ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___0 ;
  int irpSp__Context ;
  int irpSp__Control ;
  long __cil_tmp23 ;

  {
#line 107
  status = 0;
#line 108
  devExt = DeviceObject__DeviceExtension;
#line 109
  irpStack = Irp__Tail__Overlay__CurrentStackLocation;
#line 110
  if (irpStack__MinorFunction == 0) {
    goto switch_0_0;
  } else {
#line 113
    if (irpStack__MinorFunction == 23) {
      goto switch_0_23;
    } else {
#line 116
      if (irpStack__MinorFunction == 2) {
        goto switch_0_2;
      } else {
#line 119
        if (irpStack__MinorFunction == 1) {
          goto switch_0_1;
        } else {
#line 122
          if (irpStack__MinorFunction == 5) {
            goto switch_0_1;
          } else {
#line 125
            if (irpStack__MinorFunction == 3) {
              goto switch_0_1;
            } else {
#line 128
              if (irpStack__MinorFunction == 6) {
                goto switch_0_1;
              } else {
#line 131
                if (irpStack__MinorFunction == 13) {
                  goto switch_0_1;
                } else {
#line 134
                  if (irpStack__MinorFunction == 4) {
                    goto switch_0_1;
                  } else {
#line 137
                    if (irpStack__MinorFunction == 7) {
                      goto switch_0_1;
                    } else {
#line 140
                      if (irpStack__MinorFunction == 8) {
                        goto switch_0_1;
                      } else {
#line 143
                        if (irpStack__MinorFunction == 9) {
                          goto switch_0_1;
                        } else {
#line 146
                          if (irpStack__MinorFunction == 12) {
                            goto switch_0_1;
                          } else {
#line 149
                            if (irpStack__MinorFunction == 10) {
                              goto switch_0_1;
                            } else {
#line 152
                              if (irpStack__MinorFunction == 11) {
                                goto switch_0_1;
                              } else {
#line 155
                                if (irpStack__MinorFunction == 15) {
                                  goto switch_0_1;
                                } else {
#line 158
                                  if (irpStack__MinorFunction == 16) {
                                    goto switch_0_1;
                                  } else {
#line 161
                                    if (irpStack__MinorFunction == 17) {
                                      goto switch_0_1;
                                    } else {
#line 164
                                      if (irpStack__MinorFunction == 18) {
                                        goto switch_0_1;
                                      } else {
#line 167
                                        if (irpStack__MinorFunction == 19) {
                                          goto switch_0_1;
                                        } else {
#line 170
                                          if (irpStack__MinorFunction == 20) {
                                            goto switch_0_1;
                                          } else {
                                            goto switch_0_1;
#line 175
                                            if (0) {
                                              switch_0_0: 
#line 177
                                              irpSp = Irp__Tail__Overlay__CurrentStackLocation;
#line 178
                                              nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 179
                                              nextIrpSp__Control = 0;
#line 180
                                              if (s != NP) {
                                                {
#line 182
                                                errorFn();
                                                }
                                              } else {
#line 185
                                                if (compRegistered != 0) {
                                                  {
#line 187
                                                  errorFn();
                                                  }
                                                } else {
#line 190
                                                  compRegistered = 1;
                                                }
                                              }
                                              {
#line 194
                                              irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 195
                                              irpSp__Context = event;
#line 196
                                              irpSp__Control = 224;
#line 200
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              {
#line 203
                                              __cil_tmp23 = (long )status;
#line 203
                                              if (__cil_tmp23 == 259) {
                                                {
#line 205
                                                KeWaitForSingleObject(event, Executive,
                                                                      KernelMode,
                                                                      0, 0);
                                                }
                                              }
                                              }
#line 212
                                              if (status >= 0) {
#line 213
                                                if (myStatus >= 0) {
#line 214
                                                  devExt__Started = 1;
#line 215
                                                  devExt__Removed = 0;
#line 216
                                                  devExt__SurpriseRemoved = 0;
                                                }
                                              }
                                              {
#line 224
                                              Irp__IoStatus__Status = status;
#line 225
                                              myStatus = status;
#line 226
                                              Irp__IoStatus__Information = 0;
#line 227
                                              IofCompleteRequest(Irp, 0);
                                              }
                                              goto switch_0_break;
                                              switch_0_23: 
#line 231
                                              devExt__SurpriseRemoved = 1;
#line 232
                                              if (s == NP) {
#line 233
                                                s = SKIP1;
                                              } else {
                                                {
#line 236
                                                errorFn();
                                                }
                                              }
                                              {
#line 240
                                              Irp__CurrentLocation ++;
#line 241
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 242
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              goto switch_0_break;
                                              switch_0_2: 
#line 247
                                              devExt__Removed = 1;
#line 248
                                              if (s == NP) {
#line 249
                                                s = SKIP1;
                                              } else {
                                                {
#line 252
                                                errorFn();
                                                }
                                              }
                                              {
#line 256
                                              Irp__CurrentLocation ++;
#line 257
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 258
                                              IofCallDriver(devExt__TopOfStack, Irp);
#line 259
                                              status = 0;
                                              }
                                              goto switch_0_break;
                                              switch_0_1: ;
#line 281
                                              if (s == NP) {
#line 282
                                                s = SKIP1;
                                              } else {
                                                {
#line 285
                                                errorFn();
                                                }
                                              }
                                              {
#line 289
                                              Irp__CurrentLocation ++;
#line 290
                                              Irp__Tail__Overlay__CurrentStackLocation ++;
#line 291
                                              status = IofCallDriver(devExt__TopOfStack,
                                                                     Irp);
                                              }
                                              goto switch_0_break;
                                            } else {
                                              switch_0_break: ;
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
#line 320
  return (status);
}
}
int FloppyPnp(int DeviceObject , int Irp ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Information ;
  int Irp__IoStatus__Status ;
  int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int disketteExtension__IsRemoved = __VERIFIER_nondet_int() ;
  int disketteExtension__IsStarted = __VERIFIER_nondet_int() ;
  int disketteExtension__TargetObject = __VERIFIER_nondet_int() ;
  int disketteExtension__HoldNewRequests ;
  int disketteExtension__FloppyThread = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString__Buffer = __VERIFIER_nondet_int() ;
  int disketteExtension__InterfaceString = __VERIFIER_nondet_int() ;
  int disketteExtension__ArcName__Length = __VERIFIER_nondet_int() ;
  int disketteExtension__ArcName = __VERIFIER_nondet_int() ;
  int irpSp__MinorFunction = __VERIFIER_nondet_int() ;
  int IoGetConfigurationInformation__FloppyCount = __VERIFIER_nondet_int() ;
  int irpSp ;
  int disketteExtension ;
  int ntStatus ;
  int doneEvent = __VERIFIER_nondet_int() ;
  int irpSp___0 ;
  int nextIrpSp ;
  int nextIrpSp__Control ;
  int irpSp___1 ;
  int irpSp__Context ;
  int irpSp__Control ;
  long __cil_tmp29 ;
  long __cil_tmp30 ;

  {
  ntStatus = 0;
  PagingReferenceCount ++;
  if (PagingReferenceCount == 1) {

  }
  disketteExtension = DeviceObject__DeviceExtension;
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
  if (disketteExtension__IsRemoved) {
    {
    Irp__IoStatus__Information = 0;
    Irp__IoStatus__Status = -1073741738;
    myStatus = -1073741738;
    IofCompleteRequest(Irp, 0);
    }
    return (-1073741738);
  }
  if (irpSp__MinorFunction == 0) {
    goto switch_0_0;
  } else {
    if (irpSp__MinorFunction == 5) {
      goto switch_0_5;
    } else {
      if (irpSp__MinorFunction == 1) {
        goto switch_0_5;
      } else {
        if (irpSp__MinorFunction == 6) {
          goto switch_0_6;
        } else {
          if (irpSp__MinorFunction == 3) {
            goto switch_0_6;
          } else {
            if (irpSp__MinorFunction == 4) {
              goto switch_0_4;
            } else {
              if (irpSp__MinorFunction == 2) {
                goto switch_0_2;
              } else {
                goto switch_0_default;
                if (0) {
                  switch_0_0: 
                  {
                  ntStatus = FloppyStartDevice(DeviceObject, Irp);
                  }
                  goto switch_0_break;
                  switch_0_5: 
                  if (irpSp__MinorFunction == 5) {

                  }
                  if (! disketteExtension__IsStarted) {
                    if (s == NP) {
                      s = SKIP1;
                    } else {
                      {
                      errorFn();
                      }
                    }
                    {
                    Irp__CurrentLocation ++;
                    Irp__Tail__Overlay__CurrentStackLocation ++;
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                    return (ntStatus);
                  }
                  {
                  disketteExtension__HoldNewRequests = 1;
                  ntStatus = FlQueueIrpToThread(Irp, disketteExtension);
                  }
                  {
                  __cil_tmp29 = (long )ntStatus;
                  if (__cil_tmp29 == 259L) {
                    {
                    KeWaitForSingleObject(disketteExtension__FloppyThread, Executive,
                                          KernelMode, 0, 0);
                    }
                    if (disketteExtension__FloppyThread != 0) {

                    }
                    disketteExtension__FloppyThread = 0;
                    Irp__IoStatus__Status = 0;
                    myStatus = 0;
                    if (s == NP) {
                      s = SKIP1;
                    } else {
                      {
                      errorFn();
                      }
                    }
                    {
                    Irp__CurrentLocation ++;
                    Irp__Tail__Overlay__CurrentStackLocation ++;
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                  } else {
                    {
                    ntStatus = -1073741823;
                    Irp__IoStatus__Status = ntStatus;
                    myStatus = ntStatus;
                    Irp__IoStatus__Information = 0;
                    IofCompleteRequest(Irp, 0);
                    }
                  }
                  }
                  goto switch_0_break;
                  switch_0_6: 
                  if (irpSp__MinorFunction == 6) {

                  }
                  if (! disketteExtension__IsStarted) {
                    Irp__IoStatus__Status = 0;
                    myStatus = 0;
                    if (s == NP) {
                      s = SKIP1;
                    } else {
                      {
                      errorFn();
                      }
                    }
                    {
                    Irp__CurrentLocation ++;
                    Irp__Tail__Overlay__CurrentStackLocation ++;
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                  } else {
                    Irp__IoStatus__Status = 0;
                    myStatus = 0;
                    irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation;
                    nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
                    nextIrpSp__Control = 0;
                    if (s != NP) {
                      {
                      errorFn();
                      }
                    } else {
                      if (compRegistered != 0) {
                        {
                        errorFn();
                        }
                      } else {
                        compRegistered = 1;
                      }
                    }
                    {
                    irpSp___1 = Irp__Tail__Overlay__CurrentStackLocation - 1;
                    irpSp__Context = doneEvent;
                    irpSp__Control = 224;
                    ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                    }
                    {
                    __cil_tmp30 = (long )ntStatus;
                    if (__cil_tmp30 == 259L) {
                      {
                      KeWaitForSingleObject(doneEvent, Executive, KernelMode, 0, 0);
                      ntStatus = myStatus;
                      }
                    }
                    }
                    {
                    disketteExtension__HoldNewRequests = 0;
                    Irp__IoStatus__Status = ntStatus;
                    myStatus = ntStatus;
                    Irp__IoStatus__Information = 0;
                    IofCompleteRequest(Irp, 0);
                    }
                  }
                  goto switch_0_break;
                  switch_0_4: 
                  disketteExtension__IsStarted = 0;
                  Irp__IoStatus__Status = 0;
                  myStatus = 0;
                  if (s == NP) {
                    s = SKIP1;
                  } else {
                    {
                    errorFn();
                    }
                  }
                  {
                  Irp__CurrentLocation ++;
                  Irp__Tail__Overlay__CurrentStackLocation ++;
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
                  goto switch_0_break;
                  switch_0_2: 
                  disketteExtension__HoldNewRequests = 0;
                  disketteExtension__IsStarted = 0;
                  disketteExtension__IsRemoved = 1;
                  if (s == NP) {
                    s = SKIP1;
                  } else {
                    {
                    errorFn();
                    }
                  }
                  {
                  Irp__CurrentLocation ++;
                  Irp__Tail__Overlay__CurrentStackLocation ++;
                  Irp__IoStatus__Status = 0;
                  myStatus = 0;
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
                  if (disketteExtension__InterfaceString__Buffer != 0) {
                    {
                    IoSetDeviceInterfaceState(disketteExtension__InterfaceString,
                                              0);
                    }
                  }
                  if (disketteExtension__ArcName__Length != 0) {
                    {
                    IoDeleteSymbolicLink(disketteExtension__ArcName);
                    }
                  }
                  IoGetConfigurationInformation__FloppyCount --;
                  goto switch_0_break;
                  switch_0_default: ;
                  if (s == NP) {
                    s = SKIP1;
                  } else {
                    {
                    errorFn();
                    }
                  }
                  {
                  Irp__CurrentLocation ++;
                  Irp__Tail__Overlay__CurrentStackLocation ++;
                  ntStatus = IofCallDriver(disketteExtension__TargetObject, Irp);
                  }
                } else {
                  switch_0_break: ;
                }
              }
            }
          }
        }
      }
    }
  }
  PagingReferenceCount --;
  if (PagingReferenceCount == 0) {

  }
  return (ntStatus);
}
}
Esempio n. 23
0
int DiskPerfForwardIrpSynchronous(int DeviceObject , int Irp ) 
{ int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int event = __VERIFIER_nondet_int() ;
  int status ;
  int nextIrpSp__Control ;
  int irpSp ;
  int nextIrpSp ;
  int irpSp__Context ;
  int irpSp__Control ;
  int irpSp___0 ;
  long __cil_tmp15 ;

  {
#line 255
  deviceExtension = DeviceObject__DeviceExtension;
#line 256
  irpSp = Irp__Tail__Overlay__CurrentStackLocation;
#line 257
  nextIrpSp = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 258
  nextIrpSp__Control = 0;
#line 259
  if (s != NP) {
    {
#line 261
    errorFn();
    }
  } else {
#line 264
    if (compRegistered != 0) {
      {
#line 266
      errorFn();
      }
    } else {
#line 269
      compRegistered = 1;
#line 270
      routine = 0;
    }
  }
  {
#line 274
  irpSp___0 = Irp__Tail__Overlay__CurrentStackLocation - 1;
#line 275
  irpSp__Context = event;
#line 276
  irpSp__Control = 224;
#line 280
  status = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
  }
  {
#line 282
  __cil_tmp15 = (long )status;
#line 282
  if (__cil_tmp15 == 259L) {
    {
#line 284
    KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
#line 285
    status = myStatus;
    }
  }
  }
#line 290
  return (status);
}
}
int DiskPerfRegisterDevice(int DeviceObject ) 
{ int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int sizeof__number = __VERIFIER_nondet_int() ;
  int ioStatus__Status = __VERIFIER_nondet_int() ;
  int sizeof__VOLUME_NUMBER = __VERIFIER_nondet_int() ;
  int volumeNumber__VolumeManagerName__0 = __VERIFIER_nondet_int() ;
  int status ;
  int ioStatus = __VERIFIER_nondet_int() ;
  int event = __VERIFIER_nondet_int() ;
  int deviceExtension ;
  int irp ;
  int number = __VERIFIER_nondet_int() ;
  int registrationFlag ;
  int sizeof__MOUNTDEV_NAME = __VERIFIER_nondet_int() ;
  int output__NameLength = __VERIFIER_nondet_int() ;
  int outputSize ;
  int output = __VERIFIER_nondet_int() ;
  int volumeNumber = __VERIFIER_nondet_int() ;
  int __cil_tmp20 ;
  int __cil_tmp21 ;
  int __cil_tmp22 ;
  long __cil_tmp23 ;
  int __cil_tmp24 ;
  int __cil_tmp25 ;
  int __cil_tmp26 ;
  long __cil_tmp27 ;
  unsigned long __cil_tmp28 ;
  int __cil_tmp29 ;
  int __cil_tmp30 ;
  int __cil_tmp31 ;
  long __cil_tmp32 ;
  int __cil_tmp33 ;
  int __cil_tmp34 ;
  int __cil_tmp35 ;
  int __cil_tmp36 ;
  long __cil_tmp37 ;
  int __cil_tmp38 ;
  int __cil_tmp39 ;

  {
  {
  registrationFlag = 0;
  deviceExtension = DeviceObject__DeviceExtension;
  __cil_tmp20 = 4224;
  __cil_tmp21 = 2949120;
  __cil_tmp22 = 2953344;
  irp = IoBuildDeviceIoControlRequest(__cil_tmp22, deviceExtension__TargetDeviceObject,
                                      0, 0, number, sizeof__number, 0, event, ioStatus);
  }
  if (! irp) {
    return (-1073741670);
  }
  {
  status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
  }
  {
  __cil_tmp23 = (long )status;
  if (__cil_tmp23 == 259L) {
    {
    KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
    status = ioStatus__Status;
    }
  }
  }
  if (status < 0) {
    outputSize = sizeof__MOUNTDEV_NAME;
    if (! output) {
      return (-1073741670);
    }
    {
    __cil_tmp24 = 8;
    __cil_tmp25 = 5046272;
    __cil_tmp26 = 5046280;
    irp = IoBuildDeviceIoControlRequest(__cil_tmp26, deviceExtension__TargetDeviceObject,
                                        0, 0, output, outputSize, 0, event, ioStatus);
    }
    if (! irp) {
      return (-1073741670);
    }
    {
    status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
    }
    {
    __cil_tmp27 = (long )status;
    if (__cil_tmp27 == 259L) {
      {
      KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
      status = ioStatus__Status;
      }
    }
    }
    {
    __cil_tmp28 = (unsigned long )status;
    if (__cil_tmp28 == -2147483643) {
      outputSize = sizeof__MOUNTDEV_NAME + output__NameLength;
      if (! output) {
        return (-1073741670);
      }
      {
      __cil_tmp29 = 8;
      __cil_tmp30 = 5046272;
      __cil_tmp31 = 5046280;
      irp = IoBuildDeviceIoControlRequest(__cil_tmp31, deviceExtension__TargetDeviceObject,
                                          0, 0, output, outputSize, 0, event, ioStatus);
      }
      if (! irp) {
        return (-1073741670);
      }
      {
      status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
      }
      {
      __cil_tmp32 = (long )status;
      if (__cil_tmp32 == 259L) {
        {
        KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
        status = ioStatus__Status;
        }
      }
      }
    }
    }
    {
    if (status < 0) {
      return (status);
    }
    }
    {
    __cil_tmp34 = 28;
    __cil_tmp35 = 5636096;
    __cil_tmp36 = 5636124;
    irp = IoBuildDeviceIoControlRequest(__cil_tmp36, deviceExtension__TargetDeviceObject,
                                        0, 0, volumeNumber, sizeof__VOLUME_NUMBER,
                                        0, event, ioStatus);
    }
    if (! irp) {
      return (-1073741670);
    }
    {
    status = IofCallDriver(deviceExtension__TargetDeviceObject, irp);
    }
    {
    __cil_tmp37 = (long )status;
    if (__cil_tmp37 == 259L) {
      {
      KeWaitForSingleObject(event, Executive, KernelMode, 0, 0);
      status = ioStatus__Status;
      }
    }
    }
    {
    if (status < 0) {
      goto _L;
    } else {
      if (volumeNumber__VolumeManagerName__0 == 0) {
        _L: 
        if (status >= 0) {

        }
      }
    }
    }
  }
  {
  if (status < 0) {

  }
  }
  return (status);
}
}
Esempio n. 25
0
int DiskPerfDeviceControl(int DeviceObject , int Irp ) 
{ int Irp__CurrentLocation = __VERIFIER_nondet_int() ;
  int Irp__Tail__Overlay__CurrentStackLocation = __VERIFIER_nondet_int() ;
  int DeviceObject__DeviceExtension = __VERIFIER_nondet_int() ;
  int deviceExtension__TargetDeviceObject = __VERIFIER_nondet_int() ;
  int currentIrpStack__Parameters__DeviceIoControl__IoControlCode = __VERIFIER_nondet_int() ;
  int currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength = __VERIFIER_nondet_int() ;
  int sizeof__DISK_PERFORMANCE = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Information ;
  int deviceExtension__DiskCounters = __VERIFIER_nondet_int() ;
  int Irp__AssociatedIrp__SystemBuffer = __VERIFIER_nondet_int() ;
  int deviceExtension__Processors = __VERIFIER_nondet_int() ;
  int totalCounters__QueueDepth ;
  int deviceExtension__QueueDepth = __VERIFIER_nondet_int() ;
  int Irp__IoStatus__Status ;
  int deviceExtension ;
  int currentIrpStack ;
  int status ;
  int i ;
  int totalCounters ;
  int diskCounters ;
  int tmp ;
  int __cil_tmp24 ;
  int __cil_tmp25 ;
  int __cil_tmp26 ;

  {
#line 390
  deviceExtension = DeviceObject__DeviceExtension;
#line 391
  currentIrpStack = Irp__Tail__Overlay__CurrentStackLocation;
  {
#line 392
  __cil_tmp24 = 32;
#line 392
  __cil_tmp25 = 458752;
#line 392
  __cil_tmp26 = 458784;
#line 392
  if (currentIrpStack__Parameters__DeviceIoControl__IoControlCode == __cil_tmp26) {
#line 393
    if (currentIrpStack__Parameters__DeviceIoControl__OutputBufferLength < sizeof__DISK_PERFORMANCE) {
#line 394
      status = -1073741789;
#line 395
      Irp__IoStatus__Information = 0;
    } else {
#line 397
      diskCounters = deviceExtension__DiskCounters;
#line 398
      if (diskCounters == 0) {
        {
#line 400
        Irp__IoStatus__Status = -1073741823;
#line 401
        myStatus = -1073741823;
#line 402
        IofCompleteRequest(Irp, 0);
        }
#line 404
        return (-1073741823);
      }
#line 408
      totalCounters = Irp__AssociatedIrp__SystemBuffer;
#line 409
      i = 0;
      {
#line 411
      while (1) {
        while_0_continue: /* CIL Label */ ;

#line 413
        if (i >= deviceExtension__Processors) {
          goto while_1_break;
        }
#line 418
        i ++;
      }
      while_0_break: /* CIL Label */ ;
      }
      while_1_break: 
#line 422
      totalCounters__QueueDepth = deviceExtension__QueueDepth;
#line 423
      status = 0;
#line 424
      Irp__IoStatus__Information = sizeof__DISK_PERFORMANCE;
    }
    {
#line 427
    Irp__IoStatus__Status = status;
#line 428
    myStatus = status;
#line 429
    IofCompleteRequest(Irp, 0);
    }
#line 431
    return (status);
  } else {
    {
#line 434
    Irp__CurrentLocation ++;
#line 435
    Irp__Tail__Overlay__CurrentStackLocation ++;
#line 436
    tmp = IofCallDriver(deviceExtension__TargetDeviceObject, Irp);
    }
#line 438
    return (tmp);
  }
  }
}
}