2012-08-13 37 views
2

我想在Windows驅動程序上做一些工作,但我無法理解示例源代碼的一部分。我以前從未在C語言體驗中看到過這一點,我也找不到任何東西。無論如何,我想知道參數變量的「IN」部分是什麼?下面是一個函數頭的例子。它也可能是其他一些東西,如「OUT」,「INOUT」,「INOPT」,也許更多(找不到其他東西)。什麼是函數參數的一部分?

VOID 
PLxReadRequestComplete(
    IN WDFDMATRANSACTION DmaTransaction, 
    IN NTSTATUS   Status 
    ) 
+0

我認爲它是[SAL](http://msdn.microsoft.com/en-us/library/ms235402.aspx)的一部分。 – cnicutar 2012-08-13 19:00:53

+0

m $參數註釋。 [this](http://msdn.microsoft.com/en-us/library/windows/desktop/aa383701%28v=vs.85%29.aspx)_might_ help,請參閱'_in','_out' – pb2q 2012-08-13 19:06:04

回答

5

這些僅僅是描述參數使用目的的標記(從Windows DDK的早期開始)。

在常規構建中,宏定義爲無,但可以想象將其定義爲特定於實現的關鍵字,從而允許編譯器(使用SAL或其他靜態代碼分析工具)對正確使用參數執行更深入的分析/參數。我不認爲它們用於SAL,因爲它們不夠「豐富」,不足以描述SAL喜歡考慮的所有屬性。所以我認爲他們主要是爲了向程序員傳達意圖。

2

這不是標準下最有可能的,IN已經被定義爲具有使用#define一些其他的價值 - 即。在*.h文件中搜索#define IN,#define OUT等,然後查看是否可以找出什麼。

相關問題