Suppression d’une instance
La suppression d’une instance est la commande de suppression la plus courante que vous êtes susceptible d’effectuer dans WMI. À l’instar de la suppression d’une classe, la commande réelle est assez simple. Toutefois, WMI fonctionne de façon très différente selon le type d’instance que vous supprimez. Si l’instance est statique, WMI supprime simplement l’instance de l’espace de stockage WMI. Pour plus d’informations sur la suppression de classes et d’instances de l’espace de stockage WMI, consultez la commande de préprocesseur pragma deleteclass .
Si l’instance est dynamique, WMI doit appeler IWbemServices ::D eleteinstanceasync sur les fournisseurs qui sont responsables des classes suivantes :
- Classe qui possède l’instance de.
- Chaque classe parente de la classe qui possède l’instance de.
- Chaque sous-classe de la classe qui possède l’instance.
La réussite de la suppression dépend de la classe non abstraite la plus grande pour l’instance d’origine. Si le fournisseur de toute classe non abstraite de niveau supérieur réussit à terminer la suppression, l’opération réussit. Pour plus d’informations, consultez la section Notes de IWbemServices ::D eleteinstance.
L' API com pour WMI a différentes méthodes pour supprimer une instance et supprimer un objet.
La procédure suivante décrit comment utiliser C++ pour supprimer une instance d’une classe de base ou d’une classe dérivée.
Pour supprimer une instance d’une classe de base ou d’une classe dérivée à l’aide de C++
Appelez les méthodes IWbemServices ::D eleteinstance ou IWbemServices ::D eleteinstanceasync .
Comme son nom l’indique, DeleteInstanceAsync supprime une instance de façon asynchrone tandis que DeleteInstance supprime une instance de façon synchrone. Pour utiliser DeleteInstanceAsync, vous devez également implémenter un objet IWbemObjectSink .
Notes
Étant donné que le rappel au récepteur peut ne pas être retourné au même niveau d’authentification que celui requis par le client, il est recommandé d’utiliser le mode semi-synchrone au lieu de la communication asynchrone. Pour plus d’informations, consultez appel d’une méthode.
L' API de script pour WMI utilise les mêmes méthodes pour supprimer un objet de classe ou une instance.
La procédure suivante décrit comment utiliser VBScript pour supprimer une instance d’une classe de base ou d’une classe dérivée.
Pour supprimer une instance d’une classe de base ou d’une classe dérivée à l’aide de VBScript
Appelez les méthodes SWbemObject. Delete _ ou SWbemObject. DeleteAsync _ .
Comme son nom l’indique , _ Delete supprime une instance de façon synchrone, tandis que DeleteAsync _ supprime une instance de façon asynchrone. Pour plus d’informations sur la suppression d’une instance de façon asynchrone, consultez appel d’une méthode.
L’exemple suivant décrit comment supprimer une instance de à l’aide de VBScript.
Dim service Set service = GetObject("winmgmts:{impersonationLevel=impersonate}") Set objwbemobject= service.get("") objwbemobject.Path_.Class = "MyNewClass" objwbemobject.put_ service.delete "MyNewClass"
Notes
Étant donné que le rappel au récepteur peut ne pas être retourné au même niveau d’authentification que celui requis par le client, il est recommandé d’utiliser le mode semi-synchrone au lieu de la communication asynchrone. Pour plus d’informations, consultez appel d’une méthode.