IoSetEnvironmentVariableEx
NTSTATUS __stdcall IoSetEnvironmentVariableEx(
WCHAR *VariableName,
_GUID *VendorGuid,
VOID *Value,
UINT64 ValueLength,
UINT64 Attributes){
int v8;
int v9;
_ADAPTER_OBJECT *v10;
VOID *v12;
PFILE_OBJECT FileObject;
PDEVICE_OBJECT DeviceObject;
VOID **FunctionTable[2];
_EVENT_DATA_DESCRIPTOR v16;
char v17[16];
_GUID *v18;
int v19;
int v20;
PFILE_OBJECT *p_FileObject;
int v22;
int v23;
PDEVICE_OBJECT *p_DeviceObject;
int v25;
int v26;
VOID ***v27;
int v28;
int v29;
DeviceObject = 0i64;
FileObject = 0i64;
FunctionTable[0] = 0i64;
v8 = ValueLength;
v9 = IopOpenSystemVariableDevice(&FileObject, &DeviceObject, FunctionTable);
if( v9 >= 0 )
{
v12 = Value;
v10 = (_ADAPTER_OBJECT *)FileObject;
v9 = (*((__int64(__fastcall **)(PFILE_OBJECT, PDEVICE_OBJECT, WCHAR *, _GUID *, VOID *, int, _DWORD))FunctionTable[0]
+ 1))(
FileObject,
DeviceObject,
VariableName,
VendorGuid,
v12,
v8,
Attributes);
if( v10 )
HalPutDmaAdapter(v10);
}
if( (unsigned int)dword_140C044D0 > 5 && tlgKeywordOn((__int64)&dword_140C044D0, 0x200000000000i64) )
{
tlgCreate1Sz_wchar_t((__int64)v17, VariableName);
v20 = 0;
v23 = 0;
v26 = 0;
v29 = 0;
p_FileObject = &FileObject;
v22 = 4;
p_DeviceObject = &DeviceObject;
v27 = FunctionTable;
v25 = 4;
v28 = 4;
v18 = VendorGuid;
v19 = 16;
LODWORD(FileObject) = v8;
LODWORD(DeviceObject) = Attributes;
LODWORD(FunctionTable[0]) = v9;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C044D0,
(unsigned __int8 *)byte_140024033,
0i64,
0i64,
7u,
&v16);
}
return v9;
}Referenced by:
ExpSetBootEntry
ExpSetDriverEntry
ExpSetFirmwareEnvironmentVariable
IopInitializeInMemoryDumpData
IopInitializeOfflineCrashDump
NtDeleteBootEntry
NtDeleteDriverEntry
NtSetBootEntryOrder
NtSetBootOptions
NtSetDriverEntryOrder