Função CoDisableCallCancellation (combaseapi.h)
Desfaz a ação de uma chamada para CoEnableCallCancellation. Desabilita o cancelamento de chamadas síncronas no thread de chamada quando todas as chamadas para CoEnableCallCancellation são balanceadas por chamadas para CoDisableCallCancellation.
Sintaxe
HRESULT CoDisableCallCancellation(
[in, optional] LPVOID pReserved
);
Parâmetros
[in, optional] pReserved
Esse parâmetro é reservado e deve ser NULL.
Valor retornado
Essa função pode retornar os valores de retorno padrão E_FAIL, E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.
Código de retorno | Descrição |
---|---|
|
O cancelamento da chamada foi desabilitado com êxito no thread. |
|
Houve chamadas mais bem-sucedidas para CoEnableCallCancellation no thread do que houve chamadas para CoDisableCallCancellation. O cancelamento ainda está habilitado no thread. |
Comentários
Quando o cancelamento de chamada é habilitado em um thread, chamadas síncronas marshaladas desse thread para objetos no mesmo computador podem sofrer uma grave degradação de desempenho. Por padrão, as chamadas síncronas não podem ser canceladas, mesmo que um objeto cancele esteja disponível. Para habilitar o cancelamento de chamadas, você deve chamar CoEnableCallCancellation primeiro.
Quando o cancelamento de chamada estiver desabilitado, as tentativas de obter um ponteiro para um objeto de chamada falharão. Se o thread de chamada já tiver um ponteiro para um objeto de chamada, as chamadas nesse objeto falharão.
A menos que você queira habilitar o cancelamento de chamadas em um thread o tempo todo, você deve emparelhar chamadas para CoEnableCallCancellation com chamadas para CoDisableCallCancellation. O cancelamento de chamada será desabilitado somente se cada chamada bem-sucedida para CoEnableCallCancellation for balanceada por uma chamada bem-sucedida para CoDisableCallCancellation.
Uma chamada será cancelável ou não dependendo do estado do thread no momento em que a chamada foi feita. Posteriormente, habilitar ou desabilitar o cancelamento de chamadas não tem efeito em nenhuma chamada pendente no thread.
Se um thread não for inicializado e reinicializado por chamadas para CoUninitialize e CoInitialize, o cancelamento de chamada será desabilitado no thread, mesmo que ele tenha sido habilitado quando o thread não foi inicializado.
Requisitos
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |