VB取硬盘的物理信息(序列号,容量,转速,型号)

VB 获取所有逻辑磁盘信息 代码 Attribute VB_Name = "ModuleDiskInfo"Option ExplicitPowered by barenxPrivate Const DRIVE_CDROM = 5Private Const DRIVE_FIXED = 3Private Const DRIVE_RAMDISK = 6Private Const DRIVE_REMOTE = 4Private Co 阅读详情
 
  1. '
  2. '取硬盘的物理信息(序列号,容量,转速,型号)(smHDinfo)
  3. '
  4. '/网站:东方热讯:http://www.easthot.net
  5. '/邮件:sales@easthot.net
  6. '/2003.01.23
  7. '*************************************************************************
  8. Option Explicit
  9. '/以下这一行是必须的,困为要做结构复制。而结构中有数组。所以,没有它则会错位
  10. Option Base 0
  11. Private Const DFP_GET_VERSION = 
  12. Private Const DFP_SEND_DRIVE_COMMAND = 
  13. Private Const DFP_RECEIVE_DRIVE_DATA = 
  14. '/#pragma pack(1)
  15. Private Type TGETVERSIONOUTPARAMS   '{
  16.     bVersion As Byte  '/Binary driver version.
  17.     bRevision As Byte '/Binary driver revision.
  18.     bReserved As Byte  '/Not used.
  19.     bIDEDeviceMap As Byte '/Bit map of IDE devices.
  20.     fCapabilities As Long '/Bit mask of driver capabilities.
  21.     dwReserved(4) As Long '/For future use.
  22. End Type
  23. Private Type TIDEREGS
  24.     bFeaturesReg As Byte   '/Used for specifying SMART "commands".
  25.     bSectorCountReg As Byte  '/IDE sector count register
  26.     bSectorNumberReg As Byte  '/IDE sector number register
  27.     bCylLowReg As Byte    '/IDE low order cylinder value
  28.     bCylHighReg As Byte   '/IDE high order cylinder value
  29.     bDriveHeadReg As Byte   '/IDE drive/head register
  30.     bCommandReg As Byte   '/Actual IDE command.
  31.     bReserved As Byte    '/reserved for future use.  Must be zero.
  32. End Type
  33. Private Type TSENDCMDINPARAMS
  34.     cBufferSize As Long   '/Buffer size in bytes
  35.     irDriveRegs As TIDEREGS   '/Structure with drive register values.
  36.     bDriveNumber As Byte   '/Physical drive number to send  '/command to (0,1,2,3).
  37.     bReserved(2) As Byte   '/Reserved for future expansion.
  38.     dwReserved(3) As Long   '/For future use.
  39.     '//BYTE  bBuffer(1)   '/Input buffer.
  40. End Type
  41. Private Type TDRIVERSTATUS
  42.     bDriverError As Byte  '/Error code from driver, '/or 0 if no error.
  43.     bIDEStatus  As Byte  '/Contents of IDE Error register.
  44.            '//Only valid when bDriverError '/is SMART_IDE_ERROR.
  45.     bReserved(1) As Byte   '/Reserved for future expansion.
  46.     dwReserved(1) As Long   '/Reserved for future expansion.
  47. End Type
  48. Private Type TSENDCMDOUTPARAMS
  49.     cBufferSize As Long      '/Size of bBuffer in bytes
  50.     DRIVERSTATUS As TDRIVERSTATUS   '/Driver status structure.
  51.     bBuffer(511) As Byte   '/Buffer of arbitrary length
  52.              '//in which to store the data read from the drive.
  53. End Type
  54. '/下面的结构是要从另一结构复制数据过来的,所以,必须是字节数与VC的完全一致
  55. '/而不能用兼容变量,但这里的我们还是用了兼容变量,Integer,因为此结构中这一
  56. '/类型的的变量程序中没有用到,如果要用到,建议改为Byte类型。因为VB没有USHORT
  57. Private Type TIDSECTOR
  58.     wGenConfig As Integer
  59.     wNumCyls As Integer
  60.     wReserved As Integer
  61.     wNumHeads As Integer
  62.     wBytesPerTrack As Integer
  63.     wBytesPerSector As Integer
  64.     wSectorsPerTrack As Integer
  65.     wVendorUnique(2) As Integer
  66.     sSerialNumber(19) As Byte
  67.     wBufferType As Integer
  68.     wBufferSize As Integer
  69.     wECCSize As Integer
  70.     sFirmwareRev(7) As Byte
  71.     sModelNumber(39) As Byte
  72.     wMoreVendorUnique As Integer
  73.     wDoubleWordIO As Integer
  74.     wCapabilities As Integer
  75.     wReserved1 As Integer
  76.     wPIOTiming As Integer
  77.     wDMATiming As Integer
  78.     wBS As Integer
  79.     wNumCurrentCyls As Integer
  80.     wNumCurrentHeads As Integer
  81.     wNumCurrentSectorsPerTrack As Integer
  82.     ulCurrentSectorCapacity(3) As Byte   '/这里只能用byte,因为VB没有无符号的LONG型变量
  83.     wMultSectorStuff As Integer
  84.     ulTotalAddressableSectors(3) As Byte '/这里只能用byte,因为VB没有无符号的LONG型变量
  85.     wSingleWordDMA As Integer
  86.     wMultiWordDMA As Integer
  87.     bReserved(127) As Byte
  88. End Type
  89. Private vers As TGETVERSIONOUTPARAMS
  90. Private in_data As TSENDCMDINPARAMS
  91. Private out_data As TSENDCMDOUTPARAMS
  92. Private h As Long
  93. Private I As Long
  94. Private J As Byte
  95. Private Type OSVERSIONINFO
  96.     dwOSVersionInfoSize As Long
  97.     dwMajorVersion As Long
  98.     dwMinorVersion As Long
  99.     dwBuildNumber As Long
  100.     dwPlatformId As Long
  101.     szCSDVersion As String * 128
  102. End Type
  103. Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
  104.           (LpVersionInformation As OSVERSIONINFO) As Long
  105. Private Const VER_PLATFORM_WIN32S = 0
  106. Private Const VER_PLATFORM_WIN32_WINDOWS = 1
  107. Private Const VER_PLATFORM_WIN32_NT = 2
  108. Private Declare Function CreateFile Lib "kernel32" _
  109.     Alias "CreateFileA" (ByVal lpFileName As String, _
  110.     ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, _
  111.     ByVal lpSecurityAttributes As Long, _
  112.     ByVal dwCreationDisposition As Long, _
  113.     ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) _
  114.     As Long
  115. Private Const CREATE_NEW = 1
  116. Private Const GENERIC_READ = 
  117. Private Const GENERIC_WRITE = 
  118. Private Const OPEN_EXISTING = 3
  119. Private Const FILE_SHARE_READ = 
  120. Private Const FILE_SHARE_WRITE = 
  121. Private Type OVERLAPPED
  122.     Internal As Long
  123.     InternalHigh As Long
  124.     offset As Long
  125.     OffsetHigh As Long
  126.     hEvent As Long
  127. End Type
  128. Private Declare Function DeviceIoControl Lib "kernel32" _
  129.     (ByVal hDevice As Long, ByVal dwIoControlCode As Long, _
  130.     lpInBuffer As Any, ByVal nInBufferSize As Long, _
  131.     lpOutBuffer As Any, ByVal nOutBufferSize As Long, _
  132.     lpBytesReturned As Long, lpOverlapped As OVERLAPPED) As Long
  133. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  134. Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
  135.          hpvDest As Any, hpvSource As Any, ByVal cbCopy As Long)
  136. Private Sub ChangeByteOrder(szString() As Byte, uscStrSize As Long)
  137.     Dim I As Long
  138.     Dim temp As String
  139.      For I = 0 To uscStrSize - 1 Step 2
  140.         temp = szString(I)
  141.         szString(I) = szString(I + 1)
  142.         szString(I + 1) = temp
  143.      Next I
  144. End Sub
  145. Private Function hdid9x() As smHdInfoType()
  146.     '/We start in 95/98/Me
  147.     Dim RevInfo() As smHdInfoType
  148.     Dim RevID As Long
  149.     Dim olp As OVERLAPPED
  150.     Dim lRet As Long
  151.     
  152.     h = CreateFile("//./Smartvsd", 0, 0, 0, CREATE_NEW, 0, 0)
  153.     If h = 0 Then
  154.         RevID = RevID + 1
  155.         ReDim Preserve RevInfo(RevID - 1)
  156.         RevInfo(RevID - 1).InfoFlag = False
  157.         GoTo EndFun
  158.     End If
  159.     
  160.     lRet = DeviceIoControl(h, DFP_GET_VERSION, ByVal 0&, 0, vers, Len(vers), ByVal I, olp)
  161.     If lRet = 0 Then
  162.         RevID = RevID + 1
  163.         ReDim Preserve RevInfo(RevID - 1)
  164.         RevInfo(RevID - 1).InfoFlag = False
  165.         CloseHandle (h)
  166.         GoTo EndFun
  167.     End If
  168.     
  169.     '/If IDE identify command not supported, fails
  170.     If (vers.fCapabilities And 1) <> 1 Then
  171.         '/hdid9x = "Error: IDE identify command not supported."
  172.         RevID = RevID + 1
  173.         ReDim Preserve RevInfo(RevID - 1)
  174.         RevInfo(RevID - 1).InfoFlag = False
  175.         CloseHandle (h)
  176.         GoTo EndFun
  177.     End If
  178.     
  179.     '/Display IDE drive number detected
  180.     Dim sPreOutStr As String
  181.     sPreOutStr = DetectIDE(vers.bIDEDeviceMap)
  182.     '/hdid9x = sPreOutStr
  183.     
  184.     '/Identify the IDE drives
  185.     For J = 0 To 3
  186.         Dim phdinfo As TIDSECTOR
  187.         Dim s(40) As Byte
  188.         
  189.         RevID = RevID + 1
  190.         ReDim Preserve RevInfo(RevID - 1)
  191.         RevInfo(RevID - 1).Hdid = J
  192.         If (J And 1) = 1 Then
  193.             in_data.irDriveRegs.bDriveHeadReg = 
  194.         Else
  195.             in_data.irDriveRegs.bDriveHeadReg = 
  196.         End If
  197.         If (vers.fCapabilities And (16 / (2 ^ J))) = (16 / (2 ^ J)) Then
  198.             RevInfo(RevID - 1).InfoFlag = False
  199.         Else
  200.               in_data.irDriveRegs.bCommandReg = 
  201.               in_data.bDriveNumber = J
  202.               in_data.irDriveRegs.bSectorCountReg = 1
  203.               in_data.irDriveRegs.bSectorNumberReg = 1
  204.               in_data.cBufferSize = 512
  205.               RevInfo(RevID - 1).InfoFlag = True
  206.               lRet = DeviceIoControl(h, DFP_RECEIVE_DRIVE_DATA, in_data, Len(in_data), out_data, Len(out_data), ByVal I, olp)
  207.               
  208.               If lRet = 0 Then
  209.                   RevInfo(RevID - 1).InfoFlag = False
  210.                   CloseHandle (h)
  211.                   GoTo EndFun
  212.               End If
  213.               Dim StrOut As String
  214.               CopyMemory phdinfo, out_data.bBuffer(0), Len(phdinfo)
  215.               
  216.               CopyMemory s(0), phdinfo.sModelNumber(0), 40
  217.               s(40) = 0
  218.               ChangeByteOrder s, 40
  219.               
  220.               StrOut = ByteArrToString(s, 40)
  221.               RevInfo(RevID - 1).ModuleNumber = Trim$(StrOut)
  222.               CopyMemory s(0), phdinfo.sFirmwareRev(0), 8
  223.               s(8) = 0
  224.               ChangeByteOrder s, 8
  225.               
  226.               StrOut = ByteArrToString(s, 8)
  227.               RevInfo(RevID - 1).FirmwareRev = Trim$(StrOut)
  228.               CopyMemory s(0), phdinfo.sSerialNumber(0), 20
  229.               s(20) = 0
  230.               ChangeByteOrder s, 20
  231.               
  232.               StrOut = ByteArrToString(s, 20)
  233.               '/hdid9x = hdid9x & vbCrLf & "Serial Number:" & StrOut
  234.               RevInfo(RevID - 1).SerialNumber = Trim$(StrOut)
  235.               CopyMemory s(0), phdinfo.ulTotalAddressableSectors(0), 4
  236.               s(5) = 0
  237.               Dim dblStrOut As Double
  238.               dblStrOut = ByteArrToLong(s)
  239.               RevInfo(RevID - 1).Capcity = CLng(dblStrOut / 2 / 1024) & "M"
  240.           End If
  241.     Next J
  242.     '/Close handle before quit
  243.     CloseHandle (h)
  244. EndFun:
  245.     hdid9x = RevInfo
  246. End Function
  247. Private Function hdidnt() As smHdInfoType()
  248.     Dim hd As String * 80
  249.     Dim phdinfo As TIDSECTOR
  250.     Dim s(40) As Byte
  251.     Dim StrOut As String
  252.     
  253.     Dim RevInfo() As smHdInfoType
  254.     Dim RevID As Long
  255.     
  256.     '/hdidnt = ""
  257.     '/We start in NT/Win2000
  258.     
  259.     For J = 0 To 3  '/这里取四个硬盘的信息,因为正常PC不超过四个硬盘
  260.          RevID = RevID + 1
  261.          ReDim Preserve RevInfo(RevID - 1)
  262.          RevInfo(RevID - 1).Hdid = CStr(J)
  263.          
  264.          hd = "//./PhysicalDrive" & CStr(J)
  265.          '/hdidnt = hdidnt & vbCrLf & hd
  266.          h = CreateFile(hd, GENERIC_READ Or GENERIC_WRITE, _
  267.              FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)
  268.          
  269.          Dim olpv As OVERLAPPED
  270.          Dim lRet As Long
  271.          
  272.          lRet = DeviceIoControl(h, DFP_GET_VERSION, ByVal 0&, 0, vers, Len(vers), ByVal I, olpv)
  273.          
  274.          If lRet = 0 Then
  275.             RevInfo(RevID - 1).InfoFlag = False
  276.             CloseHandle (h)
  277.          Else
  278.                 '/If IDE identify command not supported, fails
  279.                 If (vers.fCapabilities And 1) <> 1 Then
  280.                       '/hdidnt = "Error: IDE identify command not supported."
  281.                       RevInfo(RevID - 1).InfoFlag = False
  282.                       CloseHandle (h)
  283.                       GoTo EndFun
  284.                       '/Exit Function
  285.                 End If
  286.                 '/Identify the IDE drives
  287.                 If (J And 1) = 1 Then
  288.                     in_data.irDriveRegs.bDriveHeadReg = 
  289.                 Else
  290.                     in_data.irDriveRegs.bDriveHeadReg = 
  291.                 End If
  292.                 If (vers.fCapabilities And (16 / (2 ^ J))) <> 0 Then
  293.                     '/We don't detect a ATAPI device.
  294.                     RevInfo(RevID - 1).InfoFlag = False
  295.                     
  296.                     '/hdidnt = hdidnt & vbCrLf & "Drive " & CStr(j + 1) & " is a ATAPI device, we don't detect it"
  297.                 Else
  298.                       
  299.                       in_data.irDriveRegs.bCommandReg = 
  300.                       in_data.bDriveNumber = J
  301.                       in_data.irDriveRegs.bSectorCountReg = 1
  302.                       in_data.irDriveRegs.bSectorNumberReg = 1
  303.                       in_data.cBufferSize = 512
  304.                       
  305.                       Dim olpr As OVERLAPPED
  306.                       
  307.                       lRet = DeviceIoControl(h, DFP_RECEIVE_DRIVE_DATA, in_data, Len(in_data), out_data, Len(out_data), ByVal I, olpr)
  308.                       If lRet <= 0 Then
  309.                            '/hdidnt = hdidnt & vbCrLf & "DeviceIoControl failed:DFP_RECEIVE_DRIVE_DATA"
  310.                            RevInfo(RevID - 1).InfoFlag = False
  311.                            CloseHandle (h)
  312.                            
  313.                       Else
  314.                          RevInfo(RevID - 1).InfoFlag = True
  315.                          CopyMemory phdinfo, out_data.bBuffer(0), Len(phdinfo)
  316.                          
  317.                          CopyMemory s(0), phdinfo.sModelNumber(0), 40
  318.                          s(40) = 0
  319.                          ChangeByteOrder s, 40
  320.                          
  321.                          StrOut = ByteArrToString(s, 40)
  322.                          RevInfo(RevID - 1).ModuleNumber = Trim$(StrOut)
  323.                          '/hdidnt = hdidnt & vbCrLf & "Module Number:" & StrOut
  324.                          CopyMemory s(0), phdinfo.sFirmwareRev(0), 8
  325.                          s(8) = 0
  326.                          ChangeByteOrder s, 8
  327.                          
  328.                          StrOut = ByteArrToString(s, 8)
  329.                          RevInfo(RevID - 1).FirmwareRev = Trim$(StrOut)
  330.                          '/hdidnt = hdidnt & vbCrLf & "Firmware rev:" & StrOut
  331.                          CopyMemory s(0), phdinfo.sSerialNumber(0), 20
  332.                          s(20) = 0
  333.                          ChangeByteOrder s, 20
  334.                          
  335.                          StrOut = ByteArrToString(s, 20)
  336.                          
  337.                          '/hdidnt = hdidnt & vbCrLf & "Serial Number:" & StrOut
  338.                          RevInfo(RevID - 1).SerialNumber = Trim$(StrOut)
  339.                          CopyMemory s(0), phdinfo.ulTotalAddressableSectors(0), 4
  340.                          s(5) = 0
  341.                          Dim dblStrOut As Double
  342.                          dblStrOut = ByteArrToLong(s)
  343.                          RevInfo(RevID - 1).Capcity = CLng(dblStrOut / 2 / 1024) & "M"
  344.                          '/hdidnt = hdidnt & vbCrLf & "Capacity:" & dblStrOut / 2 / 1024 & "M"
  345.                          CloseHandle (h)
  346.                       End If
  347.                 End If
  348.            End If
  349.     Next
  350. EndFun:
  351.     hdidnt = RevInfo
  352. End Function
  353. Private Function DetectIDE(bIDEDeviceMap As Byte) As String
  354.     If (bIDEDeviceMap And 1) Then
  355.         If (bIDEDeviceMap And 16) Then
  356.              DetectIDE = DetectIDE & "ATAPI device is attached to primary controller, drive 0."
  357.         Else
  358.              DetectIDE = DetectIDE & "IDE device is attached to primary controller, drive 0."
  359.         End If
  360.     End If
  361.     If (bIDEDeviceMap And 2) Then
  362.         If (bIDEDeviceMap And 32) Then
  363.              DetectIDE = DetectIDE & "ATAPI device is attached to primary controller, drive 1."
  364.         Else
  365.              DetectIDE = DetectIDE & "IDE device is attached to primary controller, drive 1."
  366.         End If
  367.     End If
  368.     If (bIDEDeviceMap And 4) Then
  369.         If (bIDEDeviceMap And 64) Then
  370.              DetectIDE = DetectIDE & "ATAPI device is attached to secondary controller, drive 0."
  371.         Else
  372.              DetectIDE = DetectIDE & "IDE device is attached to secondary controller, drive 0."
  373.         End If
  374.     End If
  375.     If (bIDEDeviceMap And 8) Then
  376.         If (bIDEDeviceMap And 128) Then
  377.              DetectIDE = DetectIDE & "ATAPI device is attached to secondary controller, drive 1."
  378.         Else
  379.              DetectIDE = DetectIDE & "IDE device is attached to secondary controller, drive 1."
  380.         End If
  381.     End If
  382. End Function
  383. Private Function ByteArrToString(inByte() As Byte, ByVal strlen As Integer) As String
  384.     Dim I As Integer
  385.     For I = 0 To strlen
  386.         If inByte(I) = 0 Then
  387.            Exit For
  388.         End If
  389.         ByteArrToString = ByteArrToString & Chr(inByte(I))
  390.     Next I
  391. End Function
  392. Private Function ByteArrToLong(inByte() As Byte) As Double
  393.     Dim I As Integer
  394.     For I = 0 To 3
  395.         ByteArrToLong = ByteArrToLong + CDbl(inByte(I)) * (256 ^ I)
  396.     Next I
  397. End Function
  398. Public Function GetHdInfo() As smHdInfoType()
  399.     Dim RevInfo() As smHdInfoType
  400.     Dim verinfo As OSVERSIONINFO
  401.     Dim Ret As Long
  402.     
  403.     verinfo.dwOSVersionInfoSize = Len(verinfo)
  404.     Ret = GetVersionEx(verinfo)
  405.     
  406.     Select Case verinfo.dwPlatformId
  407.     Case VER_PLATFORM_WIN32S
  408.          ReDim RevInfo(1)
  409.          RevInfo(0).InfoFlag = False
  410.     Case VER_PLATFORM_WIN32_WINDOWS
  411.         RevInfo = hdid9x()
  412.     Case VER_PLATFORM_WIN32_NT
  413.         RevInfo = hdidnt()
  414.     End Select
  415.     GetHdInfo = RevInfo
  416. End Function
