IopResetEvent
VOID __stdcall IopResetEvent(_FILE_OBJECT *FileObject){
unsigned __int8 CurrentIrql;
UINT64 SpinCount;
if( (FileObject->Flags & 0x4000000) == 0 )
{
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset((volatile signed __int32 *)&FileObject->gap80[24], 7u) )
{
do
KeYieldProcessorEx(&SpinCount);
while( (*(_DWORD *)&FileObject->gap80[24] & 0x80u) != 0 );
}
*(_DWORD *)&FileObject->gap80[28] = 0;
_InterlockedAnd((volatile signed __int32 *)&FileObject->gap80[24], 0xFFFFFF7F);
__writecr8(CurrentIrql);
}
}Referenced by:
IopCloseFile
IopSetEaOrQuotaInformationFile
IopXxxControlFile
NtFlushBuffersFileEx
NtLockFile
NtNotifyChangeDirectoryFileEx
NtQueryEaFile
NtQueryInformationFile
NtQueryQuotaInformationFile
NtQueryVolumeInformationFile
NtReadFile
NtReadFileScatter
NtSetEaFile
NtSetInformationFile
NtUnlockFile
NtWriteFile
NtWriteFileGather