Classes de utilitário da Estrutura do Provedor

[As classes C++ do WMI que fazem parte da Estrutura do Provedor do WMI, que agora é considerado em estado final e nenhum desenvolvimento, melhoria ou atualização adicional estará disponível para problemas não relacionados à segurança que afetarem essas bibliotecas. As APIs de MI devem ser usadas em todos os novos desenvolvimentos.]

As bibliotecas de estrutura do provedor Framedyd.dll (versão de depuração) e Framedyn.dll (versão de versão) 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.

Descarregue os provedores individuais que não são mais necessários.

Para usar essa funcionalidade, faça as três seguintes alterações em seu provedor em MainDll.cpp:

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

Nos três casos, o ponteiro para um longo deve ser o mesmo ponteiro.

Observação

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

 

Cuidado

Link de builds de depuração do provedor com Framedyd.lib para Framedyd.dll. O Framedyd.dll está no diretório \bin do SDK (Kit de Desenvolvimento de Software) do Microsoft Windows, que não está incluído no caminho do sistema. Quando um build de depuração de um provedor é testado com o serviço de Gerenciamento do Windows, o provedor de estrutura não será carregado porque Framedyd.dll ou uma de suas dependências não será localizada. Portanto, copie o 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 utilitário Descrição
CHString Fornece funções de comparação e manipulação de cadeia de caracteres para o WMI.
CHStringArray Contém para criar e manipular matrizes de CHString.
TRefPointerCollection Concede acesso a uma classe de contêiner para ponteiros.
WBEMTime Facilita as 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

As classes CHString e CHStringArray são semelhantes às classes CString e CStringArray do MFC (Microsoft Foundation Classes). As versões do 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 do WMI são capazes de armazenar tempo para precisão de nanossegundos e também podem ser convertidas para e de BSTR. Para obter mais informações sobre as classes CString, CStringArray, CTime e CTimeSpan, consulte as Microsoft Foundation Classes no MSDN.

 

Os valores BSTR retornados pelos métodos WBEMTime estão em Formato de Data e Hora: "yyyymmddHHMMSS.mmmmmmsUUU"

Os valores BSTR retornados pelos métodos WBEMTimeSpan estão em Formato de Intervalo: "ddddddddHHMMSS.mmmmmm:000"

Embora os tempos e intervalos de tempo sejam armazenados internamente como nanossegundos, eles não são necessariamente armazenados com precisão de nanossegundos. Isso ocorre porque os objetos WBEMTime podem ser construídos usando formatos de tempo precisos para um segundo (tm de struct e time_t). Adicionar casas decimais artificiais não aumenta a precisão.