VB源代码实现磁盘信息检索与显示 VB(Visual Basic)是一种由微软公司开发的事件驱动编程语言,自1991年首次发布以来,它就以其易于掌握的语法和强大的开发效率赢得了广泛的应用。VB的”Visual”部分指的是一种图形用户界面(GUI)设计方法,允许开发者通过拖放控件来创建GUI,而不必编写复杂的代码。这种设计方法使得VB成为许多初学者入门编程的第一选择。随着时间的推移,VB经历了多个版本的更迭,从VB 1.0到VB.NET,每个版本都在功能、性能和安全性方面有所增强。 阅读详情

相关推荐

vb6获取磁盘剩余容量可用空间[完美代码]硬盘容量C盘大小,支持2GB以上容量

此代码将允许您在大小超过 2 Gb 的驱动器上获得可用磁盘空间

vb获得硬盘ID

<br /> 建窗体,窗体放置1个ComBox,命名为cbDrive,1个ListBox,命名为lstMain,一个CommandButton,命名为cmdGo,添加如下代码:<br />Dim h As clsMainInfo<br />Private Sub cmdGo_Click()<br />    Dim hT As Long<br />    Dim uW() As Byte<br />    Dim dW() As Byte<br />    Dim pW() As Byte<br />   

Hopeinwhere的专栏 1674

