私のコードは次のようなものです:
#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 /FileLock.exe を有効にする /unaligned
アプリケーションは、次の例外を受け取ります: FileLock.exe 0xC0000005 の 0x037b1a32 で未処理の例外: ロケーション 0x03876ff4 を読み取るアクセス違反。
しかし、次のようなコマンドでページヒープを無効にすると:
gflags.exe -p /disable FileLock.exe これで問題ありません。
PS: 私の OS は Windows XP 32 ビットです。また、Windows Vista 64 ビットでも同じ例外が発生します。