問題タブ [disk-partitioning]

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.

0 投票する
1 に答える
101602 参照

linux - ディレクトリまたはファイルが存在するマウント/パーティションを見つける方法は? (Linux サーバー)

ディレクトリまたはファイルがどのパーティション/マウントにあるかを簡単に見つけるための Linux コマンドはありますか?

(これはおそらくRTMの質問であり、私はそれを尋ねることに罪悪感を感じていますが、どういうわけか、まだグーグルで良い答えを見つけることができません..)

0 投票する
0 に答える
3416 参照

usb - WMI および WMQ を使用して、サービス タイプ USBSTOR の Win32_PnPEntity から論理ディスクおよびパーティション情報を取得します。

当社独自の USB デバイスが PC に接続されていることを検出しています。これを検出すると、関連するWin32_PnPEntityを取得します。このWin32_PnPEntityを次の情報のソースとして使用します。
- USB 記述子 VID、PID、REV、ファームウェア バージョン。
- ドライブ文字情報を取得するための論理ディスク ドライブ ボリュームおよびパーティション情報。

私が抱えている問題は、WMI と WMQ を使用して、 Win32_PnPEntityから論理ディスクとパーティション情報にアクセスする方法を見つけようとしていることです。Win32_PnPEntityServiceタイプのUSBSTOR (USB Storage だと思いますか?)

以下は、私が現在行っているプロセスの説明です。

USB デバイスが PC に接続または切断されたことを検出するために、イベント ウォッチャーでWin32_USBControllerDeviceをリッスンします。次のクエリを使用して、イベントで発生するものを制限します。

「SELECT * FROM
__InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA
'Win32_USBControllerDevice' AND
TargetInstance.__RELPATH LIKE '%DeviceId=%VID_1111%'」

このイベントが発生すると、" Win32_USBControllerDevice.Dependent " プロパティを取得し、" DeviceId " 値を取得します。次に、この " DeviceId " 値をWin32_PNPEntityクラスで使用して、関連付けられたインスタンスを取得します。

これは私にとって物事がトリッキーになるところです...

Win32_PnPEntityインスタンスが関連するWin32_DiskDriveにアクセスする必要があります。ボリューム情報を取得するためにこのインスタンスが必要なので、各パーティションに割り当てられているドライブ文字を取得できます。しかし、私はそれに到達する方法がわかりません。

Win32_PnPEntityが VID、PID をイベントのリッスンと検索の制約に提供するため、このプロセスを実行します...必要なファームウェア バージョンも提供します。したがって、この時点から、 Win32_PnPEntityのWin32_DiskDriveを取得したいと考えています。

任意の入力をいただければ幸いです。

--- 問題をよりよく説明するための追加情報:

これまでの手順は次のとおりです。
- 「Win32_USBControllerDevice」の「__InstanceModificaitionEvent」をリッスンします -
「__InstanceModificaitionEvent」の「TargetInstnace」から「Win32_PnPEntity」を
取得します - 「Win32_PnPEntity」から「DeviceId」を取得します' PID、VID 情報が含まれています。

私が今抱えている問題は、「Win32_LogicalDisk」および/または「Win32_DiskDrive」および/または「Win32_DiskPartition」または、接続された USB デバイスが「Mass Storge」インスタンスに割り当てられているドライブ文字への他の ASSOCIATOR または REFERENCES リンクを見つけようとすることです。 .

この問題について私が考える最善の方法は、次の「図」で説明されています。

私がやろうとしているのは、USB デバイスの「Win32_PnPEntity」表現から「Win32_DiskDrive」表現に取得する方法を理解することです。

以下は、デバイスが接続されているときに実行する powershell スクリプトです。USB デバイスに属するすべてのインスタンスが表示されます。私はデバイスの 1 つだけを接続しているので、それらが 1 つのデバイスに属していることを知っています。


PS C:\Users\USER.DOMAIN> gwmi Win32_PNPEntity |? { ($_.DeviceId -match 'VEN_MYCOMPANY&') -または ($_.DeviceId -match 'VID_XXXX')}

__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="USB\VID_XXXX&PID_0001\YYYY"
__PROPERTY_COUNT : 24
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : BYDEFAULT
__NAMESPACE : root\cimv2
__PATH : \BYDEFAULT\ root\cimv2:Win32_PnPEntity.DeviceID="USB\VID_XXXX&PID_0001\YYYY"
可用性 :
キャプション : USB マス ストレージ デバイス
ClassGuid : {36fc9e60-c465-11cf-8056-444553540000} CompatibleID : {USB\Class_08&SubClass_06&Prot_50, USB\ Class_08
&SubClass_06, USB\Class_08} ConfigManagerErrorCode
: 0 ConfigManagerUserConfig
: False ErrorCleared : ErrorDescription : HardwareID : {USB\VID_XXXX&PID_0001&REV_0001, USB\VID_XXXX&PID_0001} InstallDate : LastCode : メーカー : 互換性のある USB ストレージ デバイス









