PfpPrefetchEntireDirectory
INT64 PfpPrefetchEntireDirectory(INT64 a1, INT64 a2, UINT64 a3, INT64 a4, INT64 a5, ...){
__int64 v8;
__int64 v9;
int v10;
__int64 v11;
NTSTATUS v12;
_QWORD *v13;
UINT64 *ReturnedLength;
size_t Size;
__int64 Information;
__int64 v18[2];
int v19[2];
PVOID Object[2];
__int64 v21;
va_list va;
va_start(va, a5);
Information = 0i64;
v8 = *(_QWORD *)(a5 + 8);
v9 = *(_QWORD *)(a5 + 16);
*(_QWORD *)v19 = 0i64;
v21 = 0x200000000i64;
*(_OWORD *)v18 = 0i64;
*(_OWORD *)Object = 0i64;
v10 = PfpOpenHandleCreate((__int64)v19, a1, v9, v8, 1048577, 0x4021u, 0, a2);
v11 = v21;
v12 = v10;
if( v10 >= 0 )
{
if( a4 )
{
v13 = Object[0];
if( (int)IopQueryXxxInformation((FILE_OBJECT *)Object[0], 6ui64, 8ui64, 0, &Information, (UINT64 *)va, 1u) >= 0 )
{
*(_QWORD *)(a4 + 12) = Information;
*(_QWORD *)a4 = v13[3];
*(_DWORD *)(a4 + 8) = v11;
}
}
LODWORD(Size) = 8 * *(_DWORD *)(a3 + 4) + 16;
LODWORD(ReturnedLength) = 590112;
v12 = IopXxxControlFile(
*(void **)v19,
0i64,
0i64,
0i64,
(__int64)v18,
(UINT64)ReturnedLength,
(void *)a3,
Size,
0i64,
0,
0);
if( v12 >= 0 )
v12 = 0;
}
if( (v11 & 0x400000000i64) != 0 )
PfpOpenHandleClose(v19, a1);
return(unsigned int)v12;
}Referenced by:
PfSnPrefetchMetadata