다음을 통해 공유


SDBUS_REQUEST_PACKET 구조체(ntddsd.h)

SDBUS_REQUEST_PACKET 구조는 SdBusSubmitRequest 루틴이 버스 드라이버에 보내는 개별 요청 및 명령에 대한 매개 변수를 지정합니다.

통사론

typedef struct _SDBUS_REQUEST_PACKET {
  SD_REQUEST_FUNCTION RequestFunction;
  PVOID               UserContext[3];
  ULONG_PTR           Information;
  union {
    UCHAR        AsUCHAR[16];
    ULONG        AsULONG[4];
    SDRESP_TYPE3 Type3;
  } ResponseData;
  UCHAR               ResponseLength;
  UCHAR               Reserved;
  USHORT              Flags;
  union {
    struct {
      SDBUS_PROPERTY Property;
      PVOID          Buffer;
      ULONG          Length;
    } GetSetProperty;
    struct {
      SDCMD_DESCRIPTOR CmdDesc;
      ULONG            Argument;
      PMDL             Mdl;
      ULONG            Length;
    } DeviceCommand;
    struct {
      SDBUS_ERASE_TYPE EraseType;
      ULONG            StartBlock;
      ULONG            EndBlock;
    } EraseCommand;
    struct {
      ULONG Frequency;
    } MmcSoftReset;
    struct {
      PIRP IrpToHpi;
    } MmcHpi;
  } Parameters;
} SDBUS_REQUEST_PACKET, *PSDBUS_REQUEST_PACKET;

회원

RequestFunction

작업에 대한 매개 변수 및 해석 방법을 지정하는 SD_REQUEST_FUNCTION 형식의 열거형 값을 포함합니다.

UserContext[3]

호출자가 선택적으로 사용할 버퍼 영역을 포함합니다. 버스 드라이버는 이 멤버를 사용하지 않습니다.

Information

출력에 대한 요청의 상태를 포함합니다.

ResponseData

ResponseData 공용 구조체를 정의합니다.

ResponseData.AsUCHAR[16]

출력에 대한 최대 16바이트 응답 데이터를 포함합니다. 응답 데이터에 대한 자세한 내용은 SD(Secure Digital) 사양을 참조하세요.

ResponseData.AsULONG[4]

출력에 대한 최대 16바이트 응답 데이터를 포함합니다. 응답 데이터에 대한 자세한 내용은 SD(Secure Digital) 사양을 참조하세요.

ResponseData.Type3

Type3 SDRESP_TYPE3 멤버를 정의합니다.

ResponseLength

응답 데이터의 길이(바이트)를 나타냅니다.

Reserved

예약됨, 0으로 설정

Flags

SDRP에 대한 플래그 필드입니다.

Parameters

개별 함수에 대한 매개 변수입니다.

Parameters.GetSetProperty

속성 함수를 사용하면 호출자가 버스 드라이버 작업의 측면을 제어할 수 있습니다.

Parameters.GetSetProperty.Property

읽거나 변경할 속성을 지정하는 SDBUS_PROPERTY 형식의 열거형 값을 포함합니다.

Parameters.GetSetProperty.Buffer

속성을 설정하는 작업에 쓸 속성 데이터를 포함합니다. 속성과 연결된 데이터를 검색하는 작업의 속성에서 읽은 데이터를 포함합니다.

Parameters.GetSetProperty.Length

응답 데이터의 길이(바이트)를 나타냅니다.

Parameters.DeviceCommand

deviceCommand SD 디바이스 코드 및 인수를 실행할 수 있는 '파이프'입니다. 이러한 코드는 SD(Secure Digital) 사양에 정의되거나, 디바이스 클래스별로 기반이 될 수 있으며, 소유할 수도 있습니다.

Parameters.DeviceCommand.CmdDesc

SD 카드 명령을 정의하는 SDCMD_DESCRIPTOR 형식의 구조를 포함합니다.

Parameters.DeviceCommand.Argument

명령과 함께 제공되는 4바이트의 인수 정보를 포함합니다.

