COM-interfaces definiëren
Microsoft definieert veel COM-interfaces. In de meeste gevallen kunt u deze algemene interfaces opnieuw gebruiken. Sommige toepassingen hebben echter specifieke vereisten die het wenselijk of noodzakelijk maken om uw eigen objectinterfaces te definiëren.
Alle COM-interfaces moeten rechtstreeks of indirect worden afgeleid van de IUnknown interface. Binnen die beperking kan uw aangepaste interface vrijwel elke methode of parameter ondersteunen, inclusief asynchrone methoden. U kunt ook een typebibliotheek genereren voor uw aangepaste interfaces, zodat clients tijdens runtime toegang hebben tot informatie over de methoden van uw object. Nadat u een interface hebt gedefinieerd, beschrijft u deze in Microsoft Interface Definition Language (MIDL), compileert en registreert u deze net als elke algemene interface. Met gedistribueerde COM zijn interfacemethoden beschikbaar voor externe processen en andere processen op dezelfde computer.
Ten slotte vereist het bouwen van COM-interfaces een ontwikkelomgeving met een C/C++-compiler en de Midl.exe-compiler.
De stappen voor het maken van een COM-interface zijn als volgt:
- Bepaal hoe u marshaling-ondersteuning wilt bieden voor uw interface; hetzij met typebibliotheekgestuurd marshaling of met een proxy/stub DLL. Zelfs in-process interfaces moeten worden gemarshalled als ze moeten worden gebruikt over de grenzen van verschillende apartments. Het is een goed idee om marshaling-ondersteuning in elke COM-interface te bouwen, zelfs als u niet denkt dat u deze nodig hebt. Zie Interface Marshaling en voor meer informatie.
- Beschrijf de interface of interfaces in een IDL-bestand (Interface Definition). Daarnaast kunt u bepaalde lokale aspecten van uw interface opgeven in een toepassingsconfiguratiebestand (ACF). Als u typebibliotheekgestuurde marshaling gebruikt, voegt u een bibliotheek-verklaring toe die verwijst naar de interfaces waarvoor u typegegevens wilt genereren.
- Gebruik de MIDL-compiler om een typebibliotheekbestand en headerbestand te genereren, of proxy-/stub-bestanden in de C-taal, interface-id-bestand, DLL-gegevensbestand en headerbestand. Zie MIDL-compilatie voor meer informatie.
- Afhankelijk van de marshalingmethode die u hebt gekozen, schrijft u een DEF-bestand (moduledefinitie), compileert en koppelt u alle door MIDL gegenereerde bestanden in één proxy-DLL en registreert u de interface in het systeemregister of registreert u de typebibliotheek. Zie Een typebibliotheek laden en registreren en een proxy-DLL- bouwen en registreren voor meer informatie.
Verwante onderwerpen