ACTIVATION_CONTEXT_DETAILED_INFORMATION-Struktur (winnt.h)
Die ACTIVATION_CONTEXT_DETAILED_INFORMATION-Struktur wird von der QueryActCtxW-Funktion verwendet.
Syntax
typedef struct _ACTIVATION_CONTEXT_DETAILED_INFORMATION {
DWORD dwFlags;
DWORD ulFormatVersion;
DWORD ulAssemblyCount;
DWORD ulRootManifestPathType;
DWORD ulRootManifestPathChars;
DWORD ulRootConfigurationPathType;
DWORD ulRootConfigurationPathChars;
DWORD ulAppDirPathType;
DWORD ulAppDirPathChars;
PCWSTR lpRootManifestPath;
PCWSTR lpRootConfigurationPath;
PCWSTR lpAppDirPath;
} ACTIVATION_CONTEXT_DETAILED_INFORMATION, *PACTIVATION_CONTEXT_DETAILED_INFORMATION;
Member
dwFlags
Dieser Wert ist immer 0.
ulFormatVersion
Dieser Wert gibt das Format der zurückgegebenen Informationen an. Unter Windows XP und Windows Server 2003 ist dieser Member immer 1.
ulAssemblyCount
Anzahl der Assemblys im Aktivierungskontext.
ulRootManifestPathType
Gibt die Art des Pfads an, aus dem das Manifest dieser Assembly geladen wurde.
Dieser Member ist immer eine der folgenden Konstanten:
ulRootManifestPathChars
Anzahl der Zeichen im Manifestpfad.
ulRootConfigurationPathType
Gibt die Art des Pfads an, aus dem das Anwendungskonfigurationsmanifest dieser Assembly geladen wurde.
Dieser Member ist immer eine der folgenden Konstanten:
ulRootConfigurationPathChars
Anzahl der Zeichen in einem beliebigen Anwendungskonfigurationsdateipfad.
ulAppDirPathType
Gibt die Art des Pfads an, aus dem dieses Anwendungsmanifest geladen wurde.
Dieser Member ist immer eine der folgenden Konstanten:
ulAppDirPathChars
Anzahl der Zeichen im Anwendungsverzeichnis.
lpRootManifestPath
Pfad des Anwendungsmanifests.
lpRootConfigurationPath
Pfad der Konfigurationsdatei.
lpAppDirPath
Pfad des Anwendungsverzeichnisses.
Hinweise
Wenn QueryActCtxW mit der Option ActivationContextDetailedInformation aufgerufen wird und die Funktion erfolgreich ist, werden die Informationen im zurückgegebenen Puffer in Form der ACTIVATION_CONTEXT_DETAILED_INFORMATION-Struktur angezeigt. Im Folgenden finden Sie ein Beispiel für eine Struktur, die verwendet wird, um detaillierte Informationen zum Aktivierungskontext und einen Aufruf von QueryActCtxW zu enthalten.
PACTIVATION_CONTEXT_DETAILED_INFORMATION pAssemblyInfo = NULL;
ACTIVATION_CONTEXT_QUERY_INDEX QueryIndex;
BOOL fSuccess = FALSE;
SIZE_T cbRequired;
HANDLE hActCtx = INVALID_HANDLE_VALUE;
BYTE bTemporaryBuffer[512];
PVOID pvDataBuffer = (PVOID)bTemporaryBuffer;
SIZE_T cbAvailable = sizeof(bTemporaryBuffer);
// Request the first file in the root assembly
QueryIndex.ulAssemblyIndex = 1;
QueryIndex.ulFileIndexInAssembly = 0;
if (GetCurrentActCtx(&hActCtx)) {
// Attempt to use our stack-based buffer first - if that's not large
// enough, allocate from the heap and try again.
fSuccess = QueryActCtxW(
0,
hActCtx,
(PVOID)&QueryIndex,
AssemblyDetailedInformationInActivationContext,
pvDataBuffer,
cbAvailable,
&cbRequired);
// Failed, because the buffer was too small.
if (!fSuccess && (GetLastError() == ERROR_INSUFFICIENT_BUFFER)) {
// Allocate what we need from the heap - fail if there isn't enough
// memory to do so.
pvDataBuffer = HeapAlloc(GetProcessHeap(), 0, cbRequired);
if (pvDataBuffer == NULL) {
fSuccess = FALSE;
goto DoneQuerying;
}
cbAvailable = cbRequired;
// If this fails again, exit out.
fSuccess = QueryActCtxW(
0,
hActCtx,
(PVOID)&QueryIndex,
AssemblyDetailedInformationInActivationContext,
pvDataBuffer,
cbAvailable,
&cbRequired);
}
if (fSuccess) {
// Now that we've found the assembly info, cast our target buffer back to
// the assembly info pointer. Use pAssemblyInfo->lpFileName
pAssemblyInfo = (PACTIVATION_CONTEXT_DETAILED_INFORMATION)pvDataBuffer;
}
}
DoneQuerying:
if (hActCtx != INVALID_HANDLE_VALUE)
ReleaseActCtx(hActCtx);
if (pvDataBuffer && (pvDataBuffer != bTemporaryBuffer)) {
HeapFree(GetProcessHeap(), 0, pvDataBuffer);
pvDataBuffer = 0;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | winnt.h (Einschließen von Windows.h) |