请问windows搭配UFS为存储设备,能否支持应用程序发送UFS的command呢?

松源 张 0 信誉分
2024-07-15T09:09:05.17+00:00

你好,

目前我能够使用IOCTL_SCSI_PASS_THROUGH_DIRECT将SCSI command发给ufs。

但是无法做到发送query command给ufs,不知道windows是否支持此类ufs command。

ufs协议章节为:“10.7.8 QUERY REQUEST UPIU”

能否帮忙提供方法,感谢!

Windows
Windows
Microsoft 操作系统系列,可跨个人计算机、平板电脑、笔记本电脑、手机、物联网设备、独立混合现实头戴显示设备、大型协作屏幕和其他设备运行。
424 个问题
0 个注释 无注释
{count} 票

1 个答案

排序依据: 非常有帮助
  1. Wesley Li 10,225 信誉分
    2024-07-15T16:16:21.25+00:00

    您好,

    Windows 支持发送 UFS 命令,包括 QUERY REQUEST UPIU 命令。Microsoft 通用闪存存储 (UFS) 驱动程序 (storufs.sys) 提供对 UFS 设备的访问,并支持各种 UFS 命令。

     

    要发送 QUERY REQUEST UPIU 命令,您可以使用 IOCTL_SCSI_PASS_THROUGH_DIRECT 控制代码。但是,您需要确保您的命令结构根据 UFS 协议规范正确格式化。

     

    以下是发送 QUERY REQUEST UPIU 命令的一般方法:

     

    1.准备 SCSI Pass-Through Direct 结构:

    使用必要的参数设置 SCSI_PASS_THROUGH_DIRECT 结构。

    确保 Cdb 字段包含 QUERY REQUEST UPIU 命令。

     

    2.发送命令:

    使用 DeviceIoControl 函数将 IOCTL_SCSI_PASS_THROUGH_DIRECT 控制代码与您准备好的结构一起发送。

     

    以下是 C++ 中的简化示例:

    #include <windows.h>

    #include <winioctl.h>

    #include <scsi.h>

     

    // Define your QUERY REQUEST UPIU command here

    UCHAR queryRequestCdb[16] = { /* Your command bytes */ };

     

    SCSI_PASS_THROUGH_DIRECT sptd = {0};

    sptd.Length = sizeof(SCSI_PASS_THROUGH_DIRECT);

    sptd.CdbLength = sizeof(queryRequestCdb);

    sptd.Cdb = queryRequestCdb;

    // Set other necessary fields in sptd

     

    DWORD returned = 0;

    BOOL result = DeviceIoControl(

        hDevice, // Handle to the device

        IOCTL_SCSI_PASS_THROUGH_DIRECT,

        &sptd,

        sizeof(SCSI_PASS_THROUGH_DIRECT),

        &sptd,

        sizeof(SCSI_PASS_THROUGH_DIRECT),

        &returned,

        NULL

    );

     

    if (result) {

        // Handle success

    } else {

        // Handle error

    }

     

    确保将 queryRequestCdb 替换为 QUERY REQUEST UPIU 命令的实际字节。此外,确保 hDevice 是 UFS 设备的有效句柄。

     

    如果遇到任何问题,请仔细检查 UFS 协议规范并确保 SCSI_PASS_THROUGH_DIRECT 结构中的所有字段均已正确设置。

     


你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。