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

模拟服务器

开发平台:

C/C++

  1. /* Copyright (c) 2001 Microsoft Corp. All rights reserved. */
  2. #if _MSC_VER > 1000
  3. #pragma once
  4. #endif
  5. #if defined(__cplusplus)
  6. extern "C" {
  7. #endif
  8. #if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
  9. #if ISOLATION_AWARE_ENABLED
  10. #if !defined(ISOLATION_AWARE_INLINE)
  11. #if defined(__cplusplus)
  12. #define ISOLATION_AWARE_INLINE inline
  13. #else
  14. #define ISOLATION_AWARE_INLINE __inline
  15. #endif
  16. #endif
  17. BOOL WINAPI IsolationAwarePrivatenCgIiAgEzlnCgpgk(ULONG_PTR* pulpCookie);
  18. /*
  19. These are private.
  20. */
  21. __declspec(selectany) HANDLE WinbaseIsolationAwarePrivateG_HnCgpgk = INVALID_HANDLE_VALUE;
  22. __declspec(selectany) BOOL   IsolationAwarePrivateG_FqbjaLEiEL = FALSE;
  23. __declspec(selectany) BOOL   WinbaseIsolationAwarePrivateG_FpeEAgEDnCgpgk = FALSE;
  24. __declspec(selectany) BOOL   WinbaseIsolationAwarePrivateG_FpLEAahcpALLED = FALSE;
  25. FARPROC WINAPI WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL(LPCSTR pszProcName);
  26. HMODULE WINAPI IsolationAwareLoadLibraryA(LPCSTR lpLibFileName);
  27. HMODULE WINAPI IsolationAwareLoadLibraryW(LPCWSTR lpLibFileName);
  28. HMODULE WINAPI IsolationAwareLoadLibraryExA(LPCSTR lpLibFileName,HANDLE hFile,DWORD dwFlags);
  29. HMODULE WINAPI IsolationAwareLoadLibraryExW(LPCWSTR lpLibFileName,HANDLE hFile,DWORD dwFlags);
  30. HANDLE WINAPI IsolationAwareCreateActCtxW(PCACTCTXW pActCtx);
  31. void WINAPI IsolationAwareReleaseActCtx(HANDLE hActCtx);
  32. BOOL WINAPI IsolationAwareActivateActCtx(HANDLE hActCtx,ULONG_PTR*lpCookie);
  33. BOOL WINAPI IsolationAwareDeactivateActCtx(DWORD dwFlags,ULONG_PTR ulCookie);
  34. BOOL WINAPI IsolationAwareFindActCtxSectionStringW(DWORD dwFlags,const GUID*lpExtensionGuid,ULONG ulSectionId,LPCWSTR lpStringToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData);
  35. BOOL WINAPI IsolationAwareQueryActCtxW(DWORD dwFlags,HANDLE hActCtx,PVOID pvSubInstance,ULONG ulInfoClass,PVOID pvBuffer,SIZE_T cbBuffer,SIZE_T*pcbWrittenOrRequired);
  36. #if defined(UNICODE)
  37. #define IsolationAwareLoadLibrary IsolationAwareLoadLibraryW
  38. #define IsolationAwareLoadLibraryEx IsolationAwareLoadLibraryExW
  39. #else /* UNICODE */
  40. #define IsolationAwareLoadLibrary IsolationAwareLoadLibraryA
  41. #define IsolationAwareLoadLibraryEx IsolationAwareLoadLibraryExA
  42. #endif /* UNICODE */
  43. ISOLATION_AWARE_INLINE HMODULE WINAPI IsolationAwareLoadLibraryA(LPCSTR lpLibFileName)
  44. {
  45.     HMODULE moduleResult = NULL;
  46.     ULONG_PTR  ulpCookie = 0;
  47.     const BOOL fActivateActCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&ulpCookie);
  48.     if (!fActivateActCtxSuccess)
  49.         return moduleResult;
  50.     __try
  51.     {
  52.         moduleResult = LoadLibraryA(lpLibFileName);
  53.     }
  54.     __finally
  55.     {
  56.         if (!IsolationAwarePrivateG_FqbjaLEiEL)
  57.         {
  58.             const BOOL fPreserveLastError = (moduleResult == NULL);
  59.             const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
  60.             (void)IsolationAwareDeactivateActCtx(0, ulpCookie);
  61.             if (fPreserveLastError)
  62.                 SetLastError(dwLastError);
  63.         }
  64.     }
  65.     return moduleResult;
  66. }
  67. ISOLATION_AWARE_INLINE HMODULE WINAPI IsolationAwareLoadLibraryW(LPCWSTR lpLibFileName)
  68. {
  69.     HMODULE moduleResult = NULL;
  70.     ULONG_PTR  ulpCookie = 0;
  71.     const BOOL fActivateActCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&ulpCookie);
  72.     if (!fActivateActCtxSuccess)
  73.         return moduleResult;
  74.     __try
  75.     {
  76.         moduleResult = LoadLibraryW(lpLibFileName);
  77.     }
  78.     __finally
  79.     {
  80.         if (!IsolationAwarePrivateG_FqbjaLEiEL)
  81.         {
  82.             const BOOL fPreserveLastError = (moduleResult == NULL);
  83.             const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
  84.             (void)IsolationAwareDeactivateActCtx(0, ulpCookie);
  85.             if (fPreserveLastError)
  86.                 SetLastError(dwLastError);
  87.         }
  88.     }
  89.     return moduleResult;
  90. }
  91. ISOLATION_AWARE_INLINE HMODULE WINAPI IsolationAwareLoadLibraryExA(LPCSTR lpLibFileName,HANDLE hFile,DWORD dwFlags)
  92. {
  93.     HMODULE moduleResult = NULL;
  94.     ULONG_PTR  ulpCookie = 0;
  95.     const BOOL fActivateActCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&ulpCookie);
  96.     if (!fActivateActCtxSuccess)
  97.         return moduleResult;
  98.     __try
  99.     {
  100.         moduleResult = LoadLibraryExA(lpLibFileName,hFile,dwFlags);
  101.     }
  102.     __finally
  103.     {
  104.         if (!IsolationAwarePrivateG_FqbjaLEiEL)
  105.         {
  106.             const BOOL fPreserveLastError = (moduleResult == NULL);
  107.             const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
  108.             (void)IsolationAwareDeactivateActCtx(0, ulpCookie);
  109.             if (fPreserveLastError)
  110.                 SetLastError(dwLastError);
  111.         }
  112.     }
  113.     return moduleResult;
  114. }
  115. ISOLATION_AWARE_INLINE HMODULE WINAPI IsolationAwareLoadLibraryExW(LPCWSTR lpLibFileName,HANDLE hFile,DWORD dwFlags)
  116. {
  117.     HMODULE moduleResult = NULL;
  118.     ULONG_PTR  ulpCookie = 0;
  119.     const BOOL fActivateActCtxSuccess = IsolationAwarePrivateG_FqbjaLEiEL || IsolationAwarePrivatenCgIiAgEzlnCgpgk(&ulpCookie);
  120.     if (!fActivateActCtxSuccess)
  121.         return moduleResult;
  122.     __try
  123.     {
  124.         moduleResult = LoadLibraryExW(lpLibFileName,hFile,dwFlags);
  125.     }
  126.     __finally
  127.     {
  128.         if (!IsolationAwarePrivateG_FqbjaLEiEL)
  129.         {
  130.             const BOOL fPreserveLastError = (moduleResult == NULL);
  131.             const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
  132.             (void)IsolationAwareDeactivateActCtx(0, ulpCookie);
  133.             if (fPreserveLastError)
  134.                 SetLastError(dwLastError);
  135.         }
  136.     }
  137.     return moduleResult;
  138. }
  139. ISOLATION_AWARE_INLINE HANDLE WINAPI IsolationAwareCreateActCtxW(PCACTCTXW pActCtx)
  140. {
  141.     HANDLE result = INVALID_HANDLE_VALUE;
  142.     typedef HANDLE (WINAPI* PFN)(PCACTCTXW pActCtx);
  143.     static PFN s_pfn;
  144.     if (s_pfn == NULL)
  145.     {
  146.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("CreateActCtxW");
  147.         if (s_pfn == NULL)
  148.             return result;
  149.     }
  150.     result = s_pfn(pActCtx);
  151.     return result;
  152. }
  153. ISOLATION_AWARE_INLINE void WINAPI IsolationAwareReleaseActCtx(HANDLE hActCtx)
  154. {
  155.     typedef void (WINAPI* PFN)(HANDLE hActCtx);
  156.     static PFN s_pfn;
  157.     if (s_pfn == NULL)
  158.     {
  159.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("ReleaseActCtx");
  160.         if (s_pfn == NULL)
  161.             return;
  162.     }
  163.     s_pfn(hActCtx);
  164.     return;
  165. }
  166. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwareActivateActCtx(HANDLE hActCtx,ULONG_PTR*lpCookie)
  167. {
  168.     BOOL fResult = FALSE;
  169.     typedef BOOL (WINAPI* PFN)(HANDLE hActCtx,ULONG_PTR*lpCookie);
  170.     static PFN s_pfn;
  171.     if (s_pfn == NULL)
  172.     {
  173.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("ActivateActCtx");
  174.         if (s_pfn == NULL)
  175.             return fResult;
  176.     }
  177.     fResult = s_pfn(hActCtx,lpCookie);
  178.     return fResult;
  179. }
  180. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwareDeactivateActCtx(DWORD dwFlags,ULONG_PTR ulCookie)
  181. {
  182.     BOOL fResult = FALSE;
  183.     typedef BOOL (WINAPI* PFN)(DWORD dwFlags,ULONG_PTR ulCookie);
  184.     static PFN s_pfn;
  185.     if (s_pfn == NULL)
  186.     {
  187.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("DeactivateActCtx");
  188.         if (s_pfn == NULL)
  189.             return fResult;
  190.     }
  191.     fResult = s_pfn(dwFlags,ulCookie);
  192.     return fResult;
  193. }
  194. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwareFindActCtxSectionStringW(DWORD dwFlags,const GUID*lpExtensionGuid,ULONG ulSectionId,LPCWSTR lpStringToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData)
  195. {
  196.     BOOL fResult = FALSE;
  197.     typedef BOOL (WINAPI* PFN)(DWORD dwFlags,const GUID*lpExtensionGuid,ULONG ulSectionId,LPCWSTR lpStringToFind,PACTCTX_SECTION_KEYED_DATA ReturnedData);
  198.     static PFN s_pfn;
  199.     if (s_pfn == NULL)
  200.     {
  201.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("FindActCtxSectionStringW");
  202.         if (s_pfn == NULL)
  203.             return fResult;
  204.     }
  205.     fResult = s_pfn(dwFlags,lpExtensionGuid,ulSectionId,lpStringToFind,ReturnedData);
  206.     return fResult;
  207. }
  208. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwareQueryActCtxW(DWORD dwFlags,HANDLE hActCtx,PVOID pvSubInstance,ULONG ulInfoClass,PVOID pvBuffer,SIZE_T cbBuffer,SIZE_T*pcbWrittenOrRequired)
  209. {
  210.     BOOL fResult = FALSE;
  211.     typedef BOOL (WINAPI* PFN)(DWORD dwFlags,HANDLE hActCtx,PVOID pvSubInstance,ULONG ulInfoClass,PVOID pvBuffer,SIZE_T cbBuffer,SIZE_T*pcbWrittenOrRequired);
  212.     static PFN s_pfn;
  213.     if (s_pfn == NULL)
  214.     {
  215.         s_pfn = (PFN)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("QueryActCtxW");
  216.         if (s_pfn == NULL)
  217.             return fResult;
  218.     }
  219.     fResult = s_pfn(dwFlags,hActCtx,pvSubInstance,ulInfoClass,pvBuffer,cbBuffer,pcbWrittenOrRequired);
  220.     return fResult;
  221. }
  222. FORCEINLINE
  223. HMODULE
  224. WINAPI
  225. WinbaseIsolationAwarePrivatetEgzbDhLEuAaDLE_xEeaELDC_DLL(
  226.     )
  227. {
  228.     HMODULE hKernel32 = GetModuleHandleW(L"Kernel32.dll");
  229.     if (hKernel32 == NULL
  230.            && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED
  231.        )
  232.         hKernel32 = GetModuleHandleA("Kernel32.dll");
  233.     return hKernel32;
  234. }
  235. #define WINBASE_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
  236. ISOLATION_AWARE_INLINE BOOL WINAPI WinbaseIsolationAwarePrivatetEgzlnCgpgk (void)
  237. /*
  238. The correctness of this function depends on it being statically
  239. linked into its clients.
  240. This function is private to functions present in this header.
  241. Do not use it.
  242. */
  243. {
  244.     BOOL fResult = FALSE;
  245.     ACTIVATION_CONTEXT_BASIC_INFORMATION actCtxBasicInfo;
  246.     ULONG_PTR ulpCookie = 0;
  247.     if (IsolationAwarePrivateG_FqbjaLEiEL)
  248.     {
  249.         fResult = TRUE;
  250.         goto Exit;
  251.     }
  252.     if (WinbaseIsolationAwarePrivateG_HnCgpgk != INVALID_HANDLE_VALUE)
  253.     {
  254.         fResult = TRUE;
  255.         goto Exit;
  256.     }
  257.     if (!IsolationAwareQueryActCtxW(
  258.         QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS
  259.         | QUERY_ACTCTX_FLAG_NO_ADDREF,
  260.         &WinbaseIsolationAwarePrivateG_HnCgpgk,
  261.         NULL,
  262.         ActivationContextBasicInformation,
  263.         &actCtxBasicInfo,
  264.         sizeof(actCtxBasicInfo),
  265.         NULL
  266.         ))
  267.         goto Exit;
  268.     /*
  269.     If QueryActCtxW returns NULL, try CreateActCtx(3).
  270.     */
  271.     if (actCtxBasicInfo.hActCtx == NULL)
  272.     {
  273.         ACTCTXW actCtx;
  274.         WCHAR rgchFullModulePath[MAX_PATH + 2];
  275.         DWORD dw;
  276.         HMODULE hmodSelf;
  277.         PGET_MODULE_HANDLE_EXW pfnGetModuleHandleExW;
  278.         pfnGetModuleHandleExW = (PGET_MODULE_HANDLE_EXW)WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL("GetModuleHandleExW");
  279.         if (pfnGetModuleHandleExW == NULL)
  280.             goto Exit;
  281.         if (!(*pfnGetModuleHandleExW)(
  282.                   GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
  283.                 | GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
  284.                 (LPCWSTR)&WinbaseIsolationAwarePrivateG_HnCgpgk,
  285.                 &hmodSelf
  286.                 ))
  287.             goto Exit;
  288.         rgchFullModulePath[WINBASE_NUMBER_OF(rgchFullModulePath) - 1] = 0;
  289.         rgchFullModulePath[WINBASE_NUMBER_OF(rgchFullModulePath) - 2] = 0;
  290.         dw = GetModuleFileNameW(hmodSelf, rgchFullModulePath, WINBASE_NUMBER_OF(rgchFullModulePath));
  291.         if (dw == 0)
  292.             goto Exit;
  293.         if (rgchFullModulePath[WINBASE_NUMBER_OF(rgchFullModulePath) - 2] != 0)
  294.         {
  295.             SetLastError(ERROR_BUFFER_OVERFLOW);
  296.             goto Exit;
  297.         }
  298.         actCtx.cbSize = sizeof(actCtx);
  299.         actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
  300.         actCtx.lpSource = rgchFullModulePath;
  301.         actCtx.lpResourceName = (LPCWSTR)(ULONG_PTR)3;
  302.         actCtx.hModule = hmodSelf;
  303.         actCtxBasicInfo.hActCtx = IsolationAwareCreateActCtxW(&actCtx);
  304.         if (actCtxBasicInfo.hActCtx == INVALID_HANDLE_VALUE)
  305.         {
  306.             const DWORD dwLastError = GetLastError();
  307.             if ((dwLastError != ERROR_RESOURCE_DATA_NOT_FOUND) &&
  308.                 (dwLastError != ERROR_RESOURCE_TYPE_NOT_FOUND) &&
  309.                 (dwLastError != ERROR_RESOURCE_LANG_NOT_FOUND) &&
  310.                 (dwLastError != ERROR_RESOURCE_NAME_NOT_FOUND))
  311.                 goto Exit;
  312.             actCtxBasicInfo.hActCtx = NULL;
  313.         }
  314.         WinbaseIsolationAwarePrivateG_FpeEAgEDnCgpgk = TRUE;
  315.     }
  316.     WinbaseIsolationAwarePrivateG_HnCgpgk = actCtxBasicInfo.hActCtx;
  317. #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION              (2)
  318.     if (IsolationAwareActivateActCtx(actCtxBasicInfo.hActCtx, &ulpCookie))
  319.     {
  320.         __try
  321.         {
  322.             ACTCTX_SECTION_KEYED_DATA actCtxSectionKeyedData;
  323.             actCtxSectionKeyedData.cbSize = sizeof(actCtxSectionKeyedData);
  324.             if (IsolationAwareFindActCtxSectionStringW(0, NULL, ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, L"Comctl32.dll", &actCtxSectionKeyedData))
  325.             {
  326.                 /* get button, edit, etc. registered */
  327.                 LoadLibraryW(L"Comctl32.dll");
  328.             }
  329.         }
  330.         __finally
  331.         {
  332.             IsolationAwareDeactivateActCtx(0, ulpCookie);
  333.         }
  334.     }
  335.     fResult = TRUE;
  336. Exit:
  337.     return fResult;
  338. }
  339. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwareInit(void)
  340. /*
  341. The correctness of this function depends on it being statically
  342. linked into its clients.
  343. Call this from DllMain(DLL_PROCESS_ATTACH) if you use id 3 and wish to avoid a race condition that
  344.     can cause an hActCtx leak.
  345. Call this from your .exe's initialization if you use id 3 and wish to avoid a race condition that
  346.     can cause an hActCtx leak.
  347. If you use id 2, this function fetches data from your .dll
  348.     that you do not need to worry about cleaning up.
  349. */
  350. {
  351.     return WinbaseIsolationAwarePrivatetEgzlnCgpgk();
  352. }
  353. ISOLATION_AWARE_INLINE void WINAPI IsolationAwareCleanup(void)
  354. /*
  355. Call this from DllMain(DLL_PROCESS_DETACH), if you use id 3, to avoid a leak.
  356. Call this from your .exe's cleanup to possibly avoid apparent (but not actual) leaks, if use id 3.
  357. This function does nothing, safely, if you use id 2.
  358. */
  359. {
  360.     HANDLE hActCtx;
  361.     if (WinbaseIsolationAwarePrivateG_FpLEAahcpALLED)
  362.         return;
  363.     /* IsolationAware* calls made from here on out will OutputDebugString
  364.        and use the process default activation context instead of id 3 or will
  365.        continue to successfully use id 2 (but still OutputDebugString).
  366.     */
  367.     WinbaseIsolationAwarePrivateG_FpLEAahcpALLED = TRUE;
  368.     
  369.     /* There is no cleanup to do if we did not CreateActCtx but only called QueryActCtx.
  370.     */
  371.     if (!WinbaseIsolationAwarePrivateG_FpeEAgEDnCgpgk)
  372.         return;
  373.     hActCtx = WinbaseIsolationAwarePrivateG_HnCgpgk;
  374.     WinbaseIsolationAwarePrivateG_HnCgpgk = NULL; /* process default */
  375.     if (hActCtx == INVALID_HANDLE_VALUE)
  376.         return;
  377.     if (hActCtx == NULL)
  378.         return;
  379.     IsolationAwareReleaseActCtx(hActCtx);
  380. }
  381. ISOLATION_AWARE_INLINE BOOL WINAPI IsolationAwarePrivatenCgIiAgEzlnCgpgk(ULONG_PTR* pulpCookie)
  382. /*
  383. This function is private to functions present in this header and other headers.
  384. */
  385. {
  386.     BOOL fResult = FALSE;
  387.     if (WinbaseIsolationAwarePrivateG_FpLEAahcpALLED)
  388.     {
  389.         const static char debugString[] = "IsolationAware function called after IsolationAwareCleanupn";
  390.         OutputDebugStringA(debugString);
  391.     }
  392.     if (IsolationAwarePrivateG_FqbjaLEiEL)
  393.     {
  394.         fResult = TRUE;
  395.         goto Exit;
  396.     }
  397.     /* Do not call Init if Cleanup has been called. */
  398.     if (!WinbaseIsolationAwarePrivateG_FpLEAahcpALLED)
  399.     {
  400.         if (!WinbaseIsolationAwarePrivatetEgzlnCgpgk())
  401.             goto Exit;
  402.     }
  403.     /* If Cleanup has been called and id3 was in use, this will activate NULL. */
  404.     if (!IsolationAwareActivateActCtx(WinbaseIsolationAwarePrivateG_HnCgpgk, pulpCookie))
  405.         goto Exit;
  406.     fResult = TRUE;
  407. Exit:
  408.     if (!fResult)
  409.     {
  410.         const DWORD dwLastError = GetLastError();
  411.         if (dwLastError == ERROR_PROC_NOT_FOUND
  412.             || dwLastError == ERROR_CALL_NOT_IMPLEMENTED
  413.             )
  414.         {
  415.             IsolationAwarePrivateG_FqbjaLEiEL = TRUE;
  416.             fResult = TRUE;
  417.         }
  418.     }
  419.     return fResult;
  420. }
  421. #undef WINBASE_NUMBER_OF
  422. ISOLATION_AWARE_INLINE FARPROC WINAPI WinbaseIsolationAwarePrivatetEgCebCnDDeEff_xEeaELDC_DLL(LPCSTR pszProcName)
  423. /* This function is shared by the other stubs in this header. */
  424. {
  425.     FARPROC proc = NULL;
  426.     static HMODULE s_module;
  427.     if (s_module == NULL)
  428.     {
  429.         s_module = WinbaseIsolationAwarePrivatetEgzbDhLEuAaDLE_xEeaELDC_DLL();
  430.         if (s_module == NULL)
  431.             return proc;
  432.     }
  433.     proc = GetProcAddress(s_module, pszProcName);
  434.     return proc;
  435. }
  436. #define ActivateActCtx IsolationAwareActivateActCtx
  437. #define CreateActCtxW IsolationAwareCreateActCtxW
  438. #define DeactivateActCtx IsolationAwareDeactivateActCtx
  439. #define FindActCtxSectionStringW IsolationAwareFindActCtxSectionStringW
  440. #define LoadLibraryA IsolationAwareLoadLibraryA
  441. #define LoadLibraryExA IsolationAwareLoadLibraryExA
  442. #define LoadLibraryExW IsolationAwareLoadLibraryExW
  443. #define LoadLibraryW IsolationAwareLoadLibraryW
  444. #define QueryActCtxW IsolationAwareQueryActCtxW
  445. #define ReleaseActCtx IsolationAwareReleaseActCtx
  446. #endif /* ISOLATION_AWARE_ENABLED */
  447. #endif /* RC */
  448. #if defined(__cplusplus)
  449. } /* __cplusplus */
  450. #endif