Delen via


Anonieme pijpbewerkingen

De functie CreatePipe maakt een anonieme pijp en retourneert twee ingangen: een leesgreep naar de pijp en een schrijfgreep naar de pijp. De leesgreep heeft alleen-lezentoegang tot de pijp en de schrijfgreep heeft alleen-schrijventoegang tot de pijp. Als u wilt communiceren met behulp van de pijp, moet de pijpserver een pijpgreep doorgeven aan een ander proces. Dit gebeurt meestal via overname; Dat wil gezegd, het proces zorgt ervoor dat de ingang kan worden overgenomen door een onderliggend proces. Het proces kan ook een pijpgreep dupliceren met behulp van de functie DuplicateHandle en deze verzenden naar een niet-gerelateerd proces met behulp van een vorm van communicatie tussen processen, zoals DDE of gedeeld geheugen.

Een pijpserver kan de leesgreep of de schrijfgreep naar de pijpclient verzenden, afhankelijk van of de client de anonieme pijp moet gebruiken om informatie te verzenden of informatie te ontvangen. Als u wilt lezen vanuit de pijp, gebruikt u de leesgreep van de pijp in een aanroep naar de ReadFile-functie. De ReadFile aanroep wordt geretourneerd wanneer een ander proces naar de pijp is geschreven. De ReadFile aanroep kan ook worden geretourneerd als alle schrijfgrepen naar de pijp zijn gesloten of als er een fout optreedt voordat de leesbewerking is voltooid.

Als u naar de pijp wilt schrijven, gebruikt u de schrijfgreep van de pijp in een aanroep naar de functie WriteFile. De WriteFile-aanroep wordt pas geretourneerd als het opgegeven aantal bytes naar de pijp is geschreven of er een fout optreedt. Als de pijpbuffer vol is en er meer bytes moeten worden geschreven, WriteFile- niet retourneert totdat er een ander proces wordt gelezen uit de pijp, waardoor er meer bufferruimte beschikbaar is. De pijpserver geeft de buffergrootte voor de pijp op wanneer deze CreatePipeaanroept.

Asynchrone (overlappende) lees- en schrijfbewerkingen worden niet ondersteund door anonieme pijpen. Dit betekent dat u de ReadFileEx- en WriteFileEx--functies niet kunt gebruiken met anonieme pijpen. Bovendien wordt de lpOverlapped parameter van ReadFile en WriteFile genegeerd wanneer deze functies worden gebruikt met anonieme pijpen.

Er bestaat een anonieme pijp totdat alle pijpgrepen, zowel lezen als schrijven, zijn gesloten. Een proces kan de pijpgrepen sluiten met behulp van de functie CloseHandle. Alle pijpgrepen worden ook gesloten wanneer het proces wordt beëindigd.

Anonieme pijpen worden geïmplementeerd met behulp van een benoemde pijp met een unieke naam. Daarom kunt u vaak een ingang doorgeven aan een anonieme pijp aan een functie waarvoor een ingang naar een benoemde pijp is vereist.