ダミーファイルシステムをディスクに取り込むプログラムを作成しています。WriteFile returned error 1784
現在、私はWriteFile
を使用して可変サイズのファイルを作成しています。
WriteFile(hFile, FileData, i * 1024, &dwWrote, NULL);
err = GetLastError();
ERRは
供給されたユーザバッファに変換#1784を返し、要求された操作のために有効ではありません。 ERROR_INVALID_USER_BUFFER
したがって、最初の24ファイルの場合、書き込み操作が機能します。ファイル#25がオンの場合、書き込み操作は失敗します。 ファイルはまだ作成されていますが、WriteFile関数はファイルを生成しません。
どのように過去の取得方法に関するアイデアERROR_INVALID_USER_BUFFER
?
エラーが発生した場合は、プログラムをクラッシュさせることに限定されていますが、私が経験している問題とどのように関係しているのか分かりません。
EDIT:
FileData = (char *) malloc(sizeof(char) * (size_t)k * 1024);
memset(FileData, 245, sizeof(char) * (size_t)k * 1024);
FILEDATAが最大の大きさに設定され、割り当てられているバッファ予想します。 iは、最大サイズ(k)までインクリメントするまで反復するループ変数です。
べきか? –
また、クラッシュは通常、UB(通常は無効なメモリにアクセスしようとしている)の結果であることに注意してください。しかし、クラッシュはUBの結果とは必ずしも一致しません。何が起こるかは予測できません。ですから、起こっていないクラッシュが予想される場合は、あまり読みすぎないようにしてください。 –
未処理の非同期I/O要求が多すぎると、WriteFile関数がERROR_INVALID_USER_BUFFERまたはERROR_NOT_ENOUGH_MEMORYで失敗することがあります。 –