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 で定義されているエラー コードの 1 つを返します。
備考
センサー クラス拡張機能は、次のインスタンスでこのメソッドを呼び出します。
- アプリケーションは正常に閉じます。
- ユーザーは、指定されたセンサーを含むデバイスにアクセスするアプリケーションのアクセス許可を取り消します。
- 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 で使用できます。 |
サポートされる最小サーバー | サポートされていません |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | sensorsclassextension.h |
ライブラリ | SensorsClassExtension.lib |
関連項目
ISensorDriver を する