PicoScope SDK をダウンロードし、DLLの名前を変更しようとしています( プログラマーズガイドp.5 による)。ただし、Windows10ではこれを実行できません。
ファイル名をps3000a.dll
からPS3000a.dll
に変更しようとしています。
ファイルはFAT32USBドライブにあります。
これが機能しない理由はありますか?
コマンドラインからも機能しないようです。 Git Bash:
MINGW64 /f/SDK/lib
$ ls | grep 3000a.dll
ps3000a.dll*
MINGW64 /f/SDK/lib
$ mv ps3000a.dll PS3000a.dll
MINGW64 /f/SDK/lib
$ ls | grep 3000a.dll
ps3000a.dll*
パワーシェル:
PS F:\SDK\lib> dir | findstr 3000a.dll
-a---- 7/11/2017 3:05 PM 2803016 ps3000a.dll
PS F:\SDK\lib> mv ps3000a.dll PS3000a.dll
PS F:\SDK\lib> dir | findstr 3000a.dll
-a---- 7/11/2017 3:05 PM 2803016 ps3000a.dll
FAT32 は 大文字と小文字を区別しないファイルシステム です。そのため、大文字と小文字のみが異なる同じ名前の2つのファイルは許可されていません。たとえば、PS3000a.dll
とps3000a.dll
という名前の2つのファイルを同じフォルダに含めることはできません。
したがって、ファイル名をPS3000a.dll
からps3000a.dll
に変更しようとしても、Windows 10はファイル名を実際に変更していないことを認識しているため失敗しているようです。ただし、最初にファイルの名前を別の名前に変更し、次にもう一度名前を変更して、意図したケースを使用すると、機能します。
不思議なことに、これはWindows7には当てはまりません。これがProcessMonitorでのファイル名変更操作です。操作は、Windows10と7ですべての点で同じです。 ReplaceIfExists
フラグはFalseであり、結果は両方でSUCCESSです。
ただし、完全なトレースを比較すると、Windows7ボックスのみがSetRenameInformationFile
操作とWriteFile
操作の後に続きます。
Windows 10は、更新された情報をファイルシステムに書き込まないだけです。
新しい名前が古い名前と大文字だけで異なる場合、Windowsエクスプローラーは元の大文字を表示します。 Explorerインスタンスを終了して再起動すると、フォルダーに戻り、新しい大文字の使用が表示されます。