目前VB6.0读硬盘序列号最完美的代码

目前VB6.0读硬盘序列号最完美的代码 里面包括一个模块和一个VB6.0工程示例。

★★★★Excel-VBA操作文件四大方法之四 by excelhome

通过前面三种方法的介绍,你是否已经觉得足够了?是的,前面的方法完全可以应付几乎所有的文件操作。但是为了普及一下API,展示一下API的魅力,最后向大家介绍一下如何利用API函数来处理文件。另一方面也是本人对API情有独钟,为她做一下广告,呵呵。大家对API的强大也是有所耳闻了,在文件操作方面,API自然毫不逊色。说明:为了文章简洁,我们先给出API函数的名称及功能,其完整的声明及常数就不再一一

gxiyv的专栏,欢迎您的光临指导! 2346

VB检测硬盘空间大小及使用情况

VB检测硬盘空间大小及使用情况,很小很灵活,可以看看

VB检测硬盘空间大小及使用情况.7z

VB检测硬盘空间大小及使用情况

vb 获取计算机序列号,VB获得硬盘序列号的方法

该楼层疑似违规已被系统折叠隐藏此楼查看此楼EndFunctionPublicFunctionDoEnableSMART(ByValhSMARTIOCTLAsLong,pSCIPAsSENDCMDINPARAMS,pSCOPAsSENDCMDOUTPARAMS,ByValbDriveNumAsByte,lpcbBytesReturnedAsLong)AsB...

