/*++ Copyright (c) 1998 Microsoft Corporation Module Name: share.h Abstract: SIS Groveler shared data class header Authors: John Douceur, 1998 Environment: User Mode Revision History: --*/ #ifndef _INC_SHARE #define _INC_SHARE #pragma pack (8) enum SharedDataField { SDF_grovel_time, SDF_volscan_time, SDF_extract_time, SDF_working_time, SDF_files_hashed, SDF_files_compared, SDF_files_merged, SDF_files_scanned, SDF_queue_length, SDF_hash_read_time, SDF_hash_read_ops, SDF_compare_read_time, SDF_compare_read_ops, SDF_hash_read_estimate, SDF_compare_read_estimate, num_shared_data_fields }; struct SharedDataRecord { _TCHAR *driveName; __int64 fields[num_shared_data_fields]; }; const int max_shared_data_records = 128; #pragma pack () class SharedData { public: SharedData( int num_records = -1, _TCHAR **drive_names = 0); ~SharedData(); int count_of_records() const; // _TCHAR drive_letter( // int record_index) const; __int64 get_value( int record_index, SharedDataField field); void set_value( int record_index, SharedDataField field, __int64 value); void increment_value( int record_index, SharedDataField field, __int64 value); bool send_values(); bool receive_values(); bool extract_values( int *num_records, SharedDataRecord *records); private: int local_num_records; int *shared_num_records; SharedDataRecord local_records[max_shared_data_records]; SharedDataRecord *shared_records; NamedMutex *mutex; PSID security_identifier; PACL access_control_list; SECURITY_ATTRIBUTES security_attributes; SECURITY_DESCRIPTOR security_descriptor; bool map_ok; HANDLE map_handle; void *map_address; }; #endif /* _INC_SHARE */