WlanRegisterNotification 関数 (wlanapi.h)

重要

一部の情報はプレリリース製品に関連しており、商用リリース前に大幅に変更される可能性があります。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。

WlanRegisterNotification 関数は、すべてのワイヤレス インターフェイスで通知を登録および登録解除するために使用されます。

構文

DWORD WlanRegisterNotification(
  [in]            HANDLE                     hClientHandle,
  [in]            DWORD                      dwNotifSource,
  [in]            BOOL                       bIgnoreDuplicate,
  [in, optional]  WLAN_NOTIFICATION_CALLBACK funcCallback,
  [in, optional]  PVOID                      pCallbackContext,
  [in]            PVOID                      pReserved,
  [out, optional] PDWORD                     pdwPrevNotifSource
);

パラメーター

[in] hClientHandle

WlanOpenHandle 関数の以前の呼び出しによって取得されたクライアントのセッション ハンドル。

[in] dwNotifSource

登録する通知ソース。 これらのフラグを組み合わせることができます。 このパラメーターを WLAN_NOTIFICATION_SOURCE_NONE に設定すると、 WlanRegisterNotification はすべてのワイヤレス インターフェイスで通知の登録を解除します。

このパラメーターに指定できる値は、 Wlanapi.h ヘッダー ファイルと L2cmn.h ヘッダー ファイルで定義されています。

以下の表に、使用可能な値を示します。

意味
WLAN_NOTIFICATION_SOURCE_NONE
通知の登録を解除します。
WLAN_NOTIFICATION_SOURCE_ALL
802.1X モジュールによって生成されたものを含め、オペレーティング システムのバージョンで使用可能なすべての通知を登録します。

SP3 を使用する Windows XP と SP2 を使用した Windows XP 用のワイヤレス LAN API の場合、 dwNotifSourceWLAN_NOTIFICATION_SOURCE_ALL に設定することは、 dwNotifSourceWLAN_NOTIFICATION_SOURCE_ACM に設定することと機能的に同じです。

WLAN_NOTIFICATION_SOURCE_ACM
自動構成モジュールによって生成された通知を登録します。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: wlan_notification_acm_connection_complete通知とwlan_notification_acm_disconnected通知のみを使用できます。

WLAN_NOTIFICATION_SOURCE_HNWK
ワイヤレス ホステッド ネットワークによって生成された通知に登録します。 この通知ソースは、ワイヤレス LAN サービスがインストールされている Windows 7 および Windows Server 2008 R2 で使用できます。
WLAN_NOTIFICATION_SOURCE_ONEX
802.1X によって生成された通知の登録。
WLAN_NOTIFICATION_SOURCE_MSM
MSM によって生成された通知の登録。

dwNotifSourceWLAN_NOTIFICATION_SOURCE_MSM フラグが設定されている場合は、wiFiControl デバイス機能が必要です (「アプリ機能の宣言」を参照)。 その機能が付与されていない場合、関数は ERROR_ACCESS_DENIEDを返します。 wiFiControl デバイス機能を要求するには、場所へのアクセスに関するユーザーからの同意が必要です。 詳細については、「 Wi-Fi アクセスと場所の API 動作の変更」を参照してください。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: この値はサポートされていません。

WLAN_NOTIFICATION_SOURCE_SECURITY
セキュリティ モジュールによって生成された通知に登録します。

現在、WLAN_NOTIFICATION_SOURCE_SECURITYに対する通知は定義されていません。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: この値はサポートされていません。

WLAN_NOTIFICATION_SOURCE_IHV
独立系ハードウェア ベンダー (IHV) によって生成された通知の登録。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: この値はサポートされていません。

WLAN_NOTIFICATION_SOURCE_DEVICE_SERVICE
デバイス サービスによって生成された通知の登録。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: このパラメーターは、WLAN_NOTIFICATION_SOURCE_NONE、WLAN_NOTIFICATION_SOURCE_ALL、またはWLAN_NOTIFICATION_SOURCE_ACMに設定する必要があります。

[in] bIgnoreDuplicate

重複する通知を無視するかどうかを指定します。 TRUE に設定すると、前の通知と同じ場合、通知はクライアントに送信されません。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: このパラメーターは無視されます。

[in, optional] funcCallback

通知コールバック関数 の種類を 定義するWLAN_NOTIFICATION_CALLBACK型。

dwNotifSource パラメーターがすべてのワイヤレス インターフェイスで通知の登録を解除するためにWLAN_NOTIFICATION_SOURCE_NONEに設定されている場合、このパラメーターは NULL にすることができます。

[in, optional] pCallbackContext

通知を使用してコールバック関数に渡されるクライアント コンテキストへのポインター。

[in] pReserved

将来利用するために予約されています。 NULL に設定する必要があります。

[out, optional] pdwPrevNotifSource

以前に登録された通知ソースへのポインター。

戻り値

関数が成功した場合、戻り値は ERROR_SUCCESS です。

関数が失敗した場合、戻り値は次のいずれかのリターン コードになります。

