2013-03-25 31 views
2

我開始學習如何編寫程序的Windows驅動程序,但似乎無法找到任何地方,包括位於函數參數聲明的IN的定義。例如:IN在Windows設備驅動程序功能中意味着什麼?

NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, 
         IN PUNICODE_STRING RegistryPath) 

請問某人能解釋一下IN的意思嗎?

+1

這是一個註釋。實際上它的定義可能不是什麼。它被用來幫助代碼分析工具。 – 2013-03-25 13:02:15

+0

該參數只是一個輸入。它可以用於某些優化,但它可能被定義爲什麼都沒有,因此只是作爲文檔。 – slugonamission 2013-03-25 13:02:33

+0

我沒有檢查過,但如果它擴展爲'const'會很好。 – unwind 2013-03-25 13:02:54

回答

2

據我所知,它的定義如下:

/// 
/// Datum is passed to the function. 
/// 
#define IN 

這是用來表明該參數只是一個輸入參數。

作爲OUTOPTIONAL用於指示輸出和可選的參數。

這些都是可能的便利。

+2

這樣的註釋也用於幫助靜態分析,而不僅僅是爲了方便。 – 2013-03-25 13:38:35

+0

感謝@Alexey的信息,我不知道靜態分析。 – Dipto 2013-03-26 06:06:09

4

這些被稱爲SAL(來源標註語言)註釋和有MSDN documentation關於如何使用他們從大靜態分析中獲益。

的實際語法可以從一個SAL版本到另一個(例如,在和標籤:APIWinHTTP)不同。有向後兼容性,但我建議始終使用最新的語法。

0

在WDK這在ntdef.h中文件中定義。通常,在你的驅動程序,你會僅僅只包含NTDDK.H或WDM.H文件,這將反過來包括NTDEF.H和其他重要的頭文件。例如:

#include <ntddk.h> 

如上所述,該註釋被用於靜態分析和被簡單地定義爲

#define IN