2009-05-18 10 views
2

Sous Unix, tout est un fichier, donc vous pouvez utiliser des fonctions d'entrée/sortie de fichiers avec des tuyaux, des fichiers, des sockets, etc. Mais sur Windows, l'API que vous utilisez dépend du type de I/O poignée vous avez.Distinguer un tuyau d'un fichier dans Windows

Ma question est: étant donné une POIGNÉE comment déterminez-vous quel est le type sous-jacent? Par exemple, j'ai un HANDLE qui est un vrai fichier, ou un tuyau nommé/anonyme. J'aimerais savoir si PeekNamedPipe peut être appelé sur cette HANDLE.

Répondre

0

Sans essayer d'être bête. Appelez-le. Si vous obtenez un code d'erreur en disant que c'est le mauvais type de chose ... alors vous savez.

Un principal similaire est lié lorsque vous essayez de voir si l'utilisateur a le droit d'ouvrir un fichier. Il est possible d'essayer d'effectuer une ingénierie inverse et de réimplémenter la logique utilisée par le système de fichiers pour tester les ACL. Ou, essayez simplement de l'ouvrir.

+0

Cela pourrait causer des blocages ou des exceptions SEH pour se jeter dans certaines circonstances. J'éviterais d'appeler quoi que ce soit sur un descripteur de pipe nommé et supposerais que le comportement serait correct. –