ISensorDriver::OnClientDisconnect 方法 (sensorsclassextension.h)
ISensorDriver::OnClientDisconnect 方法會通知感測器驅動程式用戶端應用程式已中斷連線。
語法
HRESULT OnClientDisconnect(
[in] IWDFFile *pClientFile,
[in] LPWSTR pwszSensorID
);
參數
[in] pClientFile
IWDFFile 介面的指標,表示已中斷連線之客戶端的檔案物件。
[in] pwszSensorID
LPWSTR ,其中包含用戶端應用程式中斷連線之感測器的標識碼。
傳回值
如果作業成功,這個方法會傳回S_OK。 否則,此方法會傳回 Winerror.h 中定義的其中一個錯誤碼。
備註
感測器類別擴充功能會在下列實例中呼叫此方法:
- 應用程式通常會關閉。
- 使用者撤銷應用程式存取包含指定感測器之裝置的許可權。
- 清除工作是從 呼叫 ISensorClassExtension::CleanupFile 完成。
如需如何使用此方法的詳細資訊,請參閱 篩選數據。
範例
下列範例程式代碼示範 ISensorDriver::OnClientDisconnect 的實作。 此函式會使用名為 Clients 的 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 |