PfSnParsePrefetchParam
NTSTATUS __stdcall PfSnParsePrefetchParam(UNICODE_STRING *CommandLine, UINT64 *PrefetchParamOut){
WCHAR v2;
__int64 Length;
NTSTATUS v6;
wchar_t *Buffer;
PWCHAR String;
UINT16 *v9;
UINT16 *v10;
wchar_t *i;
unsigned int v13;
struct _UNICODE_STRING DestinationString;
wchar_t Str[15];
__int16 v16;
DestinationString = 0i64;
RtlInitUnicodeString(&DestinationString, L"/prefetch:", v2);
Length = CommandLine->Length;
v6 = 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;
v9 = (PWCHAR)((char *)String + DestinationString.Length);
v10 = (wchar_t *)((char *)CommandLine->Buffer + CommandLine->Length);
for( i = Str; v9 < v10 && i < (wchar_t *)&v16 && *v9 != 32; ++i )
{
if( !iswdigit(*v9) )
return -1073741811;
*i = *v9++;
}
*i = 0;
v13 = wtol(Str);
if( v13 > 8 )
return -1073741811;
*(_DWORD *)PrefetchParamOut = v13;
return v6;
}Referenced by:
PfSnScanCommandLine