Compartilhar via


Erros do Compilador

As seguintes mensagens de erro são geradas durante a compilação MIDL:

Código de retorno Descrição
MIDL2000
deve especificar /c_ext para declaradores abstratos
Declaradores abstratos representam uma extensão da Microsoft para RPC e não são definidos no DCE RPC. Portanto, se o arquivo incluir declaradores abstratos, você não poderá compilar com a opção /osf , o que impõe compatibilidade estrita de DCE. As versões MIDL 3.0 e posteriores usam a opção /c_ext como padrão; a opção /osf desativa a opção /c_ext . Para obter informações sobre declaradores abstratos, consulte O corpo do ACF.
MIDL2001
instanciação de dados é ilegal; você deve usar "extern" ou "static"
A declaração e a inicialização no arquivo IDL não são compatíveis com o DCE RPC. Esse recurso é uma extensão da Microsoft que não está disponível quando você compila no modo de compatibilidade com DCE (/osf).
MIDL2002
estouro de pilha do compilador
O compilador ficou sem espaço de pilha ao processar o arquivo IDL. Esse problema pode ocorrer quando o compilador está processando uma declaração ou expressão complexa. Para resolver o problema, simplifique a declaração ou expressão complexa.
MIDL2003
Redefinição
Essa mensagem de erro pode aparecer nas seguintes circunstâncias: um tipo foi redefinido; um protótipo de procedimento foi redefinido; já existe um membro de uma estrutura ou união de mesmo nome; um parâmetro com o mesmo nome já existe no protótipo.
MIDL2004
[auto_handle] a associação será usada
Nenhum tipo de identificador foi definido como o tipo de identificador padrão. O compilador pressupõe que um identificador automático será usado como o identificador de associação para o procedimento especificado.
MIDL2005
memória insuficiente
O compilador ficou sem memória durante a compilação. Reduza o tamanho ou a complexidade do arquivo IDL ou aloque mais memória para o processo.
MIDL2006
definição recursiva
Uma estrutura ou união foi definida recursivamente. Esse erro pode ocorrer quando uma especificação de ponteiro em uma definição de estrutura aninhada é perdida.
MIDL2007
importação ignorada; arquivo já importado
Importar um arquivo IDL é uma operação idempotente. Incluí-lo mais de uma vez não tem efeito. Todos, exceto a primeira operação de importação, são ignorados.
MIDL2008
Enumerações esparsas exigem /c_ext ou /ms_ext
Atribuir valores a constantes de enumeração não é compatível com DCE RPC. Se você quiser usar as extensões da Microsoft para MIDL que permitam a atribuição de valores a constantes de enumeração, não será possível compilar com a opção /osf , que impõe compatibilidade estrita de DCE. As versões MIDL 3.0 e posteriores usam as opções /c_ext e /ms_ext como padrão; a opção /osf desativa esses comutadores de extensão.
MIDL2009
símbolo indefinido
Um símbolo indefinido foi usado em uma expressão. Esse erro pode ocorrer quando você usa um valor enumerado indefinido.
MIDL2010
tipo usado no arquivo ACF não definido no arquivo IDL
Um tipo indefinido está sendo usado.
MIDL2011
declaração de tipo não resolvido
O tipo relatado no campo informações de erro adicionais não foi definido em outro lugar no arquivo IDL.
MIDL2012
O uso de constantes de caractere largo requer /ms_ext ou /c_ext
Constantes de caractere largo são uma extensão da Microsoft para DCE IDL. Para usar o tipo de dados wchar_t, não é possível compilar com a opção /osf , que substitui as opções padrão do compilador MIDL /ms_ext e /c_ext.
MIDL2013
O uso de cadeias de caracteres largos requer /ms_ext ou /c_ext
Constantes de cadeia de caracteres largos são uma extensão da Microsoft para DCE IDL. Para usar o tipo de dados wchar_t, não é possível compilar com a opção /osf , que substitui as opções padrão do compilador MIDL /ms_ext e /c_ext.
MIDL2014
redefinição inconsistente do tipo wchar_t
O tipo wchar_t foi redefinido como um tipo que não é equivalente a UNSigned short DOS *.
MIDL2015
importlib não encontrado
O compilador não pôde localizar a biblioteca de tipos especificada pela diretiva [ importlib]. Verifique se o caminho e o nome da biblioteca estão corretos.
MIDL2016
dois blocos de biblioteca
Dois blocos de biblioteca (mesmo com nomes diferentes) no mesmo arquivo de origem são ilegais. Combine todos os elementos em um único bloco de biblioteca.
MIDL2017
a instrução dispinterface requer uma definição para IDispatch
Esse erro geralmente ocorre quando os arquivos Stdole2.tlb ou Oaidl.idl não são importados.
MIDL2018
erro ao acessar a biblioteca de tipos
O compilador não pôde localizar a biblioteca de tipos especificada. Verifique se você especificou o caminho corretamente.
MIDL2019
erro ao acessar informações de tipo
A biblioteca de tipos importada é corrompida, inválida ou apenas parcialmente construída.
MIDL2020
erro ao gerar biblioteca de tipos
Não foi possível gerar a biblioteca de tipos. Uma possível causa desse erro é especificar um caminho para o arquivo IDL com mais de 126 caracteres. Oleaut32.dll não dá suporte a nomes de caminho com mais de 126 caracteres.
MIDL2021
ID duplicada
Os aplicativos usam a instrução id em arquivos IDL para especificar um DISPID para funções membro. As funções membro podem ser propriedades ou métodos de interfaces ou dispinterfaces. Esse erro indica que o arquivo IDL especifica o mesmo número de identificador para dois métodos ou propriedades.
MIDL2022
valor inválido ou ausente para o atributo de entrada
O argumento para o atributo de entrada pode ser uma cadeia de caracteres que especifica um ponto de entrada nomeado ou um número ordinal que define o ponto de entrada. Esse argumento está ausente ou contém um valor inválido.
MIDL2023
a recuperação de erro pressupõe
O compilador MIDL encontrou caracteres ilegais no arquivo IDL.
MIDL2024
descartes de recuperação de erro
O compilador MIDL encontrou caracteres ilegais no arquivo IDL. Ele ignorará os caracteres ilegais.
MIDL2025
erro de sintaxe
O compilador detectou um erro de sintaxe na linha especificada.
MIDL2026
não é possível se recuperar de erros de sintaxe anteriores; anulando a compilação
O compilador MIDL tenta se recuperar automaticamente de erros de sintaxe adicionando ou removendo elementos sintacticos. Essa mensagem indica que, apesar dessas tentativas de recuperação, o compilador detectou muitos erros. Corrija os erros especificados e recompile.
MIDL2027
opção pragma desconhecida
Não há suporte para o pragma C especificado em MIDL. Remova o pragma do arquivo IDL.
MIDL2028
recurso não implementado
O recurso MIDL, embora parte da definição de linguagem, não é implementado no Microsoft RPC e não tem suporte do compilador MIDL. Por exemplo, os seguintes recursos de linguagem não são implementados: bitset, pipe e o tipo de caractere internacional. O recurso de linguagem não simplificado aparece no campo informações de erro adicionais da mensagem de erro.
MIDL2029
tipo não implementado
O tipo de dados especificado, embora um midl legal palavra-chave, não é implementado no Microsoft RPC.
MIDL2030
não ponteiro usado em uma operação de desreferência
Um tipo de dados que não é um ponteiro foi associado a operações de ponteiro. Você não pode acessar o objeto por meio do não ponteiro especificado.
MIDL2031
expressão tem uma divisão por zero
A expressão constante contém divisão por zero.
MIDL2032
expressão usa tipos incompatíveis
Os lados esquerdo e direito do operador em uma expressão são de tipos incompatíveis.
MIDL2033
A expressão nonarray usa o operador de índice
A expressão usa a operação de indexação de matriz em um item de dados que não é do tipo de matriz.
MIDL2034
O lado esquerdo da expressão não é avaliado como struct/union/enum
O operador de referência direta ou indireta "." ou "->" foi aplicado a um objeto de dados que não é uma estrutura, união ou enumeração. Você não pode obter uma referência direta ou indireta usando o objeto especificado.
MIDL2035
expressão constante esperada
Uma expressão constante era esperada na sintaxe. Por exemplo, os limites da matriz exigem uma expressão constante. O compilador emite essa mensagem de erro quando o limite da matriz é definido com uma variável ou um símbolo indefinido.
MIDL2036
expressão não pode ser avaliada em tempo de compilação
O compilador não pode avaliar uma expressão em tempo de compilação.
MIDL2037
expressão não implementada
Não há suporte para um recurso com suporte em versões anteriores do compilador MIDL na versão do compilador fornecida com o Microsoft RPC. Remova a expressão especificada.
MIDL2038
nenhum atributo [pointer_default] especificado, supondo [exclusivo] para todos os ponteiros não atribuídos
O compilador MIDL oferece três casos padrão diferentes para ponteiros que não têm atributos de ponteiro. Parâmetros de função que são ponteiros de nível superior padrão para ponteiros [ref]. Ponteiros inseridos em estruturas e ponteiros para outros ponteiros (não ponteiros de nível superior) padrão para o tipo especificado pelo atributo [pointer_default]. Quando nenhum atributo [pointer_default] é fornecido, esses ponteiros sem escala padrão para ponteiros exclusivos. Essa mensagem de erro indica o último caso: nenhum atributo [pointer_default] é fornecido e há pelo menos um ponteiro de nível não superior que será tratado como um ponteiro exclusivo. Para obter mais informações, consulte Tipos de ponteiro padrão.
MIDL2039
interface não é compatível com marshaling de automação
A interface não atende aos requisitos de uma interface de Automação OLE. Verifique se a interface é derivada de IUnknown ou IDispatch.
MIDL2040
[out] somente o parâmetro não pode ser um ponteiro para uma estrutura aberta
Um parâmetro [out]-only foi usado como um ponteiro para uma estrutura, conhecida como uma estrutura aberta, cujo intervalo e tamanho transmitidos são determinados em tempo de execução. O stub do servidor não sabe quanto espaço alocar para uma estrutura aberta. Use um ponteiro para um ponteiro para a estrutura aberta e verifique se o aplicativo de servidor aloca espaço suficiente para ele.
MIDL2041
[out] somente o parâmetro não pode ser uma cadeia de caracteres não dimensionada
Uma matriz com o atributo string foi declarada como um parâmetro [out]-only sem nenhuma especificação de tamanho. O stub do servidor precisa de informações de tamanho para alocar memória para a cadeia de caracteres. Você pode remover o atributo de cadeia de caracteres e adicionar o atributo [size_is] ou alterar o parâmetro para um parâmetro [in, out].
MIDL2042
[out] parâmetro não é um ponteiro
Todos os parâmetros [out] devem ser ponteiros, de acordo com a convenção de chamada por valor da linguagem de programação C. O parâmetro direcional [out] indica que o servidor transmite um valor para o cliente. Com a convenção de chamada por valor, o servidor só poderá transmitir dados para o cliente se o argumento de função for um ponteiro.
MIDL2043
estrutura aberta não pode ser um parâmetro
Uma estrutura aberta contém uma matriz compatível como o último elemento. Uma estrutura ou união é truncada quando o último elemento dessa estrutura ou união é uma matriz compatível.
MIDL2044
[out] identificador de contexto/identificador genérico deve ser especificado como um ponteiro para esse tipo de identificador
Um parâmetro de identificador definido pelo usuário ou identificador de contexto com o atributo direcional [out] deve ser um ponteiro para um ponteiro.
MIDL2045
o identificador de contexto não deve derivar de um tipo que tenha o atributo [transmit_as]
Os identificadores de contexto devem ser transmitidos como tipos de identificador de contexto. Eles não podem ser transmitidos como outros tipos e não podem derivar de [transmit_is], [represent_as], [wire_marshal]ou [user_marshal].
MIDL2046
não é possível especificar um número variável de argumentos para um procedimento remoto
Chamadas de procedimento remoto que especificam um número variável de argumentos em tempo de compilação não são compatíveis com a definição de RPC do DCE. Você não pode usar um número variável de argumentos no Microsoft RPC.
MIDL2047
parâmetro nomeado não pode ser "void"
Um parâmetro com o tipo base void é especificado com um nome.
MIDL2048
parâmetro deriva de "coclass" ou "module"
A coclass especifica um objeto de nível superior que contém interfaces e dispinterfaces. Ele não pode ser passado como um parâmetro.
MIDL2049
somente o primeiro parâmetro pode ser um identificador de associação; você deve especificar a opção /ms_ext
O DCE RPC permite que apenas o primeiro parâmetro seja um identificador de associação. A compilação com a opção /osf desativa o comutador /ms_ext padrão que dá suporte a vários parâmetros de identificador e manipula parâmetros em diferentes da posição mais à esquerda.
MIDL2050
não pode usar [comm_status] em um parâmetro e um tipo de retorno
O procedimento e um de seus parâmetros têm o atributo [comm_status]. O atributo [comm_status] especifica que apenas um objeto de dados por vez pode ser do tipo error_status_t.
MIDL2051
O atributo [local] em um procedimento requer /ms_ext
O atributo [local] é uma extensão da Microsoft para IDL de DCE. Para usar esse atributo em uma função, você não pode compilar com a opção /osf . A opção /osf substitui os comutadores padrão do compilador MIDL /ms_ext e /c_ext.
MIDL2052
atributos de propriedade só podem ser usados com procedimentos
Uso inadequado de um atributo [propget], [propput]ou [propputref]. Verifique se você digitou o nome da função da propriedade corretamente e se a propriedade e a função têm o mesmo nome.
MIDL2053
um procedimento pode não ter mais de um atributo de propriedade
No máximo, apenas um dos atributos [propget], [propput]ou [propputref] pode ser especificado para uma função.
MIDL2054
o procedimento tem uma combinação ilegal de atributos de operação
Determinados atributos não podem ser usados em conexão com outros atributos. Verifique a Referência de Linguagem MIDL para obter os requisitos exatos e a sintaxe dos atributos usados neste procedimento.
MIDL2055
campo derivado de uma matriz compatível deve ser o último membro da estrutura
A estrutura contém uma matriz compatível que não é o último elemento na estrutura. A matriz de conformidade deve aparecer como o último elemento de estrutura.
MIDL2056
rótulo duplicado [case]
Um rótulo de caso duplicado foi especificado. O rótulo duplicado é exibido.
MIDL2057
nenhum caso [padrão] especificado para união discriminada
Uma união discriminada foi especificada sem um caso padrão.
MIDL2058
A expressão de atributo não pode ser resolvida
A expressão associada ao atributo não pode ser resolvida. Esse erro geralmente ocorre quando uma variável que aparece na expressão não é definida. Por exemplo, o erro pode ocorrer quando a variável s não está definida e é usada pelo atributo [size_is].
MIDL2059
a expressão de atributo deve ser do tipo integral, sem suporte para expressões de 64 bits
A variável de atributo ou expressão especificada deve ser um tipo integral. Esse erro ocorre quando o tipo attribute-expression não resolve a um inteiro.
MIDL2060
[byte_count] requer /ms_ext
O atributo [byte_count] é uma extensão da Microsoft para IDL de DCE. Para usar esse atributo, você não pode compilar com a opção /osf , que substitui as opções padrão do compilador MIDL /ms_ext e /c_ext.
MIDL2061
[byte_count] só pode ser aplicado a parâmetros out do tipo de ponteiro
O atributo [byte_count] só pode ser aplicado a parâmetros [out], e todos os parâmetros [out] devem ser tipos de ponteiro.
MIDL2062
[byte_count] não pode ser especificado em um ponteiro para uma matriz ou estrutura compatível
O atributo [byte_count] não pode ser aplicado a uma matriz ou estrutura compatível.
MIDL2063
parâmetro que especifica a contagem de bytes não é [in] apenas ou o parâmetro de contagem de bytes não é [out] apenas
O valor associado ao [byte_count] deve ser transmitido do cliente para o servidor; deve ser um parâmetro [in]. O parâmetro [byte_count] não precisa ser um parâmetro [in, out].
MIDL2064
parâmetro que especifica a contagem de bytes não é um tipo integral
O valor associado à contagem de bytes deve ser o tipo inteiro int, pequeno, curto ou longo.
MIDL2065
[byte_count] não pode ser especificado em um parâmetro com atributos de tamanho
O atributo [byte_count] não pode ser usado com outros atributos de tamanho, como [size_is] ou [length_is].
MIDL2066
[case] expressão não é constante
A expressão especificada para o rótulo de maiúsculas e minúsculas não é uma constante.
MIDL2067
[case] expressão não é do tipo integral
A expressão especificada para o rótulo de maiúsculas e minúsculas não é um tipo inteiro.
MIDL2068
especificar [context_handle] em um tipo diferente de void * requer /ms_ext
Para compatibilidade DCE-RPC, o identificador de contexto deve ser um ponteiro do tipo void *. Se você quiser que os identificadores de contexto sejam associados a tipos diferentes do void *, não use a opção /osf do compilador MIDL, que substitui a opção padrão do compilador MIDL /ms_ext.
MIDL2069
não é possível especificar mais de um parâmetro com cada um dos comm_status/fault_status
Um procedimento pode ter apenas um parâmetro com o atributo [comm_status]. Ele pode ter no máximo um parâmetro com o atributo [fault_status].
MIDL2070
comm_status/fault_status parâmetro deve ser um parâmetro de ponteiro somente [out]
Os tipos de código de erro [comm_status] e [fault_status] são transmitidos de servidor para cliente e, portanto, devem ser especificados como um parâmetro [out]. Devido às restrições na linguagem de programação C, todos os parâmetros [out] devem ser ponteiros.
MIDL2071
Erro de sintaxe do ponto de extremidade
A sintaxe do ponto de extremidade está incorreta.
MIDL2072
atributo inaplicativo
O atributo especificado não pode ser aplicado neste constructo. Por exemplo, o atributo de cadeia de caracteres se aplica a matrizes char ou ponteiros char e não pode ser aplicado a uma estrutura que consiste em dois inteiros curtos :
typedef [string] struct moo 
{
    short x;
    short y;
};
MIDL2073
[allocate] requer /ms_ext
O atributo allocate representa uma extensão da Microsoft que não é definida como parte do DCE RPC. Para usar esse atributo, você não pode compilar com a opção /osf , que substitui a opção padrão do compilador MIDL /ms_ext
MIDL2074
modo inválido [allocate]
Um modo inválido para o constructo de atributo [allocate] foi especificado. Os quatro modos válidos são single_node, all_nodes, on_null e sempre.
MIDL2075
atributos length não podem ser aplicados com atributo de cadeia de caracteres
Quando o atributo string é usado, os arquivos stub gerados chamam a função strlen para determinar o comprimento da cadeia de caracteres. Não use o atributo length e o atributo de cadeia de caracteres para a mesma variável.
MIDL2076
[last_is] e [length_is] não podem ser especificados ao mesmo tempo
[last_is] e [length_is] foram especificados para a mesma matriz. Esses atributos estão relacionados da seguinte maneira: length = last first + 1. Como cada valor pode ser derivado do outro, não especifique ambos.
MIDL2077
[max_is] e [size_is] não podem ser especificados ao mesmo tempo
[ max_is] e [ size_is] foram especificados para a mesma matriz. Esses atributos estão relacionados da seguinte maneira: max = size + 1. Como cada valor pode ser derivado do outro, não especifique ambos.
MIDL2078
nenhum atributo [switch_is] especificado no uso da união
Nenhum discriminante foi especificado para a união. O atributo [switch_is] indica o discriminador usado para selecionar entre os campos de união.
MIDL2079
no [uuid] especificado
Nenhuma UUID foi especificada para a interface.
MIDL2080
[uuid] ignorado na interface [local]
Usar o atributo [local] em uma interface de objeto faz com que o compilador MIDL ignore o atributo [uuid]. Você não pode usar ambos os atributos em uma interface RPC.
MIDL2081
incompatibilidade de tipo entre expressões de atributo de tamanho e comprimento
As expressões de atributo de tamanho e comprimento devem ser dos mesmos tipos. Por exemplo, esse aviso é emitido quando a variável de atributo para a expressão [size_is] é do tipo long sem sinal e a variável de atributo para a expressão [length_is] é do tipo long.
MIDL2082
O atributo [string] deve ser especificado como "byte", "char" ou "wchar_t" matriz ou ponteiro
Um atributo de cadeia de caracteres não pode ser aplicado a um ponteiro ou matriz cujo tipo base não é um byte, char ou struct no qual os membros são todos do tipo byte ou char .
MIDL2083
incompatibilidade entre o tipo da expressão [switch_is] e o tipo de comutador da união
Se a união [switch_type] não for especificada, o tipo de comutador será do mesmo tipo que o campo [switch_is].
MIDL2084
[transmit_as] não deve ser aplicado a um tipo que deriva de um identificador de contexto
Os identificadores de contexto não podem ser transmitidos como outros tipos.
MIDL2085
[transmit_as] deve especificar um tipo transmissível
O tipo [transmit_as] especificado deriva de um tipo que não pode ser transmitido pelo Microsoft RPC, como void, void *ou int. Usar um tipo base RPC definido; no caso de int, adicione especificadores de tamanho como pequeno, curto ou longo para qualificar o int.
MIDL2086
o tipo transmitido para [transmit_as] e [represent_as] não deve ser um ponteiro ou derivar de um ponteiro
O tipo transmitido não pode ser um ponteiro ou derivar de um ponteiro.
MIDL2087
o tipo apresentado para [transmit_as] e [represent_as] não deve derivar de uma matriz conformante/variável, seu ponteiro equivalente ou uma estrutura de conformidade/variação
O tipo ao qual [transmit_as] foi aplicado não pode derivar de uma matriz ou estrutura compatível (uma matriz ou estrutura cujo tamanho é determinado em tempo de execução).
MIDL2088
O formato [uuid] está incorreto
O formato UUID não está em conformidade com a especificação. A UUID deve ser uma cadeia de caracteres que consiste em cinco sequências de dígitos hexadecimal de comprimento 8, 4, 4, 4 e 12 dígitos. "12345678-1234-ABCD-EF01-28A49C28F17D" é uma UUID válida. Use a função UuidCreate ou um utilitário para gerar uma UUID válida.
MIDL2089
uuid não é um número hexadecimal
A UUID especificada para a interface contém caracteres inválidos em uma representação de número hexadecimal. Os caracteres 0 a 9 e A a F são válidos em uma representação hexadecimal.
MIDL2090
parâmetros opcionais devem vir após os parâmetros necessários
Para obter uma descrição da ordenação de listas de parâmetros, consulte [opcional] na Referência de Linguagem MIDL.
MIDL2091
[dllname] necessário quando [entrada] é usado
Se você estiver especificando um ponto de entrada em uma DLL, também deverá especificar o nome dessa DLL usando o atributo [dllname].
MIDL2092
[associável] é inválido sem [propget], [propput]ou [propputref]
O atributo [associável] é válido apenas em uma propriedade, portanto, você também deve especificar uma das funções de acesso à propriedade ou de configuração de propriedade.
MIDL2093
os procedimentos com [propput] ou [propputref] devem ter pelo menos um parâmetro
Um procedimento [propput] ou [ propputref] deve ter pelo menos um parâmetro [in] com a propriedade a ser definida; um procedimento [propget] deve ter pelo menos um parâmetro [out, retval] para receber a propriedade ou referência.
MIDL2094
O atributo [id] é necessário
Essa função membro, devido à sintaxe dispinterface usada, requer um DISPID, que você especifica usando o atributo [ id]. Ao especificar uma dispinterface usando propriedades e métodos, você deve especificar um DISPID para cada propriedade e método.
MIDL2095
o nome da interface especificado no ACF não corresponde ao especificado no arquivo IDL
No modo do compilador atual, o nome que segue a interface palavra-chave no ACF deve ser o mesmo que o nome que segue a interface palavra-chave no arquivo IDL. Os nomes de interface nos arquivos IDL e ACF podem ser diferentes quando você compila com a opção /acf do compilador MIDL.
MIDL2096
atributo duplicado
Atributos duplicados ou conflitantes foram especificados. Esse erro geralmente ocorre quando dois atributos são mutuamente exclusivos. Por exemplo, os atributos [código] e [nocode] não podem ser usados ao mesmo tempo.
MIDL2097
parâmetro com o atributo [comm_status] ou [fault_status] deve ser um ponteiro para digitar error_status_t
Quando [fault_status] ou [comm_status] é usado como um atributo de parâmetro, o parâmetro deve ser um parâmetro [out] do tipo error_status_t. Se ocorrer um erro de servidor, o parâmetro será definido como o código de erro. Quando a chamada remota é concluída com êxito, o procedimento define o valor.
MIDL2098
um procedimento [local] não pode ser especificado no arquivo ACF
Um procedimento local foi especificado no ACF. O procedimento local só pode ser especificado no arquivo IDL.
MIDL2099
o tipo especificado não é definido como um identificador
O tipo especificado no atributo [implicit_handle] não é definido como um tipo de identificador. Altere a definição de tipo ou o nome de tipo especificado pelo atributo .
MIDL2100
procedimento indefinido
Um atributo foi aplicado a um procedimento no ACF e esse procedimento não é definido no arquivo IDL.
MIDL2101
esse parâmetro não existe no arquivo IDL
Um parâmetro especificado no ACF não existe na definição no arquivo IDL. Todos os parâmetros, funções e definições de tipo que aparecem no ACF devem corresponder a parâmetros, funções e tipos definidos anteriormente no arquivo IDL.
MIDL2102
não há suporte para esse constructo de limites de matriz
Atualmente, o MIDL dá suporte à expressão dos limites superior e inferior de uma matriz no formato Array[Lower .. Superior] somente quando a constante que especifica o limite inferior da matriz é resolvida para o valor zero.
MIDL2103
a especificação associada à matriz é inválida
A especificação do usuário de limites de matriz para a matriz de tamanho fixo é inválida. Por exemplo:
typedef short Array[-1]
MIDL2104
não há suporte para um ponteiro para uma matriz compatível ou uma matriz que contém uma matriz compatível
Uso ilegal de matriz em conformidade. Para regras que regem matrizes em conformidade, consulte Matrizes e RPC.
MIDL2105
pointee/array não deriva nenhum tamanho
Uma matriz compatível foi especificada sem nenhuma especificação de tamanho. Você pode especificar o tamanho com o atributo [max_is] ou [size_is].
MIDL2106
somente matrizes fixas e SAFEARRAYs são legais em uma biblioteca de tipos
Você usou um tipo de matriz dentro de uma instrução de biblioteca que não pode ser usada em uma biblioteca de tipos.
MIDL2107
SAFEARRAYs só são legais dentro de um bloco de biblioteca
O compilador MIDL não reconhece um SAFEARRAY como um tipo de dados válido, exceto ao gerar uma biblioteca de tipos.
MIDL2108
constante de caractere mal formado
O caractere de fim de linha não é permitido em constantes de caracteres.
MIDL2109
fim do arquivo encontrado no comentário
O caractere de fim do arquivo foi encontrado em um comentário.
MIDL2110
fim do arquivo encontrado na cadeia de caracteres
O caractere de fim de arquivo foi encontrado em uma cadeia de caracteres.
MIDL2111
O comprimento do identificador excede 31 caracteres
Os identificadores são limitados a 31 caracteres alfanuméricos. Nomes de identificador com mais de 31 caracteres são truncados.
MIDL2112
fim da linha encontrada na cadeia de caracteres
O caractere de fim de linha foi encontrado na cadeia de caracteres. Verifique se você incluiu o caractere de aspas duplas que encerra a cadeia de caracteres.
MIDL2113
constante de cadeia de caracteres excede o limite de 255 caracteres
A cadeia de caracteres excedeu o comprimento máximo permitido de 255 caracteres.
MIDL2114
identificador excede o limite de 255 caracteres e foi truncado
O identificador excedeu o comprimento máximo permitido de 255 caracteres. Caracteres em excesso no identificador são truncados.
MIDL2115
constante muito grande
A constante é muito grande para ser representada internamente.
MIDL2116
erro numérico de análise
O compilador não pôde analisar o identificador numérico.
MIDL2117
erro ao abrir o arquivo
O sistema operacional relatou um erro ao tentar abrir um arquivo de saída. Esse erro pode ser causado por um nome muito longo para o sistema de arquivos ou por um nome de arquivo duplicado.
MIDL2118
associação de erro à função
MIDL2119
erro ao inicializar o OLE
MIDL2120
biblioteca de carregamento de erros
MIDL2121
[out] somente o parâmetro não deve derivar de uma matriz/ponteiro [exclusivo] ou [ptr] de nível superior
Um ponteiro exclusivo não pode ser um parâmetro [out]-only. Por definição, um ponteiro exclusivo pode mudar de NULL para não NULL. Nenhuma informação sobre o parâmetro [out]-only é passada de cliente para servidor.
MIDL2122
O atributo não é aplicável a essa união não rpcable
Somente os atributos [switch_is] e [switch_type] se aplicam a uma união transmitida como parte de uma chamada de procedimento remoto.
MIDL2123
expressão usada para um atributo de tamanho não deve derivar de um parâmetro [out]-only
O valor de um parâmetro [out]-only não é transmitido para o servidor e não pode ser usado para determinar o comprimento ou o tamanho do parâmetro [in].
MIDL2124
expressão usada para um atributo de comprimento para um parâmetro [in] não pode derivar de um parâmetro [out]-only
O valor de um parâmetro [out]-only não é transmitido para o servidor e não pode ser usado para determinar o comprimento ou o tamanho do parâmetro [in].
MIDL2125
uso de "int" precisa de /c_ext
MIDL é uma linguagem fortemente tipada. Todos os parâmetros transmitidos pela rede devem ser derivados de um dos tipos base MIDL. O tipo int não é definido como parte de MIDL. Os dados transmitidos devem incluir um especificador de tamanho: pequeno, curto ou longo. Os dados que não são transmitidos pela rede podem ser incluídos em uma interface; use a opção /c_ext .
MIDL2126
o campo struct/union não deve ser "void"
Os campos em uma estrutura ou união devem ser declarados como de um tipo base específico compatível com MIDL ou um tipo derivado dos tipos base. Tipos nulos não são permitidos em operações remotas.
MIDL2127
O elemento array não deve ser nulo
Um elemento de matriz não pode ser nulo.
MIDL2128
o uso de qualificadores de tipo e/ou modificadores precisa de /c_ext
Modificadores de tipo como _cdecl e _far só poderão ser compilados se você especificar a opção /c_ext .
MIDL2129
o campo struct/union não deve derivar de uma função
Os campos de uma estrutura ou união devem ser tipos base MIDL ou tipos derivados desses tipos base. As funções não são legais em campos de estrutura ou união.
MIDL2130
O elemento array não deve ser uma função
Um elemento de matriz não pode ser uma função.
MIDL2131
parâmetro não deve ser uma função
O parâmetro para um procedimento remoto deve ser uma variável de um tipo especificado. Uma função não pode ser um parâmetro para o procedimento remoto.
MIDL2132
struct/union with bit fields needs /c_ext
Você deve especificar a opção /c_ext do compilador MIDL para permitir campos de bits em estruturas que não são transmitidas em uma chamada de procedimento remoto.
MIDL2133
especificação de campo de bit em um tipo outro que "int" é uma extensão não compatível com ANSI
A especificação da linguagem de programação ANSI C não permite que campos de bits sejam aplicados a tipos noninteger.
MIDL2134
a especificação de campo bit só pode ser aplicada a tipos integrais simples
A especificação da linguagem de programação ANSI C não permite que campos de bits sejam aplicados a tipos noninteger.
MIDL2135
o campo struct/union não deve derivar de handle_t ou de um identificador de contexto
Os identificadores de contexto não podem ser transmitidos como parte de outra estrutura. Eles devem ser transmitidos como identificadores de contexto.
MIDL2136
O elemento array não deve derivar de handle_t ou de um identificador de contexto
Os identificadores de contexto não podem ser transmitidos como parte de uma matriz.
MIDL2137
esta especificação de união precisa de /c_ext
Uma união que aparece na definição de interface deve ser associada ao discriminador ou declarada como local. Os dados que não são transmitidos pela rede podem ser declarados implicitamente como locais quando você usa a opção /c_ext , que é o padrão MIDL. Não é possível compilar essa IDL com a opção /osf .
MIDL2138
parâmetro derivado de um "int" deve ter o especificador de tamanho "pequeno", "curto" ou "longo" com o "int"
O tipo int é apenas um tipo MIDL válido em plataformas de 32 bits, em sistemas de 16 bits int deve ser acompanhado por uma especificação de tamanho. Use um dos especificadores de tamanho pequeno, curto ou longo.
MIDL2139
o tipo do parâmetro não pode derivar de void ou void*
MIDL é uma linguagem fortemente tipada. Todos os parâmetros transmitidos pela rede devem ser derivados de um dos tipos base MIDL. MIDL não dá suporte a void como um tipo base. Você deve alterar a declaração para um tipo MIDL válido.
MIDL2140
não há suporte para o parâmetro derivado de um struct/união que contém campos de bits
Os campos de bits não são definidos como um tipo de dados válido pelo DCE RPC.
MIDL2141
uso de um parâmetro derivado de um tipo que contém type-modifiers/type-qualifiers precisa de /c_ext
O uso de palavras-chave como far, near, const e volatile no arquivo IDL é uma extensão da Microsoft para DCE RPC. Essas palavras-chave não estão disponíveis quando você compila com a opção /osf , que desativa a opção de extensão /c_ext padrão.
MIDL2142
O parâmetro não deve derivar de um ponteiro para uma função
As bibliotecas de tempo de execução RPC transmitem um ponteiro e seus dados associados entre o cliente e o servidor. Os ponteiros para funções não podem ser transmitidos como parâmetros porque a função não pode ser transmitida pela rede.
MIDL2143
parâmetro não deve derivar de uma união não compatível compc
A união deve ser associada a um discriminador. Use os atributos [switch_is] e [switch_type].
MIDL2144
tipo de retorno deriva de um "int". Você deve usar especificadores de tamanho com o "int"
Em sistemas de 16 bits, o tipo int não é um tipo MIDL válido, a menos que seja acompanhado por uma especificação de tamanho. Use um dos especificadores de tamanho pequeno, curto ou longo.
MIDL2145
o tipo de retorno não deve derivar de um ponteiro nulo
MIDL é uma linguagem fortemente tipada. Todos os parâmetros transmitidos pela rede devem ser derivados de um dos tipos base MIDL. Os tipos void não são definidos como parte do MIDL. Você deve alterar a declaração para um tipo MIDL válido.
MIDL2146
o tipo de retorno não deve derivar de uma estrutura/união que contenha campos de bits
Os campos de bits não são definidos como um tipo de dados válido pelo DCE RPC.
MIDL2147
o tipo de retorno não deve derivar de uma união não compatível com pc
A união deve ser associada a um discriminador. Use os atributos [switch_is] e [switch_type].
MIDL2148
o tipo de retorno não deve derivar de um ponteiro para uma função
As bibliotecas de tempo de execução RPC transmitem um ponteiro e seus dados associados entre o cliente e o servidor. Ponteiros para funções não podem ser transmitidos como parâmetros porque o RPC não define um método para transmitir a função associada pela rede.
MIDL2149
Não há suporte para inicializadores compostos
O DCE RPC dá suporte apenas à inicialização simples. A estrutura ou matriz não pode ser inicializada no arquivo IDL.
MIDL2150
Os atributos ACF no arquivo IDL precisam da opção /app_config
Uma extensão da Microsoft permite que você especifique atributos ACF no arquivo IDL. Use a opção /app_config para ativar essa extensão.
MIDL2151
o comentário em linha único precisa de /ms_ext ou /c_ext
Comentários de linha única que usam dois caracteres de barra (//) representam uma extensão da Microsoft para DCE RPC. Você não poderá usar comentários de linha única se estiver compilando com a opção /osf .
MIDL2152
O formato [versão] está incorreto
O número de versão da interface no cabeçalho da interface deve ser especificado no formato principal. menor, em que cada número pode variar de 0 a 65535.
MIDL2153
"assinado" precisa de /ms_ext ou /c_ext
O uso do palavra-chave assinado é uma extensão da Microsoft para DCE RPC. Você não poderá usar a opção /osf se quiser usar esse recurso.
MIDL2154
incompatibilidade no tipo de atribuição
O tipo da variável não corresponde ao tipo do valor atribuído à variável.
MIDL2155
declaration deve ser do formato: const <type> \<declarator> = <initializing expression>
A declaração não é compatível com a sintaxe DCE RPC. Use a opção /ms_ext ou /c_ext modo do compilador MIDL.
MIDL2156
declaração deve ter "const"
As declarações no arquivo IDL devem ser expressões constantes que usam o palavra-chave const, por exemplo:
const short x = 2;
MIDL2157
struct/union/enum não deve ser definido em uma especificação de tipo de parâmetro
A estrutura, a união ou o tipo enumerado devem ser explicitamente declarados fora do protótipo da função.
MIDL2158
O atributo [allocate] deve ser aplicado somente em tipos de ponteiro não nulos
O atributo [allocate] foi projetado para estruturas de dados complexas baseadas em ponteiro. Quando o atributo [allocate] é especificado, o arquivo stub atravessa a estrutura de dados para calcular o tamanho total de todos os objetos acessíveis do ponteiro e de todos os outros ponteiros na estrutura de dados. Altere o tipo para um tipo de ponteiro nãovoid ou remova o atributo [allocate] e use outro método para determinar seu tamanho de alocação, como o operador sizeof .
MIDL2159
array ou constructo de ponteiro equivalente não pode derivar de uma união nãocapsulada
Cada união deve ser associada a um discriminador. Matrizes de uniões não são permitidas porque não fornecem o discriminador associado. Matrizes de estruturas nas quais a estrutura empacota a união e seu discriminante são permitidas porque os stubs podem usar o discriminante para determinar o tamanho de cada união.
MIDL2160
O campo não deve derivar de um tipo de error_status_t
O tipo error_status_t só pode ser usado como um parâmetro ou um tipo de retorno. Ele não pode ser inserido no campo de uma estrutura ou união.
MIDL2161
union tem pelo menos um braço sem um rótulo de maiúsculas e minúsculas
A declaração de união não corresponde à sintaxe MIDL necessária para a união. Cada braço de união requer um rótulo de caso ou rótulo padrão que seleciona esse braço de união.
MIDL2162
parâmetro ou valor retornado não deve derivar de um tipo que tenha [ignorar] aplicado a ele
O atributo [ignore] é um atributo de campo que pode ser aplicado somente a campos, como campos de estruturas e matrizes. O atributo [ignore] indica que o stub não deve desreferenciar o ponteiro durante a transmissão e não é permitido quando está em conflito com outros atributos que devem ser desreferenciados, como parâmetros [out] e valores retornados de função.
MIDL2163
pointer já tem um atributo de ponteiro aplicado a ele
Somente um dos atributos de ponteiro, [ref], [unique], ou [ptr], pode ser aplicado a um único ponteiro.
MIDL2164
field/parameter não deve derivar de uma estrutura recursiva por meio de um ponteiro ref
Por definição, um ponteiro de referência não pode ser definido como NULL. Uma estrutura de dados recursiva definida com um ponteiro de referência não tem elementos NULL e, por convenção, não está seminando. Use um atributo de ponteiro [exclusivo] para permitir que a estrutura de dados especifique um elemento NULL ou redefina a estrutura de dados como uma estrutura de dados não recursiva.
MIDL2165
uso de campo derivado de um ponteiro nulo precisa de /c_ext
O tipo void * e outros tipos e qualificadores de tipo que não têm suporte no DCE IDL são permitidos no arquivo IDL somente quando você usa as configurações do compilador padrão MIDL. O uso da opção /osf substitui esse padrão. Se você precisar compilar no modo de compatibilidade osf, precisará redefinir o tipo de ponteiro.
MIDL2166
o uso desse atributo precisa de /ms_ext
Esse recurso de linguagem é uma extensão da Microsoft para DCE IDL. Você não poderá usar esse recurso se estiver compilando no modo de compatibilidade osf ( /osf ).
MIDL2167
esse atributo só é permitido com novas bibliotecas de tipos de formato
Para usar esse atributo, você precisa da versão do Oleaut32.dll fornecida com o Windows 2000 ou posterior.
MIDL2168
uso de wchar_t precisa de /ms_ext ou /c_ext
O tipo de caractere largo representa uma extensão para DCE IDL. O compilador MIDL não aceita o tipo de caractere largo quando você especifica a opção /osf .
MIDL2169
campos sem nome precisam de /ms_ext ou /c_ext
O DCE IDL não dá suporte ao uso de estruturas ou uniões não nomeadas inseridas em outras estruturas ou uniões. No DCE IDL, todos esses campos inseridos devem ser nomeados. O compilador MIDL não permite seu uso quando você especifica a opção /osf .
MIDL2170
campos sem nome podem derivar somente de tipos de struct/união
A extensão da Microsoft para a IDL de DCE que dá suporte a campos sem nome se aplica apenas a estruturas e uniões. Você deve atribuir um nome ao campo ou redefinir o campo para cumprir essa restrição.
MIDL2171
campo de uma união não pode derivar de uma matriz compatível/variável ou seu ponteiro equivalente
A matriz em conformidade não pode aparecer sozinha na união, mas deve ser acompanhada pelo valor que especifica o tamanho da matriz. Em vez de usar a matriz como o braço de união, use uma estrutura que consiste na matriz compatível e no identificador que especifica seu tamanho.
MIDL2172
nenhum atributo [pointer_default] especificado, supondo que [ptr] para todos os ponteiros não atribuídos na interface
A implementação de IDL de DCE especifica que todos os ponteiros em cada arquivo IDL devem ser associados a atributos de ponteiro. Quando um atributo de ponteiro explícito não é atribuído ao parâmetro ou tipo de ponteiro e nenhum atributo [pointer_default] é especificado no arquivo IDL, o atributo de ponteiro completo ptr é associado ao ponteiro. Você pode alterar os atributos de ponteiro usando atributos de ponteiro explícitos, especificando um atributo [pointer_default] ou especificando a opção /ms_ext para alterar o padrão para ponteiros não atribuídos para [exclusivo].
MIDL2173
inicializar a expressão deve resolve a uma expressão constante
Se uma expressão for usada como inicializador, a expressão deverá ser uma expressão constante. Isso é verdadeiro em todos os modos do compilador MIDL. A expressão deve ser resolvível em tempo de compilação. Especifique uma constante literal ou uma expressão que seja resolvida para uma constante, em vez de uma variável.
MIDL2174
a expressão de atributo deve ser do tipo inteiro, char, booliano ou enumeração
O tipo especificado não resolve a um tipo de comutador válido. Use um tipo inteiro, caractere, byte, booliano ou enumerado ou um tipo derivado de um desses tipos.
MIDL2175
constante ilegal
A constante especificada está fora do intervalo válido para o tipo especificado.
MIDL2176
atributo não implementado; Ignorado
O atributo especificado não é implementado nesta versão do Microsoft RPC. O compilador MIDL continua processando o arquivo IDL como se o atributo não estivesse presente.
MIDL2177
o tipo de retorno não deve derivar de um ponteiro [ref]
Os valores de retorno de função definidos para serem tipos de ponteiro devem ser especificados como ponteiros [exclusivos] ou completos . Você não pode usar ponteiros de referência.
MIDL2178
A expressão de atributo deve ser um nome de variável ou uma expressão de desreferência de ponteiro nesse modo. Você deve especificar a opção /ms_ext
O compilador de IDL do DCE requer que o tamanho associado ao atributo [size_is] seja especificado por uma variável ou variável de ponteiro. Se você quiser aproveitar a extensão da Microsoft que permite que o atributo [size_is] seja definido por uma expressão constante, não será possível usar a opção do compilador /osf .
MIDL2179
O parâmetro não deve derivar de uma união nãocapsulada recursiva
Uma união deve incluir um discriminador, de modo que uma união não possa ter outra união como elemento. Uma união só pode ser inserida em outra união quando faz parte de uma estrutura que inclui o discriminador.
MIDL2180
O parâmetro binding-handle não pode ser somente [out]
O parâmetro handle identificado pelo compilador MIDL como o identificador de associação para essa operação deve ser um parâmetro [in]. [out]-only parâmetros são indefinidos no stub do cliente e o identificador de associação deve ser definido no cliente.
MIDL2181
ponteiro para um identificador não pode ser [exclusivo] ou [ptr]
Você não pode usar os atributos de ponteiro exclusivos e completos para um ponteiro para um identificador. Esses atributos permitem o valor NULL e o identificador de associação não pode ser NULL. Use o atributo [ref] para derivar o parâmetro binding-handle de ponteiros de referência.
MIDL2182
O parâmetro que não é um identificador de associação não deve derivar de handle_t
O tipo de identificador primitivo handle_t não é um tipo de dados válido transmitido pela rede. Altere o tipo de parâmetro para um tipo diferente de handle_t ou remova o parâmetro .
MIDL2183
fim inesperado do arquivo encontrado
O compilador MIDL encontrou o final do arquivo antes que ele pudesse resolve com êxito todos os elementos sintáticos do arquivo. Verifique se o caractere de chave direita de terminação (}) está presente no final do arquivo ou marcar a sintaxe.
MIDL2184
tipo derivado de handle_t não deve ter [transmit_as] aplicado a ele
O tipo de identificador primitivo handle_t não é transmitido pela rede.
MIDL2185
[context_handle] não deve ser aplicado a um tipo que tenha [identificador] aplicado a ele
Os atributos [context_handle] e [handle] não podem ser aplicados ao mesmo tipo.
MIDL2186
[handle] não deve ser especificado em um tipo derivado de void ou void *
Um tipo especificado com o atributo [handle] pode ser transmitido pela rede, mas o tipo void* não é um tipo transmissível. O tipo de identificador deve resolve a um tipo que deriva dos tipos base transmissíveis.
MIDL2187
O parâmetro deve ter [in], [out] ou [in,out] nesse modo. Você deve especificar /ms_ext ou /c_ext
O compilador de IDL do DCE requer que todos os parâmetros tenham parâmetros direcionais explícitos. Para usar as extensões da Microsoft para DCE IDL, você não pode usar a opção /osf , que substitui /ms_ext e /c_ext.
MIDL2188
O tipo transmitido não pode derivar de "void" para [transmit_as], [represent_as], [wire_marshal], [user_marshal]
O atributo [transmit_as] aplica-se somente a tipos de ponteiro. Use o tipo void* no lugar de void.
MIDL2189
"void" deve ser especificado na primeira e única especificação de parâmetro
O palavra-chave nulo aparece incorretamente com outros parâmetros de função. Para especificar uma função sem parâmetros, o palavra-chave void deve ser o único elemento da lista de parâmetros, como no exemplo a seguir:
void Moo(void)
MIDL2190
[switch_is] deve ser especificado apenas em um tipo derivado de uma união não recapitulada
A palavra-chave [switch_is] é aplicada incorretamente. Ele só pode ser usado com tipos de união não encapsulados.
MIDL2191
estruturas stringable não são implementadas nesta versão
A IDL DCE permite que o atributo [string] seja aplicado a uma estrutura cujos elementos consistem apenas em caracteres, bytes ou tipos que resolve a caracteres ou bytes. Não há suporte para essa funcionalidade no Microsoft RPC. O atributo [string] não pode ser aplicado à estrutura como um todo. No entanto, ele pode ser aplicado a cada matriz individual.
MIDL2192
o tipo switch só pode ser integral, char, booliano ou enumerado
O tipo especificado não resolve a um tipo de comutador válido. Use um inteiro, caractere, byte, booliano, tipo de enumeração ou um tipo derivado de um desses tipos.
MIDL2193
[handle] não deve ser especificado em um tipo derivado de handle_t
Um tipo de identificador deve ser definido usando um e apenas um dos tipos de identificador ou atributos. Use o tipo primitivo handle_t ou o atributo [handle], mas não ambos. O tipo de identificador definido pelo usuário deve ser transmissível, mas o tipo de handle_t não é transmitido na rede.
MIDL2194
parâmetro derivado de handle_t não deve ser um parâmetro [out]
Um identificador do tipo primitivo handle_t é significativo apenas para o lado do aplicativo no qual ele é definido. O tipo handle_t não é transmitido na rede.
MIDL2195
expressão de atributo deriva de [unique] ou [ptr] pointer dereference
Embora os atributos [exclusivo] e de ponteiro completo permitam que os ponteiros tenham valores NULL , a expressão que define o atributo size ou length nunca deve ter um valor NULL . Quando ponteiros são usados, MIDL restringe expressões a ponteiros [ref].
MIDL2196
"cpp_quote" requer /ms_ext
O atributo cpp_quote é uma extensão da Microsoft para a IDL do DCE. Não use a opção /osf do compilador MIDL, que substitui /ms_ext.
MIDL2197
uuid entre aspas requer /ms_ext
A capacidade de especificar um valor UUID entre aspas é uma extensão da Microsoft para a IDL do DCE. Não use a opção /osf do compilador MIDL, que substitui /ms_ext.
MIDL2198
o tipo de retorno não pode derivar de uma união não recapitulada
A união não recapitulada não pode ser usada como um tipo de retorno de função. Para retornar o tipo de união, especifique o tipo de união como um parâmetro [out] ou [in, out].
MIDL2199
o tipo de retorno não pode derivar de uma estrutura compatível
O tamanho do tipo de retorno deve ser uma constante. Você não pode especificar como um tipo de retorno uma estrutura que contém uma matriz compatível, mesmo quando a estrutura também inclui seu especificador de tamanho. Para retornar a estrutura compatível, especifique a estrutura como um parâmetro [out] ou [in, out].
MIDL2200
[transmit_as] não deve ser aplicado a um tipo derivado de um identificador genérico
Nesta versão, os atributos [handle] e [transmit_as] não podem ser combinados no mesmo tipo.
MIDL2201
[handle] não deve ser aplicado a um tipo que tenha [transmit_as] aplicado a ele
Nesta versão, os atributos [handle] e [transmit_as] não podem ser combinados no mesmo tipo.
MIDL2202
o tipo especificado para a declaração const é inválido
As declarações constantes são limitadas a tipos inteiros, caracteres, caracteres largos, cadeia de caracteres e boolianos.
MIDL2203
não há suporte para operando para o operador sizeof
O compilador MIDL dá suporte à operação sizeof somente para tipos simples. O operando especificado não é avaliado como um tipo inteiro.
MIDL2204
esse nome já usado como um nome de identificador const
O identificador foi usado anteriormente para identificar uma constante em uma declaração const . Altere o nome de um dos identificadores para que os identificadores sejam exclusivos.
MIDL2205
redefinição inconsistente do tipo error_status_t
O tipo error_status_t deve resolve para o tipo long sem sinal. Outras definições de tipo não podem ser usadas.
MIDL2206
[case] valor fora do intervalo do tipo de comutador
O valor associado ao caso da instrução switch está fora do intervalo para o tipo de comutador especificado. Por exemplo, esse erro ocorre quando um valor inteiro longo é usado na instrução case para um tipo inteiro curto.
MIDL2207
parâmetro derivado de necessidades de wchar_t /ms_ext
O tipo de caractere largo wchar_t é uma extensão da Microsoft para IDL de DCE. Não use a opção /osf do compilador MIDL, que substitui /ms_ext
MIDL2208
essa interface tem apenas retornos de chamada
Os retornos de chamada são válidos apenas no contexto de uma chamada de procedimento remoto. A interface deve incluir pelo menos um protótipo de função para uma chamada de procedimento remoto que não inclua o atributo [retorno de chamada].
MIDL2209
atributo com redundância especificada; Ignorado
O atributo especificado foi aplicado mais de uma vez. Várias instâncias do mesmo atributo são ignoradas.
MIDL2210
tipo de identificador de contexto usado para um identificador implícito
Um tipo que foi definido usando o atributo [context_handle] foi especificado como o tipo de identificador em um atributo [ implicit_handle]. Os atributos não podem ser combinados dessa forma.
MIDL2211
opções conflitantes especificadas para [alocar]
As opções especificadas para o atributo ACF [allocate] representam diretivas conflitantes. Por exemplo, especifique a opção all_nodes ou a opção single_node, mas não ambas.
MIDL2212
erro ao gravar no arquivo
Ocorreu um erro ao gravar no arquivo. Essa condição pode ser causada por erros relacionados ao espaço em disco, identificadores de arquivo, restrições de acesso a arquivos e falhas de hardware.
MIDL2213
nenhum tipo de comutador encontrado na definição de união, usando o tipo [switch_is]
A definição de união não inclui um atributo [switch_type] explícito. O tipo da variável especificada pelo atributo [switch_is] é usado como o tipo de comutador.
MIDL2214
semântica marcar incompleta devido a erros anteriores
O compilador MIDL faz duas passagens sobre os arquivos de entrada para resolve quaisquer declarações de encaminhamento. Devido a erros encontrados durante a primeira passagem, a verificação da segunda passagem não foi executada. Erros não relatados relacionados a declarações de encaminhamento ainda podem estar presentes no arquivo.
MIDL2215
não há suporte para o parâmetro handle ou o tipo de retorno em um procedimento [retorno de chamada]
Um procedimento [retorno de chamada] ocorre no contexto de uma chamada de um cliente para o servidor e usa o mesmo identificador de associação que a chamada original. Parâmetros explícitos de identificador de associação ou tipos de retorno não são permitidos em funções de retorno de chamada.
MIDL2216
[ptr] não dá suporte ao aliasing nesta versão
Um alias ocorre quando os dados são acessíveis por meio de mais de um ponteiro ou nome de variável. Remova o alias. Para obter mais informações, consulte Ponteiros Exclusivos.
MIDL2217
parâmetro já definido como um identificador de contexto
O parâmetro foi definido anteriormente como um identificador de contexto.
MIDL2218
[context_handle] não deve derivar de handle_t
As três características do identificador: o tipo handle_t, o atributo [identificador] e o atributo [context_handle], são mutuamente exclusivos. Apenas uma característica pode ser aplicada a um tipo ou parâmetro de cada vez.
MIDL2219
tamanho da matriz excede 65536 bytes
Em algumas plataformas da Microsoft, o tamanho máximo de dados transmissíveis é 64K. Reprojete seu aplicativo para que todos os dados transmitidos se encaixem no tamanho máximo transmissível.
MIDL2220
tamanho da estrutura excede 65536 bytes
Em algumas plataformas da Microsoft, o tamanho máximo de dados transmissíveis é 64K. Reprojete seu aplicativo para que todos os dados transmitidos se encaixem no tamanho máximo transmissível.
MIDL2221
campo de uma união nãocapsulada não pode ser outra união nãocapsulada
Os sindicatos transmitidos como parte de uma chamada de procedimento remoto exigem um item de dados associado, o discriminante, que seleciona o braço da união. Os sindicatos aninhados em outros sindicatos não oferecem um discriminante; Como resultado, eles não podem ser transmitidos neste formulário. Crie uma estrutura que consiste na união e seu discriminante.
MIDL2222
atributos de ponteiro aplicados em uma matriz inserida; Ignorado
Um atributo de ponteiro só pode ser aplicado a uma matriz quando a matriz é um parâmetro de nível superior. Outros atributos de ponteiro aplicados a matrizes inseridas em outras estruturas de dados são ignorados.
MIDL2223
[alocar] é ilegal no tipo transmitido ou apresentado para [transmit_as], [represent_as], [wire_marshal], ou [user_marshal]
Os atributos [transmit_as] e [allocate] não podem ser aplicados ao mesmo tipo. O atributo [transmit_as] distingue entre tipos apresentados e transmitidos, enquanto o atributo [allocate] pressupõe que o tipo apresentado é o mesmo que o tipo transmitido.
MIDL2224
[switch_type] deve ser especificado neste modo de importação
MIDL2225
[implicit_handle] tipo indefinido; supondo que o identificador genérico
O tipo de identificador especificado no ACF não é definido no arquivo IDL. O compilador MIDL pressupõe que o tipo de identificador seja resolvido para o tipo de identificador primitivo handle_t. Adicione o atributo [handle] à definição de tipo se você quiser que o identificador se comporte como um identificador definido pelo usuário ou genérico.
MIDL2226
O elemento array não deve derivar de error_status_t
Nesta versão do Microsoft RPC, o tipo error_status_t pode aparecer apenas como um parâmetro ou tipo de retorno. Ele não pode aparecer em matrizes.
MIDL2227
[alocar] inválido em um tipo derivado de um identificador primitivo/genérico/de contexto
Por design, o atributo ACF [allocate] não pode ser aplicado aos tipos de identificador.
MIDL2228
O tipo transmitido ou apresentado não deve derivar de error_status_t
Nesta versão do Microsoft RPC, o tipo error_status_t não pode ser usado com o atributo [transmit_as].
MIDL2229
discriminante de uma união não deve derivar de um campo com [ignorar] aplicado a ele
Uma união usada em uma chamada de procedimento remoto deve ser associada a outro item de dados, chamado de discriminante, que seleciona o braço de união. O discriminante deve ser transmitido. O atributo [ignore] não pode ser aplicado ao discriminador da união.
MIDL2230
[nocode] ignorado para o lado do servidor, pois "/server none" não foi especificado
Alguns compiladores de IDL de DCE geram um erro quando o atributo [nocode] é aplicado a um procedimento em uma interface para a qual os arquivos stub do servidor estão sendo gerados. Como o servidor deve dar suporte a todas as operações, [nocode] não deve ser aplicado a um procedimento nesse modo ou você deve usar a opção /server do compilador MIDL para especificar explicitamente que nenhuma rotina de servidor deve ser gerada.
MIDL2231
nenhum procedimento remoto especificado na interface não[local]; nenhum stub de cliente/servidor será gerado
A interface fornecida não tem nenhum procedimento remoto, portanto, somente arquivos de cabeçalho serão gerados.
MIDL2232
muitos casos padrão especificados para união encapsulada
Uma união encapsulada pode ter apenas um padrão: arm.
MIDL2233
muitas interfaces padrão especificadas para coclass
Uma coclass pode ter no máximo dois membros [padrão], um para representar a interface de saída (origem) ou dispinterface e outro para representar a interface de entrada (coletor) ou dispinterface.
MIDL2234
itens com [defaultvtable] também devem ter [origem]
A interface defaultvtable cria uma segunda interface de origem para um objeto , que permite que os coletores recebam eventos por meio da tabela V.
MIDL2235
especificação de união sem campos é ilegal
Os sindicatos devem ter pelo menos um campo.
MIDL2236
valor fora do intervalo
O valor de caso fornecido está fora do intervalo do tipo de comutador.
MIDL2237
[context_handle] deve ser aplicado em um tipo de ponteiro
Os identificadores de contexto sempre devem ser tipos de ponteiro. O DCE especifica que todos os identificadores de contexto devem ser tipado como void *.
MIDL2238
O tipo de retorno não deve derivar de handle_t
handle_t não pode ser retornado.
MIDL2239
[identificador] não deve ser aplicado a um tipo derivado de um identificador de contexto
Um tipo não pode ser um identificador de contexto e um identificador genérico.
MIDL2240
campo derivado de um "int" deve ter o especificador de tamanho "pequeno", "curto" ou "longo" com o "int"
O tipo int não é transmissível em sistemas de 16 bits, pois o tamanho do int pode ser diferente entre computadores.
MIDL2241
O campo não deve derivar de um vazio ou nulo *
void e void * não podem ser usados como tipos de parâmetro para procedimentos remotos.
MIDL2242
o campo não deve derivar de uma estrutura que contém campos de bits
Estruturas que contêm campos de bits não podem ser usadas como parâmetros ou tipos de retorno para procedimentos remotos.
MIDL2243
field não deve derivar de uma união não rpcable
Uma união deve ser especificada como uma união nãocapsulada ou união encapsulada para ser transmitida. Os sindicatos C comuns não têm o discriminante necessário para transmitir a união através da rede.
MIDL2244
o campo não deve derivar de um ponteiro para uma função
Ponteiros para funções não podem ser transmitidos para procedimentos remotos. Ponteiros para funções apontam para o código de função e nenhum código de função pode ser transmitido pela rede usando RPC.
MIDL2245
não é possível usar [fault_status] em um parâmetro e um tipo de retorno
O atributo [fault_status] pode ser usado apenas uma vez por procedimento. O atributo [comm_status] pode ser usado independentemente.
MIDL2246
tipo de retorno muito complicado para modos /Oi, usando /Os
Tipos de retorno grandes que são passados por valor só podem ser tratados por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2247
tipo de identificador genérico muito grande para modos /Oi, usando /Os
Tipos de identificador genéricos grandes que são passados por valor só podem ser manipulados por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2248
[allocate(all_nodes)] em um parâmetro [in,out] pode órfão da memória original
O uso de [allocate(all_nodes)] em um parâmetro [in, out] deve realocar memória contígua para a direção [out], órfã do parâmetro [in]. Esse uso não é recomendado.
MIDL2249
não pode ter um ponteiro [ref] como um braço de união
Os ponteiros de referência sempre devem apontar para a memória válida, mas uma união [in, out] com um ponteiro de referência pode retornar um ponteiro de referência quando a direção [in] usou outro tipo.
MIDL2250
retorno de identificadores de contexto sem suporte para modos /Oi, usando /Os
O MIDL não dá suporte a identificadores de contexto nos modos de otimização totalmente interpretados. Alternar para otimização de modo misto.
MIDL2251
uso do parâmetro extra [comm_status] ou [fault_status] sem suporte para modos /Oi, usando /Os
Os atributos [comm_status] e [fault_status] só podem ser tratados por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2252
uso de um tipo desconhecido para [represent_as] ou [user_marshal] sem suporte para modos /Oi, usando /Os
O uso do atributo [represent_as] com um tipo local que não está definido no arquivo IDL ou um arquivo IDL importado só pode ser tratado por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2253
tipos de matriz com [transmit_as] ou [represent_as] não têm suporte no tipo de retorno para modos /Oi , usando /Os
Retornar uma matriz com [transmit_as] ou [represent_as] aplicado só pode ser tratado por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2254
tipos de matriz com [transmit_as] ou [represent_as] sem suporte para pass-by-value para modos /Oi, usando /Os
Não há suporte para essa ação para otimização totalmente interpretada. Alternar para otimização de modo misto.
MIDL2255
[retorno de chamada] requer /ms_ext
O atributo [retorno de chamada] é uma extensão da Microsoft e exige que a opção /ms_ext seja habilitada. Não compile com /osf, que substitui /ms_ext.
MIDL2256
dependência de interface circular
Essa interface usa a si mesma (direta ou indiretamente) como uma interface base.
MIDL2257
somente IUnknown pode ser usado como a interface raiz
Atualmente, todas as interfaces devem ter IUnknown como a interface raiz.
MIDL2258
[IID_IS] só pode ser aplicado a ponteiros para interfaces
O atributo [iid_is] só pode ser aplicado a ponteiros de interface, embora eles possam ser especificados como ponteiros para IUnknown *.
MIDL2259
as interfaces só podem ser usadas em constructos de ponteiro para interface
Os nomes de interface não podem ser usados, exceto como interfaces base ou ponteiros de interface.
MIDL2260
os ponteiros de interface devem ter um UUID/IID
O tipo base da expressão [iid_is] deve ser um tipo UUID/GUID/IID.
MIDL2261
definições e declarações fora do corpo da interface exigem /ms_ext
Colocar declarações e definições fora de qualquer corpo da interface é uma extensão da Microsoft e requer o uso da opção /ms_ext .
MIDL2262
várias interfaces em um arquivo exigem /ms_ext
O uso de várias interfaces em um único arquivo idl é uma extensão da Microsoft e não está disponível quando você compila no modo /osf .
MIDL2263
apenas um dos [implicit_handle], [auto_handle]ou [explicit_handle] permitidos
Cada interface pode ter apenas um desses três atributos.
MIDL2264
[implicit_handle] faz referência a um tipo que não é um identificador
Os identificadores implícitos devem ser de um dos tipos de identificador.
MIDL2265
[objeto] os prócs só podem ser usados com "/env win32"
Interfaces com o atributo [objeto] não podem ser usadas com ambientes de 16 bits.
MIDL2266
[retorno de chamada] com -env dos/win16 sem suporte para /Oi, usando /Os
Os retornos de chamada em ambientes de 16 bits só podem ser tratados por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2267
float/double não tem suporte como parâmetro de nível superior para o modo /Oi, usando /Os
Os tipos float e double só podem ser tratados como parâmetros pelos stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os . Os tipos float e double dentro de estruturas, matrizes ou uniões ainda podem ser tratados com/Os.
MIDL2268
ponteiros para identificadores de contexto podem não ser usados como valores retornados
Os identificadores de contexto devem ser usados como valores de retorno diretos, não valores de retorno indiretos.
MIDL2269
os procedimentos em uma interface de objeto devem retornar um HRESULT
Todos os procedimentos em uma interface de objeto que não têm o atributo -[local] devem retornar um HRESULT/SCODE.
MIDL2270
UUID duplicado
O mesmo que UUIDs deve ser exclusivo.
MIDL2271
As interfaces [objeto] devem derivar de outra interface [objeto], como IUnknown
A herança de interface só é permitida quando você está usando interfaces de objeto.
MIDL2272
A interface (assíncrona) deve derivar de outra interface (assíncrona)
As interfaces de objeto, síncronas e assíncronas, devem derivar de IUnknown ou de alguma outra interface OLE base.
MIDL2273
[IID_IS] expressão deve ser um ponteiro para a estrutura IID
O tipo base da expressão [iid_is] deve ser um tipo UUID/GUID/IID.
MIDL2274
O tipo [call_as] deve ser um procedimento [local]
O destino de um tipo [call_as], se definido, deve ter [ local] aplicado.
MIDL2275
undefined [call_as] não deve ser usado em uma interface de objeto
Você deve definir o destino de um tipo [call_as]. Verifique se você forneceu call_as rotinas para a chamada e os aplicativos chamados.
MIDL2276
[auto_handle] não pode ser usado com [codificação] ou [decodificar]
Os atributos [ codificar] e [ decodificar] só podem ser usados com identificadores explícitos ou identificadores implícitos.
MIDL2277
procedimentos normais não são permitidos em uma interface com [codificação] ou [decodificar]
Interfaces que contêm procedimentos [codificar] ou [decodificar] também não podem ter procedimentos remotos.
MIDL2278
conformidade de nível superior ou variação não permitida com [codificação] ou [decodificar]
Tipos que têm conformidade ou variação de nível superior não podem usar serialização de tipo, pois não há como fornecer dimensionamento/alongamento. No entanto, as estruturas que as contêm têm permissão para usar a serialização de tipo.
MIDL2279
[out] parâmetros podem não ter "const"
Como um parâmetro [out] é alterado, ele não deve ser declarado como constante sa.
MIDL2280
valores retornados podem não ter "const"
Como um valor de função é definido quando a função retorna, esse valor não deve ser declarado como uma constante.
MIDL2281
uso inválido do atributo "retval"
Verifique se você não usou o atributo [opcional] e se o parâmetro [retval] é o último parâmetro na lista.
MIDL2282
várias convenções de chamada ilegais
Somente uma convenção de chamada pode ser aplicada a um único procedimento.
MIDL2283
atributo inválido no procedimento [object]
O atributo acima só se aplica a procedimentos em interfaces que não têm o atributo [object].
MIDL2284
[out] ponteiros de interface devem usar indireção dupla
Como o valor alterado é o ponteiro para a interface, deve haver outro nível de indireção acima do ponteiro para permitir que ele seja retornado.
MIDL2285
procedimento usado duas vezes como o chamador em [call_as]
Um determinado procedimento [local] pode ser usado apenas uma vez como o destino de um [call_as], a fim de evitar conflitos de nome.
MIDL2286
[call_as] o destino deve ter [local] em uma interface de objeto
O destino de um [call_as] deve ser um procedimento [local] definido na interface atual.
MIDL2287
[código] e [nocode] podem não ser usados juntos
Esses dois atributos são contraditórios e não podem ser usados juntos.
MIDL2288
procedimentos com atributos [talvez] ou [mensagem] podem não ter parâmetros [out] ou os valores retornados devem ser do tipo HRESULT ou error_status_t
Como [talvez] os procedimentos nunca retornam, não há como obter valores retornados.
MIDL2289
ponteiro para a função deve ser usado
Embora as definições de tipo de função sejam permitidas no modo /c_ext , elas só podem ser usadas como ponteiros para funções. Eles nunca podem ser transmitidos como um parâmetro ou um valor retornado de um procedimento remoto.
MIDL2290
as funções podem não ser passadas em uma operação RPC
Funções e ponteiros de função não podem ser passados como parâmetros ou valores retornados de procedimentos remotos.
MIDL2291
hyper/double não tem suporte como valor retornado para modos /Oi, usando /Os
Os valores de retorno hiper e duplo podem ser tratados apenas por stubs de otimização /Os . Os stubs para essa rotina serão gerados usando a otimização /Os .
MIDL2292
#pragma pack(pop) sem #pragma pack(push) correspondente
#pragma pack(push) e #pragma pack(pop) devem aparecer em pares correspondentes. Pelo menos um número excessivo de #pragma pacotes(push)s foram especificados.
MIDL2293
Os campos de estrutura stringable devem ser byte/char/wchar_t
O tipo [cadeia de caracteres] só pode ser aplicado a uma estrutura cujos campos são todos de byte de tipo ou uma definição de tipo equivalente a byte.
MIDL2294
[notificar] sem suporte para modos /Oi, usando /Os
O atributo [notify] só pode ser processado por stubs de otimização /Os .
MIDL2295
não há suporte para o parâmetro handle ou o tipo de retorno em um procedimento em uma interface [objeto]
Os identificadores não podem ser usados com interfaces [ objeto].
MIDL2296
ANSI C só permite que a matriz mais à esquerda associada não seja especificada
Em uma matriz compatível, ANSI C permite que apenas a matriz mais à esquerda (mais significativa) associada não seja especificada. Se várias dimensões estiverem em conformidade, MIDL tentará colocar um "1" nas outras dimensões em conformidade. Se as outras dimensões forem definidas em uma definição de tipo diferente, isso não poderá ser possível. Tente colocar todas as dimensões da matriz na declaração de matriz para evitar isso. De qualquer forma, cuidado com os cálculos de indexação de matriz feitos pelo compilador; talvez seja necessário fazer seus próprios cálculos usando os tamanhos reais.
MIDL2297
Parâmetros de união por valor não suportados para modos /Oi, usando /Os
Não há suporte para essa ação para otimização totalmente interpretada. Alternar para otimização de modo misto.
MIDL2298
O atributo [versão] é ignorado em uma interface [objeto]
O atributo [objeto] identifica uma interface COM. Uma lista de atributos de interface para uma interface COM não pode incluir o atributo [ versão].
MIDL2299
O atributo [size_is] ou [max_is] é inválido em uma matriz fixa
Matrizes de tamanho fixo não podem usar os atributos size_is ou max_is .
MIDL2300
[codificar] ou [decodificar] são inválidos em uma interface [objeto]
O atributo [objeto] identifica uma interface COM. Os atributos [codificar] e [ decodificar] habilitam a serialização. Ou seja, você pode fornecer e controlar buffers para marshal e unmarshal de dados, no entanto, não é possível executar a serialização em interfaces COM.
MIDL2301
[codificar] ou [decodificar] em um tipo requer /ms_ext
A serialização não faz parte da especificação DCE-IDL. É uma extensão da Microsoft que requer o uso da opção de linha de comando /ms_ext .
MIDL2302
int sem suporte em /env win16 ou /env dos
As plataformas microsoft de 16 bits não dão suporte ao uso do tipo int em um arquivo IDL. Qualifique o tipo int com pequeno, curto ou longo.
MIDL2303
[bstring] só pode ser aplicado a um ponteiro para "char" ou "whchar_t"
Esse erro está obsoleto. Ele é fornecido apenas para compatibilidade com versões anteriores.
MIDL2304
atributo inválido em um procedimento em uma interface [objeto]
O atributo especificado não é permitido no procedimento em uma interface COM.
MIDL2305
atributo inválido em uma interface [objeto]
O atributo especificado não é permitido em uma interface COM.
MIDL2306
muitos parâmetros ou pilha muito grande para modos /Oi, usando /Os
Esse aviso está obsoleto. Ele é fornecido apenas para compatibilidade com versões anteriores. Indica que a chamada para o procedimento remoto faz com que a pilha cresça mais de 64 K.
MIDL2307
nenhum atributo no typedef de arquivo ACF, portanto, nenhum efeito
O arquivo IDL deve conter todas as instruções typedef que não têm atributos. Eles não devem ocorrer em arquivos ACF. Se o fizerem, o compilador MIDL os interpretará como redundantes e os ignorará.
MIDL2308
convenções de chamada diferentes de __stdcall ou __cdecl sem suporte para modos /Oi, usando /Os
Convenções de chamada como __pascal ou __fastcall alterar o formato da pilha. Os modos /Oi dão suporte apenas às convenções de chamada de __stdcall e __cdecl . Se você precisar usar outras convenções de chamada, use o modo /Os .
MIDL2309
Muitos métodos de delegação na interface exigem o Windows 2000 ou superior
Uma interface pode herdar de outra. Quando isso acontece, os métodos da interface base são considerados delegados. Nenhuma interface derivada pode conter mais de 256 métodos delegados.
MIDL2310
identificadores automáticos sem suporte com /env mac ou /env powermac
Ao compilar o arquivo IDL para um PowerMac, você não pode usar identificadores de associação automática. Você deve especificar identificadores explícitos ou implícitos.
MIDL2311
instruções fora do bloco de biblioteca são ilegais no modo de compatibilidade mktyplib
Talvez seja necessário especificar a opção de linha de comando /mktyplib203 ao compilar o arquivo IDL.

