- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
目前,我正在使用 GetFileSizeEx 来跟踪日志文件在写入之前的大小。我们的空间有限,如果我们尝试创建大于 100 兆字节的文件,我们将停止记录数据。问题是出于某种原因,GetFileSizeEx 会破坏我正在使用的文件句柄。
if( hFileHandle != INVALID_HANDLE_VALUE && hFileHandle != NULL )
{
asDbgMsg = asDbgMsg + asDelimeter;
dwBytesToWrite =asDbgMsg.Length();
pWrtBuffer = asDbgMsg.c_str();
// Get the file size we are about to write to.
PLARGE_INTEGER lpFileSize;
GetFileSizeEx(hFileHandle, lpFileSize);
// Don't write out the file if it is more than 100 mb!
if(lpFileSize->QuadPart < 104857600)
{
WriteFile( hFileHandle, pWrtBuffer, dwBytesToWrite, &dwBytesWritten, NULL );
}
}
hFileHandle 将从正常值 (00000EB8) 变为 ?????在 Rad 工作室的调试器中。
现在我通过使用 GetFileSize 函数解决了这个问题:
if( hFileHandle != INVALID_HANDLE_VALUE && hFileHandle != NULL )
{
asDbgMsg = asDbgMsg + asDelimeter;
dwBytesToWrite =asDbgMsg.Length();
pWrtBuffer = asDbgMsg.c_str();
// Get the file size we are about to write too.
DWORD test;
GetFileSize(hFileHandle, &test);
// Don't write out the file if it is more than 100 mb!
if(test < 104857600)
{
WriteFile( hFileHandle, pWrtBuffer, dwBytesToWrite, &dwBytesWritten, NULL );
}
}
但是,我宁愿不使用非扩展功能。我已经删除了该文件以确保没有其他进程锁定它,但它在创建该文件时仍然存在问题。我应该注意,此错误不会在构建器 6 下发生,只会在 Rad Studio 2010 下发生。
谢谢你的帮助。
最佳答案
尝试使用 LARGE_INTEGER 而不是 PLARGE_INTEGER。通常 PLARGE_INTEGER 是一个指针,而不是一个值。
关于c++ - GetFileSizeEx 损坏文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3822999/
目前,我正在使用 GetFileSizeEx 来跟踪日志文件在写入之前的大小。我们的空间有限,如果我们尝试创建大于 100 兆字节的文件,我们将停止记录数据。问题是出于某种原因,GetFileSize
我在创建命名共享内存和检查其大小时遇到问题。当我在这样的函数中调用它时,函数 GetFileSizeEx 失败。关于如何调试这个的任何想法? void test_getsize(const cha
我遇到了一个关于 GetFileSize 和 GetFileSizeEx API 的非常奇怪的问题。 除了来自 System32 目录的文件外,这两个函数都适用于每个输入文件。 例如: 如果我在 ca
我不知道如何使用 RTL 之外的任何 API。我一直在使用 SetFilePointer 和 GetFileSize 将物理磁盘读入缓冲区并将其转储到文件中,这样的循环可以完成 2GB 以下闪存卡的工
当我在只读文件上使用我的 Delphi 6 应用程序中的 Windows API 调用 GetFileSizeEx() 时,我收到操作系统错误代码 6(“无效文件句柄”)。如果我从文件中删除只读属性,
我是一名优秀的程序员,十分优秀!