2009-05-18 5 views
2

Unter Unix ist alles eine Datei, so dass Sie Datei-E/A-Funktionen mit Pipes, Dateien, Sockets usw. verwenden können. Aber unter Windows hängt die verwendete API vom Typ ab i/o HANDLE haben Sie.Unterscheiden einer Pipe von einer Datei in Windows

Meine Frage ist: gegeben ein HANDLE wie bestimmen Sie, was der zugrunde liegende Typ ist? Zum Beispiel habe ich ein HANDLE, das entweder eine echte Datei oder eine benannte/anonyme Pipe ist. Ich würde gerne wissen, ob PeekNamedPipe auf diesem HANDLE aufgerufen werden kann.

Antwort

0

Ohne zu versuchen, albern zu sein. Nennen Sie es. Wenn du einen Fehlercode bekommst, der sagt, dass es die falsche Art von Sache ist ... dann weißt du es.

Ein ähnlicher Principal ist relevant, wenn Sie versuchen zu sehen, ob der Benutzer die Rechte hat, eine Datei zu öffnen. Es ist möglich, die Logik, die das Dateisystem durchläuft, um die ACLs zu testen, vollständig zu rekonstruieren und neu zu implementieren. Oder versuche es einfach und öffne es.

+0

Dies könnte unter Umständen hängt oder SEH Ausnahmen führen zu bekommen geworfen. Ich würde vermeiden, was auch immer auf einem Named Pipe-Handle zu nennen und nehme an, dass das Verhalten gut ist. –

Verwandte Themen