CeLib.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:7k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //+-------------------------------------------------------------------------
  2. //
  3. //  Microsoft Windows
  4. //
  5. //  Copyright (C) Microsoft Corporation, 1995 - 1999
  6. //
  7. //  File:       celib.h
  8. //
  9. //  Contents:   helper functions
  10. //
  11. //--------------------------------------------------------------------------
  12. #ifndef __CELIB_H__
  13. #define __CELIB_H__
  14. #define CENCODEMAX (64 * 1024)
  15. // Bitmap manipulation routines.  Fetch or set a bit, given a base and index.
  16. #define GETBIT(pb, i) ((pb)[(i) / 8] & (1 << ((i) % 8)))
  17. #define SETBIT(pb, i) ((pb)[(i) / 8] |= (1 << ((i) % 8)))
  18. #define CLEARBIT(pb, i) ((pb)[(i) / 8] &= ~(1 << ((i) % 8)))
  19. #define BITSTOBYTES(b) ((int)(((b) + 7) / 8))
  20. // Size of a fixed array:
  21. #define ARRAYSIZE(a) (sizeof(a)/sizeof((a)[0]))
  22. #define wszCERTENROLLSHAREPATH L"CertSrv\CertEnroll"
  23. #define cwcHRESULTSTRING 40
  24. #define SAFE_SUBTRACT_POINTERS(p1, p2) 
  25.     (assert(sizeof((*p1)) == sizeof(*(p2))), ((p1) - (p2)))
  26. #define _PrintErrorStr(hr, pszMessage, pwsz) 
  27.     _PrintError((hr), (pszMessage))
  28. #define _PrintErrorStr2(hr, pszMessage, pwsz, hr2) 
  29.     _PrintError((hr), (pszMessage))
  30. #define _PrintError2(hr, pszMessage, hr2) 
  31.     _PrintError((hr), (pszMessage))
  32. #define _PrintError(hr, pszMessage) 
  33.     ceERRORPRINTLINE((pszMessage), (hr))
  34. #define _PrintIfErrorStr(hr, pszMessage, pwsz) 
  35.     _PrintIfError((hr), (pszMessage))
  36. #define _PrintIfErrorStr2(hr, pszMessage, pwsz, hr2) 
  37.     _PrintIfError((hr), (pszMessage))
  38. #define _PrintIfError2(hr, pszMessage, hr2) 
  39.     _PrintIfError((hr), (pszMessage))
  40. #define _PrintIfError(hr, pszMessage) 
  41.     { 
  42. if (S_OK != (hr)) 
  43.     ceERRORPRINTLINE((pszMessage), (hr)); 
  44.     }
  45. #define _JumpErrorStr(hr, label, pszMessage, pwsz) 
  46.     _JumpError((hr), label, (pszMessage))
  47. #define _JumpError(hr, label, pszMessage) 
  48.     { 
  49. ceERRORPRINTLINE((pszMessage), (hr)); 
  50. goto label; 
  51.     }
  52. #define _JumpIfErrorStr(hr, label, pszMessage, pwsz) 
  53.     _JumpIfError((hr), label, (pszMessage))
  54. #define _JumpIfErrorStr2(hr, label, pszMessage, pwsz, hr2) 
  55.     _JumpIfError((hr), label, (pszMessage))
  56. #define _JumpIfError2(hr, label, pszMessage, hr2) 
  57.     _JumpIfError((hr), label, (pszMessage))
  58. #define _JumpIfError(hr, label, pszMessage) 
  59.     { 
  60. if (S_OK != (hr)) 
  61.     ceERRORPRINTLINE((pszMessage), (hr)); 
  62.     goto label; 
  63.     }
  64. #define ceERRORPRINTLINE(pszMessage, hr) 
  65.     ceErrorPrintLine(__FILE__, __LINE__, (pszMessage), (hr))
  66. #define DBGPRINT(a) ceDbgPrintf a
  67. int WINAPIV ceDbgPrintf(BOOL fDebug, char const *pszfmt, ...);
  68. VOID
  69. ceErrorPrintLine(
  70.     IN char const *pszFile,
  71.     IN DWORD line,
  72.     IN char const *pszMessage,
  73.     IN HRESULT hr);
  74. HRESULT
  75. ceHLastError(VOID);
  76. HRESULT
  77. ceHError(
  78.     IN HRESULT hr);
  79. // Constants chosen to avoid DWORD overflow:
  80. #define CVT_WEEKS (7 * CVT_DAYS)
  81. #define CVT_DAYS (24 * CVT_HOURS)
  82. #define CVT_HOURS (60 * CVT_MINUTES)
  83. #define CVT_MINUTES (60 * CVT_SECONDS)
  84. #define CVT_SECONDS (1)
  85. #define CVT_BASE (1000 * 1000 * 10)
  86. enum ENUM_PERIOD
  87. {
  88.     ENUM_PERIOD_INVALID = -1,
  89.     ENUM_PERIOD_SECONDS = 0,
  90.     ENUM_PERIOD_MINUTES,
  91.     ENUM_PERIOD_HOURS,
  92.     ENUM_PERIOD_DAYS,
  93.     ENUM_PERIOD_WEEKS,
  94.     ENUM_PERIOD_MONTHS,
  95.     ENUM_PERIOD_YEARS
  96. };
  97. HRESULT
  98. ceMakeExprDate(
  99.     IN OUT DATE *pDate,
  100.     IN LONG lDelta,
  101.     IN enum ENUM_PERIOD enumPeriod);
  102. HRESULT
  103. ceTranslatePeriodUnits(
  104.     IN WCHAR const *pwszPeriod,
  105.     IN LONG lCount,
  106.     OUT enum ENUM_PERIOD *penumPeriod,
  107.     OUT LONG *plCount);
  108. WCHAR const *
  109. ceGetOIDNameA(
  110.     IN char const *pszObjId);
  111. WCHAR const *
  112. ceGetOIDName(
  113.     IN WCHAR const *pwszObjId);
  114. BOOL
  115. ceDecodeObject(
  116.     IN DWORD dwEncodingType,
  117.     IN LPCSTR lpszStructType,
  118.     IN BYTE const *pbEncoded,
  119.     IN DWORD cbEncoded,
  120.     IN BOOL fCoTaskMemAlloc,
  121.     OUT VOID **ppvStructInfo,
  122.     OUT DWORD *pcbStructInfo);
  123. BOOL
  124. ceEncodeObject(
  125.     DWORD dwEncodingType,
  126.     IN LPCSTR lpszStructType,
  127.     IN VOID const *pvStructInfo,
  128.     IN DWORD dwFlags,
  129.     IN BOOL fCoTaskMemAlloc,
  130.     OUT BYTE **ppbEncoded,
  131.     OUT DWORD *pcbEncoded);
  132. WCHAR *
  133. ceDuplicateString(
  134.     IN WCHAR const *pwsz);
  135. BOOL
  136. ceConvertWszToSz(
  137.     OUT char **ppsz,
  138.     IN WCHAR const *pwc,
  139.     IN LONG cb);
  140. BOOL
  141. ceConvertWszToBstr(
  142.     OUT BSTR *pbstr,
  143.     IN WCHAR const *pwc,
  144.     IN LONG cb);
  145. BOOL
  146. ceConvertSzToWsz(
  147.     OUT WCHAR **ppwsz,
  148.     IN char const *pch,
  149.     IN LONG cch);
  150. BOOL
  151. ceConvertSzToBstr(
  152.     OUT BSTR *pbstr,
  153.     IN CHAR const *pch,
  154.     IN LONG cch);
  155. VOID
  156. ceFreeBstr(
  157.     IN OUT BSTR *pstr);
  158. HRESULT
  159. ceDateToFileTime(
  160.     IN DATE const *pDate,
  161.     OUT FILETIME *pft);
  162. HRESULT
  163. ceFileTimeToDate(
  164.     IN FILETIME const *pft,
  165.     OUT DATE *pDate);
  166. HRESULT
  167. ceVerifyObjId(
  168.     IN WCHAR const *pwszObjId);
  169. HRESULT
  170. ceVerifyAltNameString(
  171.     IN LONG NameChoice,
  172.     IN WCHAR const *pwszName);
  173. HRESULT
  174. ceDispatchSetErrorInfo(
  175.     IN HRESULT hrError,
  176.     IN WCHAR const *pwszDescription,
  177.     OPTIONAL IN WCHAR const *pwszProgId,
  178.     OPTIONAL IN IID const *piid);
  179. VOID
  180. ceInitErrorMessageText(
  181.     IN DWORD idsUnexpected,
  182.     IN DWORD idsUnknownErrorCode); // L"Error %ws %ws"
  183. WCHAR *
  184. ceGetErrorMessageText(
  185.     IN HRESULT hr,
  186.     IN BOOL fHResultString);
  187. WCHAR const *
  188. ceHResultToString(
  189.     IN OUT WCHAR *awchr,
  190.     IN HRESULT hr);
  191. #define cwcFILENAMESUFFIXMAX 20
  192. #define cwcSUFFIXMAX (1 + 5 + 1) // five decimal digits plus parentheses
  193. #define wszFCSAPARM_SERVERDNSNAME L"%1"
  194. #define wszFCSAPARM_SERVERSHORTNAME L"%2"
  195. #define wszFCSAPARM_SANITIZEDCANAME L"%3"
  196. #define wszFCSAPARM_CERTFILENAMESUFFIX L"%4"
  197. #define wszFCSAPARM_DOMAINDN L"%5"
  198. #define wszFCSAPARM_CONFIGDN L"%6"
  199. #define wszFCSAPARM_SANITIZEDCANAMEHASH L"%7"
  200. #define wszFCSAPARM_CRLFILENAMESUFFIX L"%8"
  201. #define wszFCSAPARM_CRLDELTAFILENAMESUFFIX L"%9"
  202. #define wszFCSAPARM_DSCRLATTRIBUTE L"%10"
  203. #define wszFCSAPARM_DSCACERTATTRIBUTE L"%11"
  204. HRESULT
  205. ceFormatCertsrvStringArray(
  206.     IN BOOL fURL,
  207.     IN LPCWSTR pwszServerName_p1_2,
  208.     IN LPCWSTR pwszSanitizedName_p3_7,
  209.     IN DWORD   iCert_p4,
  210.     IN LPCWSTR pwszDomainDN_p5,
  211.     IN LPCWSTR pwszConfigDN_p6,
  212.     IN DWORD   iCRL_p8,
  213.     IN BOOL    fDeltaCRL_p9,
  214.     IN BOOL    fDSAttrib_p10_11,
  215.     IN DWORD   cStrings,
  216.     IN LPCWSTR *apwszStringsIn,
  217.     OUT LPWSTR *apwszStringsOut);
  218. HRESULT
  219. ceInternetCanonicalizeUrl(
  220.     IN WCHAR const *pwszIn,
  221.     OUT WCHAR **ppwszOut);
  222. int 
  223. ceWtoI(
  224.     IN WCHAR const *pwszDigitString,
  225.     OUT BOOL *pfValid);
  226. #endif // __CELIB_H__