ReactOS 0.4.15-dev-7924-g5949c20
actctx.c File Reference
#include <k32.h>
#include <debug.h>
Include dependency graph for actctx.c:

Go to the source code of this file.

Macros

#define NDEBUG
 
#define ACTCTX_FAKE_HANDLE   ((HANDLE) 0xf00baa)
 

Functions

 DEBUG_CHANNEL (actctx)
 
HANDLE WINAPI CreateActCtxA (PCACTCTXA pActCtx)
 
HANDLE WINAPI CreateActCtxW (PCACTCTXW pActCtx)
 
BOOL WINAPI FindActCtxSectionStringA (DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, LPCSTR lpSearchStr, PACTCTX_SECTION_KEYED_DATA pInfo)
 
BOOL WINAPI FindActCtxSectionStringW (DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, LPCWSTR lpSearchStr, PACTCTX_SECTION_KEYED_DATA pInfo)
 
BOOL WINAPI FindActCtxSectionGuid (DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, const GUID *lpSearchGuid, PACTCTX_SECTION_KEYED_DATA pInfo)
 

Macro Definition Documentation

◆ ACTCTX_FAKE_HANDLE

#define ACTCTX_FAKE_HANDLE   ((HANDLE) 0xf00baa)

Definition at line 21 of file actctx.c.

◆ NDEBUG

#define NDEBUG

Definition at line 17 of file actctx.c.

Function Documentation

◆ CreateActCtxA()

HANDLE WINAPI CreateActCtxA ( PCACTCTXA  pActCtx)

Definition at line 28 of file actctx.c.

29{
30 ACTCTXW actw;
31 SIZE_T len;
33 LPWSTR src = NULL, assdir = NULL, resname = NULL, appname = NULL;
34
35 TRACE("%p %08x\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
36
37 if (!pActCtx || pActCtx->cbSize != sizeof(*pActCtx))
38 {
41 }
42
43 actw.cbSize = sizeof(actw);
44 actw.dwFlags = pActCtx->dwFlags;
45 if (pActCtx->lpSource)
46 {
47 len = MultiByteToWideChar(CP_ACP, 0, pActCtx->lpSource, -1, NULL, 0);
48 src = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
49 if (!src) return INVALID_HANDLE_VALUE;
50 MultiByteToWideChar(CP_ACP, 0, pActCtx->lpSource, -1, src, len);
51 }
52 actw.lpSource = src;
53
54 if (actw.dwFlags & ACTCTX_FLAG_PROCESSOR_ARCHITECTURE_VALID)
55 actw.wProcessorArchitecture = pActCtx->wProcessorArchitecture;
56 if (actw.dwFlags & ACTCTX_FLAG_LANGID_VALID)
57 actw.wLangId = pActCtx->wLangId;
58 if (actw.dwFlags & ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID)
59 {
60 len = MultiByteToWideChar(CP_ACP, 0, pActCtx->lpAssemblyDirectory, -1, NULL, 0);
61 assdir = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
62 if (!assdir) goto done;
63 MultiByteToWideChar(CP_ACP, 0, pActCtx->lpAssemblyDirectory, -1, assdir, len);
64 actw.lpAssemblyDirectory = assdir;
65 }
66 if (actw.dwFlags & ACTCTX_FLAG_RESOURCE_NAME_VALID)
67 {
68 if ((ULONG_PTR)pActCtx->lpResourceName >> 16)
69 {
70 len = MultiByteToWideChar(CP_ACP, 0, pActCtx->lpResourceName, -1, NULL, 0);
71 resname = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
72 if (!resname) goto done;
73 MultiByteToWideChar(CP_ACP, 0, pActCtx->lpResourceName, -1, resname, len);
74 actw.lpResourceName = resname;
75 }
76 else actw.lpResourceName = (LPCWSTR)pActCtx->lpResourceName;
77 }
78 if (actw.dwFlags & ACTCTX_FLAG_APPLICATION_NAME_VALID)
79 {
80 len = MultiByteToWideChar(CP_ACP, 0, pActCtx->lpApplicationName, -1, NULL, 0);
81 appname = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
82 if (!appname) goto done;
83 MultiByteToWideChar(CP_ACP, 0, pActCtx->lpApplicationName, -1, appname, len);
84 actw.lpApplicationName = appname;
85 }
86 if (actw.dwFlags & ACTCTX_FLAG_HMODULE_VALID)
87 actw.hModule = pActCtx->hModule;
88
89 ret = CreateActCtxW(&actw);
90
91done:
93 HeapFree(GetProcessHeap(), 0, assdir);
94 HeapFree(GetProcessHeap(), 0, resname);
95 HeapFree(GetProcessHeap(), 0, appname);
96 return ret;
97}
#define NULL
Definition: types.h:112
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:109
#define SetLastError(x)
Definition: compat.h:752
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define MultiByteToWideChar
Definition: compat.h:110
HANDLE WINAPI CreateActCtxW(PCACTCTXW pActCtx)
Definition: actctx.c:104
GLenum src
Definition: glext.h:6340
GLenum GLsizei len
Definition: glext.h:6722
#define TRACE(s)
Definition: solgame.cpp:4
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t ULONG_PTR
Definition: typedefs.h:65
int ret
__wchar_t WCHAR
Definition: xmlstorage.h:180
WCHAR * LPWSTR
Definition: xmlstorage.h:184
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

Referenced by init_funcs(), load_v6_module(), and prepare_and_run_test().

◆ CreateActCtxW()

HANDLE WINAPI CreateActCtxW ( PCACTCTXW  pActCtx)

Definition at line 104 of file actctx.c.

105{
107 HANDLE hActCtx;
108
109 TRACE("%p %08x\n", pActCtx, pActCtx ? pActCtx->dwFlags : 0);
110
111 if ((status = RtlCreateActivationContext(0, (PVOID)pActCtx, 0, NULL, NULL, &hActCtx)))
112 {
115 }
116 return hActCtx;
117}
LONG NTSTATUS
Definition: precomp.h:26
NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS)
NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE *, const void *)
Definition: ps.c:97

