4228|7

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

msdn上的有几个不懂,请教一下 [复制链接]

Only Plug and Play drivers can issue IOCTL_STORAGE_QUERY_PROPERTY requests. Legacy drivers should use IOCTL_SCSI_GET_INQUIRY_DATA and IOCTL_SCSI_GET_CAPABILITIES to get inquiry and capabilities data.

这里说的plug and play drivers 是什么驱动?即插即用?和storage有关系,是指的usb设备的吗?
还有在IOCTL_SCSI_GET_INQUIRY_DATA 说明里面,提到:
This IOCTL is for use with older host bus adapters. In Windows Server 2003 and later operating systems, the storage stack will reject this IOCTL and return an error.

这里提到的storage 是指那些?包括硬盘吗?

设计到硬件这块,很多不懂,请达人们指点一二。
谢谢!

最新回复

接分先!  详情 回复 发表于 2008-5-1 06:08
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
还有一个问题,IOCTL_SCSI_GET_INQUIRY_DATA的返回值是SCSI_INQUIRY_DATA
,但是我没有看到这个里面包含有硬盘的serial number信息。
只有 bus,target,lun,还有firmware version,以及硬盘的vendor信息。
我如何能够看到和提取serial number呢?
谢谢!
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我看到一个STORAGE_DEVICE_DESCRIPTOR有serial number的offset信息,
我用下面代码试图去读取它的内容,但是在copy的时候有一个异常发生,可能是越界了。我这边不是很清楚,
如何去提取offset指向的字符串。
    BOOL res = DeviceIoControl((HANDLE)devHandle,                 // handle to device                                IOCTL_STORAGE_QUERY_PROPERTY, // dwIoControlCode                                &storPropQuery,                             // lpInBuffer                                sizeof(storPropQuery),                                // nInBufferSize                                (LPVOID) lpOutBuffer,             // output buffer                                //(DWORD) sizeof(STORAGE_ADAPTER_DESCRIPTOR),           // size of output buffer                                (DWORD) sizeof(STORAGE_DEVICE_DESCRIPTOR),           // size of output buffer                                (LPDWORD) &bytesReturned,        // number of bytes returned                                (LPOVERLAPPED) NULL       // OVERLAPPED structure                                );                char sN[1024];         STORAGE_DEVICE_DESCRIPTOR * descrip = (PSTORAGE_DEVICE_DESCRIPTOR)lpOutBuffer;         ULONG ul;         //ul = ((PSTORAGE_DEVICE_DESCRIPTOR)lpOutBuffer)->SerialNumberOffset;         ul = descrip->SerialNumberOffset;         if(ul == -1){                 std::cout<<"can not get sn"<

各位看看有什么不对的地方!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
我也在其他列表里面问了一下,但是没有理解他的意思。大家帮忙看一下。
对于如何使用api,有没有一些建议,我对windows的api调用不甚清楚啊!

//
You are tossing an exception because you are walking off the end of your output buffer. You only made it big enough for a STORAGE_DEVICE_DESCRIPTOR, and did not allocate any room (other than the one byte that is contained in the variable length array at RawDeviceProperties ) for the inquiry data such as the serial number.

Typically 1024 is big enough for the output buffer.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

5
 
Plug and Play drivers是支持即插即用的驱动程序
storage 一般指内存存储区
对于1楼2楼的问题好像是要提取序列号,这个我没研究过,恕难解答!
WindowAPI函数就包含Windows.h以后加个::号就可以调用了吧!
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

6
 
谢谢楼上,不过我这边说api的调用,不是调用函数这样的意思,不好意思,可能没有表述清楚。
我的意思是有时候对于结构体内部的数据读取有些茫然和不解。比如上面我说到的
STORAGE_DEVICE_DESCRIPTOR  如何读取serial number
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
以后需再关注,现在先帮你顶一下
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

8
 
接分先!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表