1
0
mirror of https://github.com/Ylianst/MeshAgent synced 2025-12-10 05:13:38 +00:00

Updated to support 32 bit windows

This commit is contained in:
Bryan Roe
2021-11-02 18:18:49 -07:00
parent 8dcc1cc60b
commit 5e4d1b02e3
2 changed files with 14 additions and 15 deletions

View File

@@ -106,20 +106,20 @@ const QueryAsyncHandler =
switch (riid.Deref(0, 16).toBuffer().toString('hex'))
{
case '0000000000000000C000000000000046': // IID_IUnknown
j.pointerBuffer().copy(ppv.Deref(0, 8).toBuffer());
j.pointerBuffer().copy(ppv.Deref(0, GM.PointerSize).toBuffer());
ret.increment(0, true);
//++this.p.refcount;
console.info1('QueryInterface (IID_IUnknown)', this.refcount);
break;
case '0178857C8173CF11884D00AA004B2E24': // IID_IWmiObjectSink
j.pointerBuffer().copy(ppv.Deref(0, 8).toBuffer());
j.pointerBuffer().copy(ppv.Deref(0, GM.PointerSize).toBuffer());
ret.increment(0, true);
//++this.p.refcount;
console.info1('QueryInterface (IID_IWmiObjectSink)', this.refcount);
break;
default:
ret.increment(E_NOINTERFACE, true);
console.info1('returning E_NOINTERFACE');
console.info1(riid.Deref(0, 16).toBuffer().toString('hex'), 'returning E_NOINTERFACE');
break;
}
@@ -217,15 +217,14 @@ function enumerateProperties(j, fields)
{
nme = GM.CreatePointer();
j.funcs.GetNames(j.Deref(), 0, WBEM_FLAG_ALWAYS, 0, nme);
len = nme.Deref().Deref(24, 4).toBuffer().readUInt32LE();
len = nme.Deref().Deref(GM.PointerSize == 8 ? 24 : 16, 4).toBuffer().readUInt32LE();
nn = GM.CreatePointer();
OleAut32.SafeArrayAccessData(nme.Deref(), nn);
for (var i = 0; i < len - 1; ++i)
{
properties.push(nn.Deref().increment(i * 8).Deref().Wide2UTF8);
properties.push(nn.Deref().increment(i * GM.PointerSize).Deref().Wide2UTF8);
}
}
@@ -242,36 +241,36 @@ function enumerateProperties(j, fields)
values[properties[i]] = null;
break;
case 0x0002: // VT_I2
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readInt16LE();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readInt16LE();
break;
case 0x0003: // VT_I4
case 0x0016: // VT_INT
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readInt32LE();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readInt32LE();
break;
case 0x000B: // VT_BOOL
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readInt32LE() != 0;
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readInt32LE() != 0;
break;
case 0x000E: // VT_DECIMAL
break;
case 0x0010: // VT_I1
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readInt8();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readInt8();
break;
case 0x0011: // VT_UI1
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readUInt8();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readUInt8();
break;
case 0x0012: // VT_UI2
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readUInt16LE();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readUInt16LE();
break;
case 0x0013: // VT_UI4
case 0x0017: // VT_UINT
values[properties[i]] = tmp1.Deref(8, 8).toBuffer().readUInt32LE();
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).toBuffer().readUInt32LE();
break;
//case 0x0014: // VT_I8
// break;
//case 0x0015: // VT_UI8
// break;
case 0x0008: // VT_BSTR
values[properties[i]] = tmp1.Deref(8, 8).Deref().Wide2UTF8;
values[properties[i]] = tmp1.Deref(8, GM.PointerSize).Deref().Wide2UTF8;
break;
default:
console.info1('VARTYPE: ' + tmp1.toBuffer().readUInt16LE());