#defineの定数値を得る方法 or 環境構築

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
Oryaaaaa
記事: 24
登録日時: 2005年6月02日(木) 00:12
お住まい: 愛知県岡崎市
連絡する:

#defineの定数値を得る方法 or 環境構築

#1 投稿記事 by Oryaaaaa »

コード: 全て選択


#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE, 0x0000, METHOD_BUFFERED, FILE_ANY_ACCESS) 
例えば、この場合だと

コード: 全て選択


Public Const IOCTL_DISK_GET_DRIVE_GEOMETRY As Long = &H70000 
このような結果が得られることが知られています。

DDK(DriverDevelopmentKit)に含まれる情報でMS社から情報入手となると
面倒なことになりそうな案内。そこで探してcygwinのw32apiパッケージ
に、ストレージ・USBデバイスを含めた#define情報がありました。
Index of /pub/cygwin/release/w32api
http://ftp.yz.yamagata-u.ac.jp/pub/cygw ... se/w32api/

そして

コード: 全て選択


#define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m))
#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE (0x0000002d)
#define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0,METHOD_BUFFERED, FILE_ANY_ACCESS)
よりIOCTL_DISK_GET_DRIVE_GEOMETRYの定数値を求めようとすると&H2D000000
となり、よく知られた&H70000と不一致になります。この&H70000はいったい
どのようにして得られる定数なのでしょうか? または必要な環境など
教えていただけないでしょうか?
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

Re: #defineの定数値を得る方法 or 環境構築

#2 投稿記事 by イグトランス »

コード: 全て選択

#define IOCTL_DISK_BASE FILE_DEVICE_DISK
#define FILE_DEVICE_DISK 0x00000007
私の手元ではこうなっていますよ。

コード: 全て選択

> #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE (0x0000002d)
Oryaaaaaさんが見ていたのはこっち、
IOCTL_「STORAGE」_BASEですよ。
Oryaaaaa
記事: 24
登録日時: 2005年6月02日(木) 00:12
お住まい: 愛知県岡崎市
連絡する:

#3 投稿記事 by Oryaaaaa »

ああ!謎が解けた。

ありがとう。ヒントと資料は揃った。うまくいくかな・・・
USBメモリをセットしているUSBコントローラー名の取得
返信する