Vegyület ügyfelek named pipe
Kapcsolódás előtt named pipe, az ügyfélnek kell meghatározni elérhető-e bármely példányának csatorna a kapcsolatot. Ebből a célból az ügyfélnek meg kell hívni a funkciót:
LPCTSTR lpNamedPipeName, // mutató az a csatorna neve
DWORD nTimeOut // intervallum várakozások
amely, ha eredményes visszatér igaz, és meghibásodás esetén - HAMIS. A paraméterei ezt a funkciót a következők.
LpNamedPipeName paramétere egy karakterlánc, amelynek meg kell lennie a forma
itt
NTimeOut paraméter határozza meg azt az időintervallumot, amely alatt az ügyfél vár a kapcsolatot a szerverrel. Ez az időintervallum ezredmásodpercben van megadva, vagy egyenlő lehet az alábbi értékeket:
· NMPWAIT_USE_DEFAULT_WAIT timeout intervallum által meghatározott paraméter értékét nDefaultTimeOut, amely be van állítva CreateNamedPipe funkció
· NMPWAIT_WAIT_FOREVER végtelen várakozási idő miatt a named pipe.
Csináltunk két fontos észrevételt munkájával kapcsolatos WaitNamedPipe funkciót. Először is, ha nincsenek a példányokat egy named pipe nevét lpNamedPipe, ez a funkció nem azonnal, függetlenül a várakozási idő beállítása nTimeOut. Másodszor, ha a fogyasztó csatlakozik egy csatornát a hívás szerver funkció ConnectNamedPipe majd WaitNamedPipe függvény a FALSE és GetLastError függvény a ERROR_PIPE_CONNECTED kódot. Ezért WaitNamedPipe függvényt kell meghívni csak kiszolgáló kapcsolat egy csatornát ConnectNamedPipe funkciót.
Egyszer észlelt szabad csatorna például annak megállapítása érdekében, hogy a kommunikáció csatorna az ügyfélnek kell a függvényt
LPCTSTR lpFileName, // mutató az a csatorna neve
DWORD dwDesiredAccess. // olvasni vagy írni a csatorna
DWORD dwShareMode, // megosztási mód
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // biztonsági attribútumok
DWORD dwCreationDisposition, // csatornanyitási zászló
DWORD dwFlagsAndAttributes, // flags és attribútumok
FOGANTYÚ hTemplateFile // további attribútumok
amely ha sikeres visszatér a kart a named pipe, és meghibásodás esetén - az értéke INVALID_HANDLE_VALUE.
CreateFile funkció paraméterek a következő értékeket, ha ezt a funkciót használják, hogy nyissa meg a named pipe.
LpFileName paramétert kell mutatnia a csatorna nevét, hogy meg kell határozni a formátuma megegyezik a WaitNamedPipe funkciót.
DwDesiredAccess paraméter vehet az alábbi értékeket:
· 0 engedélyek beszerzése csatorna attribútumok,
· GENERIC_READ lehetővé olvasatra Channel,
· GENERIC_WRITE lehetővé teszi belépését a csatorna.
Meg kell jegyezni, hogy a függvény nem CreateFile ha a hozzáférés egy named pipe, ezek előre meghatározott érték nem felel meg a paraméter értékét dwOpenMode CreateNamedPipe funkciót. Ezen túlmenően, ez a lehetőség a programozó határozza meg szabványos hozzáférési jogokat named pipe. További információt erről a kérdésről kell utalni MSDN.
Paraméter dwShareMode megosztási mód meghatározza a named pipe, és megteszi a 0 érték, amely megakadályozza megosztását a named pipe vagy bármilyen kombinációja a következő értékeket:
· FILE_SHARE_READ engedélyezi együttes olvasata a csatorna,
· FILE_SHARE_WRITE engedélyezi közös belépését a csatorna.
LpSecurityAttributes paraméter határozza meg a biztonsági attribútumok egy named pipe.
Csatorna esetében dwCreationDisposition nevű paramétert kell értékével egyenlő OPEN_EXISTING, mivel az ügyfél mindig nyit egy meglévő named pipe.
Egy nevű csatorna dwFlagsAndAttributes paraméter lehet 0, amely meghatározza a zászlókat, és az alapértelmezett attribútumokat. További információt a megadott e paraméter, lásd az MSDN-en.
HTemplateFile paraméter értéke NULL.
Azt, hogy a következő észrevételeket a munkát a CreateFile funkció abban az esetben használja, hogy nyissa meg a hozzáférést egy named pipe. Először is, annak ellenére, hogy WaitNamedPipe funkció sikeresen befejeződött, a következő hívás CreateFile funkció esetleg nem az alábbi okok miatt:
közötti hívások ezeket a funkciókat, a szerver lezárta a csatorna,
közötti funkció kéri egy másik ügyfél kapcsolatba a példány hogy az adott csatorna.
Annak megakadályozása érdekében ez utóbbi esetben a kiszolgáló létre kell hoznia egy új példányt a named pipe minden sikeres befejezése ConnectNamedPipe funkció vagy hozzon létre több példánya named pipe. Másodszor, ha tudjuk, hogy a szerver okozott ConnectNamedPipe funkció CreateFile funkció nélkül hívható előzetes WaitNamedPipe függvényhívás.
Ezenkívül meg kell jegyezni, hogy ha az ügyfél fut ugyanazon a gépen, mint a szerver, és használják, hogy nyissa meg a named pipe-kiszolgáló nevét az CreateFile funkció formájában:
A fájlrendszer megnevezett csövek (NPFS) nyit egy megnevezett cső, amely egy adatfolyam. Megnyitásához named pipe az adat üzenet átviteli módot, meg kell adnia a kiszolgáló nevét a következő formában:
Megjegyzés egyik dolog, ami szerver kommunikáció az ügyfél named pipe. Lehet olyan helyzet, amely miatt ConnectNamedPipe szerver funkciót, és egy ügyfél, aki azt akarja, hogy lépjen kapcsolatba a named pipe nem létezik. Ebben az esetben a szerver alkalmazás le van tiltva. Ahhoz, hogy kezelni egy ilyen helyzetet, ConnectNamedPipe függvényt kell meghívni egy külön téma a szerver alkalmazás. Akkor kinyit a szerver alkalmazás A funkciót az ügyfél miatt named pipe másik szál.