Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Headerdatei Rpcproxy.h enthält die folgenden Makrodefinitionen, von denen jeder beim Erstellen verteilter COM-Anwendung praktisch sein kann. Diese Makros werden mit dem Schalter /D (oder -D) zur C-Kompilierungszeit aufgerufen.
| MAKRO | Beschreibung |
|---|---|
| REGISTER_PROXY_DLL | Generiert DllMain-, DllRegisterServer-und DllUnregisterServer- funktionen zum automatischen Registrieren einer Proxy-DLL. |
| PROXY_CLSID=<clsid-> | Gibt einen Klassenbezeichner für den Server an. Wenn dieses Makro nicht definiert ist, ist die STANDARD-CLSID der erste Schnittstellenbezeichner, den der MIDL-Compiler in der IDL-Spezifikation für den Proxy-/Stub-Server findet. |
| PROXY_CLSID_IS={0x8hexdigits, 0x4hexdigits,0x4hexdigits, {0x2hexdigits,0x2hexdigits, 0x0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits,}} | Gibt den Wert des Klassenbezeichners des Servers im binären Hex-Format an. |
Durch Definieren des REGISTER_PROXY_DLL Makros beim Kompilieren von Dlldata.c enthält Ihre Proxy-/Stub marshaling-DLL automatisch Standarddefinitionen für die funktionen DllMain, DllRegisterServerund DllUnregisterServer. Sie können diese Funktionen verwenden, um Ihre Proxy-DLL in der Systemregistrierung selbst zu registrieren.
Dieser Standardregistrierungscode verwendet die GUID der ersten Schnittstelle, die als CLSID zum Registrieren des gesamten Proxy-/Stub-DLL-Servers aufgetreten ist. COM verwendet diese CLSID später, um den kompilierten Proxy-/Stubserver für die Marshaling einer der Schnittstellen zu suchen und zu laden, für die der Server registriert ist. Wenn eine Anwendung einen Schnittstellenmethodenaufruf vorgibt, der Thread-, Prozess- oder Computergrenzen überschreitet, verwendet COM den Registrierungseintrag für die Schnittstellen-ID, um den CLSID-Registrierungseintrag für den Proxy-/Stub-Marshaling-Server zu finden. Anschließend wird diese CLSID verwendet, um den Server zu laden (sofern er noch nicht geladen ist), damit der Schnittstellenaufruf gemarstet werden kann.
Verwenden Sie die PROXY_CLSID=<clsid-> Makro, wenn Sie die CLSID des Proxy-/Stubservers explizit angeben möchten, anstatt die standard-CLSID zu verwenden. Wenn Sie z. B. eine standardmäßige Marshalling-DLL als eigenen COM-Server erstellen, oder wenn Sie Ihre eigene DllMain- definieren müssen, um DLL_PROCESS_ATTACH zu verarbeiten.
Verwenden Sie PROXY_CLSID_IS= Makro anstelle von PROXY_CLSID, um den Wert der CLSID im binären Hexadezimalformat zu definieren, das vom DEFINE_GUID Makro verwendet wird.
Beachten Sie außerdem, dass beim Ausführen der standardmäßigen DllRegisterServer--Funktion der Server bei ThreadingModel=Both registriert wird.
Im folgenden Makefile-Beispiel werden die REGISTER_PROXY_DLL und PROXY_CLSID= Makros verwendet:
example.h example.tlb example_p.c example_i.c dlldata.c : example.idl
midl example.idl
dlldata.obj : dlldata.c
CL /c /DWIN32 /DREGISTER_PROXY_DLL dlldata.c
example.obj : example_p.c
CL /c /DWIN32 /DREGISTER_PROXY_DLL \
/DPROXY_CLSID=7a98c250-6808-11cf-b73b-00aa00b677a7
example_p.c
iids.obj : example_i.c
PROXYSTUBOBJS = dlldata.obj example.obj iids.obj
PROXYSTUBLIBS = kernel32.lib rpcns4.lib rpcrt4.lib uuid.lib
proxy.dll : $(PROXYSTUBOBJX) example.def
link /dll /out:proxy.dll /def:example.def
$(PROXYSTUBOBJS) $(PROXYSTUBLIBS)
regsvr32 /s proxy.dll
Weitere Informationen zur Option /D Preprocessor finden Sie in der C-Compilerdokumentation.