Поделиться через


Метод 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. Эта функция использует простую карту 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