为什么两次获取的硬盘序列号会不一样,请高手帮忙

lxhong1980 2003-10-18 04:22:21
为什么两次获取的硬盘序列号会不一样,请高手帮忙

procedure TForm1.BitBtn1Click(Sender: TObject);
var
SerialNum : LPDWord;
a, b : dword;
Buffer : array [0..25555] of char;
begin
GetVolumeInformation(PChar('c:\\'), Buffer, SizeOf(Buffer), SerialNum, a, b, nil, 0);
Edit1.Text:=IntToHex(SerialNum^,8); //结果为:8AD88B53
end;
procedure TForm1.Button1Click(Sender: TObject);
var
VolumeSerialNumber:DWORD;//磁盘序列号
MaximumComponentLength:DWORD;
lpFileSystemNameBuffer:LPTSTR ;
nFileSystemNameSize:DWORD;
FileSystemFlags:DWORD;
begin
GetVolumeInformation(PChar('c:\'),nil,0,@VolumeSerialNumber,MaximumComponentLength,FileSystemFlags,nil,0);
Edit2.Text:=inttohex((VolumeSerialNumber),8); // 结果为: 251A1101
end;
...全文
315 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxhong1980 2003-10-21
  • 打赏
  • 举报
回复
我知道了,必须定义为值类型,再用 @去访问

VolumeSerialNumber:DWORD;//磁盘序列号 必须定义为值类型,再用 @去访问


SerialNum : LPDWord;//指针不可

结帐算了
很土 2003-10-20
  • 打赏
  • 举报
回复
// 读取逻辑磁盘的卷号
GetVolumeInformation('C:\', nil, 0, @dwVolumeSerialNumber,
dwMaximumComponentLength, dwFileSystemFlags, nil, 255);
strValue := IntToHex(dwVolumeSerialNumber, 8);

我就是这么调用的,且不要使用 'C:\\',而是应该使用 'C:\' 或 'C:' 即可。
lxhong1980 2003-10-20
  • 打赏
  • 举报
回复
kyee(浪子阿鹏)

为什么
很土 2003-10-18
  • 打赏
  • 举报
回复
第二种正确

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