Referenced by _CreateActCtxFromFile(), _CreateV5ActCtx(), create_test_actctx(), CreateActCtxA(), GetServiceMainFunctions(), init_funcs(), init_pointers(), and wWinMain().

◆ DEBUG_CHANNEL()

DEBUG_CHANNEL ( actctx  )

◆ FindActCtxSectionGuid()

BOOL WINAPI FindActCtxSectionGuid ( DWORD  dwFlags,
const GUID lpExtGuid,
ULONG  ulId,
const GUID lpSearchGuid,
PACTCTX_SECTION_KEYED_DATA  pInfo 
)

Definition at line 183 of file actctx.c.

186{
188
189 if ((status = RtlFindActivationContextSectionGuid(dwFlags, lpExtGuid, ulId, lpSearchGuid, pInfo)))
190 {
192 return FALSE;
193 }
194
195 return TRUE;
196}
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
NTSYSAPI NTSTATUS NTAPI RtlFindActivationContextSectionGuid(ULONG flags, const GUID *extguid, ULONG section_kind, const GUID *guid, void *ptr)
Definition: actctx.c:5866
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176

Referenced by actctx_get_miscstatus(), actctx_get_typelib_module(), CoGetClassObject(), CoGetPSClsid(), init_funcs(), ProgIDFromCLSID(), query_typelib_path(), and SxsLookupClrGuid().

◆ FindActCtxSectionStringA()

BOOL WINAPI FindActCtxSectionStringA ( DWORD  dwFlags,
const GUID lpExtGuid,
ULONG  ulId,
LPCSTR  lpSearchStr,
PACTCTX_SECTION_KEYED_DATA  pInfo 
)

Definition at line 124 of file actctx.c.

127{
128 LPWSTR search_str;
129 DWORD len;
130 BOOL ret;
131
132 TRACE("%08x %s %u %s %p\n", dwFlags, debugstr_guid(lpExtGuid),
133 ulId, debugstr_a(lpSearchStr), pInfo);
134
135 if (!lpSearchStr || !pInfo)
136 {
138 return FALSE;
139 }
140
141 len = MultiByteToWideChar(CP_ACP, 0, lpSearchStr, -1, NULL, 0);
142 search_str = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
143 MultiByteToWideChar(CP_ACP, 0, lpSearchStr, -1, search_str, len);
144
145 ret = FindActCtxSectionStringW(dwFlags, lpExtGuid, ulId, search_str, pInfo);
146
147 HeapFree(GetProcessHeap(), 0, search_str);
148 return ret;
149}
BOOL WINAPI FindActCtxSectionStringW(DWORD dwFlags, const GUID *lpExtGuid, ULONG ulId, LPCWSTR lpSearchStr, PACTCTX_SECTION_KEYED_DATA pInfo)
Definition: actctx.c:156
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
#define debugstr_guid
Definition: kernel32.h:35
#define debugstr_a
Definition: kernel32.h:31

Referenced by init_funcs(), and load_v6_module().

◆ FindActCtxSectionStringW()

BOOL WINAPI FindActCtxSectionStringW ( DWORD  dwFlags,
const GUID lpExtGuid,
ULONG  ulId,
LPCWSTR  lpSearchStr,
PACTCTX_SECTION_KEYED_DATA  pInfo 
)

Definition at line 156 of file actctx.c.

159{
162
163 if (!pInfo)
164 {
166 return FALSE;
167 }
168
169 RtlInitUnicodeString(&us, lpSearchStr);
170 if ((status = RtlFindActivationContextSectionString(dwFlags, lpExtGuid, ulId, &us, pInfo)))
171 {
173 return FALSE;
174 }
175 return TRUE;
176}
NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG, const GUID *, ULONG, const UNICODE_STRING *, PVOID)
Definition: actctx.c:5815
static const BYTE us[]
Definition: encode.c:689
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)

Referenced by CLSIDFromProgID(), FindActCtxSectionStringA(), get_versioned_classname(), init_funcs(), START_TEST(), TestClassRedirection(), and TestLibDependency().