공급자 디버깅

공급자는 응용 프로그램 내에서 실행되는 공급자를 분리하지 않는 한 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 속성을 MyProvider가 공급자를 고유하게 식별하는 문자열이 될 수 있는 위치인 NetworkServiceHost:[MyProvider](으)로 설정합니다. 예를 들어, __Win32Provider.ClsId 값을 사용합니다. 공급자가 배송할 준비가 되면 __Win32Provider.HostingModelNetworkServiceHost와 같은 의도된 값으로 반환합니다.

공급자 로드를 디버깅하지 않는 경우 MSFT_Providers 클래스의 Load 메서드를 호출하여 공급자를 강제로 로드한 다음 DLL이 로드된 Wmiprvse.exe 프로세스에 연결하고 필요에 따라 디버그할 수 있습니다.

WMI 문제 해결

WMI 문제 해결 클래스