Sdílet prostřednictvím


Implementace zprostředkovatele sítě

Zprostředkovatel sítě je knihovna DLL, která operačnímu systému Windows umožňuje podporovat konkrétní síťový protokol. Provede to implementací rozhraní API poskytovatele sítě. Toto rozhraní API je sada funkcí, které směrovač více poskytovatelů (MPR) volá pro komunikaci se sítí. Zprostředkovatel sítě pak tato volání přeloží do volání rozhraní API specifických pro síť, aby provedl akci určenou mpR. Tímto způsobem může operační systém Windows pracovat s novými síťovými protokoly, aniž by musel rozumět rozhraním API pro konkrétní síť.

Pokud chcete vytvořit zprostředkovatele sítě, napište knihovnu DLL, která exportuje funkci NPGetCaps.

Podpora dalších funkcí v rozhraní API poskytovatele sítě je volitelná. Pokud váš poskytovatel sítě funkci nevyžaduje, knihovna DLL ji nemusí implementovat ani poskytovat náhradní implementaci. Další informace najdete v tématech jednotlivých funkcí v funkcích poskytovatele sítě.

Výjimkou je, že pokud podporujete jednu z následujících funkcí výčtu, musíte podporovat i ostatní dvě funkce: NPOpenEnum, NPEnumResourcea NPCloseEnum.

Následující pokyny popisují, jak napsat poskytovatele sítě, který dobře komunikuje s mpR a operačním systémem Windows. Kdykoli je to možné, měl by váš poskytovatel dodržovat následující pokyny pro rychlost, ověření a směrování.

Rychlost

Poskytovatel sítě by měl rychle určit, jestli je síťový prostředek vlastní. Důvodem je to, že MPR může muset cyklicky procházet mnoha poskytovateli, aby našel vlastníka prostředku.

Pokud poskytovatel sítě prostředek nevlastní, měl by okamžitě vrátit stavový kód WN_BAD_NETNAME.

Je také důležité, aby poskytovatelé, kteří podporují NPGetDirectoryType, rychle vrátili výsledky pro tuto funkci, protože se volá, zatímco WinFile vykresluje adresářový strom.

Validace

Pořadí ověření je důležité. Nejprve by měl poskytovatel sítě určit, jestli je jeho síť spuštěná, a pak určit, jestli síť a poskytovatel sítě podporují operaci. Pokud po těchto kontrolách obdrží poskytovatel sítě jakékoli síťové prostředky, měl by určit, jestli je vlastní. Nakonec by se měly ověřit další parametry.

Směrování

Pokud mpR musí cyklicky procházet poskytovateli sítě, bude zkoušet všechny poskytovatele, dokud jeden hovor přijme. Jinými slovy, MPR se vždy snaží najít poskytovatele sítě.

Bere však na vědomí první významnou chybu hlášenou poskytovatelem. Chyby, jako jsou ERROR_BAD_NETPATH, ERROR_BAD_NET_NAME, ERROR_INVALID_PARAMETER, ERROR_INVALID_LEVEL jsou považovány za nevýznamné, protože jednoduše znamenají, že poskytovatel prostředek nespravuje. Pokud ale poskytovatel selže s chybovým kódem ERROR_INVALID_PASSWORD nebo jinou významnou chybou, MPR tuto chybu zaznamená a pokračuje v procházení poskytovateli sítě. Obecně platí, že při směrování, pokud žádný poskytovatel hovor nepřijme, MPR hlásí nejvýznamnější chybu, ke které dojde během cyklu poskytovatelů sítě.

Při rozhodování o tom, jaká chybová zpráva se má vrátit, by měl váš poskytovatel sítě vzít v úvahu toto chování mpR.

Poznámka k implementaci

Při implementaci knihovny DLL zprostředkovatele sítě nesmí poskytovatel volat jiné síťové funkce systému Windows, rozhraní API shellunebo jiné dotazy založené na cestě UNC, které by mohly způsobit opětovné zařazení do subsystému MPR. Pokud provedete taková volání z knihovny DLL poskytovatele sítě, aplikace nebo jiné součásti operačního systému mohou zaznamenat kolize, nízký výkon nebo zablokování uvnitř subsystému MPR.