다음을 통해 공유


PSCSIWMI_QUERY_DATABLOCK 콜백 함수(scsiwmi.h)

미니포트 드라이버의 HwScsiWmiQueryDataBlock 루틴은 단일 instance 또는 데이터 블록의 모든 인스턴스를 가져오기 위해 호출됩니다. 이 루틴은 필수입니다.

참고 SCSI 포트 드라이버 및 SCSI 미니포트 드라이버 모델은 나중에 변경되거나 사용할 수 없습니다. 대신 Storport 드라이버Storport 미니포트 드라이버 모델을 사용하는 것이 좋습니다.
 

구문

PSCSIWMI_QUERY_DATABLOCK PscsiwmiQueryDatablock;

BOOLEAN PscsiwmiQueryDatablock(
  [in]      PVOID Context,
  [in]      PSCSIWMI_REQUEST_CONTEXT DispatchContext,
  [in]      ULONG GuidIndex,
  [in]      ULONG InstanceIndex,
  [in]      ULONG InstanceCount,
  [in, out] PULONG InstanceLengthArray,
  [in]      ULONG BufferAvail,
  [out]     PUCHAR Buffer
)
{...}

매개 변수

[in] Context

ScsiPortWmiDispatchFunction에 전달된 미니포트 드라이버 정의 컨텍스트 값을 가리킵니다.

[in] DispatchContext

미니포트 드라이버가 ScsiPortWmiDispatchFunction에 전달한 SCSIWMI_REQUEST_CONTEXT 구조를 가리킵니다.

[in] GuidIndex

미니포트 드라이버가 ScsiPortWmiDispatchFunction에 전달한 SCSI_WMILIB_CONTEXT 구조체의 GUID 목록에 대한 인덱스의 데이터 블록을 지정합니다.

[in] InstanceIndex

IRP_MN_QUERY_SINGLE_INSTANCE 요청에 대한 응답으로 HwScsiWmiQueryDataBlock이 호출되면 InstanceIndex는 쿼리할 instance 지정합니다. IRP_MN_QUERY_ALL_DATA 요청에 대한 응답으로 HwScsiWmiQueryDataBlock 이 호출되면 InstanceIndex 는 0입니다.

[in] InstanceCount

IRP_MN_QUERY_SINGLE_INSTANCE 요청에 대한 응답으로 HwScsiWmiQueryDataBlock 이 호출되면 InstanceCount 는 1입니다. IRP_MN_QUERY_ALL_DATA 요청에 대한 응답으로 HwScsiWmiQueryDataBlock 이 호출되는 경우 InstanceCount 는 반환할 인스턴스 수입니다.

[in, out] InstanceLengthArray

반환할 데이터 블록의 각 instance 길이를 나타내는 ULONG 배열을 가리킵니다. 이 배열에는 InstanceCount 요소가 있습니다. 출력 버퍼에 요청을 처리할 공간이 충분하지 않은 경우 이 값은 NULL 일 수 있습니다.

[in] BufferAvail

버퍼의 버퍼에서 데이터를 수신하는 데 사용할 수 있는 최대 바이트 수를 지정합니다.

[out] Buffer

instance 데이터를 수신할 버퍼를 가리킵니다. 버퍼가 모든 데이터를 수신할 수 있을 만큼 큰 경우 미니포트 드라이버는 각 instance 8 바이트 경계에 정렬된 instance 데이터를 버퍼에 씁니다. 버퍼가 너무 작아서 모든 데이터를 수신할 수 없는 경우 미니포트 드라이버는 SRB_STATUS_DATA_OVERRUN 상태 사용하여 ScsiPortWmiPostProcess를 호출하고 BufferUsed를 요청을 수행하는 데 필요한 출력 버퍼의 크기로 설정합니다.

반환 값

HwScsiWmiQueryDataBlock은 요청이 보류 중인 경우 SRB_STATUS_PENDING 반환하거나 요청이 완료된 경우 0이 아닌 SRB 상태 값을 반환합니다. 이 루틴에서 반환된 SRB 상태 값은 ScsiPortWmiPostProcess에 전달된 값과 동일합니다. 반환 값 데이터 형식은 BOOLEAN이지만 HwScsiWmiQueryDataBlock 루틴은 실제로 SRB 상태 값을 반환합니다.

설명

미니포트 드라이버는 함수 멤버가 SRB_FUNCTION_WMI 설정된 SRB를 받으면 초기화된 SCSI_WMILIB_CONTEXT 구조체에 대한 포인터와 Srb-WmiSubFunction>으로 설정된 MinorFunction을 사용하여 ScsiPortWmiDispatchFunction을 호출합니다. MinorFunction이 데이터 블록의 단일 instance 또는 모든 인스턴스를 가져오라는 요청을 나타내는 경우 SCSI 포트 드라이버는 미니포트 드라이버의 HwScsiWmiQueryDataBlock 루틴을 호출합니다.

미니포트 드라이버는 instance 데이터를 버퍼에 씁니다. 보류되지 않는 요청의 경우 미니포트 드라이버는 HwScsiWmiQueryDataBlock에서 반환하기 전에 적절한 SrbStatus 값으로 ScsiPortWmiPostProcess를 호출합니다. 요청이 보류되면 미니포트 드라이버는 요청 이 완료되면 ScsiPortWmiPostProcess 를 호출합니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 scsiwmi.h(Scsiwmi.h 포함)

추가 정보

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess