ストアアプリからPaSoLiにアクセスできない2017年02月02日 10:38

電子マネービューワーのウィジェットがサービス停止になり、nanacoやWaonの残高確認が面倒になって久しい。アプリを作れないものか、少し調べてみる。

PaSoLi用のAQS

UPnPのアプリと同様、デバイス検索用のAQSを用意して、Watcherで検出を試みる。InterfaceClassGuidには、GUID_DEVINTERFACE_USBを指定。

GetDeviceSelectorの生成するAQS

もともとは、GetDeviceSelectorでベンダIDと製品IDを指定してAQSを生成したが、生成されたAQSでは、デバイスの検出ができない。生成されたAQSを見てみると、Guidが異なる。
※古いデバイス情報を元に生成されたかも

また、UsbVendorIdやUsbProductIdを指定するのもいけない。検出対象を絞り込むために指定したいところだが、指定するとデバイスの検出ができなくなる。ここでは指定できない条件のよう。

CreateWatcher

CreateWatcherの呼び出し部。AQS構文に合致するデバイスを検出すると、RegisterDeviceInfoを呼び出す。

USBデバイスの取得

検出したデバイスについて、FromIdAsyncでUsbDeviceを取り出す部分。

USB用のmanifestの追記

Manifestにデバイスの使用宣言を追加。VSでは編集できないので、notepadで。Class IDはレジストリエディタで確認。

FromIdAsyncの例外

上の赤枠のDeviceInformationのIdを用いて、FromIdAsyncを呼び出すのだが、例外発生。例外コードは、0x80070057。引数の値が範囲外とのこと。

MSDNの文書を探してみると、ストアアプリで使用できるのは、Microsoftの提供するWinusb.sysドライバ管理下のもののみ(「USBデバイスのサポート」の節)。その他のベンダ、この場合、Sonyが提供するドライバでは不可、それが範囲外の意味。

それではと、ドライバの更新で、Winusb.sysに切替を試みるが、Felicaの純正のドライバしか候補に挙がって来ず、断念。実際問題、アプリの利用者にドライバ切り替えて、というのも無理な話。

他社の製品はと、サンワサプライの製品のドライバをダウンロードして、定義ファイルを見てみるが、これも無理な様子。USB接続のFelicaデバイスでは、製品によらず無理そう。

可能性があるのは、Bluetooth接続のPaSoLi。iOS用のアプリしか用意されていないが、接続アプリを書けるかもしれない。価格を考えると、パスケースのnocolyでも買った方が賢明だけど。

NFCポートソフトウェア導入時の例外

なお、NFCポートソフトウェアを導入すると、そちらがUSBデバイスを専用するようで、発生する例外が変わる。ドライバと一緒に導入するケースが多いだろうから、この点でもストアアプリの実現は難しい。

P.S.
SmartCardReaderデバイスとして認識できないか試してみたが、現行のFelicaドライバでは不可。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※なお、送られたコメントはブログの管理者が確認するまで公開されません。

名前:
メールアドレス:
URL:
コメント:

トラックバック

このエントリのトラックバックURL: http://c5d5e5.asablo.jp/blog/2017/02/02/8347973/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。