aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Library/ml_online/Setup/setupLog.h
blob: e701046a6f83eb981ee366e440f56bca54bb64ac (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#ifndef NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPLOG_HEADER
#define NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPLOG_HEADER

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

#include <wtypes.h>
#include <map>

class ifc_omservice;

class SetupLog 
{
public:
	typedef enum
	{
		opUnknown = 0,
		opServiceAdded = 1,
		opServiceRemoved = 2,
	};

protected:
	SetupLog();
	~SetupLog();

public:
	static SetupLog *Open();
	static HRESULT Erase();

public:
	ULONG AddRef();
	ULONG Release();

	HRESULT LogServiceById(UINT serviceUid, UINT operation);
	HRESULT LogService(ifc_omservice *service, UINT operation);
	HRESULT Save();
	HRESULT Send(HANDLE completeEvent);

	BOOL IsOperationSupported(UINT operation);

	

protected:
	typedef std::map<UINT, UINT> ServiceMap;
	friend static size_t SetupLog_GetMaxServiceIdCount(SetupLog::ServiceMap *serviceMap);
	friend static HRESULT SetupLog_FormatServiceId(SetupLog::ServiceMap *serviceMap, INT operation, LPSTR pszBuffer, size_t cchBufferMax);

protected:
	ULONG ref;
	ServiceMap serviceMap;
};

#endif //NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPLOG_HEADER