IoWMISetSingleItem

NTSTATUS __stdcall IoWMISetSingleItem(
        VOID *DataBlockObject,
        _UNICODE_STRING *InstanceName,
        UINT64 DataItemId,
        UINT64 Version,
        UINT64 ValueBufferSize,
        VOID *ValueBuffer){
  int v6; 
  int v7; 
  int v10; 
  _QWORD *Wnode; 
  __int64 v12; 
  int v13; 
  __int64 v14; 
  UINT64 OutBufferSize; 
  UINT64 InstanceNameOffset; 
  UINT64 ValidSize; 
  PVOID P; 

  P = 0i64;
  v6 = Version;
  InstanceNameOffset = 0i64;
  v7 = DataItemId;
  LODWORD(ValidSize) = 0;
  v10 = WmipAllocateSingleInstanceWnode(
          0x44ui64,
          InstanceName,
          (unsigned int)ValueBufferSize,
          (UINT64 *)((char *)&InstanceNameOffset + 4),
          &ValidSize,
          &InstanceNameOffset,
          &P);
  if( v10 >= 0 )
  {
    Wnode = P;
    v12 = HIDWORD(InstanceNameOffset);
    v13 = InstanceNameOffset;
    *((_DWORD *)P + 11) = 4;
    Wnode[2] = 0i64;
    *(_DWORD *)Wnode = v13;
    *((_DWORD *)Wnode + 3) = 0;
    *((_DWORD *)Wnode + 2) = v6;
    *((_DWORD *)Wnode + 14) = v7;
    *((_DWORD *)Wnode + 12) = v12;
    *(_WORD *)((char *)Wnode + v12) = InstanceName->Length;
    memmove((char *)Wnode + v12 + 2, InstanceName->Buffer, InstanceName->Length);
    v14 = (unsigned int)ValidSize;
    *((_DWORD *)Wnode + 16) = ValueBufferSize;
    *((_DWORD *)Wnode + 15) = v14;
    memmove((char *)Wnode + v14, ValueBuffer, ValueBufferSize);
    LODWORD(ValidSize) = *(_DWORD *)Wnode;
    LODWORD(OutBufferSize) = v13;
    v10 = WmipQuerySetExecuteSI(DataBlockObject, 0i64, 0, 3u, Wnode, OutBufferSize, &ValidSize);
    ExFreePoolWithTag(Wnode, 0);
  }
  return v10;
}

Referenced by:

No references.