Erro: MSMQQueue.Receive falha com MQ_ERROR_INVALID_PARAMETER (0xC00E0006)

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 236151
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Com o Microsoft Message Queue Server (MSMQ), há uma falha intermitente do MSMQQueue.Receive onde eventualmente receber falha com MQ_ERROR_INVALID_PARAMETER (0xC00E0006). A mensagem de erro pareceria com o seguinte:
Um parâmetro inválido passado para uma função.
Causa
Microsoft Message Queue Server prematuramente descarrega Mtxdm.dll.
Resolução
Chame explicitamente a função de API LoadLibrary para Mtxdm.dll quando o programa começa a execução. Manter uma referência a esta biblioteca no seu código e libere esta referência com função de API FreeLibrary quando termina o programa. Isso manterá a DLL carregada na memória. Para fazer isso, conclua as seguintes etapas:

  • Usando o Microsoft Visual C++:

    Adicione o seguinte código para sua função:
    HMODULE hModuleMTXDM;// Program execution begins hModuleMTXDM = LoadLibrary(_T("mtxdm.dll"));<BR/>   .   .   .// Program execution endsFreeLibrary(hModuleMTXDM);						
  • Usando o Microsoft Visual Basic:

    1. Adicione as seguintes declarações de API a um módulo no seu projeto:
      Public Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As LongPublic Declare Function FreeLibrary Lib "kernel32" Alias "FreeLibrary" (ByVal hLibModule As Long) As Long								
    2. Adicionar uma variável para armazenar o identificador da biblioteca para seu projeto:
      Dim hModuleMTXDM as Long								
    3. Quando o programa iniciará a execução, explicitamente carregar a biblioteca:
      hModuleMTXDM = LoadLibary("mtxdm.dll")								
    4. Quando o programa está terminando, liberar a referência à biblioteca do:
      FreeLibrary(hModuleMTXDM)								
Além disso, você pode manter a referência para a DLL e apenas sair do seu aplicativo. Isso descarregará quaisquer bibliotecas que foram carregadas no seu espaço de processo.
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 236151 - Última Revisão: 12/05/2015 15:07:08 - Revisão: 1.0

Microsoft Message Queue Server (MSMQ) 1.0

  • kbnosurvey kbarchive kbmt kbbug kbpending KB236151 KbMtpt
Comentários