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 中定义的错误代码之一。

注解

传感器类扩展在以下实例中调用此方法:

可以使用此调用作为信号来更新已连接应用程序的列表和引用计数。

有关如何使用此方法的详细信息,请参阅 筛选数据

示例

以下示例代码演示 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

另请参阅

ISensorDriver

ISensorDriver::OnClientConnect