ExpGetFirmwareEnvironmentVariable
NTSTATUS __stdcall ExpGetFirmwareEnvironmentVariable(
WCHAR *VariableName,
_GUID *VendorGuid,
VOID *Value,
UINT64 *ValueLength,
UINT64 *Attributes,
INT8 ProbeMode){
UINT64 v8;
NTSTATUS result;
_ETHREAD *CurrentThread;
NTSTATUS EnvironmentVariable;
VOID *LockVariable;
VOID *Valuea;
LockVariable = 0i64;
Valuea = 0i64;
v8 = *(unsigned int *)ValueLength;
if( !(_DWORD)v8
|| (result = ExLockUserBuffer(Value, v8, ProbeMode, IoWriteAccess, &Valuea, &LockVariable), result >= 0) )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireFastMutexUnsafe((PFAST_MUTEX)((char *)&WheapDeferredInternalLogsEventLock + 2752));
EnvironmentVariable = IoGetEnvironmentVariableEx(VariableName, VendorGuid, Valuea, ValueLength, Attributes);
ExReleaseFastMutexUnsafe((PFAST_MUTEX)((char *)&WheapDeferredInternalLogsEventLock + 2752));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
if( LockVariable )
ExUnlockUserBuffer(LockVariable);
return EnvironmentVariable;
}
return result;
}Referenced by:
ExGetFirmwareEnvironmentVariable
NtQuerySystemEnvironmentValueEx