0

私のアプリケーションは、数バイトのデータを別のデータ ストリームに書き込みます。これは、1 台のマシン (Windows Server 2003 SP2) を除くすべてのマシンで正常に機能します。ERROR_DISK_FULL代わりに、 (ルート ディレクトリに) 別のデータ ストリームを作成しようとすると、CreateFile が返されます。この結果の理由はわかりません。なぜなら...

  • そのドライブには十分なスペースがあります。

  • ドライブは NTFS でフォ​​ーマットされています (GetVolumeInformation により)。

  • ドライブは代替データ ストリームをサポートします (GetVolumeInformation による)。

編集:理由が何であるかについてさらに情報を提供できます。エラーを表示しなかったテストシステムに多くのストリームを追加し、エラーが発生する可能性があるかどうか疑問に思いました。そうではありませんでした。代わりに、長いファイル名を持つ約 2000 のストリームの後、別のエラーが発生して持続しました: 1450 (ERROR_NO_SYSTEM_RESOURCES)。

編集: 使用されるファイル名の 1 つの例を次に示します。

char szStreamFileName[] = "C:\\:abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnoqrstuvwxyz012345";

編集: 当社の顧客は、このサーバーで Avira の企業向けウイルス対策ソフトウェアを使用しています。おそらくこれが理由です (代替データ ストリームはマルウェアによって悪用される可能性があります)。

4

7 に答える 7

2

MS でサポート チケットを開いた後、文書化されていない Windows 機能でのみ設定 (およびリセット) できる読み取り専用フラグ セットがあったことを知りました。誰がなぜこのフラグを設定したのかは誰も知りませんが、私はドライブのイメージを (顧客からマシンを受け取った後に) 送信したので、彼らはそれを理解しました。アプリケーションには回避策しかありません (このエラーが検出された場合は、別の場所を使用します)。一方、一部のお客様がこの問題を抱えていることがわかっています。

于 2011-08-18T11:14:08.483 に答える
1

圧縮/スペア ファイルまたは代替データ ストリームはありますか?

多くの場合、バックアップ アプリケーションは、圧縮ファイルをバックアップしようとして ERROR_DISK_FULL エラーを受け取ります。これは、ドライブにまだ数ギガバイトの空き容量がある場合に、かなりの混乱を引き起こします。圧縮ファイルをコピーするときに、他の問題が発生する場合もあります。このブログの目的は、読者が NTFS ファイルを圧縮すると実際に何が起こるかをより完全に理解できるようにすることです。

NTFS圧縮の理解から

于 2009-10-30T03:31:32.143 に答える
0

このファイルを作成しようとしたときに、 Sysinternal の Process Monitorユーティリティのようなものが何をキャプチャするかを確認したい場合があります。これは、I/O スタックに関与するさまざまな API のリターン コードを示しており、そのうちの 1 つから 112 が発生している理由の手がかりが得られる可能性があります。あなたに戻ってきました。うまくいけば、ProcMon の詳細レベルで十分です。そうでない場合は、Windows 用のより詳細な I/O トレース機能が他にもあると思います (ただし、頭の中でそれらについては知りません)。

于 2009-11-02T07:27:59.960 に答える
0

あなたが与えるファイル名は

char szStreamFileName[] = "C:\\:abcdefghijklm...

それでは始まります

C:\\:

それは投稿のタイプミスですか、それともスラッシュの後に本当にコロンがありますか? 違法なファイル名だと思います。

于 2009-11-03T09:11:57.840 に答える
0

2GB を超えるファイルを別のファイルシステム (NTFS) から、2GB の制限がある FAT / FAT32 にコピーしようとすると、このエラーが表示されることがあります。

于 2010-05-03T17:32:51.027 に答える
0

ただ別の可能性...

OSで現在開いているファイルの数を確認しましたか? OS サポート最大。ERROR_DISK_FULL または ERROR_NO_SYSTEM_RESOURCES を報告した後の予約ファイル ハンドルの数。

そして 2 番目の可能性... ルート ディレクトリは、ファイルの数によって制限されます。OSの古いバージョンでは512個のファイルを覚えています。しかし、NTFS はルートで無制限の数のファイルをサポートします!

于 2009-10-28T18:15:49.447 に答える
-1

ブラインドショットですが、権利はきちんと設定されていますか?

于 2009-10-22T10:26:06.237 に答える