LABRADOR-Beispiel: Implementiert einen Server ohne Benutzeroberfläche
Aktualisiert: November 2007
Im LABRADOR-Beispiel wird die Verwendung von ATL zum Implementieren eines EXE-Servers ohne Benutzeroberfläche erläutert. Mit diesem Server kann ein Objekt erstellt werden, das zwei benutzerdefinierte Schnittstellen unterstützt, die in Labrador.idl definiert sind.
Das Beispiel für LABRADOR-Attribute ist die attributierte Version dieses Beispiels.
Sicherheitshinweis: |
---|
Dieser Beispielcode dient dazu, ein Konzept zu veranschaulichen. Er sollte nicht für Anwendungen oder Websites verwendet werden, da dieser Code unter Umständen nicht die sicherste Codierungstechnik darstellt. Microsoft übernimmt keine Haftung für beiläufig entstandene Schäden oder Folgeschäden, falls der Beispielcode nicht bestimmungsgemäß verwendet wird. |
So rufen Sie Beispiele und Anweisungen für ihre Installation ab
Klicken Sie in Visual Studio im Menü Hilfe auf Beispiele.
Weitere Informationen finden Sie unter Suchen von Beispieldateien.
Die neueste Version und vollständige Liste mit Beispielen ist online unter Visual Studio 2008 Samples verfügbar.
Sie können auch Beispiele auf der Festplatte des Computers suchen. Standardmäßig werden Beispiele und eine Infodatei in einen Ordner unter \Programme\Visual Studio 9.0\Samples\ kopiert. Für Express Editions von Visual Studio sind alle Beispiele online verfügbar.
Erstellen und Ausführen des Beispiels
In diesem Beispiel werden drei Komponenten verwendet: der Server, die Marshalling-DLL und der Treiber.
So erstellen und registrieren Sie die Komponenten
Öffnen Sie die Projektmappendatei Labrador.sln.
Klicken Sie im Menü Erstellen auf Projektmappe erstellen.
Der Server, die Marshalling-DLL und der Treiber werden erstellt und registriert.
So führen Sie den Treiber aus
Klicken Sie im Menü Debuggen auf Starten ohne Debuggen.
Der Treiber erstellt ein Objekt, ruft es einige Male auf und gibt es dann wieder frei.
Schlüsselwörter
In diesem Beispiel werden die folgenden Schlüsselwörter verwendet:
_CrtDumpMemoryLeaks; _tcsicmp; _tcstok; _tprintf; _vstprintf; ATLASSERT; BEGIN_COM_MAP; BEGIN_OBJECT_MAP; CComModule::Init; CComModule::RegisterClassObjects; CComModule::RevokeClassObjects; CComModule::Unlock; CComModule::UnregisterServer; CComObjectRoot; CoCreateInstance; COM_INTERFACE_ENTRY; CoUninitialize; DECLARE_NOT_AGGREGATABLE; DECLARE_REGISTRY; DispatchMessage; END_OBJECT_MAP; GetCurrentThreadId; GetMessage; OBJECT_ENTRY; OutputDebugString; PostThreadMessage; Trace; va_end; va_list; va_start; wcscpy_s