mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-17 16:53:13 +00:00
Added ability to specify flags for CreateNativeProxy on Windows
This commit is contained in:
@@ -1494,7 +1494,19 @@ duk_ret_t ILibDuktape_GenericMarshal_CreateNativeProxy(duk_context *ctx)
|
|||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
if (libName != NULL)
|
if (libName != NULL)
|
||||||
{
|
{
|
||||||
module = (void*)LoadLibraryA((LPCSTR)libName);
|
DWORD flags = 0;
|
||||||
|
if (duk_is_object(ctx, 1) && (flags=(DWORD)Duktape_GetIntPropertyValue(ctx, 1, "flags", 0)) != 0)
|
||||||
|
{
|
||||||
|
module = (void*)LoadLibraryExA((LPCSTR)libName, NULL, flags);
|
||||||
|
if (module == NULL && GetLastError() == ERROR_INVALID_PARAMETER)
|
||||||
|
{
|
||||||
|
return(ILibDuktape_Error(ctx, "Unsupported Flag value"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
module = (void*)LoadLibraryA((LPCSTR)libName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -2154,6 +2166,12 @@ void ILibDuktape_GenericMarshal_Push(duk_context *ctx, void *chain)
|
|||||||
ILibDuktape_CreateInstanceMethod(ctx, "ObjectToPtr", ILibDuktape_GenericMarshal_ObjectToPtr, 1);
|
ILibDuktape_CreateInstanceMethod(ctx, "ObjectToPtr", ILibDuktape_GenericMarshal_ObjectToPtr, 1);
|
||||||
ILibDuktape_CreateInstanceMethod(ctx, "GetCurrentThread", ILibDuktape_GenericMarshal_GetCurrentThread, 0);
|
ILibDuktape_CreateInstanceMethod(ctx, "GetCurrentThread", ILibDuktape_GenericMarshal_GetCurrentThread, 0);
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
duk_push_object(ctx);
|
||||||
|
duk_push_uint(ctx, LOAD_LIBRARY_SEARCH_SYSTEM32); duk_put_prop_string(ctx, -2, "SYSTEM32");
|
||||||
|
ILibDuktape_CreateReadonlyProperty(ctx, "FLAGS");
|
||||||
|
#endif
|
||||||
|
|
||||||
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", 4, "CreateInteger", ILibDuktape_GenericMarshal_CreateVariableEx, 0);
|
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", 4, "CreateInteger", ILibDuktape_GenericMarshal_CreateVariableEx, 0);
|
||||||
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", ((int)sizeof(void*)), "CreatePointer", ILibDuktape_GenericMarshal_CreateVariableEx, DUK_VARARGS);
|
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", ((int)sizeof(void*)), "CreatePointer", ILibDuktape_GenericMarshal_CreateVariableEx, DUK_VARARGS);
|
||||||
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", 2, "CreateShort", ILibDuktape_GenericMarshal_CreateVariableEx, 0);
|
ILibDuktape_CreateInstanceMethodWithIntProperty(ctx, "_VarSize", 2, "CreateShort", ILibDuktape_GenericMarshal_CreateVariableEx, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user