2

Windows ドライバーでいくつかの作業を行おうとしていますが、サンプル ソース コードの一部を理解するのに苦労しています。C の経験ではこれまで見たことがなく、何も見つかりませんでした。とにかく、パラメータ変数の「IN」部分は何だろうと思っていました。以下は、関数のヘッダーの例です。「OUT」、「INOUT」、「INOPT」などの他のいくつかのものである可能性もあります(他に何も見つかりませんでした)。

VOID
PLxReadRequestComplete(
    IN WDFDMATRANSACTION  DmaTransaction,
    IN NTSTATUS           Status
    )
4

2 に答える 2

5

これらは、パラメーターの使用目的を説明する単なるマーカー (Windows DDK の初期から) です。

通常のビルドでは、マクロは何も定義されていませんが、コンパイラが (SAL またはその他の静的コード分析ツールを使用して) 引数/パラメーターの正しい使用法についてより深い分析を実行できるようにする、実装固有のキーワードにマクロを定義することも考えられます。SAL が考慮に入れることを好むすべての属性を説明するのに十分なほど「豊富」ではないため、SAL に使用されているとは思いません。したがって、それらは主にプログラマーに意図を伝えることを目的としていると思います。

于 2012-08-13T19:06:55.320 に答える
2

これは標準 C ではありません。ほとんどの場合、マクロINを使用して他の値を持つように定義されています。ファイルを、などで検索し、何がわかるかを確認します。#define*.h#define IN#define OUT

于 2012-08-13T18:59:22.157 に答える