次の方法で共有


ISensorDriver::OnClientDisconnect メソッド (sensorsclassextension.h)

ISensorDriver::OnClientDisconnect メソッドは、クライアント アプリケーションが切断されたことをセンサー ドライバーに通知します。

構文

HRESULT OnClientDisconnect(
  [in] IWDFFile *pClientFile,
  [in] LPWSTR   pwszSensorID
);

パラメーター

[in] pClientFile

切断されたクライアントのファイル オブジェクトを表す IWDFFile インターフェイスへのポインター。

[in] pwszSensorID

クライアント アプリケーションの切断元であるセンサーの ID を含む LPWSTR

戻り値

操作が成功した場合、このメソッドは S_OKを返します。 それ以外の場合、このメソッドは Winerror.h で定義されているエラー コードのいずれかを返します。

注釈

センサー クラス拡張機能は、次のインスタンスでこのメソッドを呼び出します。

  • アプリケーションは正常に閉じます。
  • ユーザーは、指定したセンサーを含むデバイスにアクセスするためのアプリケーションのアクセス許可を取り消します。
  • ISensorClassExtension::CleanupFile の呼び出しからのクリーンアップ作業が完了しました。
この呼び出しをシグナルとして使用して、接続されているアプリケーションのリストと参照カウントを更新できます。

このメソッドの使用方法の詳細については、「 データのフィルター処理」を参照してください。

次のコード例は、 ISensorDriver::OnClientDisconnect の実装を示しています。 この関数は、接続されているクライアントを追跡するために、クライアントという名前の ATL 単純なマップを使用します。 接続されたクライアントをマップに追加する方法の例については、「 ISensorDriver::OnClientConnect 」を参照してください。

ClientData 構造体は次のように定義されます。

// Struct to keep track of connected client status.
struct ClientData
{
    BOOL bListening;  // Client is listening to events.
    ULONG ulInterval;  // Interval requested by client.
};

関数の定義は次のとおりです。

HRESULT CSensorDdi:: OnClientDisconnect(
        __in IWDFFile* pClientFile,
        __in LPWSTR pwszSensorID
        )
{
    if(NULL == pClientFile ||
       NULL == pwszSensorID)
    {
        return E_POINTER;
    }

    HRESULT hr = S_OK;
    ClientData* pCD = NULL;
    BOOL bRet = FALSE;

    // Find this client in the map.
    pCD = Clients.Lookup(pClientFile);
    if(pCD == NULL)
    {
        hr = E_UNEXPECTED;
    }

    if(SUCCEEDED(hr))
    {
        // Free the client data memory.
        delete pCD;
        pCD = NULL;

        // Remove this client from the array.
        bRet = Clients.Remove(pClientFile);
        if(FALSE == bRet)
        {
            hr = E_UNEXPECTED;
        }
    }

    return hr;
}

要件

要件
サポートされている最小のクライアント Windows 7、Windows 7 で使用できます。
サポートされている最小のサーバー サポートなし
対象プラットフォーム デスクトップ
Header sensorsclassextension.h
Library SensorsClassExtension.lib

こちらもご覧ください

ISensorDriver

ISensorDriver::OnClientConnect