weixin_39666931的博客 1140

远心F-theta镜ZEMAX设计

根据给出的F-theta镜的设计指标,对F-theta镜进行了具体的光学设计。从对F-theta镜设计思想的介绍出发,对选取的初始结构进行了优化设计,优化完成后,对所设计的F-theta镜进行了像质评价,通过点列图、场曲与畸变图、相对照度、能量集中度对所设计的F-theta镜进行了分析,最终,对F-theta镜的设计效果进行了验证。

hitliuyi17的博客 9433

纯VB代码取得硬盘的物理序列号

      网上有很多获取硬盘序列号的代码,但大部分都只能取得逻辑分区的序列号,而不能取得硬盘的物理序列号。我们知道,逻辑分区的序列号是FORMAT时产生的,重新FORMAT将会改变。这对于要求唯一识别码的程式来说是致命的。这段代码利用API可以取得物理硬盘的很多特性,包括硬盘出厂时的唯一编号。这段代码我是从优快云论坛获得,原作者不详。我将其稍做修改和增添,独立出两个常用的函数:GetDiskV

思科网络 2487

手把手教你设计低噪声前置放大电路:从光电二极管到X射线探测器的实战配置

本文实战指南详细解析了低噪声前置放大电路的设计,重点针对光电二极管和X射线探测器等微弱信号源。文章深入对比了跨阻放大器与电荷灵敏放大器的核心架构、噪声优化策略及PCB布局技巧,手把手指导从电路选型、仿真验证到调试测试的全流程,助力工程师构建精准可靠的信号链。

