다음을 통해 공유


PSCSIWMI_FUNCTION_CONTROL 콜백 함수(scsiwmi.h)

미니포트 드라이버의 HwScsiWmiFunctionControl 루틴은 이벤트 알림을 사용하거나 사용하지 않도록 설정하기 위해 호출됩니다. 또한 미니포트 드라이버가 수집 비용이 많이 드는 것으로 지정된 데이터 블록에 대해 데이터 수집을 사용하거나 사용하지 않도록 설정하도록 호출됩니다. 이 루틴은 선택 사항입니다.

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

구문

PSCSIWMI_FUNCTION_CONTROL PscsiwmiFunctionControl;

BOOLEAN PscsiwmiFunctionControl(
  [in] PVOID DeviceContext,
  [in] PSCSIWMI_REQUEST_CONTEXT RequestContext,
  [in] ULONG GuidIndex,
  [in] SCSIWMI_ENABLE_DISABLE_CONTROL Function,
  [in] BOOLEAN Enable
)
{...}

매개 변수

[in] DeviceContext

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

[in] RequestContext

미니포트 드라이버가 ScsiPortWmiDispatchFunction에 전달한 SCSIWMI_REQUEST_CONTEXT 형식의 열거자 값이 포함된 값을 가리킵니다.

[in] GuidIndex

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

[in] Function

이벤트를 사용하거나 사용하지 않도록 설정할 ScsiWmiEventControl 또는 수집 비용이 많이 드는 블록에 대해 데이터 수집을 사용하거나 사용하지 않도록 설정하는 ScsiWmiEventControl 을 지정합니다(즉, 미니포트 드라이버가 블록을 등록하는 데 사용되는 SCSIWMIGUIDREGINFO 구조의 플래그 에 WMIREG_FLAG_EXPENSIVE 설정된 블록).

[in] Enable

이벤트 또는 데이터 수집을 사용하도록 설정하려면 TRUE지정하고 FALSE 를 지정하여 사용하지 않도록 설정합니다.

반환 값

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

설명

미니포트 드라이버는 Function 멤버가 SRB_FUNCTION_WMI 설정된 SRB를 받으면 초기화된 SCSI_WMILIB_CONTEXT 구조체에 대한 포인터와 Srb-WmiSubFunction>으로 설정된 MinorFunction을 사용하여 ScsiPortWmiDispatchFunction을 호출합니다. MINORFunction이 이벤트를 사용하거나 사용하지 않도록 설정하거나 미니포트 드라이버가 수집 비용이 많이 드는 데이터 블록에 대한 수집을 사용하거나 사용하지 않도록 설정하라는 요청을 나타내는 경우 SCSI 포트 드라이버는 미니포트 드라이버의 HwScsiWmiFunctionControl 루틴을 호출합니다.

미니포트 드라이버가 HwScsiWmiFunctionControl 루틴을 구현하지 않는 경우 미니포트 드라이버가 ScsiPortWmiDispatchFunction에 전달하는 SCSI_WMILIB_CONTEXT WmiFunctionControlNULL로 설정해야 합니다. 포트 드라이버는 호출자에게 SRB_STATUS_SUCCESS 반환합니다.

첫 번째 데이터 소비자가 블록을 사용하도록 설정할 때 포트 드라이버가 단일 사용 요청을 보내고 마지막 데이터 소비자가 블록을 사용하지 않도록 설정할 때 단일 사용 안 함 요청을 보내기 때문에 미니포트 드라이버가 블록에 대해 이벤트 또는 데이터 수집을 이미 사용하도록 설정되었는지 여부를 검사 필요가 없습니다. 포트 드라이버는 HwScsiWmiFunctionControl 을 두 번 이상 호출하여 블록을 사용하지 않도록 설정하는 중간 호출 없이 블록을 사용하도록 설정하지 않습니다.

HwScsiWmiFunctionControl 콜백에서 SRB가 완료되면 미니포트 드라이버는 적절한 SrbStatus사용하여 ScsiPortWmiPostProcess를 호출합니다. 미니포트 드라이버가 이 SRB를 보류하는 경우 SRB가 완료되고 SRB를 완료하기 전에 ScsiPortWmiPostProcess 를 호출해야 합니다.

요구 사항

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

추가 정보

SCSIWMIGUIDREGINFO

SCSI_WMILIB_CONTEXT

ScsiPortWmiDispatchFunction

ScsiPortWmiPostProcess