PspStorageEmptyArray
NTSTATUS __fastcall PspStorageEmptyArray(VOID *Lock, UINT64 a2){
NTSTATUS v2;
__int64 v4;
_ADAPTER_OBJECT *v5;
v2 = 0;
if( (_DWORD)a2 )
{
v4 = (unsigned int)a2;
do
{
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)Lock, 0i64);
v5 = (_ADAPTER_OBJECT *)(*((_QWORD *)Lock + 1) & 0xFFFFFFFFFFFFFFFEui64);
*((_QWORD *)Lock + 1) = 1i64;
if( (_InterlockedExchangeAdd64((volatile signed __int64 *)Lock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock((_EX_PUSH_LOCK *)Lock);
KeAbPostRelease(Lock);
if( v5 )
{
HalPutDmaAdapter(v5);
++v2;
}
Lock = (char *)Lock + 16;
--v4;
}
while( v4 );
}
return v2;
}Referenced by:
PspJobDeleteStorageArrays