tech5的博客 514

Haystack框架实战:从零构建企业级智能问答系统

自然语言处理(NLP)技术通过让计算机理解和生成人类语言,正在深刻改变信息检索与交互方式。其核心原理在于将文本转化为机器可处理的向量表示,并通过语义相似度计算实现精准匹配。这一技术价值在于能够从海量非结构化数据中快速提取精准信息,大幅提升知识获取效率。在工程实践中,检索增强生成(RAG)架构结合了密集向量检索与大语言模型生成能力,成为构建智能问答、知识库助手等应用的主流方案。该架构通过将用户查询与文档库进行语义匹配,并为大语言模型提供精准上下文,有效提升了回答的准确性与可追溯性。本文以Haystack这一生

weixin_42521032的博客 577

VB取得硬盘物理序列号

'============================================'模块功能:取得硬盘的信息'更新日期:2005/7/8'调用方法:' GetDiskVolume() 取得逻辑盘的序列号' GetHardDiskInfo() 取得物理盘的型号或序列号'============================================Private Const ...

weixin_33755847的博客 747

Python Opencv cv2提取图像中某种特定颜色区域(例如黑字白纸背景下的红色公章提取),并将纯色背景透明化

拜拜PHOTOSHOP- 领导突然让我帮他把公章从图片中抠出来,在确保了不是要做坏事的情况下,我打开了PHOTOSHOP,用魔棒工具一点一点抠,但由于魔棒工具的原理是对比临近区域像素差值,导致封闭字体中的区域无法剔除,而且一点一点抠非常麻烦,愤而PYTHON,使用CV2完美解决。 效果如下(马赛克是我添加的): 任务就是把蓝色的公章抠出来。 效果如上。 代码如下: import cv2 import numpy as np src = cv2.imread(r"imagepath")#这里填你的原图像路

