static RVOID scan_for_hidden_module ( rpcm_tag eventType, rSequence event ) { RU32 pid = (RU32)(-1); rEvent dummy = NULL; UNREFERENCED_PARAMETER( eventType ); rSequence_getRU32( event, RP_TAGS_PROCESS_ID, &pid ); if( NULL != ( dummy = rEvent_create( TRUE ) ) ) { if( (RU32)( -1 ) == pid ) { lookForHiddenModules( dummy, NULL ); } else { lookForHiddenModulesIn( dummy, pid ); } rEvent_free( dummy ); } }
static RPVOID lookForHiddenModules ( rEvent isTimeToStop, RPVOID ctx ) { processLibProcEntry* procs = NULL; processLibProcEntry* proc = NULL; UNREFERENCED_PARAMETER( ctx ); if( NULL != ( procs = processLib_getProcessEntries( TRUE ) ) ) { proc = procs; while( 0 != proc->pid && rpal_memory_isValid( isTimeToStop ) && !rEvent_wait( isTimeToStop, 0 ) ) { lookForHiddenModulesIn( isTimeToStop, proc->pid ); proc++; } rpal_memory_free( procs ); } return NULL; }
static RPVOID lookForHiddenModulesConstantly ( rEvent isTimeToStop, RPVOID ctx ) { rSequence originalRequest = (rSequence)ctx; processLibProcEntry* procs = NULL; processLibProcEntry* proc = NULL; LibOsPerformanceProfile perfProfile = { 0 }; perfProfile.enforceOnceIn = 4; perfProfile.sanityCeiling = MSEC_FROM_SEC( 20 ); perfProfile.lastTimeoutValue = 200; perfProfile.targetCpuPerformance = 0; perfProfile.globalTargetCpuPerformance = GLOBAL_CPU_USAGE_TARGET; perfProfile.timeoutIncrementPerSec = 50; while( rpal_memory_isValid( isTimeToStop ) && !rEvent_wait( isTimeToStop, 0 ) ) { if( NULL != ( procs = processLib_getProcessEntries( TRUE ) ) ) { proc = procs; while( 0 != proc->pid && rpal_memory_isValid( isTimeToStop ) && !rEvent_wait( isTimeToStop, _TIMEOUT_BETWEEN_CONSTANT_PROCESSS ) ) { if( hbs_whenCpuBelow( _CPU_WATERMARK, _MAX_CPU_WAIT, isTimeToStop ) ) { lookForHiddenModulesIn( isTimeToStop, proc->pid, originalRequest, &perfProfile ); } proc++; } rpal_memory_free( procs ); } } return NULL; }
static RVOID scan_for_hidden_module ( rpcm_tag eventType, rSequence event ) { RU32 pid = (RU32)(-1); rEvent dummy = NULL; LibOsPerformanceProfile perfProfile = { 0 }; UNREFERENCED_PARAMETER( eventType ); perfProfile.enforceOnceIn = 4; perfProfile.sanityCeiling = MSEC_FROM_SEC( 20 ); perfProfile.lastTimeoutValue = 100; perfProfile.targetCpuPerformance = 10; perfProfile.globalTargetCpuPerformance = GLOBAL_CPU_USAGE_TARGET_WHEN_TASKED; perfProfile.timeoutIncrementPerSec = 50; rSequence_getRU32( event, RP_TAGS_PROCESS_ID, &pid ); if( NULL != ( dummy = rEvent_create( TRUE ) ) ) { if( (RU32)( -1 ) == pid ) { lookForHiddenModules( dummy, event ); } else { lookForHiddenModulesIn( dummy, pid, event, &perfProfile ); } rEvent_free( dummy ); } }