次の方法で共有


RTL_QUERY_REGISTRY_ROUTINE コールバック関数 (wdm.h)

QueryRoutine ルーチンは、RtlQueryRegistryValues ルーチンの前の呼び出しで要求されたレジストリ値に関する情報を提供します。

構文

RTL_QUERY_REGISTRY_ROUTINE RtlQueryRegistryRoutine;

NTSTATUS RtlQueryRegistryRoutine(
  [in]           PWSTR ValueName,
  [in]           ULONG ValueType,
  [in]           PVOID ValueData,
  [in]           ULONG ValueLength,
  [in, optional] PVOID Context,
  [in, optional] PVOID EntryContext
)
{...}

パラメーター

[in] ValueName

要求されたレジストリ値に関連付けられているレジストリ キーを指定します。 このパラメーターは、キーを含む null で終わる Unicode 文字列へのポインターです。

[in] ValueType

指定したレジストリ キーと共に格納されるレジストリ値の種類を指定します。 レジストリ値の型の詳細については、KEY_VALUE_BASIC_INFORMATIONType パラメーターの定義を参照してください。

[in] ValueData

指定したレジストリ キーに関連付けられているデータ値へのポインター。 ドライバーは、この値を読み取り専用として扱う必要があります。 ValueData が指す値データの種類の詳細については、KEY_VALUE_BASIC_INFORMATIONType パラメーターの定義を参照してください。

[in] ValueLength

ValueData が指す値の長さをバイト単位で指定します。

[in, optional] Context

RtlQueryRegistryValues の前の呼び出しでドライバーが指定した Context パラメーター値を指定します。

[in, optional] EntryContext

RtlQueryRegistryValues の前の呼び出しでドライバーが指定した QueryTable 配列要素の EntryContext 値を指定します。

戻り値

QueryRoutine は、呼び出しが成功した場合にSTATUS_SUCCESSを返します。 それ以外の場合は、適切なエラー状態コードを返します。 Ntstatus.h ヘッダー ファイルで定義されている状態コードのみを使用します。

注釈

カーネル モード ドライバーは 、QueryRoutine ルーチンを実装します。 このルーチンは、 RtlQueryRegistryValues ルーチンによって呼び出されます。

1 つ以上のレジストリ値に関する情報を取得するために、ドライバーは RtlQueryRegistryValues を 呼び出し、ポインターを入力パラメーターとして RTL_QUERY_REGISTRY_TABLE 構造体の配列に渡します。 この配列の各構造体には、ドライバーによって実装された QueryRoutine ルーチンへのポインターと、特定のレジストリ値に関する情報の要求が含まれています。 配列内の各構造体について、 RtlQueryRegistryValues は指定された QueryRoutine ルーチンを呼び出し、指定されたレジストリ値に関する要求された情報を含むパラメーターのセットをこのルーチンに渡します。

RTL_QUERY_REGISTRY_TABLE構造体の詳細については、「RtlQueryRegistryValues」を参照してください。

QueryRoutine コールバック ルーチンを定義するには、まず、定義するコールバック ルーチンの種類を識別する関数宣言を指定する必要があります。 Windows には、ドライバーのコールバック関数型のセットが用意されています。 コールバック関数の種類を使用して関数を宣言すると、 ドライバーのコード分析静的ドライバー検証ツール (SDV)、およびその他の検証ツールでエラーが検出され、Windows オペレーティング システムのドライバーを記述するための要件になります。

たとえば、 という名前MyQueryRoutineQueryRoutine コールバック ルーチンを定義するには、次のコード例に示すように、RTL_QUERY_REGISTRY_ROUTINE型を使用します。

RTL_QUERY_REGISTRY_ROUTINE MyQueryRoutine;

次に、コールバック ルーチンを次のように実装します。

_Use_decl_annotations_
NTSTATUS
  MyQueryRoutine(
    PWSTR ValueName,
    ULONG ValueType,
    PVOID ValueData,
    ULONG ValueLength,
    PVOID Context,
    PVOID EntryContext
    )
  {
      // Function body
  }

RTL_QUERY_REGISTRY_ROUTINE関数の種類は、Wdm.h ヘッダー ファイルで定義されています。 コード分析ツールの実行時にエラーをより正確に識別するには、必ず注釈を _Use_decl_annotations_ 関数定義に追加してください。 注釈により _Use_decl_annotations_ 、ヘッダー ファイル内のRTL_QUERY_REGISTRY_ROUTINE関数型に適用される注釈が確実に使用されます。 関数宣言の要件の詳細については、「 WDM ドライバーの関数ロール型を使用して関数を宣言する」を参照してください。 の詳細 _Use_decl_annotations_については、「 関数の動作に注釈を付ける」を参照してください。

要件

要件
対象プラットフォーム デスクトップ
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
IRQL PASSIVE_LEVELで呼び出されます。

こちらもご覧ください

KEY_VALUE_BASIC_INFORMATION

RtlQueryRegistryValues