150 lines
4.7 KiB
C++
150 lines
4.7 KiB
C++
#ifndef _WSBFIRST_H
|
|
#define _WSBFIRST_H
|
|
|
|
/*++
|
|
|
|
Copyright (c) 1996 Microsoft Corporation
|
|
© 1998 Seagate Software, Inc. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
wsbfirst.h
|
|
|
|
Abstract:
|
|
|
|
This module defines some absolutely necessary stuff for WSB and other modules. This header is expected
|
|
to be the first one included by Wsb.h
|
|
|
|
Author:
|
|
|
|
Michael Lotz [lotz] 12-Apr-1997
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
//
|
|
// Override values in \nt\public\inc\warning.h and other gotcha's
|
|
//
|
|
#pragma warning(3:4101) // Unreferenced local variable
|
|
#pragma warning(3:4100) // Unreferenced formal parameter
|
|
#pragma warning(3:4701) // local may be used w/o init
|
|
#pragma warning(3:4702) // Unreachable code
|
|
#pragma warning(3:4705) // Statement has no effect
|
|
#pragma warning(3:4706) // assignment w/i conditional expression
|
|
#pragma warning(3:4709) // command operator w/o index expression
|
|
#pragma warning(3:4244) // 'int' conversion warnings
|
|
|
|
// Demote warnings about: The string for a title or subtitle pragma exceeded the
|
|
// maximum allowable length and was truncated. These show up when generating
|
|
// browser info for ATL code.
|
|
#pragma warning(4:4786) // command operator w/o index expression
|
|
|
|
// This supresses warning messages that come from exporting
|
|
// abstract classes derived from CComObjectRoot and that use
|
|
// COM templates.
|
|
#pragma warning(disable:4251 4275)
|
|
|
|
#include <atlbase.h>
|
|
|
|
//
|
|
// If you are building a service, make sure your precompiled header defines WSB_ATL_COM_SERVICE. Then _Module
|
|
// will be defined correctly for a service. Otherwise it we default to _Module being set correctly for a
|
|
// standard module.
|
|
//
|
|
#ifdef WSB_ATL_COM_SERVICE
|
|
// 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 CServiceModule : public CComModule
|
|
{
|
|
public:
|
|
HRESULT RegisterServer(BOOL bRegTypeLib);
|
|
HRESULT UnregisterServer();
|
|
void Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h);
|
|
void Start();
|
|
void ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
|
|
DWORD HandlerEx(DWORD dwOpcode, DWORD fdwEventType,
|
|
LPVOID lpEventData, LPVOID lpContext);
|
|
void Run();
|
|
BOOL IsInstalled();
|
|
BOOL Install();
|
|
BOOL Uninstall();
|
|
LONG Unlock();
|
|
void LogEvent(DWORD eventId, ...);
|
|
void SetServiceStatus(DWORD dwState);
|
|
|
|
//Implementation
|
|
private:
|
|
static void WINAPI _ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
|
|
static DWORD WINAPI _HandlerEx(DWORD dwOpcode, DWORD fdwEventType,
|
|
LPVOID lpEventData, LPVOID lpContext);
|
|
|
|
// data members
|
|
public:
|
|
TCHAR m_szServiceName[256];
|
|
SERVICE_STATUS_HANDLE m_hServiceStatus;
|
|
SERVICE_STATUS m_status;
|
|
DWORD dwThreadID;
|
|
BOOL m_bService;
|
|
};
|
|
|
|
extern CServiceModule _Module;
|
|
|
|
#else
|
|
//
|
|
//You may derive a class from CComModule and use it if you want to override
|
|
//something, but do not change the name of _Module
|
|
//
|
|
extern CComModule _Module;
|
|
|
|
#endif
|
|
|
|
//
|
|
// Include the basic AtlCom.h file for the rest of the COM definitions
|
|
//
|
|
#include <atlcom.h>
|
|
|
|
// Are we defining imports or exports?
|
|
#ifdef WSB_IMPL
|
|
#define WSB_EXPORT __declspec(dllexport)
|
|
#else
|
|
#define WSB_EXPORT __declspec(dllimport)
|
|
#endif
|
|
|
|
// Flag values used in HSM_SYSTEM_STATE structure
|
|
#define HSM_STATE_NONE 0x00000000
|
|
#define HSM_STATE_SHUTDOWN 0x00000001
|
|
#define HSM_STATE_SUSPEND 0x00000002
|
|
#define HSM_STATE_RESUME 0x00000004
|
|
|
|
// Defines for memory alloc/realloc/free functions so we can track
|
|
// memory usage
|
|
#if defined(WSB_TRACK_MEMORY)
|
|
|
|
#define WsbAlloc(_cb) WsbMemAlloc(_cb, __FILE__, __LINE__)
|
|
#define WsbFree(_pv) WsbMemFree(_pv, __FILE__, __LINE__)
|
|
#define WsbRealloc(_pv, _cb) WsbMemRealloc(_pv, _cb, __FILE__, __LINE__)
|
|
|
|
#define WsbAllocString(_sz) WsbSysAllocString(_sz, __FILE__, __LINE__)
|
|
#define WsbAllocStringLen(_sz, _cc) WsbSysAllocStringLen(_sz, _cc, __FILE__, __LINE__)
|
|
#define WsbFreeString(_bs) WsbSysFreeString(_bs, __FILE__, __LINE__)
|
|
#define WsbReallocString(_pb, _sz) WsbSysReallocString(_pb, _sz, __FILE__, __LINE__)
|
|
#define WsbReallocStringLen(_pb, _sz, _cc) WsbSysReallocStringLen(_pb, _sz, _cc, __FILE__, __LINE__)
|
|
|
|
#else
|
|
|
|
#define WsbAlloc(_cb) CoTaskMemAlloc(_cb)
|
|
#define WsbFree(_pv) CoTaskMemFree(_pv)
|
|
#define WsbRealloc(_pv, _cb) CoTaskMemRealloc(_pv, _cb)
|
|
|
|
#define WsbAllocString(_sz) SysAllocString(_sz)
|
|
#define WsbAllocStringLen(_sz, _cc) SysAllocStringLen(_sz, _cc)
|
|
#define WsbFreeString(_bs) SysFreeString(_bs)
|
|
#define WsbReallocString(_pb, _sz) SysReAllocString(_pb, _sz)
|
|
#define WsbReallocStringLen(_pb, _sz, _cc) SysReAllocStringLen(_pb, _sz, _cc)
|
|
#endif
|
|
|
|
#endif // _WSBFIRST_H
|