blob: b0794f60b7538b4eec7a875a180230f9dee2cfa0 (
plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
// MzObj.h : Declaration of the CMzObj
#ifndef __MZOBJ_H_
#define __MZOBJ_H_
#include "resource.h" // main symbols
typedef struct {
BSTR **ppInput;
BSTR *pOutput;
HRESULT *pHr;
HANDLE readSem;
HANDLE writeSem;
HANDLE resetSem;
HANDLE resetDoneSem;
BOOL *pErrorState;
BOOL *pResetFlag;
} THREAD_GLOBALS;
extern HINSTANCE globHinst;
/////////////////////////////////////////////////////////////////////////////
// CMzObj
#ifdef MZ_XFORM
START_XFORM_SKIP;
#endif
class CMzObj
{
private:
void *com_obj;
HRESULT hr;
HANDLE inputMutex;
HANDLE readSem;
HANDLE writeSem;
HANDLE resetSem;
HANDLE resetDoneSem;
HANDLE evalDoneSems[2];
BSTR *globInput;
BSTR globOutput;
HANDLE threadHandle;
BOOL errorState;
void RaiseError(const OLECHAR *);
BOOL testThread(void);
void startMzThread(void);
void killMzThread(void);
public:
CMzObj(void* com_obj);
~CMzObj(void);
// IMzObj
public:
HRESULT Reset(void);
HRESULT About(void);
HRESULT Eval(BSTR input,/*[out,retval]*/BSTR *output);
};
#ifdef MZ_XFORM
END_XFORM_SKIP;
#endif
#endif //__MZOBJ_H_
|