共用方式為


ISensorDriver::OnClientDisconnect 方法 (sensorsclassextension.h)

ISensorDriver::OnClientDisconnect 方法會通知感測器驅動程式用戶端應用程式已中斷連線。

語法

HRESULT OnClientDisconnect(
  [in] IWDFFile *pClientFile,
  [in] LPWSTR   pwszSensorID
);

參數

[in] pClientFile

IWDFFile 介面的指標,表示已中斷連線之客戶端的檔案物件。

[in] pwszSensorID

LPWSTR ,其中包含用戶端應用程式中斷連線之感測器的標識碼。

傳回值

如果作業成功,這個方法會傳回S_OK。 否則,此方法會傳回 Winerror.h 中定義的其中一個錯誤碼。

備註

感測器類別擴充功能會在下列實例中呼叫此方法:

您可以使用此呼叫作為訊號來更新已連線應用程式的清單和參考計數。

如需如何使用此方法的詳細資訊,請參閱 篩選數據

範例

下列範例程式代碼示範 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

另請參閱

ISensorDriver

ISensorDriver::OnClientConnect