A definição do tipo de empacotamento

Antes de criar um empacotador, você deve definir as interfaces gerenciadas e sendo empacotadas. Essas interfaces normalmente executam a mesma função, mas são expostas diferente para os objetos gerenciados e não gerenciados.

Um compilador gerenciado produz uma interface gerenciada a partir de metadados e a interface resultante é semelhante a qualquer outra interface gerenciada. O exemplo de código a seguir mostra uma interface comum:

#using <mscorlib.dll>
interface INew {
    void NewMethod();
}

Defina o tipo não gerenciado na Interface Definition Language (IDL) e compilá-lo com o compilador MIDL. Definir a interface de uma instrução de biblioteca e atribuí-la uma identificação de interface com o atributo do identificador exclusivo universal (UUID).

Em Old.idl

[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
     [uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
     interface IOld : IUnknown
         HRESULT OldMethod();
}

O compilador MIDL produz vários arquivos de saída. Se a interface é definida em Old.idl, o arquivo de saída Old_i.c define um const variável com o identificador de interface (IID) da interface:

Em Old_i.c

const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};

O arquivo de Old.h também é produzido pelo MIDL. Ele contém uma definição de C++ da interface que pode ser # incluído em seu código de origem do C++.

Consulte também

Conceitos

Empacotamento personalizado

Implementando a Interface ICustomMarshaler

Usando um empacotador substituto