WmipAllocateSingleInstanceWnode
INT64 __fastcall WmipAllocateSingleInstanceWnode(
UINT64 FixedHeaderSize,
_UNICODE_STRING *InstanceName,
UINT64 InstanceDataSize,
UINT64 *InstanceNameOffset,
UINT64 *InstanceDataOffset,
UINT64 *WnodeSize,
VOID **Wnode){
unsigned int v8;
unsigned __int16 *v9;
int v10;
unsigned int v11;
unsigned int v12;
int v13;
int v14;
VOID *PoolWithTag;
VOID *v16;
UINT64 *v17;
UINT64 Number;
LODWORD(Number) = FixedHeaderSize;
v8 = -1073741670;
if( WmipAlign(2ui64, &Number) )
{
v10 = Number;
v11 = *v9 + 2;
if( v11 <= ~(_DWORD)Number )
{
LODWORD(Number) = v11 + Number;
if( WmipAlign(8ui64, &Number) )
{
v13 = Number;
if( v12 <= ~(_DWORD)Number )
{
v14 = v12 + Number;
PoolWithTag = ExAllocatePoolWithTag(NonPagedPoolNx, v12 + (unsigned int)Number, 0x70696D57ui64);
v16 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
v17 = InstanceDataOffset;
v8 = 0;
*(_DWORD *)InstanceNameOffset = v10;
*(_DWORD *)v17 = v13;
*(_DWORD *)WnodeSize = v14;
*Wnode = v16;
}
}
}
}
}
return v8;
}Referenced by:
IoWMIExecuteMethod
IoWMISetSingleInstance
IoWMISetSingleItem