Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

128 lines
2.9 KiB

/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
service.h
Abstract:
SIS Groveler service headers
Authors:
John Douceur, 1998
Environment:
User Mode
Revision History:
--*/
#ifndef _INC_SERVICE
#define _INC_SERVICE
#if SERVICE
class Service
{
public:
static int start();
static void record_partition_indices();
static void set_max_response_time(
unsigned int max_response_time);
static void checkpoint();
static void report_start();
static bool groveling_paused();
static bool foreground_groveling();
static void suspending_controller();
static void suspending_exhorter();
static bool partition_in_foreground(
int partition_index);
static void set_foreground_batch_in_progress(
int partition_index,
bool value);
static void follow_command();
private:
static void WINAPI control_handler(
DWORD opcode);
static void WINAPI service_main(
DWORD argc,
LPTSTR *argv);
Service() {}
~Service() {}
enum {num_drive_letters = 26};
static SERVICE_STATUS status;
static SERVICE_STATUS_HANDLE status_handle;
static int num_partitions;
static int partition_indices[num_drive_letters];
static unsigned int max_response_time;
static volatile bool pause_commanded;
static volatile bool grovel_paused;
static volatile bool *full_volume_scan_commanded;
static volatile bool *demarcate_foreground_batch;
static volatile bool *foreground_batch_in_progress;
static volatile bool *foreground_commanded;
static volatile bool *foreground_acknowledged;
static volatile int foreground_count;
static volatile bool controller_suspended;
static volatile bool exhorter_suspended;
};
#define SERVICE_RECORD_PARTITION_INDICES() Service::record_partition_indices();
#define SERVICE_SET_MAX_RESPONSE_TIME(time) Service::set_max_response_time(time);
#define SERVICE_CHECKPOINT() Service::checkpoint();
#define SERVICE_REPORT_START() Service::report_start();
#define SERVICE_GROVELING_PAUSED() Service::groveling_paused()
#define SERVICE_FOREGROUND_GROVELING() Service::foreground_groveling()
#define SERVICE_SUSPENDING_CONTROLLER() Service::suspending_controller()
#define SERVICE_SUSPENDING_EXHORTER() Service::suspending_exhorter()
#define SERVICE_PARTITION_IN_FOREGROUND(part_index) Service::partition_in_foreground(part_index)
#define SERVICE_SET_FOREGROUND_BATCH_IN_PROGRESS(part_index, value) Service::set_foreground_batch_in_progress(part_index, value)
#define SERVICE_FOLLOW_COMMAND() Service::follow_command()
#else // SERVICE
#define SERVICE_RECORD_PARTITION_INDICES()
#define SERVICE_SET_MAX_RESPONSE_TIME(time)
#define SERVICE_CHECKPOINT()
#define SERVICE_REPORT_START()
#define SERVICE_GROVELING_PAUSED() false
#define SERVICE_FOREGROUND_GROVELING() false
#define SERVICE_SUSPENDING_CONTROLLER()
#define SERVICE_SUSPENDING_EXHORTER()
#define SERVICE_PARTITION_IN_FOREGROUND(part_index) false
#define SERVICE_SET_FOREGROUND_BATCH_IN_PROGRESS(part_index, value)
#define SERVICE_FOLLOW_COMMAND()
#endif // SERVICE
#endif /* _INC_SERVICE */