DrvEscape 関数 (winddi.h)
DrvEscape 関数は、デバイスに依存しないデバイス ドライバー インターフェイスで使用できないデバイスから情報を取得するために使用されます。特定のクエリは、iEsc パラメーターの値によって異なります。
構文
ULONG DrvEscape(
[in] SURFOBJ *pso,
[in] ULONG iEsc,
[in] ULONG cjIn,
[in] PVOID pvIn,
[in] ULONG cjOut,
[out] PVOID pvOut
);
パラメーター
[in] pso
呼び出しの対象となるサーフェスを記述する SURFOBJ 構造体へのポインター。
[in] iEsc
クエリを指定します。 他のパラメーターの意味は、この値によって異なります。 QUERYESCSUPPORT は、定義済みの唯一の値です。ドライバーが特定のエスケープ関数をサポートしているかどうかを照会します。 この場合、 pvIn は エスケープ関数番号を指します。 cjOut と pvOut は無視されます。 指定した関数がサポートされている場合、戻り値は 0 以外です。
[in] cjIn
pvIn が指すバッファーのサイズをバイト単位で指定します。
[in] pvIn
呼び出しの入力データへのポインター。 入力データの形式は、 iEsc パラメーターで指定されたクエリによって異なります。
[in] cjOut
pvOut が指すバッファーのサイズをバイト単位で指定します。
[out] pvOut
出力バッファーへのポインター。 出力データの形式は、 iEsc パラメーターで指定されたクエリによって異なります。
戻り値
戻り値は、 iEsc パラメーターで指定されたクエリに依存します。 クエリで指定された関数がサポートされていない場合、戻り値は 0 になります。
注釈
この関数では、デバイスでの描画は許可されていません。 DrvDrawEscape は、特殊な描画サポートに使用されます。
GDI は、(悪意のある可能性がある) クライアント アプリケーションからドライバーにデータを直接渡します。つまり、 DrvEscape 関数はすべての入力引数を検証する必要があります。 具体的には、この関数は次の操作を行う必要があります。
- iEsc パラメーターで受け取った値が有効なクエリを表していることを確認します。
- 指定したクエリに対して入力バッファーのサイズ ( cjIn パラメーターの値) が有効であることを確認します。
- pvIn パラメーターが指すバッファーの内容が、指定したクエリに対して有効であることを確認します。
- 指定したクエリに対して、指定した出力バッファーのサイズ ( cjOut パラメーターの値) が有効であることを確認します。
DrvEscape は、すべてのドライバーで省略可能です。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | winddi.h (Winddi.h を含む) |