2014-12-07 142 views
1

有什麼辦法可以使用GetFileInformationByHandle()與由fopen()分配的stdio文件句柄?使用fstat()和fileno()並不足以達到我的目的,因爲我需要獲取一些不屬於結構統計信息的特定於Windows的信息,所以我想知道是否有任何方法將stdio FILE *句柄提供給GetFileInformationByHandle ()?GetFileInformationByHandle()爲stdio文件句柄

+0

通過'CreateFile'創建文件句柄。 – BLUEPIXY 2014-12-07 21:09:38

+0

但是這不允許我使用stdio文件句柄作爲源。它想要一個文件名。我想避免在stdio文件句柄旁邊建立第二個文件句柄。我想知道是否有可能以某種方式訪問​​存儲在FILE * stdio句柄內的Windows文件句柄,將它提供給GetFileInformationByHandle()。 Visual C++ stdio有各種微軟擴展,所以也許有一個擴展。 – Andreas 2014-12-07 21:13:51

回答

3

使用_fileno()獲取文件編號(不,我不知道爲什麼微軟添加了_,而不是「ISO C++一致性」),然後_get_osfhandle()從文件編號轉到HANDLE。我不記得爲什麼msvcrt使用文件編號,而不是直接將FILE綁定到HANDLE(但我認爲它適用於POSIX兼容性?)。

+0

謝謝,這正是我正在尋找的。 – Andreas 2014-12-07 21:43:10