名前 : USB 大容量記憶装置
PNPDeviceID : USB\VID_XXXX&PID_0001\YYYY
PowerManagementCapabilities :
PowerManagementSupported :
Service : USBSTOR
Status : OK
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
SystemName : BYDEFAULT

__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="WPDBUSENUMROOT\UMB\2&37C186B&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678#YYYY&0#"
__PROPERTY_COUNT : 24
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement }
__SERVER : BYDEFAULT
__NAMESPACE : root\cimv2
__PATH
: \BYDEFAULT\root\cimv2:
Win32_PnPEntity.DeviceID ="WPDBUSENUMROOT\UMB\2&37C186B&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_MYCOMPANYI&PROD_ZZZZ_-_STORAGE&REV_5678#YYYY&0#"
dabf3de3f69a}
CompatibleID: {wpdbusenum\fs}
ConfigManagerErrorCode: 10 ConfigManagerUserConfig
: False
CreationClassName: Win32_PnPEntity0# エラークリア:



ErrorDescription :
HardwareID :
InstallDate :
LastErrorCode :
Manufacturer : MYCOMPANY
Name : ZZZZ
PNPDeviceID : WPDBUSENUMROOT\UMB\2&37C186B&0&STORAGE#VOLUME#_??_USBSTOR#DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678#YYYY&0#
PowerManagementCapabilities :
PowerManagementSupported :
Service : WUDFRd
Status : Error
StatusInfo :
SystemCreationClassName : Win32_ComputerSystem
システム名 : BYDEFAULT

__GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="STORAGE\VOLUME\_??_USBSTOR#DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678#YYYY&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B}"
__PROPERTY_COUNT : 24
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : BYDEFAULT
__NAMESPACE : root\cimv2
__PATH
: \BYDEFAULT\root\cimv2:Win32_PnPEntity.DeviceID="STORAGE\VOLUME\_??_USBSTOR#DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678#YYYY&0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B} " 71a27cdd-812a-11d0-bec7-08002be2092f} CompatibleID : ConfigManagerErrorCode : 0 ConfigManagerUserConfig : False CreationClassName : Win32_PnPEntity 説明 : 汎用ボリューム DeviceID : STORAGE\VOLUME_??_USBSTOR#DISK&VEN_MYCOMPANY&PROD_ZZ_-_STORAGE&REVYY_5678#0#{53F56307-B6BF-11D0-94F2-00A0C91EFB8B} エラークリア済み:









ErrorDescription:
HardwareID: {STORAGE\Volume} InstallDate
: LastErrorCode
: メーカー
: Microsoft
名前: 汎用ボリューム サービス: volsnap ステータス: OK StatusInfo: SystemCreationClassName: Win32_ComputerSystem SystemName: BYDEFAULT







GENUS : 2
__CLASS : Win32_PnPEntity
__SUPERCLASS : CIM_LogicalDevice
__DYNASTY : CIM_ManagedSystemElement
__RELPATH : Win32_PnPEntity.DeviceID="USBSTOR\DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678\YYYY&0"
__PROPERTY_COUNT : 24
__DERIVATION : {CIM_LogicalDevice, CIM_LogicalElement, CIM_ManagedSystemElement}
__SERVER : BYDEFAULT
__NAMESPACE : root\cimv2
__PATH : \ BYDEFAULT\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678\YYYY&0"
可用性:
キャプション: MYCOMPANY ZZZZ - ストレージ USB デバイス
ClassGuid: {4d36e967-e325-11ce-bfc1-08002be10318} CompatibleID: {USBSTOR\ Disk
, USBSTOR\RAW}
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_PnPEntity -_STORAGE&REV_5678\YYYY&0 ErrorCleared: ErrorDescription: HardwareID: {USBSTOR\DiskMYCOMPANY___ZZZZ_-_Storage5678, USBSTOR\DiskMYCOMPANY___ZZZZ_- Storage, USBSTOR\DiskMYCOMPANY




, USBSTOR\MYCOMPANY___ZZZZ_-_Storage5...}
InstallDate :
LastErrorCode :製造元 : (標準 ディスク
ドライブ)名前 : MYCOMPANY
ZZZZ - ストレージ USB デバイス PNPDeviceID : USBSTOR \DISK& VEN_MYCOMPANY
&PROD_ZZZZ_-_STORAGE&REV_5678\YYYY&0







