mirror of
https://github.com/Ylianst/MeshAgent
synced 2025-12-06 00:13:33 +00:00
Fixed cleanup to address deadlock that could happen on CoUninitialize() on Windows
This commit is contained in:
@@ -1971,6 +1971,7 @@ duk_ret_t ILibDuktape_GenericMarshal_GlobalCallback_close(duk_context *ctx)
|
||||
}
|
||||
|
||||
int ILibDuktape_GlobalGenericCallbackEx_n[22] = { 0 };
|
||||
int ILibDuktape_GlobalGenericCallbackEx_active[22] = { 0 };
|
||||
ILibDuktape_EventEmitter *ILibDuktape_GlobalGenericCallbackEx_nctx[22] = { 0 };
|
||||
extern void* gILibChain;
|
||||
|
||||
@@ -2010,9 +2011,11 @@ void ILibDuktape_GlobalGenericCallbackEx_Process_ChainEx(void * chain, void *use
|
||||
duk_push_array(ctx); // [array]
|
||||
for (i = 0; i < data->numArgs; ++i)
|
||||
{
|
||||
ILibDuktape_GenericMarshal_Variable_PUSH(ctx, (void*)data->args[i], sizeof(PTRSIZE));// [array][var]
|
||||
ILibDuktape_GenericMarshal_Variable_PUSH(ctx, (void*)data->args[i], sizeof(PTRSIZE)); // [array][var]
|
||||
duk_array_push(ctx, -2); // [array]
|
||||
}
|
||||
duk_push_heapptr(ctx, data->emitter->object); // [array][obj]
|
||||
duk_push_true(ctx); duk_put_prop_string(ctx, -2, "callbackDispatched"); duk_pop(ctx); // [array]
|
||||
if (ILibDuktape_GlobalGenericCallbackEx_Process_ChainEx_2(data->emitter) != 0)
|
||||
{
|
||||
// Exception was thrown
|
||||
@@ -2034,9 +2037,17 @@ void ILibDuktape_GlobalGenericCallbackEx_Process_ChainEx(void * chain, void *use
|
||||
duk_set_top(ctx, top);
|
||||
sem_post(&(data->contextWaiter));
|
||||
}
|
||||
PTRSIZE ILibDuktape_GlobalGenericCallbackEx_Process(PTRSIZE arg1, int count, ILibDuktape_EventEmitter *emitter, va_list args)
|
||||
PTRSIZE ILibDuktape_GlobalGenericCallbackEx_Process(PTRSIZE arg1, int index, va_list args)
|
||||
{
|
||||
int i;
|
||||
int count = ILibDuktape_GlobalGenericCallbackEx_n[index];
|
||||
ILibDuktape_EventEmitter *emitter = ILibDuktape_GlobalGenericCallbackEx_nctx[index];
|
||||
|
||||
if (ILibDuktape_GlobalGenericCallbackEx_active[index] == 0)
|
||||
{
|
||||
return(0);
|
||||
}
|
||||
|
||||
if (gILibChain != NULL && ILibIsRunningOnChainThread(gILibChain) == 0)
|
||||
{
|
||||
// Need to Context Switch to different thread, but before we do, we need to export all the parameters from va_list
|
||||
@@ -2066,6 +2077,10 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_Process(PTRSIZE arg1, int count, ILi
|
||||
ILibDuktape_GenericMarshal_Variable_PUSH(emitter->ctx, (void*)( i == 0 ? arg1 : va_arg(args, PTRSIZE)), sizeof(PTRSIZE)); // [array][var]
|
||||
duk_array_push(emitter->ctx, -2); // [array]
|
||||
}
|
||||
duk_push_heapptr(emitter->ctx, emitter->object); // [array][obj]
|
||||
duk_push_false(emitter->ctx); duk_put_prop_string(emitter->ctx, -2, "callbackDispatched"); // [array][obj]
|
||||
duk_pop(emitter->ctx); // [array]
|
||||
|
||||
if (ILibDuktape_GlobalGenericCallbackEx_Process_ChainEx_2(emitter) != 0)
|
||||
{
|
||||
// Exception was thrown
|
||||
@@ -2088,7 +2103,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_0(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[0], ILibDuktape_GlobalGenericCallbackEx_nctx[0], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 0, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2097,7 +2112,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_1(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[1], ILibDuktape_GlobalGenericCallbackEx_nctx[1], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 1, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2106,7 +2121,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_2(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[2], ILibDuktape_GlobalGenericCallbackEx_nctx[2], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 2, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2115,7 +2130,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_3(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[3], ILibDuktape_GlobalGenericCallbackEx_nctx[3], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 3, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2124,7 +2139,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_4(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[4], ILibDuktape_GlobalGenericCallbackEx_nctx[4], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 4, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2133,7 +2148,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_5(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[5], ILibDuktape_GlobalGenericCallbackEx_nctx[5], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 5, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2142,7 +2157,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_6(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[6], ILibDuktape_GlobalGenericCallbackEx_nctx[6], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 6, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2151,7 +2166,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_7(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[7], ILibDuktape_GlobalGenericCallbackEx_nctx[7], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 7, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2160,7 +2175,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_8(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[8], ILibDuktape_GlobalGenericCallbackEx_nctx[8], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 8, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2169,7 +2184,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_9(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[9], ILibDuktape_GlobalGenericCallbackEx_nctx[9], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 9, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2178,7 +2193,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_10(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[10], ILibDuktape_GlobalGenericCallbackEx_nctx[10], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 10, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2187,7 +2202,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_11(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[11], ILibDuktape_GlobalGenericCallbackEx_nctx[11], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 11, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2196,7 +2211,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_12(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[12], ILibDuktape_GlobalGenericCallbackEx_nctx[12], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 12, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2205,7 +2220,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_13(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[13], ILibDuktape_GlobalGenericCallbackEx_nctx[13], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 13, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2214,7 +2229,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_14(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[14], ILibDuktape_GlobalGenericCallbackEx_nctx[14], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 14, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2223,7 +2238,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_15(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[15], ILibDuktape_GlobalGenericCallbackEx_nctx[15], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 15, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2232,7 +2247,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_16(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[16], ILibDuktape_GlobalGenericCallbackEx_nctx[16], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 16, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2241,7 +2256,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_17(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[17], ILibDuktape_GlobalGenericCallbackEx_nctx[17], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 17, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2250,7 +2265,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_18(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[18], ILibDuktape_GlobalGenericCallbackEx_nctx[18], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 18, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2259,7 +2274,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_19(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[19], ILibDuktape_GlobalGenericCallbackEx_nctx[19], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 19, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2268,7 +2283,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_20(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[20], ILibDuktape_GlobalGenericCallbackEx_nctx[20], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 20, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2277,7 +2292,7 @@ PTRSIZE ILibDuktape_GlobalGenericCallbackEx_21(PTRSIZE arg1, ...)
|
||||
PTRSIZE ret;
|
||||
va_list args;
|
||||
va_start(args, arg1);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, ILibDuktape_GlobalGenericCallbackEx_n[21], ILibDuktape_GlobalGenericCallbackEx_nctx[21], args);
|
||||
ret = ILibDuktape_GlobalGenericCallbackEx_Process(arg1, 21, args);
|
||||
va_end(args);
|
||||
return(ret);
|
||||
}
|
||||
@@ -2291,7 +2306,13 @@ duk_ret_t ILibDuktape_GenericMarshal_PutGlobalGenericCallbackEx(duk_context *ctx
|
||||
return(ILibDuktape_Error(ctx, "Invalid Parameter"));
|
||||
}
|
||||
duk_get_prop_string(ctx, 0, ILibDutkape_GenericMarshal_INTERNAL); // [stash][array][obj]
|
||||
duk_array_push(ctx, -2); // [stash][array]
|
||||
int index = Duktape_GetIntPropertyValue(ctx, -1, "INDEX", -1);
|
||||
duk_array_unshift(ctx, -2); // [stash][array]
|
||||
|
||||
ILibDuktape_GlobalGenericCallbackEx_n[index] = 0;
|
||||
ILibDuktape_GlobalGenericCallbackEx_active[index] = 0;
|
||||
ILibDuktape_GlobalGenericCallbackEx_nctx[index] = NULL;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -2431,6 +2452,7 @@ duk_ret_t ILibDuktape_GenericMarshal_GetGlobalGenericCallbackEx(duk_context *ctx
|
||||
duk_dup(ctx, -2); // [stash][array][obj][var][obj]
|
||||
duk_put_prop_string(ctx, -2, ILibDutkape_GenericMarshal_INTERNAL); // [stash][array][obj][var]
|
||||
ILibDuktape_GlobalGenericCallbackEx_n[index] = numParms;
|
||||
ILibDuktape_GlobalGenericCallbackEx_active[index] = 1;
|
||||
ILibDuktape_GlobalGenericCallbackEx_nctx[index] = ILibDuktape_EventEmitter_GetEmitter(ctx, -1);
|
||||
return(1);
|
||||
}
|
||||
|
||||
@@ -2371,10 +2371,10 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx)
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-systray', Buffer.from('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', 'base64'));");
|
||||
|
||||
// win-com is a helper to add COM support. Refer to modules/win-com.js
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-com', Buffer.from('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', 'base64'), '2021-10-29T16:17:00.000-07:00');");
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-com', Buffer.from('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', 'base64'), '2021-10-30T19:42:07.000-07:00');");
|
||||
|
||||
// win-wmi is a helper to add wmi support using win-com. Refer to modules/win-wmi.js
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-wmi', Buffer.from('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', 'base64'), '2021-10-29T16:27:50.000-07:00');");
|
||||
duk_peval_string_noresult(ctx, "addCompressedModule('win-wmi', Buffer.from('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', 'base64'), '2021-10-30T19:40:45.000-07:00');");
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -40,9 +40,8 @@ function createInstance_finalizer()
|
||||
{
|
||||
var tmp = marshalFunctions(this, IUnknownMethods);
|
||||
tmp.Release(this);
|
||||
|
||||
ole32.CoUninitialize();
|
||||
console.log('final');
|
||||
console.info1('CoUninitialize()');
|
||||
}
|
||||
function createInstance(RFCLSID, RFIID, options)
|
||||
{
|
||||
@@ -131,6 +130,7 @@ function marshalInterface(arr)
|
||||
{
|
||||
args.push(arguments[i]);
|
||||
}
|
||||
obj.callbackDispatched = this.callbackDispatched;
|
||||
return (this.obj.func.apply(obj, args));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -25,6 +25,8 @@ const E_NOINTERFACE = 0x80004002;
|
||||
var OleAut32 = GM.CreateNativeProxy('OleAut32.dll');
|
||||
OleAut32.CreateMethod('SafeArrayAccessData');
|
||||
|
||||
var wmi_handlers = {};
|
||||
|
||||
const LocatorFunctions = ['QueryInterface', 'AddRef', 'Release', 'ConnectToServer'];
|
||||
const ServiceFunctions = [
|
||||
'QueryInterface',
|
||||
@@ -106,14 +108,14 @@ const QueryAsyncHandler =
|
||||
case '0000000000000000C000000000000046': // IID_IUnknown
|
||||
j.pointerBuffer().copy(ppv.Deref(0, 8).toBuffer());
|
||||
ret.increment(0, true);
|
||||
++this.p.refcount;
|
||||
console.info1('QueryInterface (IID_IUnknown)', this.p.refcount);
|
||||
//++this.p.refcount;
|
||||
console.info1('QueryInterface (IID_IUnknown)', this.refcount);
|
||||
break;
|
||||
case '0178857C8173CF11884D00AA004B2E24': // IID_IWmiObjectSink
|
||||
j.pointerBuffer().copy(ppv.Deref(0, 8).toBuffer());
|
||||
ret.increment(0, true);
|
||||
++this.p.refcount;
|
||||
console.info1('QueryInterface (IID_IWmiObjectSink)', this.p.refcount);
|
||||
//++this.p.refcount;
|
||||
console.info1('QueryInterface (IID_IWmiObjectSink)', this.refcount);
|
||||
break;
|
||||
default:
|
||||
ret.increment(E_NOINTERFACE, true);
|
||||
@@ -127,23 +129,35 @@ const QueryAsyncHandler =
|
||||
{
|
||||
parms: 1, name: 'AddRef', func: function ()
|
||||
{
|
||||
++this.p.refcount;
|
||||
console.info1('AddRef', this.p.refcount);
|
||||
++this.refcount;
|
||||
console.info1('AddRef', this.refcount);
|
||||
return (GM.CreateVariable(4));
|
||||
}
|
||||
},
|
||||
{
|
||||
parms: 1, name: 'Release', func: function ()
|
||||
{
|
||||
--this.p.refcount;
|
||||
console.info1('Release', this.p.refcount);
|
||||
if (this.p.refcount == 0)
|
||||
--this.refcount;
|
||||
console.info1('Release', this.refcount);
|
||||
if (this.refcount == 0)
|
||||
{
|
||||
console.info1('No More References');
|
||||
this.p.handlers.cleanup();
|
||||
this.p.services.funcs.Release(this.p.services.Deref());
|
||||
delete this.p.handlers;
|
||||
delete this.p;
|
||||
|
||||
this.cleanup();
|
||||
this.services.funcs.Release(this.services.Deref());
|
||||
|
||||
this.services = null;
|
||||
this.p = null;
|
||||
if (this.callbackDispatched)
|
||||
{
|
||||
setImmediate(function (j) { j.locator = null; }, this);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.locator = null;
|
||||
}
|
||||
|
||||
console.info1('No More References [END]');
|
||||
}
|
||||
return (GM.CreateVariable(4));
|
||||
}
|
||||
@@ -157,7 +171,7 @@ const QueryAsyncHandler =
|
||||
for (var i = 0; i < count.Val; ++i)
|
||||
{
|
||||
j = arr.Deref((i * GM.PointerSize) + 0, GM.PointerSize);
|
||||
this.p.results.push(enumerateProperties(j, this.p.fields));
|
||||
this.results.push(enumerateProperties(j, this.fields));
|
||||
}
|
||||
|
||||
var ret = GM.CreateVariable(4);
|
||||
@@ -175,7 +189,7 @@ const QueryAsyncHandler =
|
||||
|
||||
if (hResult.Val == 0)
|
||||
{
|
||||
this.p.resolve(this.p.results);
|
||||
this.p.resolve(this.results);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -277,22 +291,26 @@ function queryAsync(resourceString, queryString, fields)
|
||||
var query = GM.CreateVariable(queryString, { wide: true });
|
||||
var results = GM.CreatePointer();
|
||||
|
||||
p.refcount = 0;
|
||||
p.fields = fields;
|
||||
p.results = [];
|
||||
p.locator = require('win-com').createInstance(require('win-com').CLSIDFromString(CLSID_WbemAdministrativeLocator), require('win-com').IID_IUnknown);
|
||||
p.locator.funcs = require('win-com').marshalFunctions(p.locator, LocatorFunctions);
|
||||
p.services = require('_GenericMarshal').CreatePointer();
|
||||
if (p.locator.funcs.ConnectToServer(p.locator, resource, 0, 0, 0, 0, 0, 0, p.services).Val != 0) { throw ('Error calling ConnectToService'); }
|
||||
|
||||
p.services.funcs = require('win-com').marshalFunctions(p.services.Deref(), ServiceFunctions);
|
||||
p.handlers = require('win-com').marshalInterface(QueryAsyncHandler);
|
||||
p.handlers.p = p;
|
||||
var handlers = require('win-com').marshalInterface(QueryAsyncHandler);
|
||||
handlers.refcount = 1;
|
||||
handlers.results = [];
|
||||
handlers.fields = fields;
|
||||
handlers.locator = require('win-com').createInstance(require('win-com').CLSIDFromString(CLSID_WbemAdministrativeLocator), require('win-com').IID_IUnknown);
|
||||
handlers.locator.funcs = require('win-com').marshalFunctions(handlers.locator, LocatorFunctions);
|
||||
|
||||
handlers.services = require('_GenericMarshal').CreatePointer();
|
||||
if (handlers.locator.funcs.ConnectToServer(handlers.locator, resource, 0, 0, 0, 0, 0, 0, handlers.services).Val != 0) { throw ('Error calling ConnectToService'); }
|
||||
|
||||
handlers.services.funcs = require('win-com').marshalFunctions(handlers.services.Deref(), ServiceFunctions);
|
||||
handlers.p = p;
|
||||
|
||||
if (p.services.funcs.ExecQueryAsync(p.services.Deref(), language, query, WBEM_FLAG_BIDIRECTIONAL, 0, p.handlers).Val != 0)
|
||||
if (handlers.services.funcs.ExecQueryAsync(handlers.services.Deref(), language, query, WBEM_FLAG_BIDIRECTIONAL, 0, handlers).Val != 0)
|
||||
{
|
||||
throw ('Error in Query');
|
||||
}
|
||||
|
||||
wmi_handlers[handlers._hashCode()] = handlers;
|
||||
return (p);
|
||||
}
|
||||
function query(resourceString, queryString, fields)
|
||||
|
||||
Reference in New Issue
Block a user