Kommentar
Å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.
Rubrikfilen Rpcproxy.h innehåller följande makrodefinitioner, som var och en kan vara praktisk när du skapar distribuerade COM-program. Dessa makron anropas med växeln /D (eller -D) förprocessor vid C-kompileringstiden.
| MAKRO | Beskrivning |
|---|---|
| REGISTER_PROXY_DLL | Genererar DllMain, DllRegisterServeroch DllUnregisterServer funktioner för att automatiskt registrera en proxy-DLL. |
| PROXY_CLSID=<clsid> | Anger en klassidentifierare för servern. Om det här makrot inte har definierats är CLSID som standard den första gränssnittsidentifieraren som MIDL-kompilatorn stöter på i IDL-specifikationen för Proxy-/Stub-servern. |
| PROXY_CLSID_IS={0x8hexdigits, 0x4hexdigits,0x4hexdigits, {0x2hexdigits,0x2hexdigits, 0x0x 22hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits,}} | Anger värdet för serverns klassidentifierare i binärt hexformat. |
Genom att definiera det REGISTER_PROXY_DLL makrot vid kompilering av Dlldata.c innehåller din proxy-/stub-kodnings-DLL automatiskt standarddefinitioner för DllMain, DllRegisterServeroch DllUnregisterServer funktioner. Du kan använda dessa funktioner för att självregistrera din proxy-DLL i systemregistret.
Den här standardregistreringskoden använder GUID för det första gränssnittet som påträffades som CLSID för att registrera hela proxy-/stub DLL-servern. COM använder senare detta CLSID för att hitta och läsa in den kompilerade proxy-/stub-servern för marskalkering av något av de gränssnitt som servern är registrerad för att hantera. När ett program gör ett gränssnittsmetodanrop som korsar tråd-, process- eller datorgränser använder COM registerposten för gränssnittsidentifierare för att hitta CLSID-registerposten för proxy-/stub-marskalkeringsservern. Den använder sedan detta CLSID för att läsa in servern (om den inte redan har lästs in) så att gränssnittsanropet sedan kan konverteras.
Använd PROXY_CLSID=<clsid> makro när du uttryckligen vill ange proxy-/stub-serverns CLSID i stället för att förlita dig på standard-CLSID. Om du till exempel skapar en standard-DLL som din egen processbaserade COM-server, eller om du behöver definiera din egen DllMain- för att hantera DLL_PROCESS_ATTACH.
Använd PROXY_CLSID_IS= makro i stället för PROXY_CLSID för att definiera värdet för CLSID i det binära hexadecimala format som DEFINE_GUID makrot använder.
Observera också att när standardfunktionen DllRegisterServer körs registreras servern med ThreadingModel=Båda.
I följande makefile-exempel används makrona REGISTER_PROXY_DLL och PROXY_CLSID= :
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
Mer information om alternativet /D förprocessor finns i dokumentationen för C-kompilatorn.