Partilhar via


Classes de utilitário do Provider Framework

[As classes C++ do WMI que fazem parte do WMI Provider Framework, que agora é considerado no estado final, e nenhum desenvolvimento, aprimoramentos ou atualizações adicionais estarão disponíveis para problemas não relacionados à segurança que afetem essas bibliotecas. O de APIs MI deve ser usado para todos os novos desenvolvimentos.]

As bibliotecas de estrutura do provedor Framedyd.dll (versão de depuração) e Framedyn.dll (versão de lançamento) implementam várias classes auxiliares do provedor. Algumas funções em Framedyn.dll foram removidas dos arquivos de cabeçalho. Para continuar a usar essas funções, adicione #define FRAMEWORK_ALLOW_DEPRECATED ao seu código antes de incluir Fwcommon.h.

Você pode descarregar provedores individuais que não são mais necessários.

Para usar esse recurso, você deve fazer as três alterações a seguir no seu provedor no MainDll.cpp:

  • Na função DllMain onde você chama CWbemProviderGlue::FrameworkLoginDLL, você deve adicionar um segundo parâmetro que é um ponteiro para um longo.
  • Na função DllCanUnloadNow onde você chama CWbemProviderGlue::FrameworkLogoffDLL, você deve adicionar um segundo parâmetro que é um ponteiro para um longo.
  • Na função DllGetClassObject onde você cria uma instância de CWbemGlueFactory, você deve adicionar um parâmetro que é um ponteiro para um longo.

Em todos os três casos, o ponteiro para um longo deve ser o mesmo ponteiro.

Observação

No Maindll.cpp, DllGetClassObject , DllCanUnloadNow, DllRegisterServer, DllUnregisterServer e rotinas de DllMain devem ser encapsuladas em um bloco try/catch.

 

Atenção

A depuração do provedor cria link com Framedyd.lib para Framedyd.dll. Framedyd.dll está no diretório \bin do Microsoft Windows Software Development Kit (SDK) que não está incluído no caminho do sistema. Quando uma compilação de depuração de um provedor é testada com o serviço de Gerenciamento do Windows, o provedor de estrutura falhará ao carregar porque Framedyd.dll ou uma de suas dependências não será localizada. Portanto, você deve copiar Framedyd.dll do diretório \bin do SDK do Windows para o diretório \system32\wbem ou adicionar o diretório \bin do SDK do Windows ao caminho de pesquisa do sistema.

 

A tabela a seguir lista as classes de utilitário da estrutura do provedor.

Classe de utilidade Descrição
CHString Fornece funções de comparação e manipulação de cadeia de caracteres para WMI.
CHStringArray Contém para criar e manipular matrizes de CHString.
TRefPointerCollection Concede acesso a uma classe de contêiner para ponteiros.
WBEMTime Facilita conversões entre vários formatos de tempo de execução do Windows e ANSI C.
WBEMTimeSpan Contém funções auxiliares usadas para calcular e manter a diferença de intervalo de tempo entre dois objetos WBEMTime.

 

Observação

O CHString e classes de CHStringArray são semelhantes ao Microsoft Foundation Classes (MFC) CString e CStringArray. As versões WMI existem para que os desenvolvedores possam acessar métodos de manipulação e comparação de cadeia de caracteres sem precisar acessar o MFC. As classes WBEMTime e WBEMTimeSpan também são semelhantes às classes MFC CTime e CTimeSpan. As versões WMI são capazes de armazenar tempo para precisão de nanossegundos, e também podem converter de e para BSTR. Para obter mais informações sobre as classes CString, CStringArray, CTime e CTimeSpan, consulte a documentação do MFC Desktop Applications.

 

valores de BSTR retornados por métodos WBEMTime estão em formato de data e hora: "yyyymmddHHMMSS.mmmmmmsUUU"

valores de BSTR retornados por métodos WBEMTimeSpan estão em formato de intervalo: "ddddddddddHHMMSS.mmmmmm:000"

Embora os tempos e períodos de tempo sejam armazenados internamente como nanossegundos, eles não são necessariamente armazenados com precisão de nanossegundos. Isso ocorre porque objetos WBEMTime podem ser construídos usando formatos de tempo que são precisos em um segundo (struct tme time_t). A adição de casas decimais artificiais não aumenta a precisão.