public SsLogger(int bufferedBlockCount, bool includeAll) { // Allocate a buffer. _buffer = new VirtualMemoryAlloc(_highBlockSize * bufferedBlockCount); // Create the read and write semaphores. // Read semaphore: no blocks initially, so 0 initial count. _readSemaphore = SemaphoreHandle.Create(SemaphoreAccess.All, 0, bufferedBlockCount); // Write semaphore: all buffer blocks available so max. initial count. _writeSemaphore = SemaphoreHandle.Create(SemaphoreAccess.All, bufferedBlockCount, bufferedBlockCount); // Create the client entry. _clientEntryHandle = KProcessHacker.Instance.SsCreateClientEntry( ProcessHandle.Current, _readSemaphore, _writeSemaphore, _buffer, _buffer.Size ); // Create the ruleset entry. _ruleSetEntryHandle = KProcessHacker.Instance.SsCreateRuleSetEntry( _clientEntryHandle, includeAll ? KphSsFilterType.Include : KphSsFilterType.Exclude, KphSsRuleSetAction.Log ); }
public SsLogger(int bufferedBlockCount, bool includeAll) { _buffer = new VirtualMemoryAlloc(_highBlockSize * bufferedBlockCount); _readSemaphore = SemaphoreHandle.Create(SemaphoreAccess.All, 0, bufferedBlockCount); _writeSemaphore = SemaphoreHandle.Create(SemaphoreAccess.All, bufferedBlockCount, bufferedBlockCount); _clientEntryHandle = KProcessHacker.Instance.SsCreateClientEntry( ProcessHandle.Current, _readSemaphore, _writeSemaphore, _buffer, _buffer.Size ); _ruleSetEntryHandle = KProcessHacker.Instance.SsCreateRuleSetEntry( _clientEntryHandle, includeAll ? KphSsFilterType.Include : KphSsFilterType.Exclude, KphSsRuleSetAction.Log ); }