上記の結果セットは、多くの情報を示しています。

結果 1 - 'SERVICE TYPE' は 'USBSTOR' です。これは、VID と PID が得られるので、'__InstanceModificaitionEvent' をリッスンするときに使用したい Win32_PnPEntity です。
結果 2 - 興味のない複合デバイス表現です。
結果 3 - 「SERVICE TYPE」は「volsnap」です。これはボリューム エンティティであり、私はこれに興味があります。
結果 4 - 'SERVICE TYPE' は 'disk' です。これはディスクエンティティであり、私はこれに興味があります。

「結果 1」と「結果 3」および/または「結果 4」の関係を取得するにはどうすればよいですか?

「Win32_PnPDevice」関連付けクラスを使用してみましたが、必要なポイントに達していないようです。私はこの PowerShell WMI および WMQ 環境に慣れていないため、'Win32_PnPDevice' を正しく使用していない可能性があります。

次のクエリを実行して、関連する「Win32_PnPDevice」エンティティの「SameElement」および「SystemElement」プロパティにあるものを特定しました。

gwmi Win32_PNPDevice |%{[wmi] ($ .SameElement )} | select {$ .Name, $ .Description, $ .DeviceId, $_.Status}
gwmi Win32_PNPDevice |%{[wmi] ($ .SystemElement )} | {$ .Name、$ .Description、$ .DeviceId、$_.Status} を選択します。

結果は次のように読み取ることができます。

Win32_PNPDevice.SameElement - {PHYSICALDRIVE1, ディスク ドライブ, PHYSICALDRIVE1, OK} Win32_PNPDevice.SystemElement - {MYCOMPANY ZZZZ - ストレージ USB デバイス, ディスク ドライブ, USBSTOR_DISK&VEN_MYCOMPANY&PROD_ZZZZ_-_STORAGE&REV_5678_YYYY&0, OK}

Win32_PNPDevice.SameElement - {USB 大容量記憶装置、USB 大容量記憶装置、USB_VID_XXXX&PID_0001_YYYY, OK}
Win32_PNPDevice.SystemElement - {USB 大容量記憶装置、USB 大容量記憶装置、USB_VID_XXXX&PID_0001_YYYY, OK}

「Win32_PnPDevice」クラスを間違って使用している可能性がありますが、「Win32_PnPEntity」を「Win32_DiskDrive」に接続できないようです...

この追加情報が私の問題をよりよく説明してくれることを願っています。

0 投票する
4 に答える
10571 参照

c++ - Windows でパーティションのリストを取得する

ゴール

私はファイルシステムを Windows に移植しており、マウンターの実行可能ファイルに対してより Windows に似たインターフェイスを作成しています。このプロセスの一部は、ユーザーがパーティションを見つけてドライブ文字を選択できるようにすることです。最終的にパーティションを選択するとCreateFile()、 、open()fopen()または同様のものを使用して開くことができます。

リード

Windows は、ボリュームの概念を中心に展開しているように見えますが、これはディスクとはまったく似ていないようで、既にマウントされているファイルシステムに対してのみ発生します。

私が持っていた有望なリードは次のとおりです。

/dev/sda1ただし、これらはすべて、私が求めているパーティション固有のスタイルのハンドルではなく、ボリュームまたはそのオフセットで終わります。

OPがパーティションではなく物理ディスク名の後にあることに気付くまで、私は報奨金を考えました。この回答には、パーティション名をブルート フォースする方法が含まれています。それは避けたいと思います (または、可能なパスの境界を含むドキュメントを参照してください)。

質問

私は…したい:

  • Windows でマウントされていないパーティションの正しい用語とドキュメント。
  • 利用可能なすべてのパーティションを確実に取得するための効果的で文書化された方法。
  • Linux で利用可能なパーティション ファイルの抽象化に最も近いもので、すべての IO は開かれたパーティションのディスクの適切な領域にバインドされます。

Update0

主な目的は未加工のパーティションを開くことですが、解決策としては、最初に各ディスク ドライブのハンドルを取得し、次にそれを使用して各パーティションを取得する必要があるようです。すべてのディスク ドライブ (ボリュームがマウントされていないドライブも含む) を列挙する方法が必要です。

0 投票する
5 に答える
1057 参照

c# - Windowsからext2linuxパーティションへのC#書き込み

私はC#にまったく慣れていないので、Windows7からEXt2Linuxパーティションにファイル(grub)を書き込む必要があります。

