イベント ハンドラー関数プロトタイプ コールバック関数
[イベント ハンドラー プロトタイプ関数は、Windows Server 2008 および Windows Vista では使用できなくなりました。 ]
イベント ハンドラー プロトタイプ関数は、 Winlogon 通知イベントを処理するすべての関数に使用されます。 プレース ホルダー Event_Handler_Function_Nameで表される関数の名前は、通常、関数が処理するイベントの名前を反映します。 たとえば、ログオン イベントを処理する関数には、 WLEventLogon という名前を付ける場合があります。
構文
void Event_Handler_Function_Name(
_In_ PWLX_NOTIFICATION_INFO pInfo
);
パラメーター
-
pInfo [in]
-
イベントの詳細を含む WLX_NOTIFICATION_INFO 構造体へのポインター。
戻り値
このコールバック関数は値を返しません。
解説
イベント ハンドラーで子プロセスを作成する必要がある場合は、 CreateProcessAsUser 関数を呼び出す必要があります。 それ以外の場合、新しいプロセスは、ユーザーのデスクトップではなく、Winlogon デスクトップに作成されます。
例
次の例は、Winlogon イベントのイベント ハンドラーを実装する方法を示しています。 わかりやすくするために、Logon イベント ハンドラーと Logoff イベント ハンドラーの実装のみが表示されます。 他のイベントのハンドラーは、まったく同じ方法で実装できます。
// Copyright (C) Microsoft. All rights reserved.
#include <windows.h>
// Here is the entrance function for the DLL.
BOOL WINAPI LibMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
{
// Disable DLL_THREAD_ATTACH & DLL_THREAD_DETACH
// notification calls. This is a performance optimization
// for multithreaded applications that do not need
// thread-level notifications of attachment or
// detachment.
DisableThreadLibraryCalls (hInstance);
}
break;
}
return TRUE;
}
// Here is the event handler for the Winlogon Logon event.
void WLEventLogon (PWLX_NOTIFICATION_INFO pInfo)
{
// Print the name of the handler to debug output.
// You can replace this with more useful functionality.
OutputDebugString (TEXT("NOTIFY: Entering WLEventLogon.\r\n"));
}
// Here is the event handler for the Winlogon Logoff event.
void WLEventLogoff (PWLX_NOTIFICATION_INFO pInfo)
{
// Print the name of the handler to debug output.
// You can replace this with more useful functionality.
OutputDebugString (TEXT("NOTIFY: Entering WLEventLogff.\r\n"));
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows XP [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2003 [デスクトップ アプリのみ] |
クライアント サポートの終了 |
Windows XP |
サーバー サポートの終了 |
Windows Server 2003 |