Implicitní identifikátory vazeb
Implicitní obslužné rutiny vazby umožňují vaší aplikaci vybrat konkrétní server pro vykonávání vzdálených procedurálních volání. Podrobnosti naleznete v tématu Client-Side vazby. Umožňují také, aby váš klientský/serverový program používal ověřené vazby. To znamená, že klient může zadat autentizační údaje v popisovači implicitní vazby. Knihovna běhového prostředí RPC používá ověřovací informace k navázání ověřené relace RPC mezi klientem a serverem. Další informace naleznete v tématu Zabezpečení.
Poznámka
Implicitní popisovače vazeb nejsou bezpečné pro vlákna. Vícevláknové aplikace by se proto měly vyhnout používání implicitních vazbových popisovačů.
Když vaše aplikace používá implicitní vazby, klient musí nastavit informace o vazbě, aby mohl vytvořit vazbu. Jakmile klient vytvoří implicitní vazbu, nemusí předávat žádné popisovače vazby vzdáleným procedurám. Knihovna RPC zpracovává zbytek mechaniky komunikační relace.
Klient ukládá informace o propojení pro implicitní popisovač v globální proměnné. Když kompilátor MIDL vygeneruje zástupný kód klienta a soubor hlaviček ze specifikace rozhraní v souboru MIDL, vygeneruje také kód pro globální proměnnou popisovače vazby. Klientský program inicializuje popisovač a poté jej znovu nepoužívá, dokud nezničí vazbu.
Implicitní popisovač vytvoříte zadáním atributu [implicit_handle] v ACF pro rozhraní následujícím způsobem:
/* ACF file (complete) */
[
implicit_handle(handle_t hHello)
]
interface hello
{
}
Typ handle_t, který se používá v předchozím příkladu, je datový typ MIDL použitý k definování popisovačů vazeb.
Po vytvoření implicitního popisovače ji aplikace musí použít jako parametr pro funkce knihovny runtime RPC. Nepoužívejte implicitní popisovač jako parametr pro vzdálená volání procedur. Následující ukázka kódu ukazuje použití implicitních popisovačů vazeb.
RPC_STATUS status;
status = RpcBindingFromStringBinding(
pszStringBinding,
&hHello);
status = MyRemoteProcedure();
status = RpcBindingFree(hHello);
...
V předchozím příkladu funkce knihovny běhového prostředí RPC RpcBindingFromStringBinding a RpcBindingFree obě vyžadovaly předání implicitního popisovače vazby do jejich seznamů parametrů. Vzdálená procedura MyRemoteProcedure se však neprovedla, protože není funkcí knihovny runtime RPC.