IopSetEnvironmentVariableSysEnv

NTSTATUS __stdcall IopSetEnvironmentVariableSysEnv(
        _FILE_OBJECT *FileObject,
        _DEVICE_OBJECT *DeviceObject,
        WCHAR *VariableName,
        _GUID *VendorGuid,
        VOID *Value,
        UINT64 ValueLength,
        UINT64 Attributes){
  __int64 v7; 
  size_t v11; 
  VOID **Pool_5; 
  VOID **v13; 
  NTSTATUS v14; 
  _GUID v15; 
  PVOID v16; 
  INT64 v18; 

  v7 = -1i64;
  do
    ++v7;
  while( VariableName[v7] );
  v11 = 2 * v7 + 2;
  Pool_5 = IopVerifierExAllocatePool_5((__int64)FileObject, v11 + (_DWORD)ValueLength + 32);
  v13 = Pool_5;
  if( !Pool_5 )
    return -1073741670;
  v15 = *VendorGuid;
  *(_DWORD *)Pool_5 = 0;
  *((_GUID *)Pool_5 + 1) = v15;
  *((_DWORD *)Pool_5 + 3) = Attributes;
  memmove(Pool_5 + 4, VariableName, v11);
  memmove((char *)v13 + v11 + 32, Value, ValueLength);
  LODWORD(v18) = v11 + ValueLength + 32;
  LOBYTE(v16) = 1;
  *((_DWORD *)v13 + 1) = v11 + 32;
  *((_DWORD *)v13 + 2) = ValueLength;
  v14 = IopIssueSystemEnvironmentRequest(0x520008u, v16, 0, DeviceObject, (ULONG)v13, v18);
  ExFreePoolWithTag(v13, 0);
  return v14;
}

Referenced by:

No references.