###前提・実現したいこと
Win32APIの学習をしています。
プロセス処理について学習を始めようとしたところ、CreateProcess()関数が実行できず、困っています。
###発生している問題・エラーメッセージ
0x74E48B7F (KernelBase.dll) で例外がスローされました (CreateProcess.exe 内): 0xC0000005: 場所 0x00A27B72 への書き込み中にアクセス違反が発生しました
CreateProcess.exeは以下のソースコードの実行ファイルです。
###該当のソースコード
C++
1#include <windows.h> 2#include <stdio.h> 3 4int main() 5{ 6 STARTUPINFO sInfo; 7 PROCESS_INFORMATION pInfo; 8 BOOL bResult; 9 10 GetStartupInfo(&sInfo); 11 12 bResult = CreateProcess(0, L"notepad", 0, 0, FALSE, 13 0, 0, 0, &sInfo, &pInfo); 14 15 if (!bResult) 16 { 17 fprintf(stderr, "プロセスを開始できません.\n"); 18 return 1; 19 } 20 21 WaitForSingleObject(pInfo.hProcess, INFINITE); 22 23 return 0; 24}
CreateProcess()実行の段階で上記の実行時エラーが発生します。
コンパイル・リンクには成功しています。
###試したこと
検索しましたが、特に解決しませんでした。
上記コードは「Win32APIシステムプログラミング」という本のP.418~419のコードの写経に近いものであり、L"notepad"の部分は該当書籍ではコマンドライン引数argv[1]とし、実行時にコマンドライン引数としてnotepadを渡しています。
しかしながら、書籍同様にCreateProcess()の第二引数をargv[1]とし、コマンドライン引数からnotepadを渡しても同様のエラーが発生します。
該当書籍はVisual Studio 2008 Professional環境を想定としているようですので、環境の問題でもあるかもしれません。
###補足情報(言語/FW/ツール等のバージョンなど)
言語:C++
開発環境:Visual Studio Community 2017
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/25 08:22 編集
退会済みユーザー
2017/11/25 08:23
2017/11/25 08:41