예제 #1
0
        private void RegisterProcess(ClientContext clientContext)
        {
            // Starting offset in 'data'
            int offset = sizeof(UInt32);

            // Remote processes are not supported by the memory watcher,
            // they can use the logging system however
            if (clientContext.IsRemote)
            {
                // Silent return, it's not an error
                return;
            }

            // All registering needs is a process Id
            UInt64 processId = BitConverter.ToUInt64(clientContext.Data, offset);

            ProcessData newProcessData = ProcessReader.OpenProcess((int)processId);

            if (newProcessData == null)
            {
                clientContext.Disconnect();
                return;
            }

            clientContext.ProcessData = newProcessData;

            lock (attachedProcesses)
                attachedProcesses.Add(newProcessData);

            if (ProcessConnect != null)
            {
                ProcessConnect(newProcessData);
            }
        }