Windows IOCTL:如何写入SD卡外部CSD寄存器?

Windows IOCTL:如何写入SD卡外部CSD寄存器?,windows,storage,sd-card,ioctl,deviceiocontrol,Windows,Storage,Sd Card,Ioctl,Deviceiocontrol,有谁能指导我如何通过IOCTL写入Windows上SD卡的外部CSD寄存器 我正在使用IOCTL_SFFDISK_DEVICE_命令发送CMD6(开关)并修改eMMC外部CSD寄存器的一些字段。但是DeviceIoControl抛出一个错误(error_ACCESS_DENIED),我无法写入寄存器。 例如,我试图将Value=0x00写入POWER_OFF_通知字段,即ExCSD[34]。下面介绍在linux中如何填充mmc\u ioc\u cmd结构 UINT32 value=(MMC\u开

有谁能指导我如何通过IOCTL写入Windows上SD卡的外部CSD寄存器

我正在使用IOCTL_SFFDISK_DEVICE_命令发送CMD6(开关)并修改eMMC外部CSD寄存器的一些字段。但是DeviceIoControl抛出一个错误(error_ACCESS_DENIED),我无法写入寄存器。 例如,我试图将Value=0x00写入POWER_OFF_通知字段,即ExCSD[34]。下面介绍在linux中如何填充mmc\u ioc\u cmd结构


UINT32 value=(MMC\u开关\u模式\u写入\u字节应用程序端运气不佳,我决定为SD存储类控制器编写上层过滤器驱动程序,并直接调用SdBus库api。
SFFDISK_DEVICE_COMMAND_DATA &sdcd = GetCommandData();
sdcd.HeaderSize = sizeof(SFFDISK_DEVICE_COMMAND_DATA);
sdcd.Command = SFFDISK_DC_DEVICE_COMMAND;
sdcd.ProtocolArgumentSize = sizeof(SDCMD_DESCRIPTOR);
sdcd.DeviceDataBufferSize = BufferSize;
SDCMD_DESCRIPTOR Desc;
Desc.Cmd = SDCMD_SWITCH ; /*CMD6*/
Desc.CmdClass = SDCC_STANDARD;
Desc.TransferDirection = SDTD_WRITE;
Desc.TransferType = SDTT_CMD_ONLY;
Desc.ResponseType = SDRT_1B;
sdcd.Information = value;
struct SDBuffer {
        char dcd[sizeof(SFFDISK_DEVICE_COMMAND_DATA)];
        SDCMD_DESCRIPTOR Descriptor;
        BYTE Buffer[0];
    } *data;
memcpy(data->Buffer, &value, sizeof(value));