2013-11-25 143 views
1

我想讀從第三方應用 (簡單的C absed DLL捉迷藏在用戶空間,但根據第三方應用程序的控制)_sopen_s和fopen ..要使用什麼?

該文件將由一個獨立的C#應用​​程序寫入到驅動程序文件。

我應該使用什麼,以便我不會遇到任何問題?

使用_sopen_s優於fopen,我知道前者更安全,但它支持的「共享」功能是什麼?

我做了谷歌它的提示數量,但無法找到它。

回答

1

_sopen_s是open()與安全共享的版本。它使用無緩衝的I/O。它適用於文件句柄(int)。這是Microsoft特有的。 open()是跨平臺的。還有sopen()這是共享/訪問版本。

fopen使用緩衝和無文件共享。與FILE *結構一起使用。 文件共享意味着您允許其他進程訪問該文件(或不允許)。例如。當讀共享被拒絕時,另一個進程將不會打開該文件進行閱讀。

所有使用都是合法的。如果您以大塊讀取文件,則無緩衝的I/O版本工作得更快。

+0

哪些函數可以與FILE *結構一起使用來獲取文件修改時間戳? – dpb

+0

也可以在同一個DLL裏面同時使用緩衝的I/O和無緩衝的I/O功能嗎? – dpb

+0

使用'fstat'系列函數來獲取修改時間和其他元數據。您可以安全地使用緩衝和無緩衝。這些機制是正交的。只是不要在同一個文件中使用它們:) – egur