다음을 통해 공유


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
라이브러리 SensorsClassExtension.lib

추가 정보

ISensorDriver

ISensorDriver::OnClientConnect