// stdafx.h : include file for standard system include files,
//      or project specific include files that are used frequently,
//      but are changed infrequently

#if !defined(AFX_STDAFX_H__3F2DAE34_7D6D_11D2_8C9E_00C04F72DB08__INCLUDED_)
#define AFX_STDAFX_H__3F2DAE34_7D6D_11D2_8C9E_00C04F72DB08__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define STRICT
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif

#define MAX_PROCESSES 20

#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
class CExeModule : public CComModule
{
public:
	LONG Unlock();
	DWORD dwThreadID;
	HANDLE hEventShutdown;
	void MonitorShutdown();
	bool StartMonitor();
	bool bActivity;
    HANDLE hProcesses[MAX_PROCESSES];
    IUnknown *pProcessUnk[MAX_PROCESSES];   // Holds a shared reference to an object that controls
                                            // all objects created on behalf of a process.  A single
                                            // Release of this Unk will cause all process specific
                                            // objects to be released.
    DWORD dwHandleCnt;
    DWORD dwRemove;

    HRESULT TrackProcess(HANDLE hClientProcess, IUnknown *pProcUnk);
    HRESULT StopTrackingProcess(HANDLE hClientProcess);
    void _RemoveProcessEntry(DWORD idx);
};
extern CExeModule _Module;

#ifdef _WIN32_WCE
#include <WinCEstub.h>
#endif

#include <atlcom.h>
#include <SPDDKHlp.h>
#include "sapiint.h"

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_STDAFX_H__3F2DAE34_7D6D_11D2_8C9E_00C04F72DB08__INCLUDED)
