Método SWbemServices.InstancesOf

O método InstancesOf do objeto SWbemServices cria um enumerador que retorna as instâncias de uma classe especificada de acordo com os critérios de seleção especificados pelo usuário. Esse método implementa uma consulta simples. Consultas mais complexas podem exigir o uso de SWbemServices.ExecQuery.

O método é chamado no modo semissíncrono. Para obter mais informações, consulte Chamar um método.

Para conferir uma explicação dessa sintaxe, confira Convenções de documentação para API de script.

Sintaxe

objWbemObjectSet = .InstancesOf( _
  ByVal strClass, _
  [ ByVal iFlags ], _
  [ ByVal objWbemNamedValueSet ] _
)

Parâmetros

strClass

Obrigatórios. Cadeia de caracteres que contém o nome da classe para a qual as instâncias são desejadas. Este parâmetro não pode ficar em branco.

iFlags [opcional]

Esse parâmetro determina o quão detalhada a chamada enumera e se essa chamada retorna imediatamente. O valor padrão para esse parâmetro é wbemFlagReturnImmediately. Esse parâmetro pode aceitar os valores a seguir.

wbemFlagForwardOnly (32 (0x20))

Faz com que um enumerador somente de encaminhamento seja retornado. Normalmente, os enumeradores apenas de encaminhamento são mais rápidos e usam menos memória do que os enumeradores convencionais, mas eles não permitem chamadas para SWbemObject.Clone_.

wbemFlagBidirectional (0 (0x0))

Faz com que a WMI retenha ponteiros para objetos da enumeração até que o cliente libere o enumerador.

wbemFlagReturnImmediately (16 (0x10))

O valor padrão deste parâmetro. Esse sinalizador faz com que a chamada retorne imediatamente.

wbemFlagReturnWhenComplete (0 (0x0))

Faz com que essa chamada seja bloqueada até que a consulta seja concluída. Esse sinalizador chama o método no modo síncrono.

wbemQueryFlagShallow (1 (0x1))

Força a enumeração a incluir apenas subclasses imediatas da classe pai especificada.

wbemQueryFlagDeep (0 (0x0))

O valor padrão deste parâmetro. Esse valor força a enumeração a incluir todas as classes na hierarquia.

wbemFlagUseAmendedQualifiers (131072 (0x20000))

Faz com que o WMI retorne dados de aditamento da classe com a definição da classe base. Para obter mais informações, consulte Localizar informações de classe WMI.

objWbemNamedValueSet [opcional]

Normalmente, isso é indefinido. Caso contrário, esse será um objeto SWbemNamedValueSet cujos elementos representam as informações de contexto que podem ser usadas pelo provedor que está atendendo à solicitação. Um provedor que dê suporte ou exija essas informações deve documentar os nomes de valor reconhecidos, o tipo de dados do valor, os valores permitidos e a semântica.

Retornar valor

Se tiver êxito, o método retornará um SWbemObjectSet.

Códigos do Erro

Após a conclusão do método InstancesOf, o objeto Err pode conter um dos códigos de erro da lista a seguir.

Observação

Um enumerador retornado com zero elementos não é um erro.

wbemErrAccessDenied – 2147749891 (0x80041003)

O usuário atual não tem permissão para visualizar instâncias da classe especificada.

wbemErrFailed – 2147749889 (0x80041001)

Ocorreu um erro não especificado.

wbemErrInvalidClass – 2147749904 (0x80041010)

A classe especificada não é válida.

wbemErrInvalidParameter – 2147749896 (0x80041008)

Um parâmetro especificado não é válido.

wbemErrOutOfMemory – 2147749894 (0x80041006)

Não há memória suficiente para concluir a operação.

Comentários

O método InstancesOf só funciona para objetos de classe.

Por padrão, InstancesOf executa uma recuperação profunda. Ou seja, o InstancesOf recupera todas as instâncias do recurso gerenciado que você identificar e todas as instâncias de todas as subclasses definidas abaixo da classe de destino. Por exemplo, o script a seguir recupera todos os recursos modelados por todas as classes dinâmicas definidas abaixo da classe abstrata CIM_Service.

strComputer = "."
Set objSWbemServices = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colSWbemObjectSet = objSWbemServices.InstancesOf("CIM_Service")
For Each objSWbemObject In colSWbemObjectSet
    Wscript.Echo "Object Path: " & objSWbemObject.Path_.Path
Next

Se você executar esse script, receberá informações de volta. No entanto, essas informações não serão limitadas aos serviços instalados em um computador. Em vez disso, ele incluirá informações de todas as classes filho de CIM_Service, incluindo Win32_SystemDriver e Win32_ApplicationService.

Requisitos

Requisito Valor
Cliente mínimo com suporte
Windows Vista
Servidor mínimo com suporte
Windows Server 2008
Cabeçalho
Wbemdisp.h
Biblioteca de tipos
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemServices
IID
IID_ISWbemServices

Confira também

SWbemServices

SWbemObjectSet