CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

GetVolumeInformation为什麽VolumeSerialNumber在Windows98中运行时总为0?

楼主xxxhhhlll1(xxhhll1)2001-10-06 10:45:23 在 VB / 基础类 提问

'GetVolumeInformation参数  
  Private   lpRootPathName   As   String  
  Private   lpVolumeNameBuffer   As   String   '*   12   '磁盘卷标  
  Private   nVolumeNameSize   As   Long   '*12'磁盘卷标长度  
  Private   VolumeSerialNumber   As   Long   '磁盘序列号  
  Private   MaximumComponentLength   As   Long  
  Private   lpFileSystemNameBuffer   As   String   '*   10   '文件系统的名称  
  Private   nFileSystemNameSize   As   Long   '10'文件系统的名称长度  
  Private   FileSystemFlags   As   Long  
   
  Public   sRootPathName   As   String   '要取磁盘号的磁盘  
   
  Private   lReturn   As   Long   'API返回  
  Private   Declare   Function   GetVolumeInformation   Lib   "kernel32"   Alias   "GetVolumeInformationA"   (ByVal   lpRootPathName   As   String,   ByVal   lpVolumeNameBuffer   As   String,   ByVal   nVolumeNameSize   As   Long,   lpVolumeSerialNumber   As   Long,   lpMaximumComponentLength   As   Long,   lpFileSystemFlags   As   Long,   ByVal   lpFileSystemNameBuffer   As   String,   ByVal   nFileSystemNameSize   As   Long)   As   Long  
   
   
  Public   Function   GetVolumeSerialNumber(ByVal   RootPathName   As   String)   As   Long  
          lpRootPathName   =   RootPathName  
          nVolumeNameSize   =   12  
          nFileSystemNameSize   =   10  
   
          lReturn   =   GetVolumeInformation(lpRootPathName,   lpVolumeNameBuffer,   _  
                                                                        nVolumeNameSize,   VolumeSerialNumber,   _  
                                                                        MaximumComponentLength,   FileSystemFlags,   _  
                                                                        lpFileSystemNameBuffer,   nFileSystemNameSize)  
                                                                         
          GetVolumeSerialNumber   =   VolumeSerialNumber  
          MsgBox   VolumeSerialNumber//////////  
           
  End   Function  
   
  GetVolumeInformation为什麽VolumeSerialNumber在Windows98中运行时总为0? 问题点数:50、回复次数:9Top

1 楼Jover(Danny)回复于 2001-10-06 11:47:49 得分 0

GZTop

2 楼Jover(Danny)回复于 2001-10-06 11:47:56 得分 0

UPTop

3 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-10-06 13:06:15 得分 0

不知道你是否要获得网络驱动器的VolumeSerialNumber,在95/98下该函数是不会返回  
  VolumeSerialNumber的。Top

4 楼xxxhhhlll1(xxhhll1)回复于 2001-10-06 16:57:22 得分 0

to   :TechnoFantasy  
  不要获得网络驱动器的VolumeSerialNumber,  
  那如何在95/98下获得VolumeSerialNumber?多谢指教Top

5 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-10-06 17:40:00 得分 5

你的代码我在2000下试了,没有问题,我估计是Win98对这个参数不支持。Top

6 楼night_cai(菜烟虫)回复于 2001-10-06 19:26:09 得分 45

