2

私の使用例は次のとおりです。準備が整った vhd イメージがあり、それをパス fe D:\vhd\active にマウントする必要があります。現時点での私の解決策は、Powershell Hyper-V と diskpart コマンドの組み合わせですが、これは非常に汚れていてハッキングされているようです。

Mount-VHD -Path D:\vhd-file.vhd -NoDriveLetter 
diskpart> select vdisk file="D:\vhd-file.vhd"
diskpart> sel par 1
diskpart> assign mount="D:\vhd\active

ご覧のとおり、自動割り当てが必要ないため、「NoDriveLetter」を使用しました。適切なボリュームを選択する簡単な方法が見つからなかったので、私がしなければならない「sel par 1」(他のアイデアは、Mount-VHDの前と後に「lis vol」をチェックすることでした...しかし、ええ、私は常に1つのパーティションしか持っていませんだから「セルパー」ftw!)

Microsoft Dev VHD Referenceを見つけ、C# pinvoke コードを介して VHD イメージを「開いて」「添付」することができました。kernel32.dll の CreateFile と CREATE_DISK パラメータを使用した DeviceIoControl を組み合わせて初期化することもできました。しかし、それをフォルダーパスにマウントする方法が見つかりませんでした。kernel32.dll から SetVolumeMountPoint と GetVolumeNameForVolumeMountPoint を試しましたが、VHD または VirtualDiskIdentifier の Guid がこれらの関数の正しいパラメーターではないようです。

私の質問は、スクリプト化されたソリューションと同じ結果をコードで達成するために、誰かが正しい関数/方法を教えてくれるかどうかです。コードとは、C/C++ または C# を意味します ... 単純な C または C++ でこのタスクを実行する方が簡単な場合は、独自の C#-Wrappers を作成できます。

4

1 に答える 1