Метод 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 |