VrpGetNextToken
VOID __stdcall VrpGetNextToken(_UNICODE_STRING *Path, UINT64 *Position, _UNICODE_STRING *PathToken){
UINT64 v5;
UINT64 v7;
UINT64 v8;
UINT64 Length;
UINT64 v10;
unsigned __int64 v11;
unsigned __int64 v12;
unsigned __int64 i;
__int64 v14;
unsigned __int64 v15;
PathToken->Length = 0;
v5 = *Position;
if( 2 * *Position < Path->Length )
{
v7 = *Position;
do
{
if( Path->Buffer[v7] != 92 )
break;
v5 = v7 + 1;
v15 = 2 * v7 + 2;
*Position = ++v7;
}
while( v15 < Path->Length );
}
PathToken->Buffer = &Path->Buffer[v5];
v8 = *Position;
Length = Path->Length;
if( 2 * *Position < Length )
{
v10 = *Position;
LOWORD(v11) = Path->Length;
do
{
LOWORD(Length) = v11;
if( Path->Buffer[v10] == 92 )
break;
PathToken->Length += 2;
v8 = *Position + 1;
*Position = v8;
v10 = v8;
v11 = Path->Length;
LOWORD(Length) = Path->Length;
}
while( 2 * v8 < v11 );
}
v12 = 2 * v8;
for( i = (unsigned __int16)Length; v12 < i; i = Path->Length )
{
v14 = 2 * v8;
if( Path->Buffer[v8] != 92 )
break;
*Position = ++v8;
v12 = v14 + 2;
}
}Referenced by:
VrpComparePath
VrpCountPathComponents
VrpCreateNamespaceNode
VrpPreLoadKey
VrpTranslatePath