WmipAllocateSingleInstanceWnode
NTSTATUS __stdcall WmipAllocateSingleInstanceWnode(
UINT64 FixedHeaderSize,
_UNICODE_STRING *InstanceName,
UINT64 InstanceDataSize,
UINT64 *InstanceNameOffset,
UINT64 *InstanceDataOffset,
UINT64 *WnodeSize,
VOID **Wnode){
NTSTATUS v8;
unsigned __int16 *v9;
int v10;
unsigned int v11;
unsigned int v12;
int v13;
int v14;
size_t v15;
VOID **PoolWithTag;
VOID **v17;
UINT64 *v18;
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;
v15 = v12 + Number;
PoolWithTag = ExAllocatePoolWithTag(0x200ui64, v12 + (unsigned int)Number, 1885957463i64);
v17 = PoolWithTag;
if( PoolWithTag )
{
memset(PoolWithTag, 0i64, v15);
v18 = InstanceDataOffset;
v8 = 0;
*(_DWORD *)InstanceNameOffset = v10;
*(_DWORD *)v18 = v13;
*(_DWORD *)WnodeSize = v14;
*Wnode = v17;
}
}
}
}
}
return v8;
}Referenced by:
IoWMIExecuteMethod
IoWMISetSingleInstance
IoWMISetSingleItem