Parameters.DeviceCommand.Mdl

명령 데이터를 보유하는 MDL에 대한 포인터입니다.

Parameters.DeviceCommand.Length

응답 데이터의 길이(바이트)를 나타냅니다.

Parameters.EraseCommand

EraseCommand 사용하면 지정된 LBA 범위 또는 그룹을 지우기 위해 세 개의 디바이스 명령을 보내야 하므로 MMC 디바이스가 원자성 시퀀스로 지정된 디바이스에 지우기 명령을 보낼 수 있습니다.

Parameters.EraseCommand.EraseType

SDBUS_ERASE_TYPE 멤버 EraseType정의합니다.

Parameters.EraseCommand.StartBlock

StartBlock ULONG 멤버를 정의합니다.

Parameters.EraseCommand.EndBlock

EndBlock ULONG 멤버를 정의합니다.

Parameters.MmcSoftReset

MmcSoftReset 사용하면 디바이스를 제조 상태로 다시 설정하는 SanDisk 독점 펌웨어 업데이트에 대해 eMMC 디바이스를 소프트 재설정할 수 있습니다.

Parameters.MmcSoftReset.Frequency

ULONG 멤버 빈도 정의합니다.

Parameters.MmcHpi

MmcHpi HPI를 eMMC 디바이스로 보내면 sdbus가 STATUS_SDBUS_IO_INTERRUPTED 현재 실행 중인 SDRP를 중지합니다. 중지된 SDRP의 정보 필드는 중지된 작업의 진행률로 채워지므로 나중에 올바른 오프셋에서 다시 시작될 수 있습니다.

Parameters.MmcHpi.IrpToHpi

IRP에서 HPI로의 연결입니다. 올바른 IRP를 HPI로 이동하도록 SDBUS에서 확인합니다.

발언

요청이 SD 디바이스에서 속성을 읽거나 설정하는 경우 디바이스 드라이버는 다음 단계를 완료해야 합니다.

  1. SDBUS_REQUEST_PACKETRequestFunction 멤버를 SDRF_GET_PROPERTY 또는 SDRF_SET_PROPERTY SD_REQUEST_FUNCTION 열거형 값으로 설정합니다.

  2. SDBUS_REQUEST_PACKET속성 멤버를 읽거나 변경할 속성을 지정하는 SDBUS_PROPERTY 열거형 값으로 설정합니다.

  3. 초기화된 SDBUS_REQUEST_PACKET 구조를 SdBusSubmitRequest 또는 SdBusSubmitRequestAsync전달하여 버스 드라이버에 요청을 보냅니다.

요청이 SD 디바이스에 명령을 보내는 경우 디바이스 드라이버는 다음 단계를 완료해야 합니다.

  1. SDBUS_REQUEST_PACKETRequestFunction 멤버를 SDRF_DEVICE_COMMAND SD_REQUEST_FUNCTION 열거형 값으로 설정합니다.

  2. SDBUS_REQUEST_PACKETCmdDesc 멤버를 초기화하여 명령을 정의합니다.

  3. 초기화된 SDBUS_REQUEST_PACKET 구조를 SdBusSubmitRequest 또는 SdBusSubmitRequestAsync전달하여 버스 드라이버에 요청을 보냅니다.

속성 작업을 수행하려면 드라이버가 요청을 제출하기 전에 getSetProperty.Property GetSetProperty.Buffer GetSetProperty.Length 멤버를SDBUS_REQUEST_PACKET 구조체의 멤버를 초기화해야 합니다.

명령을 보내려면 드라이버는 요청을 제출하기 전에 deviceCommand.CmdDesc , deviceCommand.Argument , DeviceCommand.Mdl SDBUS_REQUEST_PACKET 구조의 DeviceCommand.Length 멤버를초기화해야 합니다.

요구 사항

요구
헤더 ntddsd.h(Ntddsd.h 포함)

참고 항목

SD_REQUEST_FUNCTION

SDBUS_PROPERTY

SdBusSubmitRequest

SdBusSubmitRequestAsync

SDCMD_DESCRIPTOR