ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION 구조체(winnt.h)
ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION 구조체는 QueryActCtxW 함수에서 사용됩니다.
구문
typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION {
DWORD ElementCount;
COMPATIBILITY_CONTEXT_ELEMENT Elements[];
} ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION, *PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION;
멤버
ElementCount
애플리케이션 매니페스트에 정의된 호환성 요소의 수입니다.
Elements
COMPATIBILITY_CONTEXT_ELEMENT 구조체 의 배열입니다. 각 구조체는 애플리케이션 매니페스트의 호환성 요소 하나를 설명합니다.
설명
다음 예제에서는 Windows Server 2008 R2 또는 Windows 7이 필요하며 호환성 컨텍스트에 대한 정보를 검색하는 방법을 보여 줍니다.
HANDLE ActCtxHandle=INVALID_HANDLE_VALUE;
SIZE_T BytesWritten=0;
PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION CtxCompatInfo=NULL;
// Query the compatibility information size
bReturn = QueryActCtxW(0,
ActCtxHandle,
NULL,
CompatibilityInformationInActivationContext,
NULL,
0,
&BytesWritten);
if (bReturn == FALSE && GetLastError() !=ERROR_INSUFFICIENT_BUFFER)
{
goto EXIT;
}
CtxCompatInfo =
(PACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION)HeapAlloc(GetProcessHeap(),
HEAP_ZERO_MEMORY, BytesWritten);
if (CtxCompatInfo==NULL)
{
// Out of memory
goto EXIT;
}
// Query the compatibility information
bReturn = QueryActCtxW(0,
ActCtxHandle,
NULL,
CompatibilityInformationInActivationContext,
CtxCompatInfo,
BytesWritten,
&BytesWritten);
if (bReturn==FALSE)
{
// Unexpected error: use GetLastError() to check
goto EXIT;
}
for (DWORD ElementIndex=0; ElementIndex < CtxCompatInfo->ElementCount; ElementIndex ++)
{
PCOMPATIBILITY_CONTEXT_ELEMENT ContextElement = &CtxCompatInfo->Elements[ElementIndex];
if (ContextElement->Type == ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS)
{
if (memcmp(&ContextElement->Id, &WIN7_CONTEXT_GUID, sizeof (GUID))==0)
{printf_s("Windows 7 is supported");}
}
}
EXIT:
if (ActCtxHandle != INVALID_HANDLE_VALUE)
{
ReleaseActCtx (ActCtxHandle)
}
if (CtxCompatInfo != NULL)
{
RtlFreeHeap (RtlProcessHeap (), 0, CtxCompatInfo);
CtxCompatInfo = NULL;
}
요구 사항
지원되는 최소 클라이언트 | Windows 7 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
머리글 | winnt.h(Windows.h 포함) |