SmProcessRegistrationRequest
NTSTATUS __stdcall SmProcessRegistrationRequest(
VOID *UserData,
UINT64 UserDataLength,
UINT64 *ReturnLength,
INT8 RequestorMode){
__int64 v6;
NTSTATUS result;
_SM_REGISTRATION_REQUEST RegRequest[4];
*(_OWORD *)RegRequest = 0i64;
if( (_DWORD)UserDataLength != 16 )
return -1073741306;
if( RequestorMode )
{
if( ((unsigned __int8)UserData & 7) != 0 )
ExRaiseDatatypeMisalignment();
v6 = 0x7FFFFFFF0000i64;
if( (unsigned __int64)UserData < 0x7FFFFFFF0000i64 )
v6 = (__int64)UserData;
*(_BYTE *)v6 = *(_BYTE *)v6;
*(_BYTE *)(v6 + 15) = *(_BYTE *)(v6 + 15);
}
*(_OWORD *)RegRequest = *(_OWORD *)UserData;
if( LOBYTE(RegRequest[0]) != 2 || (RegRequest[0] & 0xFFFFFF00) != 0 )
return -1073741811;
result = SmGetRegistrationInfo(RequestorMode, RegRequest);
if( result >= 0 )
{
*(_OWORD *)UserData = *(_OWORD *)RegRequest;
*(_DWORD *)ReturnLength = 16;
}
return result;
}Referenced by:
SmQueryStoreInformation