Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Before you can build a marshaler, you must define the managed and unmanaged interfaces being marshaled. These interfaces commonly perform the same function, but are exposed differently to managed and unmanaged objects.
A managed compiler produces a managed interface from metadata, and the resulting interface looks like any other managed interface. The following code example shows a typical interface:
#using <mscorlib.dll>
interface INew {
void NewMethod();
}
You define the unmanaged type in Interface Definition Language (IDL) and compile it with the MIDL compiler. You define the interface within a library statement and assign it an interface ID with the universal unique identifier (UUID) attribute.
In Old.idl
[uuid(9B2BAADA-0705-11D3-A0CD-00C04FA35826)]
library OldLib {
[uuid(9B2BAADD-0705-11D3-A0CD-00C04FA35826)]
interface IOld : IUnknown
HRESULT OldMethod();
}
The MIDL compiler produces several output files. If the interface is defined in Old.idl, the output file Old_i.c defines a const variable with the interface identifier (IID) of the interface:
In Old_i.c
const IID IID_IOld = {0x9B2BAADD,0x0705,0x11D3,{0xA0,0xCD,0x00,0xC0,0x4F,0xA3,0x58,0x26}};
The Old.h file is also produced by MIDL. It contains a C++ definition of the interface that can be #included into your C++ source code.
See Also
Concepts
Implementing the ICustomMarshaler Interface
Using a Substitute Marshaler