質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

2回答

6400閲覧

iPhone ストレージに Windows からアクセス

menshan

総合スコア54

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

1クリップ

投稿2019/06/25 23:30

iPhone をWindows10 PCに接続するとExplorer上ドライブC:、D:とかの上に「Apple iPhone」という表示が出ます。
これをクリックすると普通のドライブと同じように参照できアドレスバーには「PC\Apple iPhone」と表示されています。

これをコマンドプロンプトから参照しようとした場合どの様に参照すればいいのでしょうか?
「dir "\PC\Apple iPhone"」、「dir "\Apple iPhone"」ではだめでした。

(最終目標としては自作C#プログラムでファイル一覧を表示したいのです)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

まさにこれというサイトがありました。
http://www2.koyahatataku.com/blog/2017/09/26/c%e3%81%aewpdmtp%e6%93%8d%e4%bd%9c/

PortableDeviceManager.GetDevices にバグがあり正しく動かないということです。
この指摘はもう2年ぐらい前のものですが重大そうなバグなのに未だに直ってないのもおかしな話です。

何はともあれここで使われている修正版 DLL で希望の処理ができそうです。

※以下にDLLの修正方法がありましたので追記しておきます。
https://blogs.msdn.microsoft.com/dimeby8/2006/12/05/enumerating-wpd-devices-in-c/

PortableDeviceApiLib.dll をプロジェクトの参照から削除
再度システムオリジナルの PortableDeviceApiLibを参照に追加
obj\Release に Interop.PortableDeviceApiLib.dll ができるので
VSのコマンドプロンプトでこれを修正していきます。

最初の方に以下の様に書かれていますが

1.Disassemble the PortableDeviceApi interop using the command - ildasm Interop.PortableDeviceApiLib.dll /out:pdapi.il 2.Open the IL in Notepad and search for the following string instance void GetDevices([in][out] string& marshal( lpwstr) pPnPDeviceIDs, 3.Replace all instances of the string above with the following string instance void GetDevices([in][out] string[] marshal([]) pPnPDeviceIDs, 4.Save the IL and reassemble the interop using the command - ilasm pdapi.il /dll /output=Interop.PortableDeviceApiLib.dll

「3」の所をこのページの下の方のコメントに書かれている以下の様にします。

instance void GetDevices([in][out] string[] marshal( lpwstr[]) pPnPDeviceIDs,

C#の呼び出し側は同じページに書かれている通りでOKでした。

uint cDevices = 1; devMgr.GetDevices(null, ref cDevices); string[] deviceIDs = new string[cDevices]; devMgr.GetDevices(deviceIDs, ref cDevices);

投稿2019/06/30 06:45

編集2019/07/04 12:48
menshan

総合スコア54

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

cd 絶対パスで、見られると思います
例 cd c:\PC\Apple iPhone

投稿2019/06/26 00:35

編集2019/06/26 00:37
nanami12

総合スコア1015

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

menshan

2019/06/27 23:04

c:\PC\Apple iPhone ではアクセスできませんです。 どうやら特殊な扱いになるらしく「WPD」でググると色々情報が出てきました。 解決したらまた報告します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問