공급자 디버깅하기
공급자는 애플리케이션 내에서 실행되는분리된 공급자를않는 한 Winmgmt.exe 프로세스로 Svchost.exe 통해서가 아니라 Wmiprvse.exe 프로세스에 로드됩니다. 자세한 내용은 공급자 호스팅 및 보안참조하세요.
중단점에서 중지할 때 Visual Studio 디버거는 전체 공급자 호스트 프로세스인 공유 호스트 Wmiprvse.exe를 통째로 정지시킵니다. 이렇게 하면 WMI 서버 탐색기 확장을 포함하여 해당 프로세스에서 호스트되는 다른 구성 요소의 작업을 방지할 수 있습니다. 공급자를 호출하는 클라이언트 애플리케이션도 차단됩니다. 공급자가 WMI 서비스 프로세스(Winmgmt.exe)에 로드되므로 Windows 2000 및 이전 버전에서 발생하는 문제는 더 나쁩니다.
다른 인스턴스에서 WMI 서버 탐색기를 실행하는 경우 Visual Studio IDE가 중지되지 않고 중단점을 해제할 수 있습니다. 개발 단계에서는 공급자를 별도의 호스팅 프로세스에서 실행하는 것이 좋습니다. 이렇게 하면, 중단점에서 중지할 때 공급자를 호스팅하는 프로세스만 일시적으로 중단됩니다. WMI의 다른 함수는 WMI 서버 탐색기 및 다른 WMI 기반 애플리케이션 또는 스크립트에서 계속 액세스할 수 있습니다. 또한 공급자가 충돌하는 경우 동일한 호스트 프로세스에 로드된 다른 공급자의 작업에는 영향을 주지 않습니다.
공급자가 자체 호스트 프로세스에서 로드되도록 하려면 공급자 등록을 수정하여 __Win32Provider.HostingModel 속성을 NetworkServiceHost:[MyProvider]
설정합니다. 여기서 MyProvider는 공급자를 고유하게 식별하는 문자열이 될 수 있습니다. 예를 들어 __Win32Provider.ClsId 값을 사용합니다. 공급자가 배송 준비가 되면 __Win32Provider.HostingModelNetworkServiceHost같은 의도한 값으로 반환합니다.
공급자 로드를 디버깅하지 않는 경우 MSFT_Providers 클래스Load 메서드를 호출하여 공급자를 강제로 로드한 다음 DLL이 로드된 Wmiprvse.exe 프로세스에 연결하고 필요에 따라 디버그할 수 있습니다.
관련 항목