qq_43670549的博客 1万+

[转载]纯VB代码取得硬盘的物理序列号

本文原来地址: http://blog.youkuaiyun.com/fxy_2002/services/trackbacks/436183.aspx 本来想收藏的,但是不知道怎么做,所以直接copy下来了    网上有很多获取硬盘序列号的代码,但大部分都只能取得逻辑分区的序列号,而不能取得硬盘的物理序列号。我们知道,逻辑分区的序列号是FORMAT时产生的,重新FORMAT将会改变。这对于要求唯一识别码的程式

byeshuang的专栏 1785

YOLOv8改进策略【卷积层】| DEConv: 强度信息与梯度特征融合的细节增强 适用于小目标与细节目标检测任务

本文记录的是利用 模块优化 的目标检测网络模型。(Detail-Enhanced Convolution,细节增强卷积)的设计旨在,解决 目标检测网络中传统普通卷积缺乏目标细节相关先验、对小目标边缘、目标与背景边界等关键细节捕捉能力不足的问题,同时避免引入额外参数量与计算开销,以适配 对实时推理性能与检测精度的双重需求。DEA-Net: Single image dehazing based on detail-enhanced convolution and content-guided atte

Limiiiing的博客 348

PyInstaller打包后在Win7无法运行,提示缺少`api-ms-win-core-path-l1-1-0.dll`问题解决

