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 |