PSCSIWMI_SET_DATABLOCK コールバック関数 (scsiwmi.h)
ミニポート ドライバーの HwScsiWmiSetDataBlock ルーチンは、データ ブロックの 1 つのインスタンス内のすべてのデータ項目を変更するために呼び出されます。 このルーチンは省略可能です。
構文
PSCSIWMI_SET_DATABLOCK PscsiwmiSetDatablock;
BOOLEAN PscsiwmiSetDatablock(
[in] PVOID DeviceContext,
[in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
[in] ULONG GuidIndex,
[in] ULONG InstanceIndex,
[in] ULONG BufferSize,
[in] PUCHAR Buffer
)
{...}
パラメーター
[in] DeviceContext
ScsiPortWmiDispatchFunction に渡されるミニポート ドライバーで定義されたコンテキスト値を指します。
[in] RequestContext
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSIWMI_REQUEST_CONTEXT構造体を指します。
[in] GuidIndex
ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡したSCSI_WMILIB_CONTEXT構造内の GUID の一覧へのインデックスによってデータ ブロックを指定します。
[in] InstanceIndex
GuidIndex で指定されたブロックに複数のインスタンスがある場合、InstanceIndex は インスタンスを指定します。
[in] BufferSize
Buffer のバッファーのサイズをバイト単位で指定 します。
[in] Buffer
インスタンスの新しい値を含むバッファーを指します。
戻り値
HwScsiWmiSetDataBlock は、要求が保留中の場合はSRB_STATUS_PENDINGを返し、要求が完了した場合は 0 以外の SRB 状態値を返します。 このルーチンによって返される SRB 状態値は、 ScsiPortWmiPostProcess に渡されたものと同じです。
注釈
ミニポート ドライバーは、Function メンバーがSRB_FUNCTION_WMIに設定されている SRB を受信すると、初期化されたSCSI_WMILIB_CONTEXT構造体へのポインターを使用して ScsiPortWmiDispatchFunction を呼び出し、MinorFunction を Srb-WmiSubFunction> に設定します。 MinorFunction がデータ ブロックのインスタンスを変更する要求を示している場合、SCSI ポート ドライバーはミニポート ドライバーの HwScsiWmiSetDataBlock ルーチンを呼び出します。
ミニポート ドライバーが HwScsiWmiSetDataBlock ルーチンを実装していない場合は、ミニポート ドライバーが ScsiPortWmiDispatchFunction に渡すSCSI_WMILIB_CONTEXTで SetWmiDataBlock を NULL に設定する必要があります。 この場合、ポート ドライバーは呼び出し元にSRB_STATUS_ERRORを返します。
ミニポート ドライバーが HwScsiWmiSetDataBlock を実装する場合は、データ ブロックのインスタンスをバッファーから新しい値に変更する必要があります。
データ ブロック内のすべての項目が読み取り専用の場合、ミニポート ドライバーはSRB_STATUS_ERRORを返す必要があります。 それ以外の場合、ミニポート ドライバーは、可能な項目を変更し、SRB_STATUS_SUCCESSを返します。
ミニポート ドライバーは、要求が完了したときに、適切な SrbStatus 値を使用して ScsiPortWmiPostProcess を呼び出す必要があります。 要求が処理されない場合は、HwScsiWmiSetDataBlock コールバックで ScsiPortWmiPostProcess を呼び出す必要があります。 それ以外の場合は、要求が実際に完了したときに ScsiPortWmiPostProcess を呼び出す必要があります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | scsiwmi.h (Scsiwmi.h を含む) |