問題タブ [drives]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - LinuxデバイスのパスをWindowsのドライブ名に一致させる方法は?
Linux環境である段階で低レベルのディスク操作を実行するアプリケーションを書いています。アプリは実際には2つの部分で構成されています。1つはWindowsで実行され、ユーザーと対話します。もう1つは、LiveCDから実行されるLinuxの部分です。ユーザーがWindowsドライブ文字を選択すると、Linuxパーツが対応するパーティションでアクションを実行します。問題は、Windowsのドライブ文字(C :など)とLinuxのデバイス名(/ dev / sda1など)の一致を見つけることです。これは私が醜いと評価している私の現在の解決策です:
パーティション情報(つまり、ドライブ文字、ブロック数、ドライブのシリアル番号など)をWindowsの事前定義された場所(つまり、システムパーティションのルート)に保存します。
/ proc/partitionsからパーティションのリストを読み取ります。SCSIまたはIDEハードドライブのメジャー番号と、ディスク全体ではなく実際のパーティションとしてそれらを識別するマイナー番号を持つパーティションのみを取得します。
ntfsまたはvfatファイルシステムのいずれかを使用して、それぞれをマウントしてみてください。マウントされたパーティションにWindowsアプリによって保存された情報が含まれているかどうかを確認します。
Windowsアプリによって書かれた必要な情報を見つけたら、実際に一致させます。/ proc / componentsで見つかった各パーティションについて、ドライブのシリアル番号(HDIO_GET_IDENTITY syscallを介して)、ブロック数(/ proc / componentsから)、およびドライブオフセット(/ sys /blocks/drive_path/partition_name/start)を取得します。これをWindowsと比較します。情報とこれが一致する場合-Linuxデバイス名と一緒にWindowsドライブ文字を保存します。
このスキームにはいくつかの問題があります。
これは醜いです。Windowsでデータを書き込み、それをLinuxで読み取ると、テストが悪夢になります。
Linuxデバイスのメジャー番号は、IDEまたはSCSIデバイスとのみ比較されます。これはおそらく失敗します。つまり、USBまたはFireWireディスクでは失敗します。これらのタイプのディスクを追加することは可能ですが、アプリを可能なデバイスの既知のサブセットのみに制限することは、かなり悪い考えのようです。
HDIO_GET_IDENTITYはIDEおよびSATAドライブでのみ機能するようです。
/ sys / blockハックは、IDEまたはSATAドライブ以外では機能しない場合があります。
このスキーマを改善する方法について何かアイデアはありますか?おそらく、Windowsアプリにすべてのデータを書き込まずにWindows名を決定する別の方法がありますか?
PSアプリの言語はC++です。これは変更できません。
hardware - アドバタイズされたディスク容量と実際のディスク容量
ほとんどの場合、アドバタイズされたディスク容量が、UI によって報告されたディスク容量よりも多いのはなぜですか? たとえば、私は「80 GB」のハード ドライブを持っていますが、iTunes UI には 74 しか表示されません。通常、これはハード ディスクでも見られ、容量はドライブ文字で報告されます。
c++ - Windows で使用可能なすべてのドライブ文字を列挙する
VC++ を使用して、Windows で使用可能なすべてのドライブ文字 (まだ使用されていないもの) を列挙したいと考えています。
これどうやってするの?
windows - ネットワークドライブラベル
ドライブとしてマップされたいくつかのネットワークリソースのラベルを取得しようとしています。DriveInfo.GetDrives()を使用すると、ローカルボリュームには期待どおりにVolumeLabelが入力されたパラメーターがありますが、ネットワークドライブでは空の文字列です。どうすればそれらのラベルを入手できますか?
windows - Windows でリモート リソースへのドライブを作成しますか?
FTP をローカル ドライブ文字にマウントするための優れたソフトウェアはないようです (詳細については、こちらを参照してくださいSF の質問)。そのため、自分で記述しない理由を考えていましたが、Windows を扱った経験はほとんどありません (プログラミング時にレベル) では、このようなことを行うには何が関係するのでしょうか? 「マイ コンピュータ」の下にリストされている新しい「ドライブ」を取得するには、何をする必要がありますか? その「ドライブ」にリストされている FTP (または他のリモート リソース) の内容を取得するには、何をする必要がありますか?
winapi - リムーバブルドライブをロックしていますか?
友人、VB6 で(ソフトウェア ベースの) リムーバブル ディスク/ドライブをロック/ロック解除する方法は? この目的のために特定のwin32ルーチンがあることを知る必要がありますか?
.net - System.IO.DriveInfo.GetDrives() が切断されたネットワーク ドライブでハングする
.NET 3.5 でファイル マネージャーを作成しています。起動時に、アプリケーションは利用可能なドライブを列挙する必要があります。そのために DriveInfo.GetDrives を使用しています。
残念ながら、私のユーザーは、ネットワーク ドライブを切断すると、アプリケーションの起動に約 30 秒かかると嘆いていました。
ネットワーク ドライブが切断されていると、GetDrives() 関数が数秒間ハングすることがわかりました。そしてUIがフリーズします。これは、起動時と、新しいドライブを接続するたびに発生します。
要約すると、切断されたネットワーク ドライブがある場合でも、すぐに復帰する使用可能なドライブを列挙する方法が必要です。助けてくれてありがとう。
追加情報:
WMI でテストを行ったところ、同じ問題が発生しました。WMI クエリは 15 秒ほど後に返されます。
また、DriveInfo への呼び出しを別のスレッドに移動することも検討しました。これにより、ユーザー インターフェイスをブロックしないという問題が解決されます。ただし、ユーザーが新しいドライブを接続すると、ドライブ アイコンは 15 秒後にしか表示されないことを意味します。それは理想的ではありません。
助けてくれてありがとう。
c# - 論理ドライブの取得
次のコードを使用して、論理ドライブを取得します。
しかし、それを反復したい場合、例外が発生し、次のメッセージが表示されます。
準備完了のドライブを入手するにはどうすればよいですか?
c# - c# でシステム内のメディア ファイルを検索する方法は?
システムにあるメディア ファイルを C# で検索したいと考えています。すべてのドライブをスキャンする検索エンジンを作成することを意味します (ここでも小さな質問ですが、C# コードでシステム上のドライブを取得する方法は?)、.mp3、.mp4 などのメディア ファイルを検索します。c#デスクトップアプリケーションでそれを行うにはどうすればよいですか?
delphi - 名前のないドライブのラベルを表示するにはどうすればよいですか?
ドライブの名前またはラベルを取得したい。
私はこの関数を使用します:
たとえば、Windowsエクスプローラーのドライブは次のとおりです。
コードの出力:
CとEのラベルは空です。名前のないドライブ(CおよびE)のラベルを表示するには、どのwinapi / functionを使用する必要がありますか?