'试一下这个!把这个放入一个类模块中  
  Public   Declare   Function   GetVolumeInformation   Lib   "kernel32"   Alias   "GetVolumeInformationA"   (ByVal   lpRootPathName   As   String,   ByVal   lpVolumeNameBuffer   As   String,   ByVal   nVolumeNameSize   As   Long,   lpVolumeSerialNumber   As   Long,   lpMaximumComponentLength   As   Long,   lpFileSystemFlags   As   Long,   ByVal   lpFileSystemNameBuffer   As   String,   ByVal   nFileSystemNameSize   As   Long)   As   Long  
  Public   Declare   Function   GetDiskFreeSpace   Lib   "kernel32"   Alias   "GetDiskFreeSpaceA"   (ByVal   lpRootPathName   As   String,   lpSectorsPerCluster   As   Long,   lpBytesPerSector   As   Long,   lpNumberOfFreeClusters   As   Long,   lpTotalNumberOfClusters   As   Long)   As   Long  
  Public   Declare   Function   GetDiskFreeSpaceEx   Lib   "kernel32"   Alias   "GetDiskFreeSpaceExA"   (ByVal   lpRootPathName   As   String,   lpFreeBytesAvailableToCaller   As   LARGE_INTEGER,   lpTotalNumberOfBytes   As   LARGE_INTEGER,   lpTotalNumberOfFreeBytes   As   LARGE_INTEGER)   As   Long  
  Public   Type   LARGE_INTEGER   '   8   Bytes  
  lowpart   As   Long  
  highpart   As   Long  
  End   Type  
  Public   Type   DiskInfo  
                DiskInfo_Volume   As   String   *   255   '卷标  
                DiskInfo_Number   As   Long   '硬盘标记  
                DiskInfo_LongFileName   As   Long   '最大文件名长  
                diskinfo_zipdiskflag   As   Long   '压缩盘标记  
                DiskInfo_FatType   As   String   *   255   '文件分配表类型  
                DiskInfo_SectorsPerCluster   As   Long   '每簇扇区数  
                DiskInfo_BytesPerSector   As   Long   '每扇区字节数  
                DiskInfo_NumberOfFreeClusters   As   Long   '磁盘剩余簇数  
                DiskInfo_TotalClusters   As   Long   '磁盘簇数  
  End   Type  
  Public   Function   GetDiskInfo(Driver   As   String)   As   DiskInfo  
  Dim   TmpInfo   As   DiskInfo  
  Dim   MReturn   As   Long  
   
  With   TmpInfo  
             
  MReturn   =   GetVolumeInformation(Driver,   .DiskInfo_Volume,   255,   .DiskInfo_Number,   .DiskInfo_LongFileName,   .diskinfo_zipdiskflag,   .DiskInfo_FatType,   255)  
   
  end   with  
  end   subTop

7 楼xxxhhhlll1(xxhhll1)回复于 2001-10-07 08:56:28 得分 0

多谢,楼上的兄弟,我马上试一下Top

8 楼xxxhhhlll1(xxhhll1)回复于 2001-10-07 09:36:22 得分 0

多谢各位帮忙Top

9 楼TechnoFantasy((VB MVP)www.applevb.com)回复于 2001-10-07 12:39:49 得分 0

学了一招   :-)Top

相关问题

  • ::PostMessage()的运行机制是什麽样的
  • 为什麽我的机子不能运行asp?
  • 菜鸟问题:xml需要什麽运行环境
  • 调试问题,为什麽程序在debug 版下运行正常, 但release 版运行不正常
  • 为什麽,运行Delphi程序时,总是提示我要先保存?
  • 这个程序为什麽不能运行??请指教,不胜感激!!
  • D6比D5多了哪些东西或有什麽不同,我的机器为C300A/64M,是否能运行D6?
  • 为什麽有时vc++编译成功了,链接后要运行时出了问题?
  • 很简单的一个程序,为什麽用j2ee deploytool成功部署完的应用程序不能正常运行呢?
  • 请问各位大虾看一下我这个程序,为什麽运行时总是有Insert into语法错误?谢谢

关键词

  • volumeserialnumber
  • getvolumeinformation
  • lprootpathname
  • longpublic
  • 磁盘
  • lpvolumenamebuffer
  • nvolumenamesize
  • nfilesystemnamesize
  • byval
  • lpfilesystemnamebuffer

得分解答快速导航

  • 帖主:xxxhhhlll1
  • TechnoFantasy
  • night_cai

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo