2015-11-10 103 views
0

msdn說P/Invoke方法可以安全地暴露給任何應用程序,並且沒有任何副作用,應該放在名爲SafeNativeMethods的類中。安全和不安全的win32方法

and P/Invoke方法不能安全地調用,並且可能導致副作用的方法應放在名爲UnsafeNativeMethods的類中。

我認爲這是受windows api的影響。但是我怎麼知道一個方法是否被認爲是安全或不安全的?

有沒有這樣的工具或在線參考知道?哪裏寫的規則,使Windows API方法安全或usnafe?

+1

它完全是任意的,在.NET Framework中的用法只反映了特定的程序員啓動了源代碼文件。有時候最好將參數聲明爲指針,而不是經常使用,所以需要* unsafe *關鍵字。其餘的只是沒關係。類名也無關緊要,微軟程序員必須遵循所有.NET團隊成員必須遵循的編碼準則,並提醒他們使用代碼分析工具使其錯誤。同樣,請遵循* your *團隊使用的準則。 –

+0

謝謝,閱讀你的評論和答案就像閱讀千篇一書的學習總結。 – Meska

回答

1

我認爲這受到windows api的影響。

不完全是。它指的是您通過DllImport提供訪問的任何本機代碼。

但我怎麼能找出一種方法是否被認爲是安全的或不安全的?

你知道你的功能在做什麼。否則,你不會使它可用。然後考慮一下,只有訪問管理和安全的本地代碼的惡意用戶,如果還允許訪問您正在查看的功能,那麼這個惡意用戶是否會弄糟程序(或更糟糕的情況)。

幾乎沒有任何函數會將指針實際暴露爲指針,這些指針是不安全的,但反過來不是這樣,不涉及指針的函數也可能不安全。


請注意,如果你不處理任何不信任的代碼,你可以把一切都放在一個NativeMethods類,而不是擔心安全或不安全。