Método ISensorDriver::OnClientDisconnect (sensorsclassextension.h)
O método ISensorDriver::OnClientDisconnect notifica o driver do sensor de que um aplicativo cliente se desconectou.
Sintaxe
HRESULT OnClientDisconnect(
[in] IWDFFile *pClientFile,
[in] LPWSTR pwszSensorID
);
Parâmetros
[in] pClientFile
Ponteiro para uma interface IWDFFile que representa o objeto de arquivo para o cliente que se desconectou.
[in] pwszSensorID
LPWSTR que contém a ID do sensor do qual o aplicativo cliente está se desconectando.
Retornar valor
Se a operação for bem-sucedida, esse método retornará S_OK. Caso contrário, esse método retornará um dos códigos de erro definidos em Winerror.h.
Comentários
A extensão de classe de sensor chama esse método nas seguintes instâncias:
- Um aplicativo é fechado normalmente.
- O usuário revoga a permissão para um aplicativo acessar o dispositivo que contém o sensor especificado.
- O trabalho de limpeza de uma chamada para ISensorClassExtension::CleanupFile foi concluído.
Para obter mais informações sobre como usar esse método, consulte Filtrando dados.
Exemplos
O código de exemplo a seguir demonstra uma implementação de ISensorDriver::OnClientDisconnect. Essa função usa um mapa simples da ATL, chamado Clients, para acompanhar clientes conectados. Consulte ISensorDriver::OnClientConnect para obter um exemplo de como os clientes conectados são adicionados ao mapa.
A estrutura ClientData é definida da seguinte maneira.
// Struct to keep track of connected client status.
struct ClientData
{
BOOL bListening; // Client is listening to events.
ULONG ulInterval; // Interval requested by client.
};
A definição de função segue.
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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 7,Disponível no Windows 7. |
Servidor mínimo com suporte | Nenhum compatível |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | sensorsclassextension.h |
Biblioteca | SensorsClassExtension.lib |