다음을 통해 공유


ChangerClassSendSrbSynchronous 함수(mcd.h)

ChangerClassSendSrbSynchronous 루틴은 지정된 디바이스에 SRB를 동기적으로 보냅니다.

구문

NTSTATUS ChangerClassSendSrbSynchronous(
  [in] PDEVICE_OBJECT      DeviceObject,
  [in] PSCSI_REQUEST_BLOCK Srb,
  [in] PVOID               Buffer,
  [in] ULONG               BufferSize,
  [in] BOOLEAN             WriteToDevice
);

매개 변수

[in] DeviceObject

대상 디바이스의 기능 디바이스 개체에 대한 포인터입니다.

[in] Srb

대상 디바이스로 보낼 부분적으로 초기화된 SRB(SCSI 요청 블록)에 대한 포인터입니다.

[in] Buffer

Srb-DataBuffer> 가 가리킬 버퍼의 주소를 지정합니다. ChangerClassSendSrbSynchronous 는 이 버퍼에 대한 MDL을 만들고 SRB IRP의 대상 디바이스 드라이버에 전달합니다.

[in] BufferSize

버퍼의 길이(바이트)를 지정합니다.

[in] WriteToDevice

TRUE일 때 쓰기 작업을 나타내고 FALSE인 경우 읽기 작업을 나타냅니다.

반환 값

SRB가 성공적으로 전송된 경우 STATUS_SUCCESS 반환하거나 SRB가 실패하거나 어떤 이유로 보낼 수 없는 경우 적절한 오류 코드를 반환합니다.

설명

체인저 미니클래스 드라이버는 Microsoft Windows XP 이상 운영 체제에서 이 클래스 드라이버 루틴을 호출할 수 있습니다. 미니클래스 드라이버는 이 루틴을 사용하여 classpnp.sys 라이브러리 루틴 ClassSendSrbSynchronous 를 직접 호출하는 대신 포트 드라이버에 SRB를 보내야 합니다. classpnp.sys WDK(Windows 드라이버 키트)와 함께 제공되지만 지원되는 API는 아니며 이 라이브러리의 루틴을 직접 호출하는 드라이버는 향후 릴리스에서 제대로 작동하지 않을 수 있습니다.

ChangerClassSendSrbSynchronous 는 부분적으로 초기화된 SRB의 초기화를 완료하여 대상의 디바이스 개체에 표시된 값으로 SRB의 플래그를 설정합니다. ChangerClassSendSrbSynchronous 는 대상 디바이스에 SRB를 전달하는 데 사용되는 IRP를 만들고, IRP를 보낸 다음, IRP의 완료를 처리합니다.

IRP가 실패하고 감지 요청 데이터가 IRP를 다시 시도해야 함을 나타내는 경우 ChangerClassSendSrbSynchronous 는 IRP를 다시 보냅니다.

요구 사항

요구 사항
대상 플랫폼 데스크톱
머리글 mcd.h(Mcd.h, Ntddchgr.h 포함)
라이브러리 Mcd.lib

추가 정보

SCSI_REQUEST_BLOCK