Partilhar via


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.
Você pode usar essa chamada como um sinal para atualizar listas e contagens de referência de aplicativos conectados.

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

Confira também

ISensorDriver

ISensorDriver::OnClientConnect