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 中可用。 |
最低受支持的服务器 | 无受支持的版本 |
目标平台 | 桌面 |
标头 | sensorsclassextension.h |
Library | SensorsClassExtension.lib |