tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^4: VolumeDeviceClassで「〜バッファが無効です」エラー
投稿日: 2015/05/15(Fri) 21:06
投稿者Kobaちゃん
> それゆえ、ライブラリ固有の問題となると回答できる内容を持ち合わせていません。
エラーの原因らしきものが判りました。

問題のPCはWin7ですが、64bit版でした。UsbEject.exe単独で実行してもWindowsエラー
がでて停止しました。UsbEject.exeは対応していないのかもしれません。
単体でも動作しないのでWin7(64bit)での動作はあきらめます。
この質問は一旦ここで解決とさせて頂きます。

ただ、別件ですがこの自作ソフト(USBをドライブ指定して外す)には問題がもう一つあり
ました。

32bit版のWin7では「〜バッファが無効です」エラーが出ないもののUSBを外せません。
UsbEject.exeが何かエラーを出しているのかもしれません。コードを調べてみます。
VB2008Express開発環境が入っているWin7(32bit版)では正常に動作しました。

3年前に作ったときは動作していたはずですが。。。

今、手元に問題のPCがないので来週明けに確認します。
このエラーが自己解決できなければ別のタイトルで質問させて頂きます。


> Nothing / vbNullString / vbNullChar / "" などでしょう。
> (それぞれの違いは分かりますか?)
ネットで調べてみます。


> > Imports System.Management
> 今回、System.Management 名前空間のクラスも利用されているのでしょうか。
> WMI を使う場合、呼び出す機能によっては、追加のアクセス権が
> 必要になることもあります。(サービスが起動している必要もある)
USBのPID、VID、SNを調べるために使っています。


> アプリケーションを「管理者権限で実行」してみて、動作が変わるかどうかも確認してみて下さい。
状況は変わりませんでした。

> Nam は…なんでしょう、Name?
はい、Drive Nameの省略です

> DrvNam を更新するのが目的なら、ByRef 引数を使うのではなく、
>  DrvNam = GetDrvNam(VenNam, SN)
> という実装の方が、コードの意図がわかりやすいかと思います。
SetDrvNamは自作ですが、エラー解析でコードを見返した際に少し違和感が
ありました。ご指摘の通りに改修すべきですね。


> 先の投稿と合わせると、発生箇所とおぼしきは:
>  (1) 「New VolumeDeviceClass()」によるインスタンス生成
この行でブレイクしてvolumeDeviceClass.Devicesをみると
エラーが入っていました。Win7(64bit)にUsbEject.Libraryが
対応していないのではと推測します。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。