Attribute VB_Name = "BulkXfer"Option Explicit' = = = = W I N A P I = = = =Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Public Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, ByVal lpOverlapped As Long) As Long Public Declare Function GetLastError Lib "kernel32" () As Long' = = = = C O N S T A N T S = = = =Public Const GENERIC_READ = &H80000000 Public Const GENERIC_WRITE = &H40000000 Public Const FILE_SHARE_READ = &H1 Public Const FILE_SHARE_WRITE = &H2 Public Const OPEN_EXISTING = 3Public Const METHOD_BUFFERED = 0 Public Const METHOD_IN_DIRECT = 1 Public Const METHOD_OUT_DIRECT = 2Public Const MAX_PIPES = 16 Public Const MAX_USB_DEV_NUMBER = 32Enum ErrorEnum eBadParam = -1 eBadDriver = -2 eBadPipe = -3 End EnumEnum EZ_ReadOrWrite eWrite = 1 eRead = 0 End EnumPublic Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Boolean End TypePrivate Const Ezusb_IOCTL_INDEX = &H800Public Const IOCTL_Ezusb_GET_PIPE_INFO = _ &H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 0) * 4Private Const IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR = _ &H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 1) * 4Public Const IOCTL_EZUSB_BULK_READ = _ &H220000 + METHOD_OUT_DIRECT + (Ezusb_IOCTL_INDEX + 19) * 4Public Const IOCTL_EZUSB_BULK_WRITE = _ &H220000 + METHOD_IN_DIRECT + (Ezusb_IOCTL_INDEX + 20) * 4//////////////////////////////////// //////////////////////////////////// Public Type USBDeviceDescriptorType bDescriptorLength As Byte bDescriptor As Byte iSpecRelease As Integer bDeviceClass As Byte bDeviceSubClass As Byte bDeviceProtocol As Byte bMaxPacketSize As Byte iVendorID As Integer iProductID As Integer iDeviceRelease As Integer bManufacturer As Byte bProduct As Byte bSerialNumber As Byte bNumberConfigurations As Byte fill(128) As Byte End TypePublic Type BulkTransferControlType lPipeNum As Long End Type //////////////////////////////////// //////////////////////////////////// Public Enum USBDPipeEnum eUsbdPipeTypeControl = 0 eUsbdPipeTypeIsochronous eUsbdPipeTypeBulk eUsbdPipeTypeInterrupt End Enum //////////////////////////////////// //////////////////////////////////// Public Type USBDPipeInformationTypeiMaximumPacketSize As Integer bEndpointAddress As Byte bInterval As Byte PipeType As USBDPipeEnum lPipeHandle As LonglMaximumTransferSize As Long lPipeFlags As Long End Type//////////////////////////////////// //////////////////////////////////// Public Type USBDInterfaceInformationType iLength As Integer bInterfaceNumber As Byte bAlternateSetting As BytebClass As Byte bSubClass As Byte bProtocol As Byte bReserved As BytelInterfaceHandle As Long lNumberOfPipes As LongPipes(MAX_PIPES) As USBDPipeInformationType End Type////////////////////////////////////
//////////////////////////////////// Function DoBulkXfer(strDriver As String, pipe As Integer, ByRef buffer() As Byte, ByRef dataLen As Long) As LongDim hDriverHandle As Long Dim result As Long Dim btc As BulkTransferControlType Dim pi As USBDInterfaceInformationType Dim usbDD As USBDeviceDescriptorType Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver) ' If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR, usbDD, Len(usbDD), usbDD, Len(usbDD), lBytesReturned, 0)If result = 0 Then: DoBulkXfer = resultIf usbDD.iVendorID <> &H547 And usbDD.iProductID <> &H1002 Then DoBulkXfer = eBadPipe Exit Function End Ifresult = GetPipeInfo(strDriver, pi)If result = 0 Then DoBulkXfer = result Exit Function End IfIf pi.lNumberOfPipes <= pipe Then DoBulkXfer = eBadPipe Exit Function Else btc.lPipeNum = pipe End IfIf (pi.Pipes(pipe).bEndpointAddress > 128) Then result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_READ, btc, Len(btc), buffer(0), dataLen, dataLen, 0) Else result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_WRITE, btc, Len(btc), buffer(0), dataLen, dataLen, 0) End IfCloseHandle (hDriverHandle)DoBulkXfer = resultElseDoBulkXfer = eBadDriverEnd IfEnd Function//////////////////////////////////// //////////////////////////////////// Function GetPipeInfo(strDriver As String, pi As USBDInterfaceInformationType) As LongDim result As Long Dim hDriverHandle As Long Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver)GetPipeInfo = 0If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_PIPE_INFO, pi, Len(pi), pi, Len(pi), lBytesReturned, 0) CloseHandle (hDriverHandle) End IfGetPipeInfo = resultEnd Function//////////////////////////////////// //////////////////////////////////// Function OpenDriver(sDriverName As String) As LongDim result As Long Dim driverName As StringdriverName = "\\.\" & sDriverNameresult = CreateFile(driverName, (GENERIC_READ Or GENERIC_WRITE), (FILE_SHARE_READ Or FILE_SHARE_WRITE), ByVal 0, OPEN_EXISTING, 0&, 0)If result < 0 Then result = GetLastError() End If OpenDriver = resultEnd Function//////////////////////////////////// //////////////////////////////////// Sub ErrMsg(err As ErrorEnum)Select Case errCase eBadDriver MsgBox "Selected EZ-USB Device Driver was not found. Perhaps no device is connected.", vbOKOnly + vbCritical, "BulkXFer Error" Case eBadPipe MsgBox "Correct Pipe not found. Perhaps ""Ep-pair.hex"" was not downloaded to a development board.", vbOKOnly + vbCritical, "BulkXFer Error" Case Else MsgBox "Unknown Error.", vbOKOnly + vbCritical, "BulkXFer Error" End SelectEnd Sub///////////////////////////////////
'下面这些是在FRM里面摘出来的文件 ///////////////////////////////////Attribute VB_Name = "frmBulk" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = FalseOption ExplicitPublic strBuffer As String//////////////////////////////////// //////////////////////////////////// Private Sub Form_Load() Dim Index As Integer Dim sDriverName As String Dim hDriver As LongFor Index = 0 To MAX_USB_DEV_NUMBER - 1 sDriverName = "Ezusb-" & Index hDriver = OpenDriver(sDriverName) If hDriver > 0 Then cmbDriverName.AddItem sDriverName CloseHandle hDriver End If NextIf cmbDriverName.ListCount > 0 Then cmbDriverName.Text = cmbDriverName.List(0) Else ErrMsg (eBadDriver) End End If End Sub//////////////////////////////////// //////////////////////////////////// Private Sub txtIn_Change()Dim buffer(63) As Byte Dim result As Long Dim i As Integer Dim lDataLen As Long Dim sDriverName As StringstrBuffer = strBuffer + Right(txtIn, 1)If Len(strBuffer) = Val(txtBlkSize.Text) ThenlDataLen = Len(strBuffer) For i = 1 To lDataLen buffer(i - 1) = Asc(Mid(strBuffer, i, 1)) Next strBuffer = ""sDriverName = cmbDriverName.Textresult = DoBulkXfer(sDriverName, eWrite, buffer, lDataLen) If result <> 1 Then: ErrMsg (result): Exit SubFor i = 0 To 63 ' no rabbits up my sleeve buffer(i) = 0 Nextresult = DoBulkXfer(sDriverName, eRead, buffer, lDataLen) If result <> 1 Then: ErrMsg (result): Exit SubFor i = 1 To lDataLen txtOut.Text = txtOut.Text + Chr(buffer(i - 1)) NextEnd If ' xfer trigger reachedEnd Sub//////////////////////////////////// //////////////////////////////////// Private Sub txtBlkSize_Change() Dim temp As Integertemp = Val(txtBlkSize)If temp < 0 Or temp > 64 Then MsgBox "Enter a valid Bulk Transfer block size between 1 and 64.", vbInformation, "Input Error" txtBlkSize.SelStart = 0 txtBlkSize.SelLength = 3 End If End SubPrivate Sub cmdClearIn_Click() txtIn.Text = "" End SubPrivate Sub cmdClearOut_Click() txtOut.Text = "" End SubPrivate Sub Form_Activate() txtBlkSize.SetFocus End Sub
DeviceIOControl可以实现的
绝对OK的
我实现过的了,但技术细节保密
观注!
To ly_liuyang(Liu Yang)能否提出思路,或指点一下
技术不交流,又怎能进步呢?
摆正点心态吧!
可以参考
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, ByVal lpOverlapped As Long) As Long
Public Declare Function GetLastError Lib "kernel32" () As Long' = = = = C O N S T A N T S = = = =Public Const GENERIC_READ = &H80000000
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_SHARE_READ = &H1
Public Const FILE_SHARE_WRITE = &H2
Public Const OPEN_EXISTING = 3Public Const METHOD_BUFFERED = 0
Public Const METHOD_IN_DIRECT = 1
Public Const METHOD_OUT_DIRECT = 2Public Const MAX_PIPES = 16
Public Const MAX_USB_DEV_NUMBER = 32Enum ErrorEnum
eBadParam = -1
eBadDriver = -2
eBadPipe = -3
End EnumEnum EZ_ReadOrWrite
eWrite = 1
eRead = 0
End EnumPublic Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Boolean
End TypePrivate Const Ezusb_IOCTL_INDEX = &H800Public Const IOCTL_Ezusb_GET_PIPE_INFO = _
&H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 0) * 4Private Const IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR = _
&H220000 + METHOD_BUFFERED + (Ezusb_IOCTL_INDEX + 1) * 4Public Const IOCTL_EZUSB_BULK_READ = _
&H220000 + METHOD_OUT_DIRECT + (Ezusb_IOCTL_INDEX + 19) * 4Public Const IOCTL_EZUSB_BULK_WRITE = _
&H220000 + METHOD_IN_DIRECT + (Ezusb_IOCTL_INDEX + 20) * 4////////////////////////////////////
////////////////////////////////////
Public Type USBDeviceDescriptorType
bDescriptorLength As Byte
bDescriptor As Byte
iSpecRelease As Integer
bDeviceClass As Byte
bDeviceSubClass As Byte
bDeviceProtocol As Byte
bMaxPacketSize As Byte
iVendorID As Integer
iProductID As Integer
iDeviceRelease As Integer
bManufacturer As Byte
bProduct As Byte
bSerialNumber As Byte
bNumberConfigurations As Byte
fill(128) As Byte
End TypePublic Type BulkTransferControlType
lPipeNum As Long
End Type
////////////////////////////////////
////////////////////////////////////
Public Enum USBDPipeEnum
eUsbdPipeTypeControl = 0
eUsbdPipeTypeIsochronous
eUsbdPipeTypeBulk
eUsbdPipeTypeInterrupt
End Enum
////////////////////////////////////
////////////////////////////////////
Public Type USBDPipeInformationTypeiMaximumPacketSize As Integer
bEndpointAddress As Byte bInterval As Byte PipeType As USBDPipeEnum
lPipeHandle As LonglMaximumTransferSize As Long lPipeFlags As Long
End Type////////////////////////////////////
////////////////////////////////////
Public Type USBDInterfaceInformationType
iLength As Integer bInterfaceNumber As Byte
bAlternateSetting As BytebClass As Byte
bSubClass As Byte
bProtocol As Byte
bReserved As BytelInterfaceHandle As Long
lNumberOfPipes As LongPipes(MAX_PIPES) As USBDPipeInformationType
End Type////////////////////////////////////
Function DoBulkXfer(strDriver As String, pipe As Integer, ByRef buffer() As Byte, ByRef dataLen As Long) As LongDim hDriverHandle As Long
Dim result As Long
Dim btc As BulkTransferControlType
Dim pi As USBDInterfaceInformationType
Dim usbDD As USBDeviceDescriptorType
Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver)
'
If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_DEVICE_DESCRIPTOR, usbDD, Len(usbDD), usbDD, Len(usbDD), lBytesReturned, 0)If result = 0 Then: DoBulkXfer = resultIf usbDD.iVendorID <> &H547 And usbDD.iProductID <> &H1002 Then
DoBulkXfer = eBadPipe
Exit Function
End Ifresult = GetPipeInfo(strDriver, pi)If result = 0 Then
DoBulkXfer = result
Exit Function
End IfIf pi.lNumberOfPipes <= pipe Then
DoBulkXfer = eBadPipe
Exit Function
Else
btc.lPipeNum = pipe
End IfIf (pi.Pipes(pipe).bEndpointAddress > 128) Then
result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_READ, btc, Len(btc), buffer(0), dataLen, dataLen, 0)
Else
result = DeviceIoControl(hDriverHandle, IOCTL_EZUSB_BULK_WRITE, btc, Len(btc), buffer(0), dataLen, dataLen, 0)
End IfCloseHandle (hDriverHandle)DoBulkXfer = resultElseDoBulkXfer = eBadDriverEnd IfEnd Function////////////////////////////////////
////////////////////////////////////
Function GetPipeInfo(strDriver As String, pi As USBDInterfaceInformationType) As LongDim result As Long
Dim hDriverHandle As Long
Dim lBytesReturned As LonghDriverHandle = OpenDriver(strDriver)GetPipeInfo = 0If hDriverHandle > 0 Thenresult = DeviceIoControl(hDriverHandle, IOCTL_Ezusb_GET_PIPE_INFO, pi, Len(pi), pi, Len(pi), lBytesReturned, 0)
CloseHandle (hDriverHandle)
End IfGetPipeInfo = resultEnd Function////////////////////////////////////
////////////////////////////////////
Function OpenDriver(sDriverName As String) As LongDim result As Long
Dim driverName As StringdriverName = "\\.\" & sDriverNameresult = CreateFile(driverName, (GENERIC_READ Or GENERIC_WRITE), (FILE_SHARE_READ Or FILE_SHARE_WRITE), ByVal 0, OPEN_EXISTING, 0&, 0)If result < 0 Then
result = GetLastError()
End If
OpenDriver = resultEnd Function////////////////////////////////////
////////////////////////////////////
Sub ErrMsg(err As ErrorEnum)Select Case errCase eBadDriver
MsgBox "Selected EZ-USB Device Driver was not found. Perhaps no device is connected.", vbOKOnly + vbCritical, "BulkXFer Error"
Case eBadPipe
MsgBox "Correct Pipe not found. Perhaps ""Ep-pair.hex"" was not downloaded to a development board.", vbOKOnly + vbCritical, "BulkXFer Error"
Case Else
MsgBox "Unknown Error.", vbOKOnly + vbCritical, "BulkXFer Error"
End SelectEnd Sub///////////////////////////////////
///////////////////////////////////Attribute VB_Name = "frmBulk"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = FalseOption ExplicitPublic strBuffer As String////////////////////////////////////
////////////////////////////////////
Private Sub Form_Load()
Dim Index As Integer
Dim sDriverName As String
Dim hDriver As LongFor Index = 0 To MAX_USB_DEV_NUMBER - 1
sDriverName = "Ezusb-" & Index
hDriver = OpenDriver(sDriverName)
If hDriver > 0 Then
cmbDriverName.AddItem sDriverName
CloseHandle hDriver
End If
NextIf cmbDriverName.ListCount > 0 Then
cmbDriverName.Text = cmbDriverName.List(0)
Else
ErrMsg (eBadDriver)
End
End If
End Sub////////////////////////////////////
////////////////////////////////////
Private Sub txtIn_Change()Dim buffer(63) As Byte
Dim result As Long
Dim i As Integer
Dim lDataLen As Long
Dim sDriverName As StringstrBuffer = strBuffer + Right(txtIn, 1)If Len(strBuffer) = Val(txtBlkSize.Text) ThenlDataLen = Len(strBuffer)
For i = 1 To lDataLen
buffer(i - 1) = Asc(Mid(strBuffer, i, 1))
Next
strBuffer = ""sDriverName = cmbDriverName.Textresult = DoBulkXfer(sDriverName, eWrite, buffer, lDataLen)
If result <> 1 Then: ErrMsg (result): Exit SubFor i = 0 To 63 ' no rabbits up my sleeve
buffer(i) = 0
Nextresult = DoBulkXfer(sDriverName, eRead, buffer, lDataLen)
If result <> 1 Then: ErrMsg (result): Exit SubFor i = 1 To lDataLen
txtOut.Text = txtOut.Text + Chr(buffer(i - 1))
NextEnd If ' xfer trigger reachedEnd Sub////////////////////////////////////
////////////////////////////////////
Private Sub txtBlkSize_Change()
Dim temp As Integertemp = Val(txtBlkSize)If temp < 0 Or temp > 64 Then
MsgBox "Enter a valid Bulk Transfer block size between 1 and 64.", vbInformation, "Input Error"
txtBlkSize.SelStart = 0
txtBlkSize.SelLength = 3
End If
End SubPrivate Sub cmdClearIn_Click()
txtIn.Text = ""
End SubPrivate Sub cmdClearOut_Click()
txtOut.Text = ""
End SubPrivate Sub Form_Activate()
txtBlkSize.SetFocus
End Sub
真是不好意思了:)最多就给你一点Tips
可读注册表的,哈哈,效果是完全一样的!例如:HardwareID就是了[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_Netac&Prod_OnlyDisk&Rev_1.11\221D19FD3D8E6261&0]
"DeviceDesc"="Disk drive"
"Capabilities"=dword:00000010
"UINumber"=dword:00000000
"HardwareID"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69, 00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00, 6c,00,79,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f, 00,5f,00,31,00,2e,00,31,00,31,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00, 52,00,5c,00,44,00,69,00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f, 00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00, 5f,00,5f,00,5f,00,5f,00,5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52, 00,5c,00,44,00,69,00,73,00,6b,00,4e,00,65,00,74,00,61,00,63,00,5f,00,5f,00, 5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,4e,00,65,00,74, 00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00,73,00, 6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,31,00,00,00,4e,00,65, 00,74,00,61,00,63,00,5f,00,5f,00,5f,00,4f,00,6e,00,6c,00,79,00,44,00,69,00, 73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,31,00,00,00,55, 00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,47,00,65,00,6e,00,44,00,69,00, 73,00,6b,00,00,00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00,00,00,00
"CompatibleIDs"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00, 69,00,73,00,6b,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,52, 00,41,00,57,00,00,00,00,00
"Service"="disk"
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"ConfigFlags"=dword:00000000
"ParentIdPrefix"="7&66a18cb&1"
"Driver"="{4D36E967-E325-11CE-BFC1-08002BE10318}\\0003"
"Class"="DiskDrive"
"Mfg"="(Standard disk drives)"
"FriendlyName"="Netac OnlyDisk USB Device"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR\Disk&Ven_____&Prod______&Rev_4.00\1F3312000265&0]
"DeviceDesc"="Disk drive"
"Capabilities"=dword:00000010
"UINumber"=dword:00000000
"HardwareID"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69, 00,73,00,6b,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00, 5f,00,5f,00,5f,00,5f,00,5f,00,34,00,2e,00,30,00,30,00,00,00,55,00,53,00,42, 00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,00,73,00,6b,00,5f,00,5f,00,5f,00, 5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,00, 00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00,69,00,73,00,6b,00, 5f,00,5f,00,5f,00,5f,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c, 00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00, 5f,00,5f,00,5f,00,34,00,00,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f, 00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,5f,00,34,00,00,00,55,00,53,00,42,00, 53,00,54,00,4f,00,52,00,5c,00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00, 00,47,00,65,00,6e,00,44,00,69,00,73,00,6b,00,00,00,00,00
"CompatibleIDs"=hex(7):55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,44,00, 69,00,73,00,6b,00,00,00,55,00,53,00,42,00,53,00,54,00,4f,00,52,00,5c,00,52, 00,41,00,57,00,00,00,00,00
"Service"="disk"
"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"
"ConfigFlags"=dword:00000000
"ParentIdPrefix"="7&37a5937&1"
"Driver"="{4D36E967-E325-11CE-BFC1-08002BE10318}\\0000"
"Class"="DiskDrive"
"Mfg"="(Standard disk drives)"
"FriendlyName"="神州数码 移动数码盘 USB Device"
各位就知道问人,又讲技术交流才能进步,好个激将发呀
再次郑重声明,本人LY,从没在CSDN上提过一个问题,故为CSDN第一铁公鸡上述代码支持2000或以上系统有效
具体代码为商业代码,不可能无偿公开的,你见那个ERP有源码的?
但具体实现都是要靠你自己了:)
哈哈:)
并请提交到FAQ吧:)
我没在CSDN发过贴,真是不清楚了
我没在CSDN发过贴,真是不清楚了/////////////////////////////////////////
老大.原来你吃肉不吐骨头啊.说明你从来没放过分啊..牛人..
你的可用分一定爆满了是不是啊..
然后调用API?