ScsiPortWmiDispatchFunction 함수(scsiwmi.h)
ScsiPortWmiDispatchFunction 루틴은 WMI를 지원하는 미니포트 드라이버에 대한 디스패치 루틴입니다.
구문
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 작업을 나타냅니다. 미니포트 드라이버는 입력 SRB에서 MinorFunction을 Srb-WmiSubFunction>으로 설정합니다.
[in] DeviceContext
미니포트 드라이버 정의 컨텍스트 값에 대한 포인터입니다. 포트 드라이버는 DeviceContext 를 미니포트 드라이버의 HwScsiWmiXxx 콜백 루틴에 전달합니다. 이 값은 일반적으로 HW_DEVICE_EXTENSION 구조를 가리킵니다.
[in] RequestContext
WMI SRB에 대한 컨텍스트 정보를 포함하는 SCSIWMI_REQUEST_CONTEXT 구조체에 대한 포인터입니다. SRB가 보류될 수 있는 경우 요청 컨텍스트는 ScsiPortWmiPostProcess가 최종 SRB 반환 상태 및 버퍼 크기로 반환될 때까지 유효해야 하므로 미니포트 드라이버는 SRB 확장에서 이 구조를 할당해야 합니다. ScsiPortWmiDispatchFunction 은 RequestContext 를 이 요청을 처리하는 미니포트 드라이버의 콜백 루틴에 전달합니다.
[in] DataPath
요청과 연결된 데이터 블록을 나타내는 GUID에 대한 포인터입니다. 미니포트 드라이버는 입력 SRB에서 DataPath를 Srb-DataPath>로 설정합니다.
[in] BufferSize
데이터 버퍼의 크기(바이트)를 지정합니다. 미니포트 드라이버는 입력 SRB에서 BufferSize를 Srb-DataTransferLength>로 설정합니다.
[in] Buffer
데이터 버퍼에 대한 포인터입니다. 미니포트 드라이버는 입력 SRB에서 버퍼를 Srb-DataBuffer>로 설정합니다.
반환 값
ScsiPortWmiDispatchFunction 은 요청이 보류 중인 경우 TRUE 를 반환하고, 요청이 완료되면 FALSE 를 반환합니다.
설명
미니포트 드라이버는 함수 멤버가 SRB_FUNCTION_WMI 설정된 SRB를 받으면 초기화된 SCSI_WMILIB_CONTEXT 구조체에 대한 포인터를 포함하여 요청 매개 변수를 사용하여 ScsiPortWmiDispatchFunction 을 호출합니다. 이 구조체는 미니포트 드라이버의 데이터 블록 및 이벤트 블록에 대한 정보를 포함하고 미니포트 드라이버의 HwScsiWmiXxx 콜백 루틴에 대한 진입점을 정의합니다.
ScsiPortWmiDispatchFunction 은 SRB가 WMI 요청인지 확인하고 요청에 지정된 블록이 미니포트 드라이버에 유효한지 여부를 확인합니다. 이러한 조건이 충족되면 ScsiPortWmiDispatchFunction 은 미니포트 드라이버의 SCSI_WMILIB_CONTEXT 구조에서 적절한 HwScsiWmiXxx 진입점을 호출하여 SRB를 처리합니다. 미니포트 드라이버가 선택적 HwScsiWmiXxx 루틴에 대한 진입점을 정의하지 않으면 포트 드라이버가 요청을 처리합니다.
두 경우 모두 ScsiPortWmiDispatchFunction 이 반환된 후 미니포트 드라이버는 보류되지 않는 요청에 대해 다음을 수행해야 합니다.
- Srb->DataTransferLength를 ScsiPortWmiGetReturnSize에서 반환된 값으로 설정합니다.
- Srb->SrbStatus를 ScsiPortWmiGetReturnStatus에서 반환된 값으로 설정합니다.
- RequestComplete를 사용하여 ScsiPortNotification을 호출하고 NextRequest를 사용하여 다시 호출
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | 데스크톱 |
머리글 | scsiwmi.h(Miniport.h, Scsi.h 포함) |