Observação:
A ferramenta Mktyplib.exe está obsoleta. Em vez disso, use o compilador MIDL.


MIDL2312
sintaxe ilegal, a menos que use o modo de compatibilidade mktyplib
Talvez seja necessário especificar a opção de linha de comando /mktyplib203 ao compilar o arquivo IDL.

Observação:
A ferramenta Mktyplib.exe está obsoleta. Em vez disso, use o compilador MIDL.


MIDL2313
definição ilegal, deve usar typedef no modo de compatibilidade mktyplib
Talvez seja necessário especificar a opção de linha de comando /mktyplib203 ao compilar o arquivo IDL.

Observação:
A ferramenta Mktyplib.exe está obsoleta. Em vez disso, use o compilador MIDL.


MIDL2314
atributo de ponteiro explícito [ptr] [ref] ignorado para ponteiros de interface
Ponteiros para interfaces não podem ter atributos IDL.
MIDL2315
Modos /Oi não implementados para o PowerMac, alternando para /Os
MIDL2316
Tipo de expressão ilegal usado no atributo
O valor padrão do ponteiro deve ser uma constante.
MIDL2317
tipo ilegal usado no pipe
Os pipes são limitados a tipos de dados IDL básicos. Por exemplo, você não pode especificar um pipe de matrizes.
MIDL2318
O procedimento usa pipes, usando /Oicf
O modo selecionado não dá suporte a pipes. O compilador MIDL detectou o uso de um ou mais pipes em sua interface. Portanto, ele está compilando o arquivo IDL no modo /Oicf .
MIDL2319
o procedimento tem um atributo que requer o uso de /Oif, alternando modos
Você deve compilar procedimentos [assíncronos] no modo /Oif .
MIDL2320
requisitos de otimização conflitantes, não é possível otimizar
Esse erro geralmente indica que você especificou os modos do compilador /Os e /Oi (ou uma variante dos modos do compilador MIDL /Oi). Isso também pode significar que os recursos especificados em seus arquivos IDL e ACL exigem o uso de ambos os modos. Você deve selecionar um modo ou outro para otimizar.
MIDL2321
pipes não podem ser elementos de matriz ou membros de estruturas ou uniões
Os tipos de dados de pipe só podem ser parâmetros de nível superior.
MIDL2322
uso inválido de pipe
Não é possível usar pipes com os atributos [transmit_as], [represent_as]ou [user_marshal]. Além disso, os pipes não podem ser usados como tipos de retorno.
MIDL2323
O recurso requer a opção de otimização interpretada avançada; use -Oicf
Esse erro indica que as opções de linha de comando do compilador MIDL, como /robust , exigem o uso do modo /Oicf .
MIDL2324
O recurso requer a opção de otimização interpretada avançada; use -Oicf
Esse aviso indica que as opções de linha de comando do compilador MIDL, como /robust , exigem o uso do modo /Oicf .
MIDL2329
a opção de otimização está sendo eliminada gradualmente, use -Oic
O modo de otimização /Oi1 foi especificado na linha de comando MIDL. Esse modo não tem mais suporte e /Oicf deve ser usado.
MIDL2330
a opção de otimização está sendo eliminada gradualmente, use -Oicf
O modo de otimização /Oi2 foi especificado na linha de comando MIDL. Esse modo não tem mais suporte e /Oicf deve ser usado.
MIDL2331
a opção de otimização está sendo eliminada gradualmente, use -ic
O modo de otimização i1 foi especificado em um atributo ACF [otimizar]. Esse modo não tem mais suporte e o icf deve ser usado.
Exemplo de arquivo ACF:
[optimize("i1")] roo();    //MIDL 2331
MIDL2332
a opção de otimização está sendo eliminada gradualmente, use -icf
O modo de otimização i2 foi especificado em um atributo ACF [otimizar]. Esse modo não tem mais suporte e o icf deve ser usado.
Exemplo de arquivo ACF:
[optimize("i2")] roo();    //MIDL 2332
MIDL2333
as opções -old e -new são obsoletas, use -oldtlb e -newtlb
Essa mensagem é obsoleta e não é mais omitida pelo MIDL.
MIDL2334
valor de argumento inválido
As variantes permitidas da opção de linha de comando /O incluem /Os, /Oi, /Oic, /Oicf e /Oif.
MIDL2335
tipo de expressão ilegal em constante
A expressão não é avaliada como uma constante.
MIDL2336
tipo de expressão ilegal na enumeração
Um valor enumerado em uma definição de enumeração não é avaliado como um tipo integral.
MIDL2337
declaração de encaminhamento insatisfeida
O compilador MIDL não pôde resolve a definição de uma declaração de encaminhamento.
MIDL2338
opções são contraditórios
Você não pode usar as opções de linha de comando /osf e /ms_ext ao compilar um arquivo IDL. Você deve escolher um ou outro.
MIDL2339
MIDL não pode gerar informações hookole para a união não rpc-able
Esse erro está obsoleto. Ele é fornecido estritamente para compatibilidade com versões anteriores.
MIDL2340
nenhuma expressão de caso encontrada para união
Cada campo de uma união deve ter uma instrução case com uma expressão constante.
MIDL2341
[user_marshal] e [wire_marshal] não têm suporte com sinalizadores -Oi e -Oic, use -Os ou -Oicf
Os atributos [user_marshal] e [wire_marshal] exigem os recursos de otimização específicos disponíveis apenas em /Oicf (proxy sem código com cadeias de caracteres de formato rápido) ou /Os (marshaling de modo misto).
MIDL2342
pipes não podem ser usados com serialização de dados, ou seja, [codificar] e/ou [decodificar]
Você não pode passar pipes como parâmetros para procedimentos que têm os atributos [codificar] ou [decodificar].
MIDL2343
todos os ponteiros da interface de pipe devem usar indireção única
Você não pode usar um ponteiro para um ponteiro para uma interface de pipe dessa maneira.
MIDL2344
[iid_is()] não pode ser usado com um ponteiro de interface de pipe
Essa mensagem está obsoleta. Essa mensagem não é mais usada pelo compilador.
MIDL2345
opção -lcid inválida ou inválida
O LCID (identificador local) especificado não é válido.
MIDL2346
o lcid especificado é diferente da especificação anterior
Os valores especificados em /lcid e [lcid] são diferentes. O compilador MIDL usará o último definido.
MIDL2347
importlib não é permitido fora de um bloco de biblioteca
Todas as instruções [importlib] devem ocorrer em um bloco [biblioteca].
MIDL2348
valor de ponto flutuante inválido
Esse erro não deve ser emitido por MIDL. Se você vir esse erro, relate um bug à Microsoft fornecendo todos os arquivos necessários para reproduzir o erro, incluindo seus arquivos IDL, arquivos ACF, cabeçalhos etc.
MIDL2349
membro inválido
Os procedimentos não podem ser membros de uma biblioteca.
MIDL2350
possível membro inválido
Para ser um membro válido de uma biblioteca, o elemento de biblioteca deve ser um módulo, uma dispinterface, uma coclasse, uma instrução if, uma estrutura, uma união, uma enumeração ou uma declaração de encaminhamento.
MIDL2351
incompatibilidade em tipos de pipe e interface
Essa mensagem está obsoleta.
MIDL2352
cadeia de caracteres, matriz variável, matriz de conformidade e parâmetros de ponteiro completo podem ser incompatíveis com parâmetros de pipe durante o tempo de execução
Um método que combina uma ou mais cadeias de caracteres [in], matrizes variadas, matrizes de conformidade e parâmetros de ponteiro completo e qualquer parâmetro de pipe [in] resulta na geração de um stub que é executado somente em sequências de protocolo ncacn_* e ncalrpc em computadores Windows. Usar o stub para fazer chamadas em sequências de protocolo ncadg_* ou aceitar chamadas de outros fornecedores de RPC do OSF DCE pode gerar falhas no servidor durante o tempo de execução. Esse erro ocorre a partir do Windows Server 2003.
MIDL2353
parâmetro deve estar em
Os identificadores assíncronos devem ser parâmetros [in].
MIDL2354
tipo de parâmetro de um objeto [assíncrono] deve ser um ponteiro duplo para uma interface
O parâmetro deve ser do tipo IAsyncManager **.
MIDL2355
tipo de identificador assíncrono incorreto
O tipo de identificador deve ser IAsyncManager ou um tipo derivado de IAsyncManager.
MIDL2356
o comutador "interno" permite recursos sem suporte, use com cuidado
Evite usar essa opção.
MIDL2357
Os procedimentos assíncronos não podem usar o identificador automático
Os procedimentos com o atributo [assíncrono] exigem identificadores explícitos.
MIDL2358
error_status_t deve ter [comm_status] e [fault_status]
Um procedimento foi especificado com os atributos IDL [talvez] ou [mensagem], mas o tipo de retorno tem apenas os atributos ACF [comm_status] ou [fault_status]. Ambos os atributos ACF são necessários.
Exemplo de arquivo ACF:
[comm_status] roo();    //MIDL 2358
[fault_status] bar();    //MIDL 2358
[comm_status, fault_status] baz();    //OK
MIDL2359
esse constructo só é permitido dentro de um bloco de biblioteca
Um módulo só pode ocorrer dentro de um bloco de biblioteca.
MIDL2360
redefinição de tipo inválida
Um novo tipo foi definido recursivamente em um tipo inexistente.
Exemplo:
typedef roo roo[10];    //MIDL 2360
MIDL2361
os procedimentos com um atributo [vararg] devem ter um parâmetro SAFEARRAY(VARIANT) ; param order is [vararg], [lcid], [retval]
A maioria dos parâmetros para procedimentos com o atributo [vararg] deve ocorrer antes do parâmetro SAFEARRAY(VARIANT ). O parâmetro SAFEARRAY(VARIANT) deve estar presente. Se a lista de parâmetros contiver um parâmetro com o atributo [ lcid], ela deverá seguir o parâmetro SAFEARRAY(VARIANT ). Se a lista de parâmetros contiver um parâmetro com o atributo [retval], ela deverá ocorrer após o parâmetro com o atributo [lcid].
MIDL2363
muitos métodos na interface exigem o Windows 2000 ou superior
O compilador MIDL não permite mais de 1024 métodos em uma interface quando você está compilando no modo /Oicf .
MIDL2364
a opção está sendo eliminada gradualmente
Os seguintes comutadores são obsoletos: /hookole, /env win16 e /env.
MIDL2365
não pode derivar de IAdviseSink, IAdviseSink2 ou IAdviseSinkEx
Essas interfaces não podem ser estendidas.
MIDL2366
não é possível atribuir um valor padrão
Atribuir um valor padrão a um parâmetro é permitido no Visual Basic, mas não no C++. Se você estiver usando C++, o valor padrão será ignorado.
MIDL2367
não há suporte para a geração de biblioteca de tipos para DOS/Win16/MAC
O MIDL não dá suporte a bibliotecas de tipo de 16 bits.
MIDL2368
erro ao gerar biblioteca de tipos, ignorado
Ocorreu um erro não fatal ao gerar a biblioteca de tipos.
MIDL2369
tamanho de pilha excedido para /Oi, usando /Os
O modo de otimização -Oi é limitado a 128 bytes de espaço de pilha para parâmetros. O compilador alternou automaticamente para o modo de otimização do sistema operacional para contornar essa limitação.
Para evitar esse aviso, use os modos de otimização -Oicf ou -Os. O modo de otimização pode ser alterado na linha de comando especificando -Oicf ou -Os em vez de -Oi ou adicionando um atributo [optimize9"icf")] ou otimizar[("s")] à função no arquivo ACF.
Esse aviso normalmente acontece ao passar estruturas grandes como parâmetros por valor. O tamanho da pilha necessário pode ser reduzido passando um ponteiro para a estrutura.
Exemplo:
typedef struct
{
char a[127];
}
large;
//This function has a stack size of 132 (x86) or 136 (alpha) on 32-bit systems
void roo(large s, int a);    //MIDL 2360
// workaround: pass by reference
void bar (large *s, int a);
MIDL2370
o uso de /robust requer /Oicf, alternando modos
Você deve compilar no modo /Oicf quando especificar a opção /robust na linha de comando.
MIDL2371
intervalo incorreto especificado
O valor mais alto especificado em um atributo [intervalo] é menor que o valor mais baixo.
Exemplo:
void roo([range(3,2)] int a);    //MIDL 2371
MIDL2372
combinação inválida de parâmetros somente [in] e [out] para a interface [async_uuid]
Somente combinações simples de atributos com parâmetros [in] ou [out] são permitidas para esse tipo de interface.
MIDL2373
Plataformas DOS, Win16 e MAC não têm suporte com /robust
O MIDL dá suporte à opção /robust no Microsoft Windows 2000 ou posterior.
MIDL2374
O suporte para proxies sem stub no estilo NT 3.51 para interfaces de objeto será eliminado gradualmente; use /Oif.
Esse modo é obsoleto. Use /Oif ou /Oicf.
MIDL2375
[codificar] ou [decodificar] com /robust requer /Oicf
A serialização não pode ser executada quando a opção /robust é especificada.
MIDL2377
atributos conflitantes especificados
[context_handle_serialize] e [context_handle_noserialize] foram especificados.
MIDL2378
[serializar], [noserialize] pode ser aplicado a context_handles
Os atributos ACF [context_handle_serialize] ou [context_handle_noserialize] só podem ser aplicados a tipos que são identificadores de contexto.
Exemplo de arquivo IDL:
typedef /*[context_handle] */ void *PV;    //Note: PV is *not* a context handle.
Exemplo de arquivo ACF:
typedef [context_handle_serialize] PV;    //MIDL 2378
MIDL2379
O compilador atingiu um limite para uma representação de cadeia de caracteres de formato. Consulte a documentação para obter conselhos.
O compilador MIDL tem um limite de 64 KB para cadeias de caracteres de formato. Esse erro geralmente ocorre quando os arquivos IDL incluem outros arquivos IDL. O arquivo IDL composto gerado por todas as instruções include excede os limites das tabelas de representação de tipo do interpretador do mecanismo de marshaling. Tente usar a diretiva de importação em vez da diretiva include em seus arquivos IDL. Para obter mais informações, consulte Importando arquivos de cabeçalho do sistema, inclua e importe.
MIDL2380
O formato de fio pode estar incorreto, talvez seja necessário usar -ms_conf_struct, consulte a documentação para obter conselhos
O compilador MIDL não pôde gerar um formato transmissível para os dados. Uma maneira comum de obter esse erro é definir um ms_conf_struct dentro de uma estrutura complexa.
MIDL2381
um tamanho de pilha ou um deslocamento maior que o limite de 64 K. Consulte a documentação para obter conselhos.
A chamada resulta em uma pilha maior que 64 KB. Tente passar os dados em blocos menores.
MIDL2382
um modo interpretador forçado para a plataforma de 64 bits
As plataformas de 64 bits exigem o modo de compilação /Oicf.
MIDL2383
O tamanho do elemento de matriz é maior que o limite de 64 KB.
Todos os elementos de matriz devem ter menos de 64 KB de tamanho.
MIDL2384
pode haver apenas um parâmetro [Icid] em um método e deve ser o último ou o segundo a durar se o último parâmetro tiver [retval]
Um parâmetro com o atributo [lcid] deve ocorrer por último. A única exceção é quando também há um parâmetro com o atributo [retval]. Quando ambos ocorrem, o segundo ao último parâmetro na lista de parâmetros deve ter o atributo [ lcid]. O último parâmetro deve ter o atributo [retval].
MIDL2385
sintaxe incorreta para midl_pragma
O compilador MIDL detectou um erro de sintaxe desconhecido em uma instrução midl_pragma.
MIDL2386
não há suporte para __int3264 no modo /osf
Se você precisar usar __int3264, compile no modo /ms-ext.
MIDL2387
símbolo não resolvido na biblioteca de tipos
O compilador não pôde resolve uma declaração formal ou tipo referenciado na biblioteca de tipos.
MIDL2388
Pipes assíncronos não podem ser passados por valor
Os pipes assíncronos devem ser passados por referência ou por endereço.
MIDL2389
deslocamento de parâmetro exceder o limite de 64 KB para procedimentos interpretados
Esse erro normalmente significa que um procedimento tem muitos parâmetros.
MIDL2390
elemento de matriz inválido
Os pipes não podem ser usados como elementos de matriz.
MIDL2391
os membros dispinterface devem ser métodos, propriedades ou interfaces
Uma dispinterface não pode conter definições de tipo, estruturas, enumerações ou uniões.
MIDL2392
[local] procedimento sem [call_as]
Os procedimentos de objeto que têm o atributo [local] também exigem o atributo [call_as].
MIDL2393
vetor multidimensional, alternando para /Oicf
O modo de otimização /Os não dá suporte a matrizes de tamanho não fixadas multidimensionais. O compilador alternou automaticamente o modo de otimização para /Oicf para essa função.
Esse aviso pode ser suprimido globalmente alterando o modo do compilador especificando /Oicf na linha de comando MIDL ou usando midl_pragma aviso (desabilitar: 2393) no arquivo IDL. O modo de otimização pode ser alterado para uma função individual adicionando o atributo [optimize("icf")] à função no arquivo ACF.
O exemplo a seguir demonstra este aviso:
void roo(long s1, [size_is(s1)] long a[][30];    //MIDL2393
void bar(long s1, long s2, [size_is(s1,s2) long **a);//MIDL2393
MIDL2395
tipo ou constructo sem suporte em um bloco de biblioteca porque Oleaut32.dll suporte para tipos polimórficos de 64 KB está ausente
A automação OLE não dá suporte a tipos polimórficos (como _int3264, INT_PTR etc. Esses tipos têm representações de dados incompatíveis entre plataformas de 32 bits e 64 bits. A chamada remota falhará em tempo de execução em plataformas de 64 bits.

Observação:
Observe que, a partir da versão do Windows 2000, os arquivos TLB de 64 bits têm suporte da Automação OLE convertendo informações de TLB de 32 bits em tempo de execução. Portanto, somente a geração de TLB de 32 bits é compatível com MIDL.


Se MIDL estiver sendo usado apenas para gerar um arquivo de cabeçalho, a opção /notlb suprimirá a geração do arquivo TLB.

MIDL2396
código interpretador antigo sendo gerado para 64b
Esse erro está obsoleto. Se você vir esse erro, relate um bug à Microsoft dando seus arquivos IDL, arquivos ACF e linha de comando MIDL completa.
MIDL2397
não há mais suporte para a opção do compilador
Não há mais suporte para o comutador ou comutador especificado.
MIDL2398
não é possível executar o mecanismo MIDL
A partir da versão do Windows 2000 (VERSÃO MIDL 5.03.279), o compilador MIDL é implementado usando dois arquivos executáveis: Midl.exe (o driver) e Midlc.exe (o mecanismo do compilador). Esse erro indica que o Midl.exe não pode iniciar Midlc.exe. Verifique se Midlc.exe está no mesmo diretório que Midl.exe e se eles são a mesma versão.
O erro pode ter sido causado pela cópia de Midl.exe, mas não Midlx.exe da distribuição mais recente. Execute midl e/ou midlc na linha de comando sem parâmetros para ver o número de versão do executável.
MIDL2399
comandos inválidos do driver
A partir da versão do Windows 2000 (VERSÃO MIDL 5.03.279), o compilador MIDL é implementado usando dois arquivos executáveis: Midl.exe (o driver) e Midlc.exe (o mecanismo do compilador). Esse erro indica que o arquivo temporário usado para passar comandos de Midl.exe para Midlc.exe está ausente ou corrompido. Verifique se Midlc.exe está no mesmo diretório que Midl.exe e se eles são da mesma versão.
O erro pode ter sido causado pela tentativa de executar Midlc.exe diretamente ou copiando Midl.exe, mas não Midlc.exe da distribuição mais recente. Execute midl e/ou midlc na linha de comando sem parâmetros para ver o número de versão do executável.
MIDL2400
para automação ole, os parâmetros opcionais devem ser VARIANT ou VARIANT *
A Automação OLE exige que todos os parâmetros [opcionais] sejam do tipo VARIANT ou VARIANT*.
Na automação OLE, o uso de parâmetros não VARIANT pode fazer com que a chamada falhe em tempo de execução ou passe dados indefinidos para os parâmetros [opcionais].
MIDL2401
[defaultvalue] é aplicado a um não VARIANT e [opcional]. Remova [opcional]
O atributo [defaultvalue] implica [opcional]. O atributo [ opcional] não é necessário.
MIDL2402
O atributo [opcional] é inaplicável fora de um bloco de biblioteca
A funcionalidade implícita pelo atributo [ opcional] não é aplicável a proxies gerados para uma interface fora de um bloco de biblioteca.
MIDL2403
O tipo de dados do parâmetro [Icid] deve ser longo
A Automação OLE exige que os parâmetros com o atributo [Icid] sejam do tipo long.
MIDL2404
procedimentos com [propput], [propget] ou [propref] não podem ter mais de um parâmetro necessário após [opcional]
Não pode haver mais de um parâmetro sem [opcional] após o último parâmetro com [opcional] ao usar [propput], [propget], ou [ propputref].
MIDL2405
[comm_status] ou [fault_status] com pickling requer -Oicf
O modo de otimização -Oi antigo não dá suporte a procedimentos ou parâmetros com [ comm_status] ou [ fault_status] com pickling (ou seja, usando [ codificação] e/ou [ decodificação]).
Esse aviso pode ser suprimido globalmente especificando -Oicf na linha de comando MIDL ou para uma função individual adicionando o atributo [optimize("icf:)] à função no arquivo ACF.
Em geral, o modo de otimização -Oicf é recomendado no modo -Oi .
MIDL2406
incompatibilidade de versão do compilador e do driver midl
A partir da versão do Windows 2000 (VERSÃO MIDL 5.03.279), o compilador MIDL é implementado usando dois arquivos executáveis: Midl.exe (o driver) e Midlc.exe (o mecanismo do compilador). Esse erro indica que a versão do Midl.exe não corresponde à versão do Midlc.exe.
O erro pode ter sido causado pela cópia Midl.exe, mas não Midlc.exe da distribuição mais recente. Execute midl e/ou midlc na linha de comando sem parâmetros para ver o número de versão do executável.
MIDL2407
nenhum arquivo intermediário especificado: use Midl.exe
A partir da versão do Windows 2000 (VERSÃO MIDL 5.03.279), o compilador MIDL é implementado usando dois arquivos executáveis: Midl.exe (o driver) e Midlc.exe (o mecanismo do compilador). Esse erro indica que Midlc.exe foi executado diretamente em vez de usar Midl.exe.
MIDL2408
problema de processamento com um parâmetro em um procedimento
Esse erro pode ser visto ao importar dados de um TLB e quando um procedimento tem um parâmetro inválido.
Se você vir esse erro, relate um bug à Microsoft. Especifique seus arquivos IDL, arquivos ACF, arquivo TLB e linha de comando MIDL completa.
MIDL2409
problema de processamento com um campo em uma estrutura
Esse erro pode ser visto ao importar dados de um TLB e quando uma estrutura tem um campo de união ou estrutura inválido.
Se você vir esse erro, relate um bug à Microsoft. Especifique seus arquivos IDL, arquivos ACF, arquivo TLB e linha de comando MIDL completa.
MIDL2410
inconsistência interna do compilador detectada: o deslocamento de cadeia de caracteres de formato é inválido. Para saber mais, confira a documentação .
O compilador MIDL detectou um valor inválido em suas estruturas de dados internas. Isso pode ser causado por estruturas recursivas ou pelo compilador que viola seus próprios limites de representação para dados internos. Para identificar e/ou contornar o problema, tente simplificar o arquivo IDL. Você pode fazer isso simplificando parâmetros complexos e estruturas de dados recursivas ou tornando o arquivo IDL menor dividindo-o. Essa mensagem pode ser acompanhada por uma impressão de diagnóstico com informações adicionais sobre o problema.
Se você vir esse erro, relate um bug à Microsoft. Especifique seus arquivos IDL, arquivos ACF, linha de comando MIDL completa e saída de diagnóstico, se houver.
MIDL2411
inconsistência interna do compilador detectada: o deslocamento de tipo é inválido. Para saber mais, confira a documentação .
O compilador MIDL detectou um valor inválido em suas estruturas de dados internas. Isso pode ser causado por estruturas recursivas ou pelo compilador que viola seus próprios limites de representação para dados internos. Para identificar e/ou contornar o problema, tente simplificar o arquivo IDL. Você pode fazer isso simplificando parâmetros complexos e estruturas de dados recursivas ou tornando o arquivo IDL menor dividindo-o. Essa mensagem pode ser acompanhada por uma impressão de diagnóstico com informações adicionais sobre o problema.
Se você vir esse erro, relate um bug à Microsoft. Especifique seus arquivos IDL, arquivos ACF, linha de comando MIDL completa e saída de diagnóstico, se houver.
MIDL2412
Não há suporte para a sintaxe SAFEARRAY(roo) fora do bloco de biblioteca, use LPSAFEARRAY para proxy
SAFEARRAYs explicitamente tipado não são permitidos fora de um bloco de biblioteca. Em vez disso, use LPSAFEARRAY.
O exemplo a seguir demonstra esse erro:
void roo(SAFEARRAY(long) *a); //MIDL2412 when outside a library block
void roo(LPSAFEAEEAY a);         //OK
MIDL2413
não há suporte para campos de bits
Os campos de bits no estilo C não são compatíveis com MIDL. Isso se aplica à geração de proxy, bem como à geração de TLB.
MIDL2414
não há suporte para tipos de retorno complexos ou de ponto flutuante com [decodificação] em -Oicf, usando -OI
Não há suporte para procedimentos com tipos de retorno de ponto flutuante ou estrutura/união no seletor de estilo -Oicf. Uma solução alternativa para 32 bits é usar o modo de otimização -Oi ao serializar dados (usando [codificar] e/ou [decodificar]). No entanto, como o antigo interpretador de estilo Oi e o suporte a pickling estão programados para serem eliminados gradualmente após a versão do Windows 2000, o uso de ponteiros é altamente sugerido como a solução alternativa para esse problema. Observe também que, normalmente, a alteração de um método de interface para usar um ponteiro [out, ref] em vez do valor retornado que causa o problema é totalmente compatível com versões anteriores na transmissão e pode ser facilmente ocultada da camada do aplicativo.
Esse aviso pode ser suprimido globalmente especificando -Oi na linha de comando MIDL ou para uma função individual adicionando o atributo [optimize("i")] à função no arquivo ACF.
O exemplo a seguir demonstra o problema:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
Uma opção para contornar essa limitação seria passar um parâmetro [out] para manter o resultado em vez de usar um valor retornado:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer
roo.acf:
[decode] GetDouble();
Conforme mencionado anteriormente, a solução descrita acima é boa não apenas para as novas interfaces, mas também como uma solução alternativa para as antigas. A representação de transmissão para o novo argumento "out" é a mesma do valor retornado (aviso nulo que o novo valor retornado).
MIDL2415
não há suporte para o tipo de retorno para 64 bits ao usar [decodificar]
Não há suporte para procedimentos com tipos de retorno de ponto flutuante ou estrutura/união no modo de 64 bits ao executar a serialização de dados (usando [ codificação] e/ou [ decodificação]). Isso está relacionado ao antigo interpretador de estilo Oi e ao serializador de dados que não têm suporte na plataforma de 64 bits. Consulte a descrição do MIDL2414 para obter mais informações.
O exemplo a seguir demonstra esse erro:
roo.idl:
double GetDouble();
roo.acf:
[decode] GetDouble();
A seguir, é recomendável uma solução alternativa para interfaces novas e antigas. Use um parâmetro [out] para manter o resultado em vez de usar um valor retornado:
roo.idl:
void GetDouble([out] double *result); //top level pointer is a [ref] pointer.
roo.acf:
[decode] GetDouble();
Observe que essa solução é totalmente compatível com versões anteriores, pois a representação de fio de um ponteiro [ref, out] ou um duplo é igual à de um duplo.
MIDL2416
O tipo transmitido pode não conter um ponteiro completo para [wire_marshal] ou [user_marshal]
Tipos com atributos [ wire_marshal] ou [ user_marshal] podem não conter ponteiros completos ([ ptr]). Use [ unique] ou [ ref] em vez disso.
O exemplo a seguir demonstra esse erro:
typedef struct
{
    [ptr] long *a;    //Should use [ref] or [unique] instead
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2:
void roo(st2 *s);    //MIDL2416
MIDL2417
o tipo transmitido deve ser um ponteiro ou ter um tamanho constante para [wire_marshal] e [user_marshal]
Tipos de nível superior com atributos [ wire_marshal] ou [ user_marshal] devem ter um tamanho bem definido em tempo de compilação. Eles não podem ser ou conter matrizes em conformidade ou de tamanho variável.
O exemplo a seguir demonstra esse erro:
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
typedef [wire_marshal(st1)] struct
{
    long a;
}
st2;
void roo(st2 *s);        //MIDL2417
MIDL2418
os procedimentos com [propget] devem ter pelo menos um parâmetro ou um valor retornado
Os procedimentos com o atributo [propget] devem ter algum meio de retornar o valor da propriedade. Eles devem ter pelo menos um parâmetro [out] ou um valor retornado.
MIDL2461
O atributo [readonly] foi aplicado no nível do método.
O atributo [readonly] só pode ser aplicado no nível do parâmetro.
MIDL2465
Estruturas que contêm matrizes em conformidade devem ser passadas por referência
Os parâmetros de nível superior no RPC devem ter um tamanho bem definido no tempo de compilação. Eles não podem ser, nem contêm matriz compatível ou de tamanho variável. Além disso, os usuários não podem codificar/decodificar um tipo sem tamanho bem definido. Os aplicativos precisam passar struct compatível/struct variável em conformidade por referência.
O exemplo a seguir demonstra esse erro:
typedef struct        //Type contains variable-sized array
{
    long s;
    [size_is(s)] char a[];
}
st1;
void roo(st1 s);        //MIDL2465
 
on .acf file
typedef [encode,decode] st1; //MIDL2465
MIDL9008
código> de erro do sistema de problemas <do compilador interno – o compilador não pode continuar por um motivo desconhecido. Confira a documentação para obter uma solução alternativa.
O compilador não pôde continuar e a causa do erro é desconhecida. O número de erro hexadecimal é um identificador de erro do sistema. A compilação pode ter falhado devido a um problema externo, como uma condição de memória insuficiente. Nesse caso, você pode encontrar mais informações em Winerror.h ou Ntstatus.h.
Há duas situações que geralmente geram esse erro:
  • O compilador MIDL não conseguiu se recuperar depois de detectar um erro no arquivo IDL. Se MIDL retornou mensagens de erro sobre o arquivo IDL, tente corrigi-las e recompilar. Se não houver mensagens de erro, o compilador poderá ter falhado antes de relatar um erro. Procure um erro de sintaxe na linha para a qual o erro interno do compilador é relatado.
  • O compilador MIDL não pôde gerar o código correto em uma opção de otimização especificada. Tente alterar os modos do compilador, compilar em otimização de modo misto (/Os) ou remover todas as otimizações. Ou recompile usando o sinalizador /NO_FORMAT_OPT para suprimir a otimização padrão do MIDL de descritores de procedimento e tipo.
Ocasionalmente, esse erro ocorre mesmo quando o arquivo IDL está correto e nenhuma opção de otimização está sendo usada. Se esse for o caso, tente reescrever a seção de código nas proximidades de onde o erro foi relatado removendo quaisquer modificações recentes, simplificando ou reorganizando tipos de dados, alterando protótipos ou então começar a comentar partes do arquivo IDL para localizar o código do problema.
Se nenhuma dessas opções funcionar ou se você achar que o problema pode estar relacionado a um bug no Midl.exe, notifique a Microsoft, fornecendo todos os detalhes relevantes.