"" に関する原因と対処

このコンパイルエラーの原因と対処に関して説明します。

スポンサード リンク

Microsoft Visual C++にて以下のソースでコンパイルエラーが発生します:

コンパイルエラーメッセージ:
warning C4003: マクロ 'RtlZeroMemory' に指定された実引数の数が少なすぎます。

ソース(バグ有り):

#include<windows.h>

int main() 
{
PROCESS_INFORMATION p;
STARTUPINFO s;
ZeroMemory(&s*sizeof(s));
s.cb=sizeof(s); //メモ帳を実行 int ret = CreateProcess(
NULL, // 実行可能モジュールの名
"c:\\Windows\\System32\\notepad.exe", // コマンドラインの文字列
NULL, // セキュリティ記述子
NULL ,// セキュリティ記述子
FALSE, // ハンドルの継承オプション
NULL, // 作成のフラグ
NULL ,// 新しい環境ブロック
NULL, // カレントディレクトリの名前
&s, // スタートアップ情報
&p // プロセス情報 );
if(ret)
{
//notepad.exeの起動に失敗!
}
else
{
CloseHandle(p.hThread);
//メモ帳が終了するまで待つ
WaitForSingleObject(p.hProcess,INFINITE);
CloseHandle(p.hProcess);
}
return 0; }


原因:


対処:


ソース(修正済み):

#include<windows.h>

int main() 
{
PROCESS_INFORMATION p;
STARTUPINFO s;
ZeroMemory(&s,sizeof(s));
s.cb=sizeof(s); //メモ帳を実行 int ret = CreateProcess(
NULL, // 実行可能モジュールの名
"c:\\Windows\\System32\\notepad.exe", // コマンドラインの文字列
NULL, // セキュリティ記述子
NULL ,// セキュリティ記述子
FALSE, // ハンドルの継承オプション
NULL, // 作成のフラグ
NULL ,// 新しい環境ブロック
NULL, // カレントディレクトリの名前
&s, // スタートアップ情報
&p // プロセス情報 );
if(ret)
{
//notepad.exeの起動に失敗!
}
else
{
CloseHandle(p.hThread);
//メモ帳が終了するまで待つ
WaitForSingleObject(p.hProcess,INFINITE);
CloseHandle(p.hProcess);
}
return 0; }

スポンサード リンク



[コンパイルエラーコード、メッセージに戻る]