Bagikan melalui


Kelas CGlobalModule

Menentukan kelas dasar untuk modul HTTP tingkat global.

Sintaks

class CGlobalModule  

Metode

Tabel berikut mencantumkan metode yang diekspos oleh CGlobalModule kelas .

Nama Deskripsi
OnGlobalApplicationPreload deddc775-1ab0-492c-bda0-b32be5d4f4cc
OnGlobalApplicationResolveModules Mewakili metode yang akan menangani GlobalApplicationResolveModules peristiwa, yang terjadi ketika IIS menyelesaikan modul terdaftar.
Mulai Aplikasi OnGlobal Mewakili metode yang akan menangani GlobalApplicationStart peristiwa, yang terjadi ketika IIS memulai aplikasi.
OnGlobalApplicationStop Mewakili metode yang akan menangani GlobalApplicationStop peristiwa, yang terjadi ketika IIS mematikan aplikasi.
OnGlobalCacheCleanup Mewakili metode yang akan menangani GlobalCacheCleanup peristiwa.
OnglobalCacheoperation Mewakili metode yang akan menangani GlobalCacheOperation peristiwa, yang terjadi ketika IIS melakukan operasi terkait cache.
OnGlobalConfigurationChange Mewakili metode yang akan menangani GlobalConfigurationChange peristiwa, yang terjadi ketika perubahan dilakukan pada file konfigurasi.
OnGlobalCustomNotification Mewakili metode yang akan menangani GlobalCustomNotification peristiwa, yang terjadi ketika modul menaikkan pemberitahuan yang ditentukan pengguna.
OnGlobalFileChange Mewakili metode yang akan menangani GlobalFileChange peristiwa, yang terjadi ketika file dalam situs Web diubah.
OnGlobalHealthCheck Mewakili metode yang akan menangani GlobalHealthCheck peristiwa, yang terjadi ketika operasi terkait kesehatan dijalankan.
OnGlobalPreBeginRequest Mewakili metode yang akan menangani GlobalPreBeginRequest peristiwa, yang terjadi sebelum permintaan memasuki alur.
OnGlobalRSCAQuery Mewakili metode yang akan menangani GlobalRSCAQuery peristiwa, yang terjadi ketika kueri Status dan Kontrol Run-Time dijalankan.
OnGlobalStopListening Mewakili metode yang akan menangani GlobalStopListening peristiwa, yang terjadi ketika IIS berhenti menerima permintaan baru.
OnGlobalThreadCleanup Mewakili metode yang akan menangani GlobalThreadCleanup peristiwa, yang terjadi ketika IIS mengembalikan utas ke kumpulan utas.
OnglobalTraceEvent Mewakili metode yang akan menangani GlobalTraceEvent peristiwa, yang terjadi ketika peristiwa pelacakan dinaikkan.
Hentikan Mewakili metode yang dipanggil IIS ketika modul global telah menyelesaikan pemrosesan.

Kelas Turunan

Kelas ini tidak berisi kelas turunan.

Keterangan

Kelas CGlobalModule ini adalah kelas dasar untuk modul HTTP tingkat global. Modul HTTP tingkat global harus berisi kelas yang mewarisi dari CGlobalModule. CGlobalModule menentukan metode yang dipanggil IIS 7 untuk menangani pemberitahuan tingkat global saat peristiwa tingkat global terjadi. Modul HTTP dapat mendaftar untuk peristiwa tertentu dengan menentukan daftar pemberitahuan dalam fungsi RegisterModule modul yang diekspor. Ketika modul tingkat global telah selesai diproses, modul harus menggunakan metode CGlobalModule::Terminate untuk menghapus CGlobalModule instans dari memori.

Contoh

Contoh kode berikut menunjukkan cara membuat modul HTTP tingkat global "Halo Dunia" sederhana. Modul mendefinisikan fungsi RegisterModule yang diekspor yang membuat instans kelas yang berasal dari CGlobalModule. Jika kelas tidak dapat dibuat, fungsi keluar dengan kode kesalahan; jika tidak, fungsi memanggil metode IHttpModuleRegistrationInfo::SetRequestNotifications untuk mendaftar pemberitahuan GL_PRE_BEGIN_REQUEST .

GL_PRE_BEGIN_REQUEST Ketika pemberitahuan terjadi, IIS memanggil metode CGlobalModule::OnGlobalPreBeginRequest modul untuk memproses pemberitahuan. Metode ini memanggil metode privat untuk menulis peristiwa ke log aplikasi Pemampil Peristiwa, lalu mengembalikan GL_NOTIFICATION_CONTINUE untuk memberi tahu IIS untuk terus memproses pemberitahuan lain. Saat pemrosesan selesai, IIS memanggil metode CGlobalModule::Terminate modul untuk menghapus kelas dari memori.

#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 );
}

Modul Anda harus mengekspor fungsi RegisterModule . Anda dapat mengekspor fungsi ini dengan membuat file definisi modul (.def) untuk proyek Anda, atau Anda dapat mengkompilasi modul dengan menggunakan sakelar /EXPORT:RegisterModule . Untuk informasi selengkapnya, lihat Panduan: Membuat Modul HTTP Global-Level Dengan Menggunakan Kode Asli.

Anda dapat secara opsional mengkompilasi kode dengan menggunakan __stdcall (/Gz) konvensi panggilan alih-alih secara eksplisit mendeklarasikan konvensi panggilan untuk setiap fungsi.

Persyaratan

Jenis Deskripsi
Klien - IIS 7.0 di Windows Vista
- IIS 7.5 di Windows 7
- IIS 8.0 di Windows 8
- IIS 10.0 pada Windows 10
Server - IIS 7.0 di Windows Server 2008
- IIS 7.5 di Windows Server 2008 R2
- IIS 8.0 di Windows Server 2012
- IIS 8.5 di Windows Server 2012 R2
- IIS 10.0 di Windows Server 2016
Produk - 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
Header Httpserv.h

Lihat juga

Kelas Inti Server Web
Membuat Modul HTTP Native-Code
Kelas CHttpModule