そのようなことをする良い方法は何ですか?外部プログラムでパーティションをマウントする必要がありますか?

0 投票する
1 に答える
2023 参照

windows - Windows XP から Windows 7 への起動可能な NTFS/FAT パーティションをプログラムで作成する

Windows で起動可能なパーティションを作成しようとしています。Windows XP から Windows 7 までこれを実行できる必要があります。デバイスが 32 GB より小さい (FAT32) か大きい (NTFS) かに応じて、FAT32 と NTFS の両方で実行できることが理想的です。

Vista および 7 では、diskpart.exe を使用してこれを実行できるスクリプトがありますが、これは Windows XP では機能しません。これは、パーティションの作成が diskpart.exe で公開されていないためです。Windows XP の diskpart に関するもう 1 つの問題は、通常、USB サム ドライブがドライブとして表示されないことです (おそらく「取り外し可能」であるため)。

だから私の主な必要性は、DeviceIoControl またはその他の API を使用して起動可能なパーティションを作成し、この方法を Windows XP から Windows 7 まで機能させることができるかということです。Pre-Vista と Vista+ で絶対に異なるソリューションが必要な場合は、問題ありません。

ありがとうございました。

ベン

0 投票する
3 に答える
1676 参照

java - Java を使用してメモリ スティック、ペン ドライブ、またはディスクをフォーマットすることは可能ですか?

メモリ スティックやディスクなどをフォーマット/消去するためのマルチプラットフォーム ユーティリティを作成したいと考えています。

Javaでこれを行うことは可能ですか? それとも、運用システム プラットフォームごとにネイティブ メソッドを呼び出す必要がありますか?

0 投票する
1 に答える
861 参照

windows - Windows で Linux スタイルの /dev/sdXY でパーティションを開くにはどうすればよいですか?

Linux スタイル の Windows でパーティションを開くにはどうすればよい/dev/sdXYですか? 現在、パーティションのレイアウトを取得するために開いて\\\\.\\PhysicalDrive%d呼び出しDeviceIoControl(IOCTL_DISK_GET_DRIVE_LAYOUT, ...)、ファイルシステムを含む領域のオフセットとサイズを保存しています。私のコードでは、デバイスの IO 操作をパーティションへのオフセットでオフセットしました。

さらに、明らかに同期動作を削除するにはどうすればよいですか? Windows の物理ドライブの raw デバイスでの操作は非常に遅く、可能な場合は OS がキャッシュを行うことをお勧めします。

0 投票する
3 に答える
2941 参照

c++ - Linux c ++:apis vs /procファイル?

さまざまなシステム情報 (パーティションの空き容量、ノートパソコンのバッテリー情報など) を収集して送信するアプリを開発中です。この情報を直接のC ++ APIの形式で取得することにあまり成功していませんが、/ proc(または同様のもの)のファイルを介してすべて利用できます。

C++ アプリでこれらのファイルを読み取り/解析することが、この情報を取得する適切な方法なのか、それとも API を発見しようとし続ける必要があるのか​​ 疑問に思っていますか? (注: 私は statvfs を使用しています)。

これまでのところ、この種の情報は Win32 の方が簡単に収集できるようです。奇妙に思えます。

0 投票する
3 に答える
4980 参照

delphi - PhysicalDrive から始まるパーティションのマッピング

Windows のすべてのドライブ (まだマップされていないドライブ) からすべてのパーティションをマップしたいと考えています。つまり、それぞれにドライブ文字を割り当てたいということです。FindFirstVolume、FindNextVolume、FindVolumeClose でできることは知っていますが、使用できない状況があります。同じことをQueryDosDeviceで試しました。

アイデアは、\.\PhysicalDrive[n] から開始し、パーティションを見つけてマップすることです。それができるプログラムを見たので、それが実行可能であることを知っています。しかし、隠しパーティションもマップするので、私はそれが好きではありません。

誰か方法を知っていますか...?ありがとうございました。

0 投票する
1 に答える
149 参照

windows-xp - Windows XPでアクセスできるパーティションタイプ(00..FE)はどれですか?

PhysicalDriveから始まるパーティションのマッピングでは、特定のタイプ[0、1、6、7、11、12、114]のパーティションをマウントするコードを使用します。アクセスできるすべてのパーティションの範囲を拡張したいと思います。私はこれを見つけました:http : //www.win.tue.nl/~aeb/partitions/partition_types-1.html誰かが別のプログラムの助けを借りずにWindows XPでアクセスできるものを教えてもらえますか?

ありがとうございました。