dwNotifSourceWLAN_NOTIFICATION_SOURCE_MSM フラグが設定されている場合は、wiFiControl デバイス機能が必要です (「アプリ機能の宣言」を参照)。 その機能が付与されていない場合、関数は ERROR_ACCESS_DENIEDを返します。 wiFiControl デバイス機能を要求するには、場所へのアクセスに関するユーザーからの同意が必要です。 詳細については、「 Wi-Fi アクセスと場所の API 動作の変更」を参照してください。

リターン コード 説明
ERROR_INVALID_PARAMETER
パラメーターが正しくありません。 このエラーは、 hClientHandle が NULL または 無効 な場合、または pReservedNULL でない場合に返されます。
ERROR_INVALID_HANDLE
ハンドル テーブルにハンドル hClientHandle が見つかりませんでした。
ERROR_NOT_ENOUGH_MEMORY
クエリ結果にメモリを割り当てませんでした。
ERROR_ACCESS_DENIED
dwNotifSourceWLAN_NOTIFICATION_SOURCE_MSM フラグが設定されている場合は、wiFiControl デバイス機能が必要です (「アプリ機能の宣言」を参照してください)。 その機能が付与されていない場合、関数は ERROR_ACCESS_DENIEDを返します。 wiFiControl デバイス機能を要求するには、場所へのアクセスに関するユーザーからの同意が必要です。 詳細については、「 Wi-Fi アクセスと場所の API 動作の変更」を参照してください。
RPC_STATUS
さまざまなエラー コード。

注釈

WlanRegisterNotification は、すべてのワイヤレス インターフェイスで通知を登録および登録解除するためにアプリケーションによって使用されます。 通知に登録する場合、アプリケーションは funcCallback パラメーターによって指されるコールバック関数を提供する必要があります。 このコールバック関数のプロトタイプは 、WLAN_NOTIFICATION_CALLBACKです。 このコールバック関数は、WlanRegisterNotification 関数に渡される dwNotifSource パラメーターに登録されている通知を受け取ります。 コールバック関数は、通知に関する詳細情報を含む最初のパラメーターとして 、WLAN_NOTIFICATION_DATA 構造体へのポインターを使用して呼び出されます。 コールバック関数は、 pCallbackContext パラメーターで WlanRegisterNotification 関数に渡されるクライアント コンテキストへのポインターを含む 2 番目のパラメーターも受け取ります。

dwNotifSourceWLAN_NOTIFICATION_SOURCE_NONE以外の値であり、クライアントがコールバック関数を提供できない場合、WlanRegisterNotification 関数はエラーを返します。

登録されると、クライアントがハンドルの登録を解除または閉じるまで、通知が使用可能になるとコールバック関数が呼び出されます。

呼び出し元のアプリケーションが呼び出しハンドルを閉じる (hClientHandle パラメーターを使用して WlanCloseHandle を呼び出す) 場合、またはプロセスが終了した場合、この関数によって発生した通知を受信するための登録は自動的に元に戻されます。

コールバック関数から WlanRegisterNotification を呼び出さないでください。 wlanRegisterNotificationdwNotifSourceWLAN_NOTIFICATION_SOURCE_NONE に設定して呼び出されたときにクライアントが通知コールバックの途中にある場合 (つまり、クライアントが通知から登録を解除している場合)、WlanRegisterNotification はコールバックが完了するまで待機してから値を返します。 コールバック関数内でこの関数を呼び出すと、呼び出しは完了しません。 コールバック関数と通知から登録を解除するスレッドの両方が同じロックを取得しようとすると、デッドロックが発生する可能性があります。 さらに、アプリケーション DLL の DllMain 関数から WlanRegisterNotification を呼び出さないでください。 これにより、デッドロックが発生する可能性もあります。

アプリケーションは、通知を待機する代わりに、タイムアウトして現在のインターフェイスの状態に対してクエリを実行できます。

SP3 を使用した Windows XP と、SP2 を使用した Windows XP 用のワイヤレス LAN API: 通知は Netman サービスによって処理されます。 Netman サービスが無効または使用できない場合、通知は受信されません。 通知が妥当な時間内に受信されない場合、アプリケーションはタイムアウトし、現在のインターフェイスの状態を照会する必要があります。

要件

要件
サポートされている最小のクライアント Windows Vista、SP3 を使用した Windows XP [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wlanapi.h (Wlanapi.h を含む)
Library Wlanapi.lib
[DLL] Wlanapi.dll
再頒布可能パッケージ Sp2 を使用した Windows XP 用ワイヤレス LAN API

こちらもご覧ください

ONEX_NOTIFICATION_TYPE

WLAN_HOSTED_NETWORK_NOTIFICATION_CODE

WLAN_NOTIFICATION_ACM

WLAN_NOTIFICATION_CALLBACK

WLAN_NOTIFICATION_DATA

WLAN_NOTIFICATION_MSM

WlanCloseHandle

WlanRegisterVirtualStationNotification