Partilhar via


Classes de utilitário da estrutura do provedor

[As classes C++ do WMI que fazem parte da Estrutura do Provedor de WMI que agora é considerada 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 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 diversas classes auxiliares do provedor. Algumas funções no Framedyn.dll foram removidas dos arquivos de cabeçalho. Para continuar usando estas funções, adicione #define FRAMEWORK_ALLOW_DEPRECATED ao seu código antes de incluir Fwcommon.h.

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

Para usar esse recurso, faça as três alterações a seguir em seu provedor em 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

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

 

Cuidado

O provedor de depuração cria um link com o Framedyd.lib para Framedyd.dll. O Framedyd.dll está no diretório \bin do SDK (Software Development Kit) 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 da estrutura não será carregado, pois o Framedyd.dll ou uma de suas dependências não será localizada. Portanto, você deve copiar o Framedyd.dll do diretório \bin do SDK do Windows no diretório \system32\wbem ou adicionar o diretório \bin do SDK do Windows ao caminho de pesquisa do sistema.

 

A tabela seguinte 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 as matrizes de CHString.
TRefPointerCollection Concede o acesso a uma classe de contêiner para ponteiros.
WBEMTime Facilita as conversões entre diversos formatos de tempo de execução do Windows e ANSI C.
WBEMTimeSpan Contém funções auxiliares que são 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 MFC (Microsoft Foundation Classes) CString e CStringArray. As versões de WMI existem para que os desenvolvedores possam acessar os 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 do MFC CTime e CTimeSpan. As versões de WMI são capazes de armazenar tempo com precisão de nanossegundos e também podem converter de e para o BSTR. Para mais informações sobre as classes CString, CStringArray, CTime e CTimeSpan, consulte a documentação Aplicativos para desktop do MFC.

 

Os valores de BSTR retornados pelos métodos WBEMTime são no Formato de data e hora: "yyyymmddHHMMSS.mmmmmmsUUU"

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

Embora os tempos e intervalos de tempo fiquem 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 com precisão de um segundo (struct tm e time_t). Adicionar casas decimais artificiais não melhora a precisão.