System.Diagnostic получает свои данные, запрашивая WMI или другими способами? - PullRequest
1 голос
/ 20 декабря 2011

System.Diagnostic получает свои данные, запрашивая WMI или другими способами?Является ли WMI запросом самого основного способа, которым все эти операции используются для получения системной информации, такой как запущенные процессы, или есть даже более прямые методы?

Ответы [ 2 ]

4 голосов
/ 20 декабря 2011

Нет, он не использует WMI.Он использует прямые нативные вызовы API через внутренние классы в пространстве имен System.Win32 в mscorlib.dll и System.dll.Большинство классов, таких как PerformanceCounter и EventLog, просто получают доступ к реестру, который использует собственные вызовы advapi32.dll.Другие функции, такие как получение списка процессов, используют вызовы в winnt.dll или kernel32.dll в зависимости от версии Windows.Вы можете найти дополнительную информацию об используемых вызовах Win32 здесь и более подробную информацию о счетчиках производительности здесь .

Вы можете проверить это с помощью dotPeek или Reflector.NET и изучение System.Diagnostics в mscorlib.dll и System.dll.

1 голос
/ 20 декабря 2011

Если вы хотите узнать это сами, вы можете перейти к исходному коду .NET Framework.

Шаги, описывающие, как это сделать с помощью Visual Studio: http://blogs.microsoft.co.il/blogs/arik/archive/2010/07/12/step-into-net-framework-4-0-source-code.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...