#ifndef _PRIV_H_ #define _PRIV_H_ #ifdef STRICT #undef STRICT #endif #define STRICT /* disable "non-standard extension" warnings in our code */ #ifndef RC_INVOKED #pragma warning(disable:4001) #endif #include /* * Level 4 warnings to be turned on. * Do not disable any more level 4 warnings. */ #pragma warning(disable:4706) /* assignment within conditional expression */ #pragma warning(disable:4127) /* conditional expression is constant */ #pragma warning(disable:4245) /* 'initializing' : conversion from 'int' to 'DWORD', signed/unsigned */ /* mismatch */ #pragma warning(disable:4189) /* local variable is initialized but not referenced */ #pragma warning(disable:4057) /* 'LPSTR ' differs in indirection to slightly different base types from */ /* 'LPBYTE ' */ #pragma warning(disable:4701) /* local variable 'clrBkSav' may be used without having been initialized */ #pragma warning(disable:4310) /* cast truncates constant value */ #pragma warning(disable:4702) /* unreachable code */ #pragma warning(disable:4206) /* nonstandard extension used : translation unit is empty */ #pragma warning(disable:4267) /* '=' : conversion from 'size_t' to 'int', possible loss of data */ #pragma warning(disable:4328) /* 'BOOL StrToIntExA(const LPCSTR,DWORD,int *__ptr64 )' : indirection */ /* alignment of formal parameter 3 (4) is greater than the actual */ /* argument alignment (2) */ #pragma warning(disable:4509) /* nonstandard extension used: 'IOWorkerThread' uses SEH and 'info' */ /* has destructor */ #ifdef WIN32 #define _SHLWAPI_ #define _SHLWAPI_THUNK_ #define _OLE32_ // we delay-load OLE #define _OLEAUT32_ // we delay-load OLEAUT32 #define _INC_OLE #define CONST_VTABLE #endif #define _COMCTL32_ // for DECLSPEC_IMPORT #define _NTSYSTEM_ // for DECLSPEC_IMPORT ntdll #define _SETUPAPI_ // for DECLSPEC_IMPORT setupapi #define CC_INTERNAL // Conditional for apithk.c #ifndef _WIN32_WINDOWS #define _WIN32_WINDOWS 0x0400 #endif #ifndef WINVER #define WINVER 0x0400 #endif #include #include #include // to get IStream for image.c #include #define DISALLOW_Assert #include #include #include #include #include #include #include #include #include #include #include // A "fake" variants for use on the stack - usable for [in] parameters only!!! typedef struct _SA_BSTRGUID { UINT cb; WCHAR wsz[39]; } SA_BSTRGUID; #define InitFakeBSTR(pSA_BSTR, guid) SHStringFromGUIDW((guid), (pSA_BSTR)->wsz, ARRAYSIZE((pSA_BSTR)->wsz)), (pSA_BSTR)->cb = (38*sizeof(WCHAR)) #ifdef TRY_NtPowerInformation // // We would like to include , but ntpoapi.h redefines things // in a manner incompatible with ... It also relies on , // which also redefines things in a manner incompatible with . // So we have to fake its brains out. Yuck. // typedef LONG NTSTATUS; #undef ES_SYSTEM_REQUIRED #undef ES_DISPLAY_REQUIRED #undef ES_USER_PRESENT #undef ES_CONTINUOUS #define LT_DONT_CARE NTPOAPI_LT_DONT_CARE #define LT_LOWEST_LATENCY NTPOAPI_LT_LOWEST_LATENCY #define LATENCY_TIME NTPOAPI_LATENCY_TIME #if defined(_M_IX86) #define FASTCALL _fastcall #else #define FASTCALL #endif #include #endif // --------------------------------------------------------------------------- // // Local includes // #include "thunk.h" // // Wrappers so our Unicode calls work on Win95 // #define lstrcmpW StrCmpW #define lstrcmpiW StrCmpIW #define lstrcatW StrCatW #define lstrcpyW StrCpyW #define lstrcpynW StrCpyNW #define CharLowerW CharLowerWrapW #define CharNextW CharNextWrapW #define CharPrevW CharPrevWrapW // // This is a very important piece of performance hack for non-DBCS codepage. // #ifdef UNICODE // NB - These are already macros in Win32 land. #ifdef WIN32 #undef AnsiNext #undef AnsiPrev #endif #define AnsiNext(x) ((x)+1) #define AnsiPrev(y,x) ((x)-1) #define IsDBCSLeadByte(x) ((x), FALSE) #endif // DBCS #define CH_PREFIX TEXT('&') // // Trace/dump/break flags specific to shell32. // (Standard flags defined in debug.h) // // Trace flags #define TF_IDLIST 0x00000010 // IDList stuff #define TF_PATH 0x00000020 // path stuff #define TF_URL 0x00000040 // URL stuff #define TF_REGINST 0x00000080 // REGINST stuff #define TF_RIFUNC 0x00000100 // REGINST func tracing #define TF_REGQINST 0x00000200 // RegQueryInstall tracing #define TF_DBLIST 0x00000400 // SHDataBlockList tracing #define RECTWIDTH(rc) ((rc).right-(rc).left) #define RECTHEIGHT(rc) ((rc).bottom-(rc).top) // -1 means use CP_ACP, but do *not* verify // kind of a hack, but it's DEBUG and leaves 99% of callers unchanged #define CP_ACPNOVALIDATE ((UINT)-1) // // Global variables // EXTERN_C HINSTANCE g_hinst; #define HINST_THISDLL g_hinst EXTERN_C BOOL g_bRunningOnNT; EXTERN_C BOOL g_bRunningOnNT5OrHigher; EXTERN_C BOOL g_bRunningOnMemphis; // Icon mirroring EXTERN_C HDC g_hdc; EXTERN_C HDC g_hdcMask; EXTERN_C BOOL g_bMirroredOS; EXTERN_C DWORD g_tlsThreadRef; EXTERN_C DWORD g_tlsOtherThreadsRef; EXTERN_C int DrawTextFLW(HDC hdc, LPCWSTR lpString, int nCount, LPRECT lpRect, UINT uFormat); EXTERN_C int DrawTextExFLW(HDC hdc, LPWSTR pwzText, int cchText, LPRECT lprc, UINT dwDTFormat, LPDRAWTEXTPARAMS lpDTParams); EXTERN_C BOOL GetTextExtentPointFLW(HDC hdc, LPCWSTR lpString, int nCount, LPSIZE lpSize); EXTERN_C int ExtTextOutFLW(HDC hdc, int xp, int yp, UINT eto, CONST RECT *lprect, LPCWSTR lpwch, UINT cLen, CONST INT *lpdxp); #undef ExpandEnvironmentStrings #define ExpandEnvironmentStrings #error "Use SHExpandEnvironmentStrings instead" #endif // _PRIV_H_