次の方法で共有


PERF_CONFIGURATION_DATA構造体 (storport.h)

PERF_CONFIGURATION_DATA構造体は、StorPortInitializePerfOpts ルーチンでサポートされるパフォーマンスの最適化について説明します。

構文

typedef struct _PERF_CONFIGURATION_DATA {
  ULONG           Version;
  ULONG           Size;
  ULONG           Flags;
  ULONG           ConcurrentChannels;
  ULONG           FirstRedirectionMessageNumber;
  ULONG           LastRedirectionMessageNumber;
  ULONG           DeviceNode;
  ULONG           Reserved;
  PGROUP_AFFINITY MessageTargets;
} PERF_CONFIGURATION_DATA, *PPERF_CONFIGURATION_DATA;

メンバーズ

Version

構造体のバージョン番号。 最適化のクエリと初期化を行うときに、このメンバーを設定します。

Size

構造体のサイズ。sizeof(PERF_CONFIGURATION_DATA)に設定されます。

Flags

サポートされているフラグのビットごとの OR。 現在、次のフラグがサポートされています。

意味
STOR_PERF_DPC_REDIRECTION このフラグは、DPC 処理を複数の CPU に分散させる必要があることを示すために使用されます。

このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。

STOR_PERF_CONCURRENT_CHANNELS このフラグは、HwStorStartIo ルーチンへの同時呼び出しがサポートされていることを示すために使用されます。 Windows 8 より前のミニポートでは、このフラグを設定しないでください。

このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。

STOR_PERF_INTERRUPT_MESSAGE_RANGES このフラグは、割り込みリダイレクトがサポートされていることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。

このフラグは、バージョン が 2 または 3 に設定されている場合に有効です。

STOR_PERF_ADV_CONFIG_LOCALITY このフラグは、適切なアフィニティを持つメッセージ グループに関連するグループとマスクを使用する必要があることを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_INTERRUPT_MESSAGE_RANGESとSTOR_PERF_DPC_REDIRECTIONフラグも設定する必要があります。

このフラグは、バージョン が 3 に設定されている場合に有効です。

STOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO このフラグは、ミニポート ドライバーが新しい I/O の送信と同時に I/O を完了することを示すために使用されます。 このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。

このフラグは、バージョン が 3 に設定されている場合に有効です。 以下の解説を参照してください。

STOR_PERF_DPC_REDIRECTION_CURRENT_CPU このフラグは、DPC リダイレクト (必須) を選択していることを示すために使用されますが、IO リダイレクトの選択は、Storport への IO 要求を開始した CPU ではなく、DPC を要求する CPU に設定されます。

このフラグを使用する場合は、STOR_PERF_DPC_REDIRECTION フラグも設定する必要があります。

このフラグは、バージョン が 4 に設定されている場合に有効です。

STOR_PERF_NO_SGL このフラグは、ミニポートが IO 要求バッファーの storport ドライバーによって作成される SGL を必要としないことを示すために使用されます。

このフラグは、バージョン が 5 に設定されている場合に有効です。

ConcurrentChannels

ミニポート ドライバーとデバイスがサポートする HwStorStartIo ルーチンへの同時呼び出しの数。 このメンバーは、STOR_PERF_CONCURRENT_CHANNELS フラグが設定されている場合にのみアクセスされます。 Windows 8 より前のミニポートでは、この値を設定しないでください。

FirstRedirectionMessageNumber

フラグ メンバーにSTOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーはこのメッセージ番号で始まる割り込みリダイレクトを初期化します。 このメンバーは、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。

LastRedirectionMessageNumber

フラグ メンバーにSTOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合、ミニポート ドライバーは、このメッセージ番号で終了するように割り込みリダイレクトを初期化します。 このメンバーは、STOR_PERF_INTERRUPT_MESSAGE_RANGES フラグが設定されている場合にのみアクセスされます。

DeviceNode

フラグ メンバーにSTOR_PERF_ADV_CONFIG_LOCALITY フラグが設定されている場合、Storport はこのフィールドを初期化して、ミニポート ドライバーのデバイスが存在する NUMA ノード番号を格納します。

Reserved

システム用に予約されています。

MessageTargets

Flags メンバーに STOR_PERF_ADV_CONFIG_LOCALITY フラグが設定されている場合、Storport は GROUP_AFFINITY 配列の構造体内のフィールドを初期化します。 これらの構造体は、現在使用されているリダイレクト メッセージに対応します。 配列自体は 0 から始まりますが、FirstRedirectionMessageNumber 0 である必要はありません。 ミニポートは、この配列を割り当て、MessageTargets をポイントするように設定します。 ミニポート ドライバーは、返されるすべてのアフィニティ マスクを保持するのに十分な大きさの GROUP_AFFINITY 配列を割り当てる必要があります。

備考

この構造体の現在のバージョンは、STOR_PERF_VERSIONによって定義されます。 バージョン この値に設定すると、Flags でサポートされているすべての最適化を指定できます。

STOR_PERF_DPC_REDIRECTION フラグの目的は、個々の CPU が DPC 処理に圧倒されないようにすることです。 このフラグを設定すると、DPC 処理は複数の CPU に分散されます。 STOR_PERF_DPC_REDIRECTION_CURRENT_CPUが設定されていない場合、StorPort は I/O を開始したのと同じ CPU で I/O 完了 DPC のスケジュールを設定しようとします。

通常、ミニポートは HwStorStartIo ルーチン I/O 要求を完了し、RequestComplete 通知の種類で StorPortNotification 呼び出します。 この方法で I/O を処理する場合、ミニポートは、Storport が DPC リダイレクトを調整できるように、フラグ メンバーに設定されたSTOR_PERF_OPTIMIZE_FOR_COMPLETION_DURING_STARTIO フラグを残します。

デバイスのメッセージ通知割り込みを有効にする方法については、「レジストリ で Message-Signaled 割り込みを有効にするを参照してください。

必要条件

要件 価値
ヘッダー storport.h (Storport.h を含む)

関連項目

StorPortInitializePerfOpts