| Server IP : 209.209.40.120 / Your IP : 216.73.217.112 Web Server : Microsoft-IIS/10.0 System : Windows NT NEWWWW 10.0 build 17763 (Windows Server 2019) i586 User : NEWWWW$ ( 0) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : OFF | Perl : OFF | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /Program Files (x86)/Windows Kits/10/Include/10.0.19041.0/um/ |
Upload File : |
/* Copyright (c) 2001-2020, Microsoft Corp. All rights reserved. */
#if _MSC_VER > 1000
#pragma once
#endif
#if defined(__cplusplus)
extern "C" {
#endif
#if !defined(RC_INVOKED) /* RC complains about long symbols in #ifs */
#if defined(ISOLATION_AWARE_ENABLED) && (ISOLATION_AWARE_ENABLED != 0)
#if _MSC_VER >= 1200
#pragma warning(push)
#pragma warning(disable:4191) /* cast */
#if _MSC_VER >= 1400
#pragma warning(disable:6101) /* Because there will be success paths where out params are not initialized. */
#endif
#endif
#if !defined(ISOLATION_AWARE_USE_STATIC_LIBRARY)
#define ISOLATION_AWARE_USE_STATIC_LIBRARY 0
#endif
#if !defined(ISOLATION_AWARE_BUILD_STATIC_LIBRARY)
#define ISOLATION_AWARE_BUILD_STATIC_LIBRARY 0
#endif
#if !defined(ISOLATION_AWARE_INLINE)
#if ISOLATION_AWARE_BUILD_STATIC_LIBRARY
#define ISOLATION_AWARE_INLINE /* nothing */
#else
#if defined(__cplusplus)
#define ISOLATION_AWARE_INLINE inline
#else
#define ISOLATION_AWARE_INLINE __inline
#endif
#endif
#endif
#if !ISOLATION_AWARE_USE_STATIC_LIBRARY
#ifndef _M_CEE_PURE
#define IsolationAwarePrivatenCv WINAPI
#else
#define IsolationAwarePrivatenCv __clrcall
#endif
/* These wrappers prevent warnings about taking the addresses of __declspec(dllimport) functions. */
#ifdef _M_IX86
ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwarePrivatezlybNQyVOeNeln(_In_ PCSTR s) { return LoadLibraryA(s); }
ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwarePrivatezltRgzbQhYRuNaQYRn(_In_ PCSTR s) { return GetModuleHandleA(s); }
#endif
ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwarePrivatezlybNQyVOeNelJ(_In_ PCWSTR s) { return LoadLibraryW(s); }
ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwarePrivatezltRgzbQhYRuNaQYRJ(_In_ PCWSTR s) { return GetModuleHandleW(s); }
BOOL
IsolationAwarePrivatenCv
IsolationAwarePrivatenPgViNgRzlnPgpgk(
ULONG_PTR* pulpCookie
);
/*
These are private.
*/
__declspec(selectany) HANDLE WinbaseIsolationAwarePrivateT_UnPgpgk = INVALID_HANDLE_VALUE;
__declspec(selectany) BOOL IsolationAwarePrivateT_SqbjaYRiRY = FALSE;
__declspec(selectany) BOOL IsolationAwarePrivateT_SAbnPgpgk = FALSE;
__declspec(selectany) BOOL WinbaseIsolationAwarePrivateT_SpeRNgRQnPgpgk = FALSE;
__declspec(selectany) BOOL WinbaseIsolationAwarePrivateT_SpYRNahcpNYYRQ = FALSE;
FARPROC IsolationAwarePrivatenCv WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY(LPCSTR pszProcName);
#endif /* ISOLATION_AWARE_USE_STATIC_LIBRARY */
HANDLE IsolationAwarePrivatenCv IsolationAwareCreateActCtxW(_In_ PCACTCTXW pActCtx);
void IsolationAwarePrivatenCv IsolationAwareReleaseActCtx(_Inout_ HANDLE hActCtx);
_Success_(return) BOOL IsolationAwarePrivatenCv IsolationAwareActivateActCtx(_Inout_opt_ HANDLE hActCtx,_Out_ ULONG_PTR*lpCookie);
_Success_(return) BOOL IsolationAwarePrivatenCv IsolationAwareDeactivateActCtx(_In_ DWORD dwFlags,_In_ ULONG_PTR ulCookie);
_Success_(return) BOOL IsolationAwarePrivatenCv IsolationAwareFindActCtxSectionStringW(_In_ DWORD dwFlags,_Reserved_ const GUID*lpExtensionGuid,_In_ ULONG ulSectionId,_In_ LPCWSTR lpStringToFind,_Out_ PACTCTX_SECTION_KEYED_DATA ReturnedData);
_Success_(return) BOOL IsolationAwarePrivatenCv IsolationAwareQueryActCtxW(_In_ DWORD dwFlags,_In_ HANDLE hActCtx,_In_opt_ PVOID pvSubInstance,_In_ ULONG ulInfoClass,_Out_writes_bytes_to_opt_(cbBuffer,*pcbWrittenOrRequired) PVOID pvBuffer,_In_ SIZE_T cbBuffer,_Out_opt_ SIZE_T*pcbWrittenOrRequired);
_Ret_maybenull_ HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryExA(_In_ LPCSTR lpLibFileName,_Reserved_ HANDLE hFile,_In_ DWORD dwFlags);
_Ret_maybenull_ HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryExW(_In_ LPCWSTR lpLibFileName,_Reserved_ HANDLE hFile,_In_ DWORD dwFlags);
_Ret_maybenull_ HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryA(_In_ LPCSTR lpLibFileName);
_Ret_maybenull_ HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryW(_In_ LPCWSTR lpLibFileName);
#if defined(UNICODE)
#define IsolationAwareLoadLibrary IsolationAwareLoadLibraryW
#define IsolationAwareLoadLibraryEx IsolationAwareLoadLibraryExW
#else /* UNICODE */
#define IsolationAwareLoadLibrary IsolationAwareLoadLibraryA
#define IsolationAwareLoadLibraryEx IsolationAwareLoadLibraryExA
#endif /* UNICODE */
#if !ISOLATION_AWARE_USE_STATIC_LIBRARY
ISOLATION_AWARE_INLINE HANDLE IsolationAwarePrivatenCv IsolationAwareCreateActCtxW(_In_ PCACTCTXW pActCtx)
{
#ifdef _WIN64
return CreateActCtxW(pActCtx);
#else
HANDLE result = INVALID_HANDLE_VALUE;
typedef HANDLE (WINAPI* PFN)(_In_ PCACTCTXW pActCtx);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("CreateActCtxW");
if (__IsolationAware_pfn == NULL)
return result;
s_pfn = __IsolationAware_pfn;
}
result = __IsolationAware_pfn(pActCtx);
return result;
#endif
}
ISOLATION_AWARE_INLINE void IsolationAwarePrivatenCv IsolationAwareReleaseActCtx(_Inout_ HANDLE hActCtx)
{
#ifdef _WIN64
ReleaseActCtx(hActCtx);
#else
typedef void (WINAPI* PFN)(_Inout_ HANDLE hActCtx);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("ReleaseActCtx");
if (__IsolationAware_pfn == NULL)
return;
s_pfn = __IsolationAware_pfn;
}
__IsolationAware_pfn(hActCtx);
return;
#endif
}
_Success_(return) ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv IsolationAwareActivateActCtx(_Inout_opt_ HANDLE hActCtx,_Out_ ULONG_PTR*lpCookie)
{
#ifdef _WIN64
return ActivateActCtx(hActCtx,lpCookie);
#else
BOOL fResult = FALSE;
typedef BOOL (WINAPI* PFN)(_Inout_opt_ HANDLE hActCtx,_Out_ ULONG_PTR*lpCookie);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("ActivateActCtx");
if (__IsolationAware_pfn == NULL)
return fResult;
s_pfn = __IsolationAware_pfn;
}
fResult = __IsolationAware_pfn(hActCtx,lpCookie);
return fResult;
#endif
}
_Success_(return) ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv IsolationAwareDeactivateActCtx(_In_ DWORD dwFlags,_In_ ULONG_PTR ulCookie)
{
#ifdef _WIN64
return DeactivateActCtx(dwFlags,ulCookie);
#else
BOOL fResult = FALSE;
typedef BOOL (WINAPI* PFN)(_In_ DWORD dwFlags,_In_ ULONG_PTR ulCookie);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("DeactivateActCtx");
if (__IsolationAware_pfn == NULL)
return fResult;
s_pfn = __IsolationAware_pfn;
}
fResult = __IsolationAware_pfn(dwFlags,ulCookie);
return fResult;
#endif
}
_Success_(return) ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv IsolationAwareFindActCtxSectionStringW(_In_ DWORD dwFlags,_Reserved_ const GUID*lpExtensionGuid,_In_ ULONG ulSectionId,_In_ LPCWSTR lpStringToFind,_Out_ PACTCTX_SECTION_KEYED_DATA ReturnedData)
{
#ifdef _WIN64
return FindActCtxSectionStringW(dwFlags,lpExtensionGuid,ulSectionId,lpStringToFind,ReturnedData);
#else
BOOL fResult = FALSE;
typedef BOOL (WINAPI* PFN)(_In_ DWORD dwFlags,_Reserved_ const GUID*lpExtensionGuid,_In_ ULONG ulSectionId,_In_ LPCWSTR lpStringToFind,_Out_ PACTCTX_SECTION_KEYED_DATA ReturnedData);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("FindActCtxSectionStringW");
if (__IsolationAware_pfn == NULL)
return fResult;
s_pfn = __IsolationAware_pfn;
}
fResult = __IsolationAware_pfn(dwFlags,lpExtensionGuid,ulSectionId,lpStringToFind,ReturnedData);
return fResult;
#endif
}
_Success_(return) ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv IsolationAwareQueryActCtxW(_In_ DWORD dwFlags,_In_ HANDLE hActCtx,_In_opt_ PVOID pvSubInstance,_In_ ULONG ulInfoClass,_Out_writes_bytes_to_opt_(cbBuffer,*pcbWrittenOrRequired) PVOID pvBuffer,_In_ SIZE_T cbBuffer,_Out_opt_ SIZE_T*pcbWrittenOrRequired)
{
#ifdef _WIN64
return QueryActCtxW(dwFlags,hActCtx,pvSubInstance,ulInfoClass,pvBuffer,cbBuffer,pcbWrittenOrRequired);
#else
BOOL fResult = FALSE;
typedef BOOL (WINAPI* PFN)(_In_ DWORD dwFlags,_In_ HANDLE hActCtx,_In_opt_ PVOID pvSubInstance,_In_ ULONG ulInfoClass,_Out_writes_bytes_to_opt_(cbBuffer,*pcbWrittenOrRequired) PVOID pvBuffer,_In_ SIZE_T cbBuffer,_Out_opt_ SIZE_T*pcbWrittenOrRequired);
static PFN s_pfn;
PFN __IsolationAware_pfn = s_pfn;
if (__IsolationAware_pfn == NULL)
{
__IsolationAware_pfn = (PFN) WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("QueryActCtxW");
if (__IsolationAware_pfn == NULL)
return fResult;
s_pfn = __IsolationAware_pfn;
}
fResult = __IsolationAware_pfn(dwFlags,hActCtx,pvSubInstance,ulInfoClass,pvBuffer,cbBuffer,pcbWrittenOrRequired);
return fResult;
#endif
}
_Ret_maybenull_ ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryExA(_In_ LPCSTR lpLibFileName,_Reserved_ HANDLE hFile,_In_ DWORD dwFlags)
{
HMODULE moduleResult = NULL;
ULONG_PTR ulpCookie = 0;
const BOOL fActivateActCtxSuccess =
IsolationAwarePrivateT_SAbnPgpgk ||
IsolationAwarePrivateT_SqbjaYRiRY ||
IsolationAwarePrivatenPgViNgRzlnPgpgk(&ulpCookie);
if (!fActivateActCtxSuccess)
return moduleResult;
__try
{
moduleResult = LoadLibraryExA(lpLibFileName,hFile,dwFlags);
}
__finally
{
if (!IsolationAwarePrivateT_SAbnPgpgk
|| !IsolationAwarePrivateT_SqbjaYRiRY
)
{
const BOOL fPreserveLastError = (moduleResult == NULL);
const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
(void)IsolationAwareDeactivateActCtx(0, ulpCookie);
if (fPreserveLastError)
SetLastError(dwLastError);
}
}
return moduleResult;
}
_Ret_maybenull_ ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryExW(_In_ LPCWSTR lpLibFileName,_Reserved_ HANDLE hFile,_In_ DWORD dwFlags)
{
HMODULE moduleResult = NULL;
ULONG_PTR ulpCookie = 0;
const BOOL fActivateActCtxSuccess =
IsolationAwarePrivateT_SAbnPgpgk ||
IsolationAwarePrivateT_SqbjaYRiRY ||
IsolationAwarePrivatenPgViNgRzlnPgpgk(&ulpCookie);
if (!fActivateActCtxSuccess)
return moduleResult;
__try
{
moduleResult = LoadLibraryExW(lpLibFileName,hFile,dwFlags);
}
__finally
{
if (!IsolationAwarePrivateT_SAbnPgpgk
|| !IsolationAwarePrivateT_SqbjaYRiRY
)
{
const BOOL fPreserveLastError = (moduleResult == NULL);
const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
(void)IsolationAwareDeactivateActCtx(0, ulpCookie);
if (fPreserveLastError)
SetLastError(dwLastError);
}
}
return moduleResult;
}
_Ret_maybenull_ ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryA(_In_ LPCSTR lpLibFileName)
{
HMODULE moduleResult = NULL;
ULONG_PTR ulpCookie = 0;
const BOOL fActivateActCtxSuccess =
IsolationAwarePrivateT_SAbnPgpgk ||
IsolationAwarePrivateT_SqbjaYRiRY ||
IsolationAwarePrivatenPgViNgRzlnPgpgk(&ulpCookie);
if (!fActivateActCtxSuccess)
return moduleResult;
__try
{
moduleResult = LoadLibraryA(lpLibFileName);
}
__finally
{
if (!IsolationAwarePrivateT_SAbnPgpgk
|| !IsolationAwarePrivateT_SqbjaYRiRY
)
{
const BOOL fPreserveLastError = (moduleResult == NULL);
const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
(void)IsolationAwareDeactivateActCtx(0, ulpCookie);
if (fPreserveLastError)
SetLastError(dwLastError);
}
}
return moduleResult;
}
_Ret_maybenull_ ISOLATION_AWARE_INLINE HMODULE IsolationAwarePrivatenCv IsolationAwareLoadLibraryW(_In_ LPCWSTR lpLibFileName)
{
HMODULE moduleResult = NULL;
ULONG_PTR ulpCookie = 0;
const BOOL fActivateActCtxSuccess =
IsolationAwarePrivateT_SAbnPgpgk ||
IsolationAwarePrivateT_SqbjaYRiRY ||
IsolationAwarePrivatenPgViNgRzlnPgpgk(&ulpCookie);
if (!fActivateActCtxSuccess)
return moduleResult;
__try
{
moduleResult = LoadLibraryW(lpLibFileName);
}
__finally
{
if (!IsolationAwarePrivateT_SAbnPgpgk
|| !IsolationAwarePrivateT_SqbjaYRiRY
)
{
const BOOL fPreserveLastError = (moduleResult == NULL);
const DWORD dwLastError = fPreserveLastError ? GetLastError() : NO_ERROR;
(void)IsolationAwareDeactivateActCtx(0, ulpCookie);
if (fPreserveLastError)
SetLastError(dwLastError);
}
}
return moduleResult;
}
#define WINBASE_NUMBER_OF(x) (sizeof(x) / sizeof((x)[0]))
typedef struct IsolationAwarePrivate_pBAFGnAG_zBqHyr_vAsB {
HMODULE (IsolationAwarePrivatenCv * WinbaseIsolationAwarePrivateybNQJ)(_In_ PCWSTR w);
PCWSTR WinbaseIsolationAwarePrivateANZRJ;
#ifdef _M_IX86
HMODULE (IsolationAwarePrivatenCv * WinbaseIsolationAwarePrivateybNQn)(_In_ PCSTR w);
PCSTR WinbaseIsolationAwarePrivateANZRn;
#endif
} IsolationAwarePrivatepBAFGnAG_zBqHyr_vAsB;
typedef const IsolationAwarePrivatepBAFGnAG_zBqHyr_vAsB *IsolationAwarePrivateCpBAFGnAG_zBqHyr_vAsB;
typedef struct IsolationAwarePrivate_zHGnoyr_zBqHyr_vAsB {
HMODULE WinbaseIsolationAwarePrivateybNQRQzbQhYR;
} IsolationAwarePrivatezHGnoyr_zBqHyr_vAsB, *IsolationAwarePrivateCzHGnoyr_zBqHyr_vAsB;
ISOLATION_AWARE_INLINE FARPROC IsolationAwarePrivatenCv
IsolationAwarePrivatezltRgCebPnQQeRff(
_In_ IsolationAwarePrivateCpBAFGnAG_zBqHyr_vAsB c,
_Inout_ IsolationAwarePrivateCzHGnoyr_zBqHyr_vAsB m,
_In_ PCSTR ProcName
)
{
FARPROC Proc = NULL;
HMODULE hModule;
hModule = m->WinbaseIsolationAwarePrivateybNQRQzbQhYR;
if (hModule == NULL)
{
hModule = (*c->WinbaseIsolationAwarePrivateybNQJ)(c->WinbaseIsolationAwarePrivateANZRJ);
if (hModule == NULL)
goto Exit;
m->WinbaseIsolationAwarePrivateybNQRQzbQhYR = hModule;
}
Proc = GetProcAddress(hModule, ProcName);
Exit:
return Proc;
}
ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv
WinbaseIsolationAwarePrivatetRgzlnPgpgk(void)
/*
The correctness of this function depends on it being statically
linked into its clients.
This function is private to functions present in this header.
Do not use it.
*/
{
BOOL fResult = FALSE;
ACTIVATION_CONTEXT_BASIC_INFORMATION actCtxBasicInfo;
ULONG_PTR ulpCookie = 0;
if (IsolationAwarePrivateT_SqbjaYRiRY)
{
fResult = TRUE;
goto Exit;
}
if (WinbaseIsolationAwarePrivateT_UnPgpgk != INVALID_HANDLE_VALUE)
{
fResult = TRUE;
goto Exit;
}
if (!IsolationAwareQueryActCtxW(
QUERY_ACTCTX_FLAG_ACTCTX_IS_ADDRESS
| QUERY_ACTCTX_FLAG_NO_ADDREF,
&WinbaseIsolationAwarePrivateT_UnPgpgk,
NULL,
ActivationContextBasicInformation,
&actCtxBasicInfo,
sizeof(actCtxBasicInfo),
NULL))
goto Exit;
/*
If QueryActCtxW returns NULL, try CreateActCtx(3).
*/
if (actCtxBasicInfo.hActCtx == NULL)
{
ACTCTXW actCtx;
WCHAR rgchFullModulePath[MAX_PATH + 1];
DWORD dw;
HMODULE hmodSelf;
#ifdef _M_IX86
PGET_MODULE_HANDLE_EXW pfnGetModuleHandleExW = (PGET_MODULE_HANDLE_EXW)WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY("GetModuleHandleExW");
if (pfnGetModuleHandleExW == NULL)
goto Exit;
#endif
if (!
#ifdef _M_IX86
(*pfnGetModuleHandleExW)
#else
GetModuleHandleExW
#endif
( GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT
| GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
(LPCWSTR)&WinbaseIsolationAwarePrivateT_UnPgpgk,
&hmodSelf))
goto Exit;
dw = GetModuleFileNameW(hmodSelf, rgchFullModulePath, WINBASE_NUMBER_OF(rgchFullModulePath));
if (dw == 0)
goto Exit;
if (dw >= WINBASE_NUMBER_OF(rgchFullModulePath))
{
SetLastError(ERROR_BUFFER_OVERFLOW);
goto Exit;
}
actCtx.cbSize = sizeof(actCtx);
actCtx.dwFlags = ACTCTX_FLAG_RESOURCE_NAME_VALID | ACTCTX_FLAG_HMODULE_VALID;
actCtx.lpSource = rgchFullModulePath;
actCtx.lpResourceName = (LPCWSTR)(ULONG_PTR)3;
actCtx.hModule = hmodSelf;
actCtxBasicInfo.hActCtx = IsolationAwareCreateActCtxW(&actCtx);
if (actCtxBasicInfo.hActCtx == INVALID_HANDLE_VALUE)
{
const DWORD dwLastError = GetLastError();
if ((dwLastError != ERROR_RESOURCE_DATA_NOT_FOUND) &&
(dwLastError != ERROR_RESOURCE_TYPE_NOT_FOUND) &&
(dwLastError != ERROR_RESOURCE_LANG_NOT_FOUND) &&
(dwLastError != ERROR_RESOURCE_NAME_NOT_FOUND) &&
(dwLastError != ERROR_FILE_NOT_FOUND) &&
(dwLastError != ERROR_PATH_NOT_FOUND))
goto Exit;
actCtxBasicInfo.hActCtx = NULL;
}
WinbaseIsolationAwarePrivateT_SpeRNgRQnPgpgk = TRUE;
}
WinbaseIsolationAwarePrivateT_UnPgpgk = actCtxBasicInfo.hActCtx;
#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION (2)
if (IsolationAwareActivateActCtx(actCtxBasicInfo.hActCtx, &ulpCookie))
{
__try
{
ACTCTX_SECTION_KEYED_DATA actCtxSectionKeyedData;
actCtxSectionKeyedData.cbSize = sizeof(actCtxSectionKeyedData);
if (IsolationAwareFindActCtxSectionStringW(0, NULL, ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION, L"Comctl32.dll", &actCtxSectionKeyedData))
{
/* get button, edit, etc. registered */
LoadLibraryW(L"Comctl32.dll");
}
}
__finally
{
IsolationAwareDeactivateActCtx(0, ulpCookie);
}
}
fResult = TRUE;
Exit:
return fResult;
}
ISOLATION_AWARE_INLINE BOOL IsolationAwarePrivatenCv
IsolationAwareInit(void)
/*
The correctness of this function depends on it being statically
linked into its clients.
Call this from DllMain(DLL_PROCESS_ATTACH) if you use id 3 and wish to avoid a race condition that
can cause an hActCtx leak.
Call this from your .exe's initialization if you use id 3 and wish to avoid a race condition that
can cause an hActCtx leak.
If you use id 2, this function fetches data from your .dll
that you do not need to worry about cleaning up.
*/
{
return WinbaseIsolationAwarePrivatetRgzlnPgpgk();
}
ISOLATION_AWARE_INLINE void IsolationAwarePrivatenCv
IsolationAwareInitPrivateState(BOOL bState)
/*
The correctness of this function depends on it being statically
linked into its clients.
Call this from DllMain(DLL_PROCESS_ATTACH) to signal SxS Isolation is supported (or not).
*/
{
IsolationAwarePrivateT_SAbnPgpgk = bState;
}
ISOLATION_AWARE_INLINE void IsolationAwarePrivatenCv
IsolationAwareCleanup(void)
/*
Call this from DllMain(DLL_PROCESS_DETACH), if you use id 3, to avoid a leak.
Call this from your .exe's cleanup to possibly avoid apparent (but not actual) leaks, if use id 3.
This function does nothing, safely, if you use id 2.
*/
{
HANDLE hActCtx;
if (WinbaseIsolationAwarePrivateT_SpYRNahcpNYYRQ)
return;
/* IsolationAware* calls made from here on out will OutputDebugString
and use the process default activation context instead of id 3 or will
continue to successfully use id 2 (but still OutputDebugString).
*/
WinbaseIsolationAwarePrivateT_SpYRNahcpNYYRQ = TRUE;
/* There is no cleanup to do if we did not CreateActCtx but only called QueryActCtx.
*/
if (!WinbaseIsolationAwarePrivateT_SpeRNgRQnPgpgk)
return;
hActCtx = WinbaseIsolationAwarePrivateT_UnPgpgk;
WinbaseIsolationAwarePrivateT_UnPgpgk = NULL; /* process default */
if (hActCtx == INVALID_HANDLE_VALUE)
return;
if (hActCtx == NULL)
return;
IsolationAwareReleaseActCtx(hActCtx);
}
ISOLATION_AWARE_INLINE
BOOL
IsolationAwarePrivatenCv
IsolationAwarePrivatenPgViNgRzlnPgpgk(
ULONG_PTR* pulpCookie
)
/*
This function is private to functions present in this header and other headers.
*/
{
BOOL fResult = FALSE;
if (WinbaseIsolationAwarePrivateT_SpYRNahcpNYYRQ)
{
const static char debugString[] = "IsolationAware function called after IsolationAwareCleanup\n";
OutputDebugStringA(debugString);
}
if (IsolationAwarePrivateT_SqbjaYRiRY)
{
fResult = TRUE;
goto Exit;
}
/* Do not call Init if Cleanup has been called. */
if (!WinbaseIsolationAwarePrivateT_SpYRNahcpNYYRQ)
{
if (!WinbaseIsolationAwarePrivatetRgzlnPgpgk())
goto Exit;
}
/* If Cleanup has been called and id3 was in use, this will activate NULL. */
if (!IsolationAwareActivateActCtx(WinbaseIsolationAwarePrivateT_UnPgpgk, pulpCookie))
goto Exit;
fResult = TRUE;
Exit:
if (!fResult)
{
const DWORD dwLastError = GetLastError();
if (dwLastError == ERROR_PROC_NOT_FOUND
|| dwLastError == ERROR_MOD_NOT_FOUND
|| dwLastError == ERROR_CALL_NOT_IMPLEMENTED
|| dwLastError == ERROR_INVALID_FUNCTION
|| dwLastError == ERROR_NOT_SUPPORTED)
{
IsolationAwarePrivateT_SqbjaYRiRY = TRUE;
fResult = TRUE;
}
}
return fResult;
}
#undef WINBASE_NUMBER_OF
ISOLATION_AWARE_INLINE FARPROC IsolationAwarePrivatenCv WinbaseIsolationAwarePrivatetRgCebPnQQeRff_xReaRYQP_QYY(LPCSTR pszProcName)
/* This function is shared by the other stubs in this header. */
{
static HMODULE s_module;
/* Use GetModuleHandle instead of LoadLibrary on kernel32.dll because */
/* we already necessarily have a reference on kernel32.dll. */
const static IsolationAwarePrivatepBAFGnAG_zBqHyr_vAsB
c = { IsolationAwarePrivatezltRgzbQhYRuNaQYRJ, L"Kernel32.dll"
#ifdef _M_IX86
, IsolationAwarePrivatezltRgzbQhYRuNaQYRn, "Kernel32.dll"
#endif
};
static IsolationAwarePrivatezHGnoyr_zBqHyr_vAsB m;
return IsolationAwarePrivatezltRgCebPnQQeRff(&c, &m, pszProcName);
}
#endif /* ISOLATION_AWARE_USE_STATIC_LIBRARY */
#define ActivateActCtx IsolationAwareActivateActCtx
#define CreateActCtxW IsolationAwareCreateActCtxW
#define DeactivateActCtx IsolationAwareDeactivateActCtx
#define FindActCtxSectionStringW IsolationAwareFindActCtxSectionStringW
#define LoadLibraryA IsolationAwareLoadLibraryA
#define LoadLibraryExA IsolationAwareLoadLibraryExA
#define LoadLibraryExW IsolationAwareLoadLibraryExW
#define LoadLibraryW IsolationAwareLoadLibraryW
#define QueryActCtxW IsolationAwareQueryActCtxW
#define ReleaseActCtx IsolationAwareReleaseActCtx
#if _MSC_VER >= 1200
#pragma warning(pop)
#endif
#endif /* ISOLATION_AWARE_ENABLED */
#endif /* RC */
#if defined(__cplusplus)
} /* __cplusplus */
#endif