PfSnParsePrefetchParam
NTSTATUS __stdcall PfSnParsePrefetchParam(_UNICODE_STRING *CommandLine, UINT64 *PrefetchParamOut){
__int64 Length;
NTSTATUS v5;
wchar_t *Buffer;
WCHAR *String;
UINT16 *v8;
UINT16 *v9;
wchar_t *i;
unsigned int v12;
_UNICODE_STRING DestinationString;
wchar_t Str[15];
__int16 v15;
DestinationString = 0i64;
RtlInitUnicodeString(&DestinationString, L"/prefetch:");
Length = CommandLine->Length;
v5 = 0;
if( (_WORD)Length )
{
Buffer = CommandLine->Buffer;
if( ((unsigned __int8)Buffer & 1) != 0 )
ExRaiseDatatypeMisalignment();
if( (unsigned __int64)Buffer + Length > 0x7FFFFFFF0000i64 || (wchar_t *)((char *)Buffer + Length) < Buffer )
MEMORY[0x7FFFFFFF0000] = 0;
}
String = PfSnFindString(CommandLine, &DestinationString);
if( !String )
return -1073741275;
v8 = (WCHAR *)((char *)String + DestinationString.Length);
v9 = (wchar_t *)((char *)CommandLine->Buffer + CommandLine->Length);
for( i = Str; v8 < v9 && i < (wchar_t *)&v15 && *v8 != 32; ++i )
{
if( !iswdigit(*v8) )
return -1073741811;
*i = *v8++;
}
*i = 0;
v12 = wtol(Str);
if( v12 > 8 )
return -1073741811;
*(_DWORD *)PrefetchParamOut = v12;
return v5;
}Referenced by:
PfSnScanCommandLine