다음을 통해 공유


ScsiPortWmiDispatchFunction 함수(scsiwmi.h)

ScsiPortWmiDispatchFunction 루틴은 WMI를 지원하는 미니포트 드라이버에 대한 디스패치 루틴입니다.

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

통사론

BOOLEAN ScsiPortWmiDispatchFunction(
  [in] PSCSI_WMILIB_CONTEXT     WmiLibInfo,
  [in] UCHAR                    MinorFunction,
  [in] PVOID                    DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] PVOID                    DataPath,
  [in] ULONG                    BufferSize,
  [in] PVOID                    Buffer
);

매개 변수

[in] WmiLibInfo

미니포트 드라이버의 데이터 블록 및 이벤트 블록에 대한 등록 정보를 포함하고 미니포트 드라이버의 WMI 라이브러리 콜백 루틴에 대한 진입점을 정의하는 SCSI_WMILIB_CONTEXT 구조체에 대한 포인터입니다.

[in] MinorFunction

수행할 WMI 동작을 나타냅니다. 미니포트 드라이버는 MinorFunction 입력 SRB에서 Srb->WmiSubFunction 설정합니다.

[in] DeviceContext

미니포트 드라이버 정의 컨텍스트 값에 대한 포인터입니다. 포트 드라이버는 DeviceContext 미니포트 드라이버의 HwScsiWmiXxx 콜백 루틴에 전달합니다. 이 값은 일반적으로 HW_DEVICE_EXTENSION 구조를 가리킵니다.

[in] RequestContext

WMI SRB에 대한 컨텍스트 정보를 포함하는 SCSIWMI_REQUEST_CONTEXT 구조체에 대한 포인터입니다. SRB가 보류될 수 있는 경우 요청 컨텍스트가 최종 SRB 반환 상태 및 버퍼 크기로 반환될 때까지 ScsiPortWmiPostProcess 반환될 때까지 유효해야 하므로 미니포트 드라이버는 SRB 확장에서 이 구조를 할당해야 합니다. ScsiPortWmiDispatchFunction 이 요청을 처리하는 미니포트 드라이버의 콜백 루틴에 RequestContext 전달합니다.

[in] DataPath

요청과 연결된 데이터 블록을 나타내는 GUID에 대한 포인터입니다. 미니포트 드라이버는 DataPath 입력 SRB에서 Srb->DataPath 설정합니다.

[in] BufferSize

데이터 버퍼의 크기(바이트)를 지정합니다. 미니포트 드라이버는 BufferSize 입력 SRB에서 Srb->DataTransferLength 설정합니다.

[in] Buffer

데이터 버퍼에 대한 포인터입니다. 미니포트 드라이버는 버퍼 입력 SRB에서 Srb->DataBuffer 설정합니다.

반환 값

ScsiPortWmiDispatchFunction 요청이 보류 중인 경우 TRUE 반환하거나 요청이 완료된 경우 FALSE .

발언

미니포트 드라이버는 Function 멤버가 SRB_FUNCTION_WMI 설정된 SRB를 받으면 초기화된 SCSI_WMILIB_CONTEXT 구조에 대한 포인터를 포함하여 요청 매개 변수를 사용하여 ScsiPortWmiDispatchFunction 호출합니다. 이 구조는 미니포트 드라이버의 데이터 블록 및 이벤트 블록에 대한 정보를 포함하고 미니포트 드라이버의 HwScsiWmiXxx 콜백 루틴에 대한 진입점을 정의합니다.

ScsiPortWmiDispatchFunction SRB가 WMI 요청인지 확인하고 요청에 지정된 블록이 미니포트 드라이버에 유효한지 여부를 확인합니다. 이러한 조건이 충족되면 ScsiPortWmiDispatchFunction 미니포트 드라이버의 SCSI_WMILIB_CONTEXT 구조에서 적절한 HwScsiWmiXxx 진입점을 호출하여 SRB를 처리합니다. 미니포트 드라이버가 선택적 HwScsiWmiXxx 루틴에 대한 진입점을 정의하지 않으면 포트 드라이버가 요청을 처리합니다.

두 경우 모두 ScsiPortWmiDispatchFunction 반환된 후 미니포트 드라이버는 보류되지 않은 요청에 대해 다음을 수행해야 합니다.

  • Srb->DataTransferLengthScsiPortWmiGetReturnSize 반환된 값으로 설정합니다.
  • Srb->SrbStatusScsiPortWmiGetReturnStatus 반환된 값으로 설정합니다.
  • RequestComplete 사용하여 ScsiPortNotification 호출하고 NextRequest

요구 사항

요구
대상 플랫폼 바탕 화면
헤더 scsiwmi.h(Miniport.h, Scsi.h 포함)

참고 항목

SCSIWMI_REQUEST_CONTEXT

SCSI_WMILIB_CONTEXT

ScsiPortNotification

ScsiPortWmiGetReturnSize

ScsiPortWmiGetReturnStatus

ScsiPortWmiPostProcess