Compartilhar via


Avisos de interoperabilidade

Interação com clientes COM suportam a avisos de interoperabilidade.

Nesta seção

Regra

Descrição

CA1400: Os pontos de entrada de P/Invoke devem existir.

Um método público ou protegido é marcado, usando o atributo. DllImportAttribute '. A biblioteca não gerenciada não pôde ser localizada ou o método não pôde ser correspondido para uma função na biblioteca.

CA1401: P/Invokes não deverá ser visível

Um método público ou protegido em um tipo público tem o atributo. DllImportAttribute (também é implementado da palavra-chave de declarar em Visual Basic). Esses métodos não devem ser expostos.

CA1402: Evitar sobrecargas em interfaces de COM visíveis

Quando os métodos sobrecarregados estão expostos a clientes COM, somente a primeira sobrecarga de método manterá seu nome. Sobrecargas subseqüentes são exclusivamente renomeadas anexando o nome de um caractere de sublinhado (_) e um número inteiro que corresponde à ordem de declaração de que a sobrecarga.

CA1403: Tipos de layout automático não devem ser visível em COM

Um tipo de valor visível em COM é marcado, usando o atributo System.Runtime.InteropServices.StructLayoutAttribute definido como LayoutKind.Auto. O layout desses tipos pode alterar entre versões do .NET Framework, o que interromperá a clientes COM, que esperam um layout específico.

CA1404: Chamar GetLastError imediatamente após P/Invoke.

É feita uma chamada para o método Marshal.GetLastWin32Error ou o equivalente a Win32 função GetLastError e chamada imediatamente anterior não é uma plataforma de invocação de método.

CA1405: Tipos base do tipo visível COM devem estar visível em COM

Um visível em COM tipo deriva de um tipo que não é visível para COM.

CA1406: Evite argumentos de Int64 para os clientes Visual Basic 6

Clientes COM 6 de Visual Basic não podem acessar os inteiros de 64 bits.

CA1407: Evite membros estáticos em tipos de visíveis COM

COM não oferece suporte a métodos estáticos.

CA1408: Não use ClassInterfaceType de AutoDual

Tipos de uma interface dupla habilitam clientes vincular a um layout de interface específica. Quaisquer alterações em uma versão futura do layout do tipo ou quaisquer tipos base interromperá os clientes COM que vincule à interface. Por padrão, se o atributo ClassInterfaceAttribute não for especificado, uma interface somente de distribuição é usada.

CA1409: Tipos de visíveis com devem ser criados

Um tipo de referência é marcado como visível para COM especificamente contém um construtor parametrizado público, mas não tem um construtor público padrão (sem parâmetros). Um tipo sem um construtor público padrão não é criado por clientes COM.

CA1410: Métodos de registro COM devem ser correspondidos.

Um tipo declara um método marcado usando o System.Runtime.InteropServices.ComRegisterFunctionAttribute atributo mas não declara um método marcado usando a System.Runtime.InteropServices.ComUnregisterFunctionAttribute atributo, ou vice versa.

CA1411: Métodos de registro COM não devem ser visíveis

Um método marcado com o atributo System.Runtime.InteropServices.ComRegisterFunctionAttribute ou o atributo System.Runtime.InteropServices.ComUnregisterFunctionAttribute é visível externamente.

CA1412: Interfaces de marca ComSource como IDispatch

Um tipo é marcado, usando o atributo System.Runtime.InteropServices.ComSourceInterfacesAttribute, e pelo menos uma das interfaces especificadas não está marcado como usando o atributo System.Runtime.InteropServices.InterfaceTypeAttribute definido como ComInterfaceType.InterfaceIsIDispatch.

CA1413: Evitar os tipos de valor visível COM campos não públicos

Campos de instância confidenciais visível em COM tipos de valor são visíveis para os clientes COM. Analise o conteúdo dos campos de informações que não deve ser exposta ou que terá efeitos indesejados de design ou de segurança.

CA1414: Marcar os argumentos de P/Invoke booleanos com MarshalAs

O tipo de dados booleano tem diversas representações em código não gerenciado.

CA1415: Declarar P/Invokes corretamente

Esta regra examina para invocação de plataforma declarações de método destino Win32 funções que têm um ponteiro para um OVERLAPPED estruturar o parâmetro e o parâmetro gerenciado correspondente não é um ponteiro para uma System.Threading.NativeOverlapped estrutura.