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.