void sdv_main()

in src/Test.FunctionalTests.Sarif/v1/ConverterTestData/StaticDriverVerifier/src/sdv/sdv-harness.c [6387:6697]


void sdv_main()
{
    UNICODE_STRING u;
    NTSTATUS status;
    LONG choice;
    
    sdv_p_devobj_fdo->Flags = DO_DEVICE_INITIALIZING;
    sdv_p_devobj_child_pdo->Flags = DO_DEVICE_INITIALIZING;
    


    
#if (SDV_HARNESS!=SDV_POWER_UP_POWER_DOWN_HARNESS) 

    choice = SdvMakeChoice();

/*****************************************************************************
    For all the harness(es):
        SDV_PNP_HARNESS_UNLOAD
        SDV_PNP_HARNESS_SMALL
        SDV_PNP_HARNESS
    Exercise:
        DriverEntry;
        sdv_RunAddDevice;
*****************************************************************************/
#ifndef No_DriverEntry
    sdv_inside_init_entrypoint = TRUE;
    SDV_IRQL_PUSH(PASSIVE_LEVEL);
    status = fun_DriverEntry(&sdv_driver_object, &u);
    sdv_inside_init_entrypoint = FALSE;
    SdvAssume (NT_SUCCESS(status));
#endif
#ifdef fun_AddDevice
#ifndef No_AddDevice
    SDV_IRQL_PUSH(PASSIVE_LEVEL);
    status = sdv_RunAddDevice(&sdv_driver_object,sdv_p_devobj_pdo);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif

    sdv_stub_driver_init();

/*****************************************************************************
    Additionally For the harness(es):
        SDV_PNP_HARNESS_SMALL
    Exercise:
        sdv_RunDispatchFunction;
*****************************************************************************/
#ifndef SDV_PNP_HARNESS_ADDDEVICE_ONLY
#if (SDV_HARNESS==SDV_PNP_HARNESS_SMALL)

    sdv_RunDispatchFunction(sdv_p_devobj_fdo, sdv_irp);

#endif



#if (SDV_HARNESS==SDV_PNP_HARNESS_SMALL_WITH_LINKED_CALLBACKS)

    #define SDV_FLAT_HARNESS_MODIFIER_NO_UNLOAD
    #define SDV_HARNESS_COMPLETION_ROUTINE
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_RUN_KE_DPC_ROUTINES
    #define SDV_RUN_KE_ISR_ROUTINES  
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES  
  

    sdv_RunDispatchFunction(sdv_p_devobj_fdo, sdv_irp);

#endif




/*****************************************************************************
    Additionally For the harness(es):
        SDV_PNP_HARNESS_UNLOAD
    Exercise:
        ( sdv_RunRemoveDevice ||
          sdv_RunUnload)
*****************************************************************************/

#if (SDV_HARNESS==SDV_PNP_HARNESS_UNLOAD)

#ifdef fun_IRP_MJ_PNP
        status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
#endif

#ifdef fun_DriverUnload
        SDV_IRQL_PUSH(PASSIVE_LEVEL);
        sdv_RunUnload(&sdv_driver_object);
#endif

#endif

/*****************************************************************************
    Additionally For the harness(es):
        SDV_PNP_HARNESS
    Exercise:
        sdv_RunStartDevice
		    sdv_RunDispatchFunction
		    ( sdv_RunStartIo ||
          sdv_RunDPC ||
          sdv_RunISR );
        sdv_RunRemoveDevice;
        sdv_RunUnload
*****************************************************************************/

#if (SDV_HARNESS==SDV_PNP_HARNESS)

#ifdef fun_IRP_MJ_PNP
    status = sdv_RunStartDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif

#ifndef SDV_NO_DISPATCH_ROUTINE

    sdv_RunDispatchFunction(sdv_p_devobj_fdo, sdv_irp);
#endif
     
    
#ifdef fun_DriverStartIo
    sdv_RunStartIo(sdv_p_devobj_fdo, sdv_irp);
#endif

#ifdef fun_IRP_MJ_PNP
    status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
#endif

#ifdef fun_DriverUnload
    if (sdv_io_create_device_called<2) {
        sdv_driver_object.DeviceObject = NULL;
    }
    sdv_RunUnload(&sdv_driver_object);
#endif

#endif
#endif


#if (SDV_HARNESS==SDV_PNP_POWER_HARNESS)

#ifdef fun_IRP_MJ_PNP
#ifdef IS_WDM_BUS_DRIVER
#ifndef SDV_IRP_MN_REMOVE_DEVICE_ONLY
#ifndef SDV_IRP_MN_SUPRISE_REMOVE_ONLY
#ifndef SDV_IRP_MN_QUERY_REMOVE_DEVICE_ONLY
    status = sdv_RunQueryCapRequirements(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif
#endif
#endif
#ifndef SDV_IRP_MN_REMOVE_DEVICE_ONLY
#ifndef SDV_IRP_MN_SUPRISE_REMOVE_ONLY
#ifndef SDV_IRP_MN_QUERY_REMOVE_DEVICE_ONLY
    status = sdv_RunResRequirements(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunStartDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif
#endif
#ifdef SDV_IRP_MN_SUPRISE_REMOVE
#ifndef SDV_IRP_MN_REMOVE_DEVICE_ONLY
#ifndef SDV_IRP_MN_QUERY_REMOVE_DEVICE_ONLY
    status = sdv_RunSurpriseRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif
#endif

#ifndef NO_SDV_IRP_MN_QUERY_REMOVE_DEVICE_ONLY
#ifdef SDV_IRP_MN_REMOVE_DEVICE
    status = sdv_RunQueryRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif
    status = sdv_RunQueryCapRequirements(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunQueryDeviceState(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#ifdef IS_WDM_BUS_DRIVER
      status = sdv_RunQueryDeviceRelations(sdv_p_devobj_fdo, sdv_irp);
      SdvAssume (NT_SUCCESS(status));
#endif

#endif
#ifdef fun_IRP_MJ_POWER
    #define SDV_HARNESS_COMPLETION_ROUTINE
    status = sdv_RunQueryPowerUp(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunSetPowerUp(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunQueryPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunSetPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
#endif
#endif

#if (SDV_HARNESS==SDV_POWER_DOWN_PNP_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES
    status = sdv_RunQueryPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunSetPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
    status = sdv_RunSurpriseRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (status==STATUS_SUCCESS);
    status = sdv_RunQueryRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (status==STATUS_SUCCESS);
    status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (status==STATUS_SUCCESS);
#endif
#if (SDV_HARNESS==SDV_PNP_REMOVE_DEVICE_HARNESS)
    status = sdv_RunSurpriseRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
#endif

#if (SDV_HARNESS==SDV_PNP_BASIC_REMOVE_DEVICE_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES
    status = sdv_RunRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (status==STATUS_SUCCESS);
#endif



#if (SDV_HARNESS==SDV_SMALL_START_SEQUENCE_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES
#ifdef fun_IRP_MJ_PNP
    status = sdv_RunStartDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif
    status = sdv_RunSetPowerUp(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif


#if (SDV_HARNESS==SDV_SMALL_POWERDOWN_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES

#ifdef fun_IRP_MJ_PNP
#endif
    status = sdv_RunSetPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif




#if (SDV_HARNESS==SDV_SMALL_POWERUP_POWERDOWN_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES
    status = sdv_RunSetPowerUp(sdv_p_devobj_fdo, sdv_irp);
    status = sdv_RunSetPowerDown(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif




#if (SDV_HARNESS==SDV_SMALL_SMALL_POWERUP_HARNESS)
    #define SDV_HARNESS_COMPLETION_ROUTINE 
    #define SDV_HARNESS_POWER_COMPLETION_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE
    #define SDV_HARNESS_QUEUE_WORK_ITEMS_ROUTINE_EX
    #define SDV_HARNESS_RUN_KSYNC_ROUTINES
    status = sdv_RunSetPowerUp(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (NT_SUCCESS(status));
#endif

#if (SDV_HARNESS==SDV_FLAT_QUERY_DEVICE_RELATIONS_HARNESS)
#ifdef IS_WDM_BUS_DRIVER
      status = sdv_RunQueryDeviceRelations(sdv_p_devobj_fdo, sdv_irp);
      SdvAssume (NT_SUCCESS(status));
#endif
#endif


#if (SDV_HARNESS==SDV_PNP_QUERY_REMOVE_DEVICE_HARNESS)
    status = sdv_RunQueryRemoveDevice(sdv_p_devobj_fdo, sdv_irp);
    SdvAssume (status==STATUS_SUCCESS);
#endif



}