想通过API CreateFile,ReadFile 读取文件,写了如下代码:
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End TypePublic Type ACL
AclRevision As Byte
Sbz1 As Byte
AclSize As Integer
AceCount As Integer
Sbz2 As Integer
End TypePublic Type SECURITY_DESCRIPTOR
Revision As Byte
Sbz1 As Byte
Control As Long
Owner As Long
Group As Long
Sacl As ACL
Dacl As ACL
End TypePublic 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 = 3
Public Const Return_Fail = -1
Public Function ReadtoBuf(ByRef Buf() As Byte) As Long
Dim FPath As String
Dim Hdl As Long
Dim Sd As SECURITY_DESCRIPTOR
Dim SAttr As SECURITY_ATTRIBUTES
On Error Resume Next
FPath = "C:\aaa.TXT"SAttr.lpSecurityDescriptor = VarPtr(Sd)
SAttr.bInheritHandle = 0
SAttr.nLength = 0 ' Len(Attr)Hdl = CreateFile(FPath, GENERIC_READ, FILE_SHARE_READ, SAttr, OPEN_EXISTING, 0, 0) 'aaa 如果sattr位置参数改为0 结果不变
If Hdl = Return_Fail Then
MsgBox "Open Err:" & Err.Description
Exit Function
End If'.........................End Function上面代码 aaa句不成功, 总是出错:Hdl = Return_Fail
请问这里代码哪里有问题呢 ?
本人 判断可能是Sattr问题,可应该如何设置:SAttr呢 ?
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, _
ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function ReadFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, _
lpNumberOfBytesRead As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End TypePublic Type ACL
AclRevision As Byte
Sbz1 As Byte
AclSize As Integer
AceCount As Integer
Sbz2 As Integer
End TypePublic Type SECURITY_DESCRIPTOR
Revision As Byte
Sbz1 As Byte
Control As Long
Owner As Long
Group As Long
Sacl As ACL
Dacl As ACL
End TypePublic 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 = 3
Public Const Return_Fail = -1
Public Function ReadtoBuf(ByRef Buf() As Byte) As Long
Dim FPath As String
Dim Hdl As Long
Dim Sd As SECURITY_DESCRIPTOR
Dim SAttr As SECURITY_ATTRIBUTES
On Error Resume Next
FPath = "C:\aaa.TXT"SAttr.lpSecurityDescriptor = VarPtr(Sd)
SAttr.bInheritHandle = 0
SAttr.nLength = 0 ' Len(Attr)Hdl = CreateFile(FPath, GENERIC_READ, FILE_SHARE_READ, SAttr, OPEN_EXISTING, 0, 0) 'aaa 如果sattr位置参数改为0 结果不变
If Hdl = Return_Fail Then
MsgBox "Open Err:" & Err.Description
Exit Function
End If'.........................End Function上面代码 aaa句不成功, 总是出错:Hdl = Return_Fail
请问这里代码哪里有问题呢 ?
本人 判断可能是Sattr问题,可应该如何设置:SAttr呢 ?
解决方案 »
- WORD2007 组合对象如何设置排版格式为嵌入式
- vba怎么截取ppt翻页消息的问题
- 大家有用过微软的wmdrm7.1吗?请问wmdrm是如何对过期时间进行控制的? 证书是如何知道用户修改了系统时间的?
- 怎么样用OLE 把WORD 程序装入到我程序的窗口上来?
- 请问如何在 MDI 窗体中打开多个窗体
- textbox###################################################################
- 一个很简单的问题!
- 那个有屏蔽服务器端口的源代码哈?给俺一个瞧瞧哈!UP有分哈!
- 如何用语句实现在两个不同的SQL数据库中导数据?
- vb调用vc写的DLL的问题,请指教!!!!!!!!!!!!
- 如何用vb监视一个进程是否存在 ?
- 请教一个insert语句中values后的数据用文本框的问题
Private 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
Hdl = CreateFile(FPath, GENERIC_READ, FILE_SHARE_READ, byval 0&, OPEN_EXISTING, 0, 0)