2014-05-20 9 views
1

문제는 실제로 공식화하는 것이 매우 간단합니다. Windows의 커널 모드 드라이버에서 전체 시스템의 현재 CPU 및 메모리 소비를 알아야합니다. 물론, 나는 related question을보고이 코드를 시도했다. 결과가 좋지 않습니다. 드라이버 개발을위한 Visual Studio 2013 환경에서 언급 한 샘플의 헤더를 알 수 없습니다. 예 :Windows 드라이버 (일명 커널 공간)에서 CPU 및 메모리 소비를 확인하는 방법

#include "windows.h" 

MEMORYSTATUSEX memInfo; 
memInfo.dwLength = sizeof(MEMORYSTATUSEX); 
GlobalMemoryStatusEx(&memInfo); 
DWORDLONG totalVirtualMem = memInfo.ullTotalPageFile; 

위의 코드는 컴파일되지 않습니다. MSDN에서 유사한 기능을 검색하는 거의 모든 "커널 모드 드라이버 참조"를 신중하게 검사했지만 성공하지 못했습니다.

Windows에서 커널 모드 드라이버에서 동일한 정보를 얻는 방법을 아는 사람이 있습니까?

아니면 불가능합니다. (사실 인 경우 이것은 매우 이상합니다.)

+1

커널 모드에서는 Win32 API를 사용할 수 없습니다. 커널 API 함수를 사용해야합니다. WDK 문서를 확인하십시오. – Gonmator

+2

* 문서화 된 * WDK 기능은 드라이버가해야 할 일에 중점을 둡니다. 운영체제 내에서 운영체제를 만들지는 않습니다. NtQueryInformation()은 아마도 문서화되지 않았으며 다른 Windows 버전간에 다를 수 있습니다. –

+0

마지막으로 사용자 공간에 서비스 프로세스를 구현하는 것이 가장 쉬운 솔루션 인 것으로 나타났습니다 : CPU 및 메모리 소비에 대한 드라이버 데이터를 주기적으로 제공합니다. – grekhss

답변

1

이러한 API는 드라이버가 사용할 수 없으므로 시도가 작성되지 않은 것은 놀라운 일이 아닙니다.

커널 모드 드라이버의 메모리 관리는 사용자 모드 응용 프로그램보다 훨씬 복잡합니다. pool tracking을 조사하여 원하는 정보를 제공하는 방법이 있는지 확인해야합니다.