这个问题的关键在于Python 3.12和Windows 7之间的兼容性问题。解决方法是使用Python 3.8.8版本进行打包,确保程序能够在Windows 7系统上运行。如果你也遇到类似的问题,不妨尝试降级Python版本,看看是否能够解决。希望我的经验能够帮到你!如果你在使用PyInstaller打包时遇到其他问题,欢迎留言讨论。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 995

vb获取cpuid 硬盘物理序列号和逻辑盘序列号 的方法

vb获取硬盘物理序列号和逻辑盘序列号

志超的专栏 1万+

vb获得硬盘物理序列号

最近在找加密算法  发现很多读取硬盘序列号的方法是收费的bs之下面公布我找到的方法 绝对是物理序列号============================================模块功能:取得硬盘的信息编 程:来自互联网,阿勇修改更新日期:2005/7/8调用方法: GetDiskVolume() 取得逻辑盘的序列号 GetHa

zyg0的专栏 2888

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

硬盘序列号的获得

window98必需使用smartvsd.vxd, ZeroMemory(&vers,sizeof(vers)); h=CreateFile("////.//Smartvsd",0,0,0,CREATE_NEW,0,0);// SMARTVSD.VXD if (!h) {  AfxMessageBox("open smartvsd.vxd failed");  return 0; }   

zjh824的blog 2031

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB获取硬盘逻辑序列号的方法

新建个窗口,在其上加个Command,Caption为Get Serial加入下列代码:Private Declare Function GetVolumeSerialNumber Lib "kernel32" Alias "GetVolumeInformationA" (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As

思科网络 2691

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

直接从RING3获取硬盘序列号

****************************************************************原作: Bardo出处: 《东方热讯》网站网址: www.easthot.net****************************************************************(如需转载,请不在删除以上信息,否则视为侵权!)*

3661512的专栏 1730

读取硬盘物理序列号

//HDID.CPP     //Written   by   Lu   Lin     // http://lu0.126.com     // 2000.11.3     //---*/     #include      #include      #include       #define   DFP_GET_VERSION   0x00074080 

编程人生的专栏 1232

取得硬盘序列号的类(C#)

using System;using System.Runtime.InteropServices;using System.Text;namespace Encry{[Serializable]public struct HardDiskInfo{/// <summary>/// 型号/// </summary>public string Modul...

weixin_30709061的博客 269
上一篇: VB 磁盘信息,文件夹,文件操作
下一篇: VB利用API进行媒体播放
华芸智森
博客等级 码龄25年 571粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值