SpbControllerSetIoOtherCallback 함수(spbcx.h)
SpbControllerSetIoOtherCallback 메서드는 SPB 컨트롤러 드라이버의 EvtSpbControllerIoOther 콜백 함수를 등록합니다.
통사론
void SpbControllerSetIoOtherCallback(
[in] WDFDEVICE FxDevice,
[in] PFN_SPB_CONTROLLER_OTHER EvtSpbControllerIoOther,
[in, optional] PFN_WDF_IO_IN_CALLER_CONTEXT EvtIoInCallerContext
);
매개 변수
[in] FxDevice
SPB 컨트롤러를 나타내는 디바이스 개체에 대한 WDFDEVICE 핸들입니다.
[in] EvtSpbControllerIoOther
EvtSpbControllerIoOther 콜백 함수에 대한 포인터입니다. SPB 컨트롤러 드라이버는 이 함수를 구현합니다. SPB 프레임워크 확장(SpbCx)은 이 함수를 호출하여 컨트롤러 드라이버에 I/O 제어 요청을 전달합니다. 이 함수에 전달되는 I/O 요청 유형에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.
[in, optional] EvtIoInCallerContext
I/O 컨트롤 요청이 컨트롤러의 I/O 큐에 처음 도착할 때 호출되는 EvtIoInCallerContext 콜백 함수에 대한 포인터이며 요청에는 SPB 프레임워크 확장(SpbCx)이 인식하지 못하는 IOCTL 코드가 포함됩니다. 이 콜백은 요청 시작자의 프로세스 컨텍스트에서 실행되며 나중에 EvtSpbControllerIoOther 콜백에서 처리할 요청을 전처리할 수 있습니다. 이 매개 변수는 선택 사항이며 이러한 전처리가 필요하지 않은 경우 NULL로 지정할 수 있습니다. 자세한 내용은 다음 설명 섹션을 참조하세요.
반환 값
없음
발언
이 메서드는 SPB 컨트롤러 드라이버가 버스별 또는 드라이버별 사용자 지정 I/O 제어 코드(IOCTL)에 대한 지원을 선언하는 방법을 제공합니다. SPB 컨트롤러 드라이버가 이 메서드를 호출하지 않으면 SpbCx는 이러한 모든 I/O 컨트롤 요청을 거부하며 SPB 컨트롤러 드라이버는 이러한 요청을 볼 수 없습니다.
SpbCx는 SPB 컨트롤러에 대한 I/O 큐를 관리합니다. 기본적으로 SpbCx가 지원하지 않는 IOCTL이 있는 I/O 제어 요청을 받으면 SpbCx는 오류 상태 코드 STATUS_INVALID_DEVICE_REQUEST 요청을 완료합니다.
그러나 spbControllerSetIoOtherCallback 호출하여 SPB 컨트롤러 드라이버는 SPB 프레임워크 확장(SpbCx)이 지원하지 않는 I/O 컨트롤 요청에 대한 지원을 선언합니다. 이 경우 SpbCx가 지원하지 않는 IOCTL 코드가 있는 I/O 컨트롤 요청을 받으면 SpbCx는 EvtSpbControllerIoOther 함수를 호출하여 처리를 위해 SPB 컨트롤러 드라이버에 요청을 전달합니다. SPB 컨트롤러 드라이버는 요청을 완료할 책임이 있습니다.
SpbCx에서 지원하는 IOCTL 목록은 SpbCx I/O 제어 코드참조하세요.
선택적 EvtIoInCallerContext 콜백 함수는 요청 시작자의 프로세스 컨텍스트에서 실행되며, 요청이 EvtSpbControllerIoOther 콜백 함수에 전달되기 전에 버퍼 포인터와 같은 컨텍스트 종속 요청 매개 변수를 전처리할 수 있습니다. EvtIoInCallerContext 함수가 호출되면 spbControllerSetRequestAttributes 대한 이전 호출에서 SPB 컨트롤러 드라이버가 요청한 요청별 컨텍스트가 이미 할당되고 요청에 할당됩니다.
SPB 컨트롤러 드라이버는 디바이스 개체를 커밋하기 전에 이 메서드를 호출해야 합니다. 즉, EvtDriverDeviceAdd 콜백에서 반환하거나 PDO를 컨트롤러의 자식 목록에 추가하기 전에 호출해야 합니다. 자식 목록은 버스에 연결된 디바이스를 나타냅니다. 자세한 내용은 버스디바이스 열거를 참조하세요.
요구 사항
요구 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 8부터 사용할 수 있습니다. |
대상 플랫폼 | 보편적 |
헤더 | spbcx.h |
라이브러리 | Spbcxstubs.lib |
IRQL | PASSIVE_LEVEL |