#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 // // 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 // 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