CGlobalModule::OnGlobalHealthCheck (Método)
Representa el método que controlará un GlobalHealthCheck
evento, que se produce cuando se ejecuta una operación relacionada con el estado.
Sintaxis
virtual GLOBAL_NOTIFICATION_STATUS OnGlobalHealthCheck(
VOID
);
Parámetros
Este método no toma parámetros.
Valor devuelto
Valor de GLOBAL_NOTIFICATION_STATUS .
Comentarios
Cuando un módulo global se haya registrado para la notificación de eventos de GL_HEALTH_CHECK , IIS llamará al método del OnGlobalHealthCheck
módulo cuando se produzca una operación relacionada con el estado. Por ejemplo, si otro módulo llama al método IHttpServer::ReportUnhealthy , IIS llamará OnGlobalHealthCheck
a todos los módulos que se hayan registrado para la GL_HEALTH_CHECK
notificación.
Nota
Los módulos globales pueden registrarse para la GlobalHealthCheck
notificación de eventos registrando para GL_HEALTH_CHECK
en la función RegisterModule del módulo.
Ejemplo
En el ejemplo de código siguiente se muestra cómo crear un módulo HTTP de nivel global que se registra para la notificación de GL_HEALTH_CHECK
eventos. Si se produce una operación relacionada con el estado, IIS llamará al método del módulo de OnGlobalHealthCheck
ejemplo. Este método escribirá una entrada en el registro de la aplicación del Visor de eventos de Windows y, a continuación, se cerrará.
#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_HEALTH_CHECK notification.
GLOBAL_NOTIFICATION_STATUS
OnGlobalHealthCheck(
VOID
)
{
WriteEventViewerLog("OnGlobalHealthCheck");
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_HEALTH_CHECK );
}
El módulo debe exportar la función RegisterModule . Puede exportar esta función mediante la creación de un archivo de definición de módulo (.def) para el proyecto, o bien puede compilar el módulo mediante el /EXPORT:RegisterModule
modificador . Para obtener más información, vea Tutorial: Creación de un módulo HTTP de Global-Level mediante código nativo.
Opcionalmente, puede compilar el código mediante la __stdcall (/Gz)
convención de llamada en lugar de declarar explícitamente la convención de llamada para cada función.
Requisitos
Tipo | Descripción |
---|---|
Remoto | - IIS 7.0 en Windows Vista - IIS 7.5 en Windows 7 - IIS 8.0 en Windows 8 - IIS 10.0 en Windows 10 |
Servidor | - IIS 7.0 en Windows Server 2008 - IIS 7.5 en Windows Server 2008 R2 - IIS 8.0 en Windows Server 2012 - IIS 8.5 en Windows Server 2012 R2 - IIS 10.0 en Windows Server 2016 |
Producto | - 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 |
Encabezado | Httpserv.h |