我的代码是这样的:
#include <Windows.h>
int main () {
TCHAR path[MAX_PATH] = {0};
GetModuleFileName(0, path, MAX_PATH);
SHFILEINFO sfi;
ZeroMemory(&sfi, sizeof(SHFILEINFO));
CoInitialize(NULL);
SHGetFileInfo(path, 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_LARGEICON);
return 0;
}
当我使用 gflags 设置页面堆标志时,如下所示:
gflags.exe -p /enable FileLock.exe /unaligned
应用程序收到以下异常:FileLock.exe 0xC0000005 中 0x037b1a32 处的未处理异常:访问冲突读取位置 0x03876ff4。
但是,如果我使用这样的命令禁用页面堆:
gflags.exe -p /disable FileLock.exe 一切都会好的。
PS:我的操作系统是 Windows XP 32 位。和 Windows Vista 64 位得到同样的例外。