Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O arquivo de cabeçalho Rpcproxy.h inclui as seguintes definições de macro, cada uma das quais pode ser conveniente ao criar um aplicativo COM distribuído. Essas macros são invocadas com a opção de pré-processador /D (ou -D) no momento da compilação C.
| MACRO | Descrição |
|---|---|
| REGISTER_PROXY_DLL | Gera funções DllMain, DllRegisterServere DllUnregisterServer para registrar automaticamente uma DLL proxy. |
| PROXY_CLSID=<> clsid | Especifica um identificador de classe para o servidor. Se essa macro não estiver definida, o CLSID padrão será o primeiro identificador de interface que o compilador MIDL encontra na especificação de IDL para o servidor Proxy/Stub. |
| PROXY_CLSID_IS={0x8hexdigits, 0x4hexdigits,0x4hexdigits, {0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits, 0x2hexdigits,0x2hexdigits,}} | Especifica o valor do identificador de classe do servidor no formato hex binário. |
Ao definir a macro REGISTER_PROXY_DLL ao compilar Dlldata.c, a DLL de marshaling de proxy/stub incluirá automaticamente definições padrão para as funções DllMain, DllRegisterServere DllUnregisterServer. Você pode usar essas funções para registrar automaticamente sua DLL de proxy no registro do sistema.
Esse código de registro padrão usa o GUID da primeira interface encontrada como CLSID para registrar todo o servidor DLL proxy/stub. O COM posteriormente usa esse CLSID para localizar e carregar o servidor proxy/stub compilado para o marshaling de qualquer uma das interfaces que o servidor está registrado para manipular. Quando um aplicativo faz uma chamada de método de interface que cruza os limites de thread, processo ou computador, o COM usa a entrada do registro do identificador de interface para localizar a entrada do registro CLSID para o servidor de marshaling proxy/stub. Em seguida, ele usa esse CLSID para carregar o servidor (se ele ainda não estiver carregado) para que a chamada de interface possa ser marshalada.
Use a macro PROXY_CLSID=<clsid> quando quiser especificar explicitamente o CLSID do servidor proxy/stub em vez de depender do CLSID padrão. Por exemplo, se você estiver criando uma DLL de marshaling padrão como seu próprio servidor COM em processo ou se precisar definir seu próprio DllMain para lidar com DLL_PROCESS_ATTACH.
Use PROXY_CLSID_IS= macro em vez de PROXY_CLSID para definir o valor do CLSID no formato hexadecimal binário usado pela macro DEFINE_GUID.
Observe também que quando a função DllRegisterServer padrão é executada, ela registra o servidor com ThreadingModel=Both.
O exemplo de makefile a seguir usa o REGISTER_PROXY_DLL e PROXY_CLSID= macros:
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
Para obter mais informações sobre a opção de pré-processador do /D, consulte a documentação do compilador C.