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 디바이스에서 속성을 읽거나 설정하는 경우 디바이스 드라이버는 다음 단계를 완료해야 합니다.
SDBUS_REQUEST_PACKETRequestFunction 멤버를 SDRF_GET_PROPERTY 또는 SDRF_SET_PROPERTY SD_REQUEST_FUNCTION 열거형 값으로 설정합니다.
SDBUS_REQUEST_PACKET속성 멤버를 읽거나 변경할 속성을 지정하는 SDBUS_PROPERTY 열거형 값으로 설정합니다.
초기화된 SDBUS_REQUEST_PACKET 구조를 SdBusSubmitRequest 또는 SdBusSubmitRequestAsync전달하여 버스 드라이버에 요청을 보냅니다.
요청이 SD 디바이스에 명령을 보내는 경우 디바이스 드라이버는 다음 단계를 완료해야 합니다.
SDBUS_REQUEST_PACKETRequestFunction 멤버를 SDRF_DEVICE_COMMAND SD_REQUEST_FUNCTION 열거형 값으로 설정합니다.
SDBUS_REQUEST_PACKETCmdDesc 멤버를 초기화하여 명령을 정의합니다.
초기화된 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 포함) |