Windows 10をFall Creators Updateにアップデートした後、間欠障害が発生しました(CreateWindowEx
)。 GetLastError
は0x000003e6 - ERROR_NOACCESS /メモリへの無効なアクセスを返します。頻繁に(必ずしもそうではありませんが)、まったく同じパラメータで呼び出しを繰り返すだけで成功します。Fall Creators UpdateでCreateWindowExが断続的に失敗するのはなぜですか(エラー998/0x3e6)?
hwnd = ::CreateWindowEx(0, wndClassName, NULL, WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, r.left, r.top, r.right, r.bottom, hParent, NULL, AfxGetInstanceHandle(), NULL);
wndClassName
は、この呼び出しで登録wndClass
の名前です:
LPCSTR wndClassName = /* clsName passed in */;
WNDCLASS wndcls;
HINSTANCE hInst = AfxGetInstanceHandle();
if (!(::GetClassInfo(hInst, wndClassName, &wndcls)))
{
ZeroMemory(&wndcls, sizeof(wndcls));
wndcls.lpfnWndProc = ::DefWindowProc;
wndcls.hCursor = ::LoadCursor(nullptr, IDC_ARROW);
wndcls.hInstance = hInst;
wndcls.lpszClassName = wndClassName;
wndcls.hbrBackground = (HBRUSH)::GetStockObject(NULL_BRUSH);
AfxRegisterClass(&wndcls);
}
MSDNのドキュメントは、障害の典型的な理由の一つは
WH_CBTフックがインストールされていると述べていると返します障害コード
私のアプリケーションはMFCを使用しています.MFCはCBTフックに依存していると思います。
Fall Creators Updateで発生し始めたこれらの断続的な断続的な障害を調査して解決する方法についてのアイデアはありますか? 12月12日にリリース
デバッグコードが必要です。これだけです。私はここでCBTのフックが役割を果たすとは思わない。エラーコードは自分のために言う - あなたは、ウィンドウプロシージャ内のアクセスまたは無効なアドレスや不良なデータを並べ替えてみてください。はい、必要な場合はそれをすべて呼び出す必要があります - どのメッセージを持っています。 – RbMm
@RbMmウィンドウプロシージャはDefWindowProcです。質問に対するウィンドウクラス登録呼び出しが追加されました。 –
あなたはそれを後で( 'DefWindowProc')それを変更することはありませんか? 'DefWindowProc'でカスタムウィンドウクラスを持っているのはどういう意味ですか?いずれにしても、エラーは自分のために言う。あなたは 'STATUS_DATATYPE_MISALIGNMENT'を持っているかのように見えるか、(STATUS_ACCESS_VIOLATION'まで)私は言うことができません。 – RbMm