private.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 8k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. #ifndef _PRIVATE_H_
  2. #define _PRIVATE_H_
  3. #define _OLEAUT32_      // get DECLSPEC_IMPORT stuff right for oleaut32.h, we are defing these
  4. #ifdef STRICT
  5. #undef STRICT
  6. #endif
  7. #define STRICT
  8. #pragma warning(disable:4514) // unreferenced inline function has been removed
  9. #include <windows.h>
  10. #include <ole2.h>
  11. #include <advpub.h>
  12. #include <ccstock.h>
  13. #include <debug.h>
  14. #include <inetreg.h>
  15. #include <mlang.h>
  16. #include <urlmon.h> // for JIT stuff
  17. #include "mimedb.h"
  18. #include "enumcp.h"
  19. #include "resource.h"
  20. #include "detect.h"     // LCDETECT
  21. #include "font.h"
  22. //
  23. //  Function prototypes
  24. //
  25. #if defined(__cplusplus)
  26. extern "C" HRESULT WINAPI ConvertINetReset(void);
  27. #else
  28. HRESULT WINAPI ConvertINetReset(void);
  29. #endif
  30. HRESULT WINAPI ConvertINetStringInIStream(LPDWORD lpdwMode, DWORD dwSrcEncoding, DWORD dwDstEncoding, IStream *pstmIn, IStream *pstmOut, DWORD dwFlag, WCHAR *lpFallBack);
  31. HRESULT WINAPI ConvertINetUnicodeToMultiByteEx(LPDWORD lpdwMode, DWORD dwEncoding, LPCWSTR lpSrcStr, LPINT lpnWideCharCount, LPSTR lpDstStr, LPINT lpnMultiCharCount, DWORD dwFlag, WCHAR *lpFallBack);
  32. HRESULT WINAPI ConvertINetMultiByteToUnicodeEx(LPDWORD lpdwMode, DWORD dwEncoding, LPCSTR lpSrcStr, LPINT lpnMultiCharCount, LPWSTR lpDstStr, LPINT lpnWideCharCount, DWORD dwFlag, WCHAR *lpFallBack);
  33. HRESULT WINAPI _DetectInputCodepage(DWORD dwFlag, DWORD uiPrefWinCodepage, CHAR *pSrcStr, INT *pcSrcSize, DetectEncodingInfo *lpEncoding, INT *pnScoores);
  34. HRESULT WINAPI _DetectCodepageInIStream(DWORD dwFlag, DWORD uiPrefWinCodepage, IStream *pstmIn, DetectEncodingInfo *lpEncoding, INT *pnScoores);
  35. void CMLangFontLink_FreeGlobalObjects(void);
  36. int _LoadStringExW(HMODULE, UINT, LPWSTR, int, WORD);
  37. HRESULT RegularizePosLen(long lStrLen, long* plPos, long* plLen);
  38. HRESULT LocaleToCodePage(LCID locale, UINT* puCodePage);
  39. HRESULT StartEndConnection(IUnknown* const pUnkCPC, const IID* const piid, IUnknown* const pUnkSink, DWORD* const pdwCookie, DWORD dwCookie);
  40. HRESULT RegisterServerInfo(void);
  41. HRESULT UnregisterServerInfo(void);
  42. // Legacy registry MIME DB code, keep it for backward compatiblility
  43. BOOL MimeDatabaseInfo(void);
  44. void DllAddRef(void);
  45. void DllRelease(void);
  46. // JIT langpack stuff
  47. HRESULT InstallIEFeature(HWND hWnd, CLSID *clsid, DWORD dwfIODControl);
  48. HRESULT _GetJITClsIDForCodePage(UINT uiCodePage, CLSID *clsid );
  49. HRESULT _AddFontForCP(UINT uiCP);
  50. HRESULT _ValidateCPInfo(UINT uiCP);
  51. HRESULT _InstallNT5Langpack(HWND hwnd, UINT uiCP);
  52. LANGID GetNT5UILanguage(void);
  53. BOOL    _IsValidCodePage(UINT uiCodePage);
  54. BOOL    _IsKOI8RU(unsigned char *pStr, int nSize);
  55. HRESULT  IsNTLangpackAvailable(UINT uiCodePage);
  56. HRESULT _IsCodePageInstallable(UINT uiCodePage);
  57. // String functions
  58. WCHAR *MLStrCpyNW(WCHAR *strDest, const WCHAR *strSource, int nCount);
  59. WCHAR *MLStrCpyW(WCHAR *strDest, const WCHAR *strSource);
  60. int MLStrCmpIW( const wchar_t *string1, const wchar_t *string2 );
  61. int MLStrCmpI(LPCTSTR pwsz1, LPCTSTR pwsz2);
  62. LPTSTR MLPathCombine(LPTSTR szPath, LPTSTR szPath1, LPTSTR szPath2);
  63. LPTSTR MLStrCpyN(LPTSTR pstrDest, const LPTSTR pstrSource, UINT nCount);
  64. LPTSTR MLStrStr(const LPTSTR Str, const LPTSTR subStr);
  65. DWORD HexToNum(LPTSTR lpsz);
  66. LPTSTR MLStrChr( const TCHAR *string, int c );
  67. BOOL AnsiFromUnicode(LPSTR * ppszAnsi, LPCWSTR pwszWide, LPSTR pszBuf, int cchBuf);
  68. int WINAPI MLStrToIntW(LPCWSTR lpSrc);
  69. int WINAPI MLStrToIntA(LPCSTR lpSrc);
  70. int MLStrCmpNI(LPCTSTR pstr1, LPCTSTR pstr2, int nChar);
  71. int MLStrCmpNIA(LPCSTR lpStr1, LPCSTR lpStr2, int nChar);
  72. int MLStrCmpNIW(LPCWSTR lpStr1, LPCWSTR lpStr2, int nChar);
  73. UINT MLGetWindowsDirectory(LPTSTR lpBuffer, UINT uSize);
  74. int LowAsciiStrCmpNIA(LPCSTR  lpstr1, LPCSTR lpstr2, int count);
  75. int CALLBACK EnumFontFamExProc(ENUMLOGFONTEX *lpelf, NEWTEXTMETRICEX *lpntm, int iFontType, LPARAM lParam);
  76. INT_PTR CALLBACK LangpackDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
  77. #ifdef UNICODE
  78. #define MLStrToInt MLStrToIntW
  79. #else
  80. #define MLStrToInt MLStrToIntA
  81. #endif
  82. //
  83. //  Globals
  84. //
  85. extern HINSTANCE    g_hInst;
  86. extern HINSTANCE    g_hUrlMon;
  87. extern UINT         g_cRfc1766;
  88. extern PRFC1766INFOA g_pRfc1766Reg;
  89. extern CRITICAL_SECTION g_cs;
  90. extern BOOL g_bIsNT5;
  91. extern BOOL g_bIsNT;
  92. extern BOOL g_bIsWin98;
  93. #ifdef  __cplusplus
  94. extern LCDetect * g_pLCDetect; // LCDETECT
  95. #endif  // __cplusplus
  96. //
  97. //  Macros
  98. //
  99. #ifndef ARRAYSIZE
  100. #define ARRAYSIZE(x) (sizeof(x) / sizeof((x)[0]))
  101. #endif
  102. #define VERIFY(f) AssertE(f)
  103. #define ASSIGN_IF_FAILED(hr, exp) {HRESULT hrTemp = (exp); if (FAILED(hrTemp) && SUCCEEDED(hr)) (hr) = hrTemp;}
  104. #define ASSERT_READ_PTR(p) ASSERT(!::IsBadReadPtr((p), sizeof(*p)))
  105. #define ASSERT_READ_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadReadPtr((p), sizeof(*p)))
  106. #define ASSERT_WRITE_PTR(p) ASSERT(!::IsBadWritePtr((p), sizeof(*p)))
  107. #define ASSERT_WRITE_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadWritePtr((p), sizeof(*p)))
  108. #define ASSERT_READ_BLOCK(p,s) ASSERT(!::IsBadReadPtr((p), sizeof(*p) * (s)))
  109. #define ASSERT_READ_BLOCK_OR_NULL(p,s) ASSERT(!(p) || !::IsBadReadPtr((p), sizeof(*p) * (s)))
  110. #define ASSERT_WRITE_BLOCK(p,s) ASSERT(!::IsBadWritePtr((p), sizeof(*p) * (s)))
  111. #define ASSERT_WRITE_BLOCK_OR_NULL(p,s) ASSERT(!(p) || !::IsBadWritePtr((p), sizeof(*p) * (s)))
  112. #define ASSERT_TSTR_PTR(p) ASSERT(!::IsBadStringPtr((p), (UINT)-1))
  113. #define ASSERT_TSTR_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadStringPtr((p), (UINT)-1))
  114. #define ASSERT_WSTR_PTR(p) ASSERT(!::IsBadStringPtrW((p), (UINT)-1))
  115. #define ASSERT_WSTR_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadStringPtrW((p), (UINT)-1))
  116. #define ASSERT_STR_PTR(p) ASSERT(!::IsBadStringPtrA((p), (UINT)-1))
  117. #define ASSERT_STR_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadStringPtrA((p), (UINT)-1))
  118. #define ASSERT_CODE_PTR(p) ASSERT(!::IsBadCodePtr((FARPROC)(p)))
  119. #define ASSERT_CODE_PTR_OR_NULL(p) ASSERT(!(p) || !::IsBadCodePtr((FARPROC)(p)))
  120. #define ASSERT_THIS ASSERT_WRITE_PTR(this)
  121. #ifdef NEWMLSTR
  122. // Error Code
  123. #define FACILITY_MLSTR                  0x0A15
  124. #define MLSTR_E_ACCESSDENIED            MAKE_HRESULT(1, FACILITY_MLSTR, 2001)
  125. #define MLSTR_E_BUSY                    MAKE_HRESULT(1, FACILITY_MLSTR, 2002)
  126. #define MLSTR_E_TOOMANYNESTOFLOCK       MAKE_HRESULT(1, FACILITY_MLSTR, 1003)
  127. #define MLSTR_E_STRBUFNOTAVAILABLE      MAKE_HRESULT(1, FACILITY_MLSTR, 1004)
  128. #define MLSTR_LOCK_TIMELIMIT            100
  129. #define MLSTR_CONF_MAX                  0x40000000
  130. #define MAX_LOCK_COUNT                  4
  131. #endif
  132. #define BIT_HEADER_CHARSET              0x1
  133. #define BIT_BODY_CHARSET                0x2
  134. #define BIT_WEB_CHARSET                 0x4
  135. #define BIT_WEB_FIXED_WIDTH_FONT        0x8 
  136. #define BIT_PROPORTIONAL_FONT           0x10
  137. #define BIT_DESCRIPTION                 0x20
  138. #define BIT_FAMILY                      0x40
  139. #define BIT_LEVEL                       0x80
  140. #define BIT_ENCODING                    0x100
  141. #define BIT_DEL_HEADER_CHARSET          0x10000
  142. #define BIT_DEL_BODY_CHARSET            0x20000
  143. #define BIT_DEL_WEB_CHARSET             0x40000
  144. #define BIT_DEL_WEB_FIXED_WIDTH_FONT    0x80000 
  145. #define BIT_DEL_PROPORTIONAL_FONT       0x100000
  146. #define BIT_DEL_DESCRIPTION             0x200000
  147. #define BIT_DEL_FAMILY                  0x400000
  148. #define BIT_DEL_LEVEL                   0x800000
  149. #define BIT_DEL_ENCODING                0x1000000
  150. #define BIT_CODEPAGE                    0x1
  151. #define BIT_INTERNET_ENCODING           0x2
  152. #define BIT_ALIAS_FOR_CHARSET           0x4
  153. #define DETECTION_MAX_LEN               20*1024     // Limit max auto-detect length to 20k
  154. #define IS_DIGITA(ch)    InRange(ch, '0', '9')
  155. #define IS_DIGITW(ch)    InRange(ch, L'0', L'9')
  156. #define IS_CHARA(ch)     (InRange(ch, 'a', 'z') && InRange(ch, 'A', 'Z'))
  157. #define IS_ISCII_CP(x)   (InRange(x, 57002, 57011))
  158. // Internal define for K1 Hanja support
  159. // In future version of MLang, we might need to update this bit define if there is a conflict with system define
  160. #define FS_MLANG_K1HANJA 0x10000000L
  161. #ifdef UNIX // Add some type that's not defined in UNIX SDK
  162. typedef WORD UWORD;
  163. #endif
  164. #define REG_KEY_NT5LPK                    TEXT("W2KLpk")
  165. #endif  // _PRIVATE_H_