IoGetEnvironmentVariableEx
NTSTATUS __stdcall IoGetEnvironmentVariableEx(
WCHAR *VariableName,
_GUID *VendorGuid,
VOID *Value,
UINT64 *ValueLength,
UINT64 *Attributes){
int v9;
_ADAPTER_OBJECT *v10;
int v11;
VOID *v13;
int v14;
PFILE_OBJECT FileObject;
PDEVICE_OBJECT DeviceObject;
VOID **FunctionTable;
_EVENT_DATA_DESCRIPTOR v18;
char v19[16];
_GUID *v20;
int v21;
int v22;
PFILE_OBJECT *p_FileObject;
int v24;
int v25;
PDEVICE_OBJECT *p_DeviceObject;
int v27;
int v28;
VOID ***p_FunctionTable;
int v30;
int v31;
DeviceObject = 0i64;
FileObject = 0i64;
FunctionTable = 0i64;
v14 = -559038737;
v9 = IopOpenSystemVariableDevice(&FileObject, &DeviceObject, &FunctionTable);
if( v9 >= 0 )
{
v13 = Value;
v10 = (_ADAPTER_OBJECT *)FileObject;
v9 = ((__int64(__fastcall *)(PFILE_OBJECT, PDEVICE_OBJECT, WCHAR *, _GUID *, VOID *, UINT64 *, int *))*FunctionTable)(
FileObject,
DeviceObject,
VariableName,
VendorGuid,
v13,
ValueLength,
&v14);
if( Attributes )
*(_DWORD *)Attributes = v14;
if( v10 )
HalPutDmaAdapter(v10);
}
if( (unsigned int)dword_140C044D0 > 5 && tlgKeywordOn((__int64)&dword_140C044D0, 0x200000000000i64) )
{
tlgCreate1Sz_wchar_t((__int64)v19, VariableName);
v11 = *(_DWORD *)ValueLength;
v22 = 0;
v25 = 0;
v28 = 0;
v31 = 0;
LODWORD(FileObject) = v11;
p_FileObject = &FileObject;
LODWORD(DeviceObject) = v14;
p_DeviceObject = &DeviceObject;
p_FunctionTable = &FunctionTable;
v24 = 4;
v27 = 4;
v30 = 4;
v20 = VendorGuid;
v21 = 16;
LODWORD(FunctionTable) = v9;
tlgWriteTransfer_EtwWriteTransfer(
(__int64)&dword_140C044D0,
(unsigned __int8 *)&dword_140023F7C,
0i64,
0i64,
7u,
&v18);
}
return v9;
}Referenced by:
ExpGetFirmwareEnvironmentVariable
ExpSetBootEntry
ExpSetDriverEntry
IopCachePreviousBootData
IopInitializeOfflineCrashDump
NtDeleteBootEntry
NtDeleteDriverEntry
NtGetEnvironmentVariableEx
NtQueryBootEntryOrder
NtQueryBootOptions