Classe CGlobalModule
Define a classe base para módulos HTTP de nível global.
Syntax
class CGlobalModule
Métodos
A tabela a seguir lista os métodos expostos pela CGlobalModule
classe .
Nome | Descrição |
---|---|
OnGlobalApplicationPreload | deddc775-1ab0-492c-bda0-b32be5d4f4cc |
OnGlobalApplicationResolveModules | Representa o método que manipulará um GlobalApplicationResolveModules evento, que ocorre quando o IIS resolve os módulos registrados. |
OnGlobalApplicationStart | Representa o método que manipulará um GlobalApplicationStart evento, que ocorre quando o IIS inicia um aplicativo. |
OnGlobalApplicationStop | Representa o método que manipulará um GlobalApplicationStop evento, que ocorre quando o IIS desliga um aplicativo. |
OnGlobalCacheCleanup | Representa o método que irá manipular um evento de GlobalCacheCleanup . |
OnGlobalCacheOperation | Representa o método que manipulará um GlobalCacheOperation evento, que ocorre quando o IIS executa uma operação relacionada ao cache. |
OnGlobalConfigurationChange | Representa o método que manipulará um GlobalConfigurationChange evento, que ocorre quando uma alteração é feita em um arquivo de configuração. |
OnGlobalCustomNotification | Representa o método que manipulará um GlobalCustomNotification evento, que ocorre quando um módulo gera uma notificação definida pelo usuário. |
OnGlobalFileChange | Representa o método que manipulará um GlobalFileChange evento, que ocorre quando um arquivo dentro de um site é alterado. |
OnGlobalHealthCheck | Representa o método que manipulará um GlobalHealthCheck evento, que ocorre quando uma operação relacionada à integridade é executada. |
OnGlobalPreBeginRequest | Representa o método que manipulará um GlobalPreBeginRequest evento, que ocorre antes de uma solicitação entrar no pipeline. |
OnGlobalRSCAQuery | Representa o método que manipulará um GlobalRSCAQuery evento, que ocorre quando uma consulta status e controle de Run-Time é executada. |
OnGlobalStopListening | Representa o método que manipulará um GlobalStopListening evento, que ocorre quando o IIS para de aceitar novas solicitações. |
OnGlobalThreadCleanup | Representa o método que manipulará um GlobalThreadCleanup evento, que ocorre quando o IIS retorna um thread para o pool de threads. |
OnGlobalTraceEvent | Representa o método que manipulará um GlobalTraceEvent evento, que ocorre quando um evento de rastreamento é gerado. |
Encerrar | Representa o método que o IIS chama quando um módulo global conclui o processamento. |
Classes derivadas
Essa classe não contém classes derivadas.
Comentários
A CGlobalModule
classe é a classe base para módulos HTTP de nível global. Os módulos HTTP de nível global devem conter uma classe que herda de CGlobalModule
. CGlobalModule
define os métodos que o IIS 7 chama para lidar com notificações de nível global quando ocorrem eventos de nível global. Um módulo HTTP pode se registrar para eventos específicos definindo uma lista de notificações na função RegisterModule exportada de um módulo. Quando um módulo de nível global tiver terminado o processamento, o módulo deverá usar o método CGlobalModule::Terminate para remover CGlobalModule
instâncias da memória.
Exemplo
O exemplo de código a seguir demonstra como criar um módulo HTTP de nível global "Olá, Mundo". O módulo define uma função RegisterModule exportada que cria uma instância de uma classe derivada de CGlobalModule
. Se a classe não puder ser criada, a função sairá com um código de erro; caso contrário, a função chamará o método IHttpModuleRegistrationInfo::SetRequestNotifications para se registrar para a notificação de GL_PRE_BEGIN_REQUEST .
Quando ocorre uma GL_PRE_BEGIN_REQUEST
notificação, o IIS chama o método CGlobalModule::OnGlobalPreBeginRequest do módulo para processar a notificação. O método chama um método privado para gravar um evento no log de aplicativos do Visualizador de Eventos e, em seguida, retorna GL_NOTIFICATION_CONTINUE para notificar o IIS para continuar processando outras notificações. Quando o processamento for concluído, o IIS chamará o método CGlobalModule::Terminate do módulo para remover a classe da memória.
#define _WINSOCKAPI_
#include <windows.h>
#include <sal.h>
#include <httpserv.h>
// Create the module's global class.
class MyGlobalModule : public CGlobalModule
{
public:
// Process a GL_APPLICATION_START notification.
GLOBAL_NOTIFICATION_STATUS
OnGlobalPreBeginRequest(
IN IPreBeginRequestProvider * pProvider
)
{
UNREFERENCED_PARAMETER( pProvider );
WriteEventViewerLog( "Hello World!" );
return GL_NOTIFICATION_CONTINUE;
}
VOID Terminate()
{
// Remove the class from memory.
delete this;
}
MyGlobalModule()
{
// Open a handle to the Event Viewer.
m_hEventLog = RegisterEventSource( NULL,"IISADMIN" );
}
~MyGlobalModule()
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Close the handle to the Event Viewer.
DeregisterEventSource( m_hEventLog );
m_hEventLog = NULL;
}
}
private:
// Create a handle for the event viewer.
HANDLE m_hEventLog;
// Define a method that writes to the Event Viewer.
BOOL WriteEventViewerLog(LPCSTR szNotification)
{
// Test whether the handle for the Event Viewer is open.
if (NULL != m_hEventLog)
{
// Write any strings to the Event Viewer and return.
return ReportEvent(
m_hEventLog,
EVENTLOG_INFORMATION_TYPE, 0, 0,
NULL, 1, 0, &szNotification, NULL );
}
return FALSE;
}
};
// Create the module's exported registration function.
HRESULT
__stdcall
RegisterModule(
DWORD dwServerVersion,
IHttpModuleRegistrationInfo * pModuleInfo,
IHttpServer * pGlobalInfo
)
{
UNREFERENCED_PARAMETER( dwServerVersion );
UNREFERENCED_PARAMETER( pGlobalInfo );
// Create an instance of the global module class.
MyGlobalModule * pGlobalModule = new MyGlobalModule;
// Test for an error.
if (NULL == pGlobalModule)
{
return HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
}
// Set the global notifications and exit.
return pModuleInfo->SetGlobalNotifications(
pGlobalModule, GL_PRE_BEGIN_REQUEST );
}
Seu módulo deve exportar a função RegisterModule . Você pode exportar essa função criando um arquivo de definição de módulo (.def) para seu projeto ou pode compilar o módulo usando a opção /EXPORT:RegisterModule
. Para obter mais informações, consulte Passo a passo: criando um módulo HTTP Global-Level usando código nativo.
Opcionalmente, você pode compilar o código usando a __stdcall (/Gz)
convenção de chamada em vez de declarar explicitamente a convenção de chamada para cada função.
Requisitos
Type | Descrição |
---|---|
Cliente | - IIS 7.0 no Windows Vista - IIS 7.5 no Windows 7 - IIS 8.0 no Windows 8 - IIS 10.0 no Windows 10 |
Servidor | - IIS 7.0 no Windows Server 2008 - IIS 7.5 no Windows Server 2008 R2 - IIS 8.0 no Windows Server 2012 - IIS 8.5 no Windows Server 2012 R2 - IIS 10.0 no Windows Server 2016 |
Produto | - IIS 7.0, IIS 7.5, IIS 8.0, IIS 8.5, IIS 10.0 - IIS Express 7.5, IIS Express 8.0, IIS Express 10.0 |
parâmetro | Httpserv.h |
Consulte Também
Classes principais do Servidor Web
Criando módulos HTTP Native-Code
Classe CHttpModule