windows - 为什么使用 GetFileSizeEx() 将文件标记为只读时会出现 "Invalid handle"错误?

标签 windows delphi winapi file handle

当我从 Delphi 6 应用程序对只读文件使用 Windows API 调用 GetFileSizeEx() 时,我收到操作系统错误代码 6(“无效文件句柄”)。如果我从文件中删除只读属性,错误就会消失。为什么我会收到该错误,是否有一种方法可以使用该调用或类似的只读文件调用?

相关代码如下:

function GetFileSizeEx(hFile: THandle; var FileSize: Int64): BOOL; stdcall; external 'kernel32.dll' name 'GetFileSizeEx';

function easyGetFileSize(theFileHandle: THandle): Int64;
begin
    if not GetFileSizeEx(theFileHandle, Result) then
        RaiseLastOSError;
end;

--罗施勒

最佳答案

您是否检查了打开文件的结果以获取文件句柄?显然,如果文件无法打开,则您将使用无效句柄调用 GetFileSizeEx。您需要以只读模式打开该文件。

关于windows - 为什么使用 GetFileSizeEx() 将文件标记为只读时会出现 "Invalid handle"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6066896/

相关文章:

c# - 如何在 C# 中合成和输出简单的声波?

c# - 如何快速创建内容为 "natural"的大型 (>1gb) 文本+二进制文件? (C#)

windows - 如何使用批处理文件验证 Windows 服务是否已安装并正在运行

iOS objective-c 对象 : When to use release and when to not use it

Delphi 7 indy web服务器显示AResponseInfo.PostStream

text - Win32 文本绘图拼图

c++ - 在 C++ Win32 中获取计算机上的用户配置文件列表

c - Windows 的适当 ansi c 示例是什么?

c - N个十进制数需要多少字节

c++ - SendMessage 到 TEdit 后崩溃