共用方式為


使用安全字串函式

許多系統安全性問題都是因為緩衝區處理不良和產生的緩衝區滿溢所造成。 不良的緩衝區處理通常與字串作作業相關聯。 C/C++語言運行時間連結庫所提供的標準字串作函式(strcatstrcpysprintf 等)不會防止寫入緩衝區結尾。

兩組新的字串作函式,稱為 安全字串函式,可為程式代碼中的適當緩衝區處理提供額外的處理。 這些安全字串函式可在 Windows 驅動程式開發套件 (WDK) 和適用於 Microsoft Windows XP SP1及更新版本的驅動程式開發工具套件 (DDK) 與 Windows 軟體開發套件 (SDK) 中取得。 它們的目的是要取代其內建的 C/C++ 對應專案,以及 Windows 所提供的類似例程。

一組安全字串函式可用於內核模式程式代碼。 這些函式是以名為 Ntstrsafe.h 的標頭檔建立原型。 WDK 中提供這個標頭檔與相關聯的連結庫。

另一組安全字串函式用於使用者模式應用程式。 對應的頭檔 Strsafe.h 包含這些函式的原型。 該檔案和相關聯的連結庫可在 Windows SDK 中使用。 如需 Strsafe.h 的詳細資訊,請參閱 使用 Strsafe.h 函式

內核模式安全字串函式集包含下列兩個子集:

內核模式安全字串函式提供下列功能:

  • 每個安全字串函式都會接收目的地緩衝區的大小作為輸入。 因此,函式可確保它不會寫超出緩衝區結尾。

  • 即使作業截斷預期的結果,Unicode 和 ANSI 字串函式仍會以 NULL 字元終止所有輸出字串。

  • 所有安全字串函數都會傳回NTSTATUS值,只有一個可能的成功狀態碼(STATUS_SUCCESS)。

  • 大多數安全字串函式都有提供位元組計數和字元計數兩種版本可供使用。 例如, RtlStringCbCata 會串連兩個字節計數位符串, 而 RtlStringCchCata 會串連兩個字元計數位符串。

  • 大部分安全字串函式都可在提供額外功能的擴充前後綴版本中使用。 例如, RtlStringCbCatExa 會擴充 RtlStringCbCata 的功能。

本節包含下列主題:

安全字串函式 Kernel-Mode 摘要

匯入 Kernel-Mode 安全字串函式