PspStorageEmptyArray
INT64 __fastcall PspStorageEmptyArray(volatile INT64 *Lock, UINT64 a2){
unsigned int v2;
__int64 v4;
struct _DMA_ADAPTER *v5;
v2 = 0;
if( (_DWORD)a2 )
{
v4 = (unsigned int)a2;
do
{
ExAcquirePushLockExclusiveEx((UINT64)Lock, 0i64);
v5 = (struct _DMA_ADAPTER *)(Lock[1] & 0xFFFFFFFFFFFFFFFEui64);
*((_QWORD *)Lock + 1) = 1i64;
if( (_InterlockedExchangeAdd64(Lock, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(Lock);
KeAbPostRelease((PVOID)Lock);
if( v5 )
{
HalPutDmaAdapter(v5);
++v2;
}
Lock += 2;
--v4;
}
while( v4 );
}
return v2;
}Referenced by:
PspJobDeleteStorageArrays