Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O Monitor de Rede usa o DllMain função de exportação para identificar a existência do analisador e liberar recursos que o Monitor de Rede usa para armazenar informações sobre o analisador.
Quando o Monitor de Rede chama DllMain pela primeira vez, a DLL do analisador chama CreateProtocol para fazer o seguinte:
- Especifique o protocolo que o analisador deteta.
- Forneça pontos de entrada para as restantes funções de exportação do analisador que o Monitor de Rede chama.
Quando o Monitor de Rede chama DllMain pela última vez, DllMain chama DestroyProtocol para libertar todos os recursos que o Monitor de Rede utiliza para armazenar informações sobre o analisador.
O procedimento a seguir identifica as etapas necessárias para implementar DllMain.
Para implementar o DLLMain
Especifique a estrutura ENTRYPOINTS para a função CreateProtocol e a variável global Attach. A variável Attach é usada para controlar o número de instâncias de protocolo em execução.
Observe o valor do parâmetro Command que o sistema operacional define.
Se o parâmetro Command estiver definido como DLL_PROCESS_ATTACH e Attach for 0, chame CreateProtocol para fornecer o nome do protocolo e os pontos de entrada para as seguintes funções de exportação.
- Registe-se
- Cancelar o registro
- ReconhecerEstrutura
- AttachProperties
- FormatProperties (necessário apenas se o Monitor de Rede estiver exibindo as propriedades do protocolo).
Se o parâmetro Command estiver definido como DLL_PROCESS_DETACH e Attach for 0, chame DestroyProtocol usando o identificador de instância que CreateProtocol retorna.
Retorne TRUE porque a função analisador de DllMain sempre deve retornar TRUE.
A seguir está uma implementação básica do DllMain. O exemplo de código usa uma instrução case para intercetar valores do parâmetro Command, a fim de determinar se deve ser chamado o CreateProtocol ou o DestroyProtocol.
#include <windows.h>
// Entry point structure for parser export functions and global
// Attach variable.
ENTRYPOINTS EntryPoints =
{
Register,
Deregister,
RecognizeFrame,
AttachProperties,
FormatProperties
};
DWORD Attached = 0;
BOOL WINAPI DllMain(HANDLE hInstance, ULONG Command, LPVOID Reserved)
{
switch(Command)
{
// Call CreateProtocol.
case DLL_PROCESS_ATTACH:
// Loading parser DLL.
if(Attached == 0)
{
hProtocol = CreateProtocol( "ProtocolName",
&EntryPoints,
ENTRYPOINTS_SIZE);
}
Attached++;
break;
// Call DestroyProtocol.
case DLL_PROCESS_DETACH:
// Unloading parser DLL.
Attached--;
if(Attached == 0)
{
DestroyProtocol( hProtocol);
}
break;
}
return TRUE;
}