Compartilhar via


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