인스턴스 삭제는 WMI에서 수행할 가능성이 가장 큰 가장 일반적인 삭제 명령입니다. 클래스를 삭제하는 것과 마찬가지로 실제 명령은 매우 간단합니다. 그러나 WMI는 삭제하는 인스턴스의 유형에 따라 매우 다르게 수행됩니다. 인스턴스가 정적이면 WMI는 단순히 WMI 리포지토리에서 인스턴스를 삭제합니다. WMI 리포지토리에서 클래스 및 인스턴스를 제거하는 방법에 대한 자세한 내용은 pragma deleteclass 전처리기 명령을 참조하세요.
인스턴스가 동적이면 WMI는 다음 클래스를 담당하는 공급자에서 IWbemServices::D eleteInstanceAsync 호출해야 합니다.
- 인스턴스를 소유하는 클래스입니다.
- 인스턴스를 소유하는 클래스의 모든 부모 클래스입니다.
- 인스턴스를 소유하는 클래스의 모든 하위 클래스입니다.
삭제의 성공 횟수는 원래 인스턴스의 최상위 nonabstract 클래스에 따라 달라집니다. 최상위 nonabstract 클래스에 대한 공급자가 삭제를 완료하는 데 성공하면 작업이 성공합니다. 자세한 내용은 IWbemServices::DeleteInstance 설명 섹션을 참조하십시오.
WMI COM API에는 인스턴스를 삭제하고 개체를 삭제하는 다른 방법이 있습니다.
다음 절차에서는 C++를 사용하여 기본 클래스 또는 파생 클래스의 인스턴스를 삭제하는 방법을 설명합니다.
C++ 사용하여 기본 클래스 또는 파생 클래스의 인스턴스를 삭제하려면
IWbemServices::DeleteInstance 또는 IWbemServices::DeleteInstanceAsync메서드 중 하나를호출합니다.
이름에서 설명한 대로 DeleteInstanceAsync은 인스턴스를 비동기적으로 삭제하고, DeleteInstance은 인스턴스를 동기적으로 삭제합니다. DeleteInstanceAsync 사용하려면 IWbemObjectSink 개체도 구현해야 합니다.
메모
싱크에 대한 콜백은 클라이언트가 요구하는 것과 동일한 인증 수준에서 반환되지 않을 수 있으므로 비동기 통신 대신 반동기를 사용하는 것이 좋습니다. 자세한 내용은 메서드호출을 참조하세요.
WMI Scripting API는 동일한 메서드를 사용하여 클래스 개체 또는 인스턴스를 삭제합니다.
다음 절차에서는 VBScript를 사용하여 기본 클래스 또는 파생 클래스의 인스턴스를 삭제하는 방법을 설명합니다.
VBScript 사용하여 기본 클래스 또는 파생 클래스의 인스턴스를 삭제하려면
SWbemObject.Delete_ 또는 SWbemObject.DeleteAsync_ 메서드를 호출합니다.
이름에서 설명한 대로 Delete_ 인스턴스를 비동기적으로 삭제하는 동안 DeleteAsync_ 인스턴스를 동기적으로 삭제합니다. 인스턴스를 비동기적으로 삭제하는 방법에 대한 자세한 내용은 메서드호출을 참조하세요.
다음 예제에서는 VBScript를 사용하여 인스턴스를 삭제하는 방법을 설명합니다.
Dim service Set service = GetObject("winmgmts:{impersonationLevel=impersonate}") Set objwbemobject= service.get("") objwbemobject.Path_.Class = "MyNewClass" objwbemobject.put_ service.delete "MyNewClass"
메모
싱크에 대한 콜백은 클라이언트가 요구하는 것과 동일한 인증 수준에서 반환되지 않을 수 있으므로 비동기 통신 대신 반동기를 사용하는 것이 좋습니다. 자세한 내용은 메서드호출을 참조하세요.