ExpSetFirmwareEnvironmentVariable
NTSTATUS __stdcall ExpSetFirmwareEnvironmentVariable(
PWCHAR VariableName,
_GUID *VendorGuid,
PVOID Value,
UINT64 ValueLength,
UINT64 Attributes,
INT8 ProbeMode){
unsigned int v6;
NTSTATUS result;
_ETHREAD *CurrentThread;
NTSTATUS v11;
UINT64 v12;
VOID *Valuea;
VOID *LockVariable;
LockVariable = 0i64;
v6 = ValueLength;
Valuea = 0i64;
if( !(_DWORD)ValueLength
|| (result = ExLockUserBuffer(Value, (unsigned int)ValueLength, ProbeMode, IoReadAccess, &Valuea, &LockVariable),
result >= 0) )
{
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireFastMutexUnsafe((PFAST_MUTEX)((char *)&WheapDeferredInternalLogsEventLock + 2752));
LODWORD(v12) = Attributes;
v11 = IoSetEnvironmentVariableEx(VariableName, VendorGuid, Valuea, v6, v12);
ExReleaseFastMutexUnsafe((PFAST_MUTEX)((char *)&WheapDeferredInternalLogsEventLock + 2752));
KeLeaveCriticalRegionThread(KeGetCurrentThread());
if( LockVariable )
ExUnlockUserBuffer(LockVariable);
return v11;
}
return result;
}Referenced by:
ExSetFirmwareEnvironmentVariable
NtSetSystemEnvironmentValueEx