diff --git a/reactos/lib/kernel32/kernel32.xml b/reactos/lib/kernel32/kernel32.xml index 46186af2a3c..4852f0375ff 100644 --- a/reactos/lib/kernel32/kernel32.xml +++ b/reactos/lib/kernel32/kernel32.xml @@ -52,6 +52,7 @@ virtual.c + actctx.c atom.c chartype.c comm.c diff --git a/reactos/lib/kernel32/misc/ActCtx.c b/reactos/lib/kernel32/misc/ActCtx.c new file mode 100644 index 00000000000..edd2855c00b --- /dev/null +++ b/reactos/lib/kernel32/misc/ActCtx.c @@ -0,0 +1,96 @@ +#include + +#define NDEBUG +#include "../include/debug.h" + +/* + * @implemented + */ +BOOL +STDCALL +FindActCtxSectionStringA( + DWORD dwFlags, + const GUID *lpExtensionGuid, + ULONG ulSectionId, + LPCSTR lpStringToFind, + PACTCTX_SECTION_KEYED_DATA ReturnedData + ) +{ + BOOL bRetVal; + LPWSTR lpStringToFindW; + + /* Convert lpStringToFind */ + if (lpStringToFind) + { + BasepAnsiStringToHeapUnicodeString(lpStringToFind, + (LPWSTR*) &lpStringToFindW); + } + + /* Call the Unicode function */ + bRetVal = FindActCtxSectionStringA(dwFlags, + lpExtensionGuid, + ulSectionId, + lpStringToFind, + ReturnedData); + + /* Clean up */ + RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) lpStringToFindW); + + return bRetVal; +} + + +/* + * @implemented + */ +HANDLE +STDCALL +CreateActCtxA( + PCACTCTXA pActCtx + ) +{ + ACTCTXW pActCtxW; + HANDLE hRetVal; + + ZeroMemory(&pActCtxW, sizeof(pActCtxW)); + pActCtxW.cbSize = sizeof(pActCtxW); + pActCtxW.dwFlags = pActCtx->dwFlags; + pActCtxW.wProcessorArchitecture = pActCtx->wProcessorArchitecture; + pActCtxW.dwFlags = pActCtx->wProcessorArchitecture; + + pActCtxW.hModule = pActCtx->hModule; + + /* Convert ActCtx Strings */ + if (pActCtx->lpAssemblyDirectory) + { + BasepAnsiStringToHeapUnicodeString(pActCtx->lpSource, + (LPWSTR*) &pActCtxW.lpSource); + } + + if (pActCtx->lpAssemblyDirectory) + { + BasepAnsiStringToHeapUnicodeString(pActCtx->lpAssemblyDirectory, + (LPWSTR*) &pActCtxW.lpAssemblyDirectory); + } + if (pActCtx->lpResourceName) + { + BasepAnsiStringToHeapUnicodeString(pActCtx->lpResourceName, + (LPWSTR*) &pActCtxW.lpResourceName); + } + if (pActCtx->lpApplicationName) + { + BasepAnsiStringToHeapUnicodeString(pActCtx->lpApplicationName, + (LPWSTR*) &pActCtxW.lpApplicationName); + } + + /* Call the Unicode function */ + hRetVal = CreateActCtxW(&pActCtxW); + + /* Clean up */ + RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpSource); + RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpAssemblyDirectory); + RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpResourceName); + RtlFreeHeap(GetProcessHeap(), 0, (LPWSTR*) pActCtxW.lpApplicationName); + + return hRetVal; +} diff --git a/reactos/lib/kernel32/misc/stubs.c b/reactos/lib/kernel32/misc/stubs.c index 19d1b92244d..b1f7d55c304 100644 --- a/reactos/lib/kernel32/misc/stubs.c +++ b/reactos/lib/kernel32/misc/stubs.c @@ -453,20 +453,6 @@ CancelDeviceWakeupRequest( return 0; } - -/* - * @unimplemented - */ -HANDLE -STDCALL -CreateActCtxA( - PCACTCTXA pActCtx - ) -{ - STUB; - return 0; -} - /* * @unimplemented */ @@ -477,7 +463,7 @@ CreateActCtxW( ) { STUB; - return 0; + return INVALID_HANDLE_VALUE; } /* @@ -1050,7 +1036,7 @@ FindActCtxSectionStringW( ) { STUB; - return 0; + return FALSE; } /* @@ -1267,23 +1253,6 @@ DnsHostnameToComputerNameA ( return 0; } -/* - * @unimplemented - */ -BOOL -STDCALL -FindActCtxSectionStringA( - DWORD dwFlags, - const GUID *lpExtensionGuid, - ULONG ulSectionId, - LPCSTR lpStringToFind, - PACTCTX_SECTION_KEYED_DATA ReturnedData - ) -{ - STUB; - return 0; -} - /* * @unimplemented */