1

NTFS ハード リンクを利用するデスクトップ アプリケーションがあります。このアプリケーションは、世界中の 40 万台を超えるユーザー PC に配布され、正常に使用されています。

ただし、CreateHardLink() 関数が一貫してエラー コード 1 (関数が正しくない) で失敗するお客様が 1 人います。これは、同じ企業内の複数のマシンで発生します。これらのマシンはすべて Windows XP を実行しており、問題は NTFS パーティションで発生します。

ボリューム ファイル システムが実際に NTFS であることを確認するために fsutil.exe を実行するようにユーザーに依頼しました。

何が原因でしょうか?

4

2 に答える 2

1

正しくない機能は、ファイルシステムがNTFSではないことを示します-クライアントのFSがNTFSであることを本当に確認します。NTFSであることが確実な場合は、NTFSカーネルドライバを直接呼び出して、何が問題なのかを把握することをお勧めします。CreateFile()を介してファイルを開き、パラメーターFileLinkInformationを指定してNtSetInformationFile()を呼び出します。エラーコードは何が悪いのかを正確に教えてくれるはずです。

必要なポインターは、FILE_LINK_INFORMATION構造(http://msdn.microsoft.com/en-us/library/windows/hardware/ff540324%28v=vs.85%29.aspx)とZwSetInformationFile(http://msdn。 microsoft.com/en-us/library/windows/hardware/ff567096%28v=vs.85%29.aspx)ですが、カーネルの外部でZw *を使用することはできないため、Nt*バージョンを使用してください。ただし、Nt*関数でさえ使用するのは少し注意が必要です。

Anyway, correct syntax for fsutil would be "fsutil hardlink create ".

Robert

于 2012-08-01T12:36:31.097 に答える
0

これらのファイル システムで chkdsk を実行してみてください。MFT レコードが破損している可能性がありますか?

于 2014-11-03T19:58:10.350 に答える