X



WindowsDDK各種についてのスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
NGNG
Microsoft Windows Driver Development Kits
http://www.microsoft.com/ddk/

注意:
いつの間にやらDLできなくなってる。
CDを注文する以外に方法はない。しかも送料が$25。

古いバージョンについて
Microsoft Windows DDK Version Retirements
The Microsoft® Windows® 2000 DDK, the Microsoft Windows 98 DDK, and the Microsoft Windows NT® 4.0 DDK are no longer be available for purchase or download on this site.
0624デフォルトの名無しさん
垢版 |
2009/02/28(土) 21:14:21
ハードウェアidや互換性idをデバイスマネージャで見ると
PCI\VEN_102C&DEV_00E0&REV_04
PCI\VEN_102C&DEV_00E0
PCI\VEN_102C&DEV_00E0&CC_030000
PCI\VEN_102C&CC_030000
というふうに複数あったりしますが、
SetupDiGetDeviceRegistryPropertyで取得するとき
どれが取れるかはどういう風に決まってるんでしょうか?
0629デフォルトの名無しさん
垢版 |
2009/05/04(月) 23:11:02
テレビーチューナーのドライバをx64用に作るのは難しい?

ペンギンなら解析の情報はここにあるんだけど。
ttp://linux.paken.org/index.php?CX23416GYC-STVLP%A4%CE%B2%F2%C0%CF
0630デフォルトの名無しさん
垢版 |
2009/06/12(金) 10:09:22
WDK のサンプル usbview を参考に USB デバイスを列挙するサンプルを書いてます。
WDK は C:\WinDDK\6001.18002 にインストールしています。

ttp://support.microsoft.com/default.aspx?scid=kb;JA;259695
を元に、SetupDiEnumDeviceInterfaces と SetupDiGetDeviceInterfaceDetail
に変更しようとしているのですが、この場合は SetupDiGetClassDevs の
第一パラメータにクラス GUID を指定しないといけないようです。

そこで、enum.c にあるように「(LPGUID)&GUID_CLASS_USB_HOST_CONTROLLER」
を指定してみたのですが、リンクエラーになります。 GREP してたどってみると、
wdf.lib に実体があるようなので、C:\WinDDK\6001.18002\lib\wnet\i386 を
ライブラリディレクトリに追加して
#pragma comment(lib, "wdf.lib")
を書き加えてみましたが、さらにたくさんのリンクエラーが出るようになりました
(wdf.lib の未解決シンボル)。

どのように設定すればリンクできるのでしょうか。
ググっても情報が少ないので参ります…。
0631630
垢版 |
2009/06/12(金) 10:31:10
忘れてました。
コンパイラは Visual C++ 2005 です。
とりあえずコンソールアプリとして作っています。
0633デフォルトの名無しさん
垢版 |
2009/06/12(金) 11:44:47
>>632
どうも。
#pragma comment(lib, "setupapi.lib")
は追加してあって、GUID_CLASS_USB_HOST_CONTROLLER
を使わない SetupDi のサンプルはビルドできています。

エラーに出てくるシンボルを grep して、片っ端から追加してるんですが、
こんな方法しかないんでしょうか…。
0634デフォルトの名無しさん
垢版 |
2009/06/12(金) 12:01:27
なんでGUID_CLASS_USB_HOST_CONTROLLERを追加するとリンクエラーになるわけ?
コンパイルエラーだろ?

ライブラリじゃなくて、インクルードファイル探せよ
0636630
垢版 |
2009/06/12(金) 12:20:24
それがですねえ、追加してあるんですよ。
今プリプロセッサ関係はこんな感じ。

#include "stdafx.h"

#include <stdio.h>
#include <windows.h>
#include <setupapi.h>
#include <devguid.h>
#include <regstr.h>
#include <usbiodef.h>

#pragma comment(lib, "setupapi.lib")

これでビルドすると、

エラー 4 error LNK2001: 外部シンボル "_GUID_DEVINTERFACE_USB_DEVICE" は未解決です。 UsbDevTest.obj

って怒られます。
それで wdf.lib 追加すると芋づる式に。
0638630
垢版 |
2009/06/12(金) 13:37:54
通りました、ありがとうございます!

そういや setupapi.lib って、パス追加してないのに何でリンクできるんだろうと思ったら、
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Lib にもいたんですね。

はあ、やっとスタートラインにたどり着きました…。
しかもデバイス取れてねぇ…。 z_/o
0639デフォルトの名無しさん
垢版 |
2009/06/13(土) 07:11:14
ビルドができないとか言っている奴はなんでVC++でやろうとするかねぇ。
どうせデバッグできないんだからCUIでやればいいのに。
0641630
垢版 |
2009/06/15(月) 14:42:22
結局私の想像以上に面倒なようでしたので、
ttp://www.usefullcode.net/2007/02/usbusb.html
のサイトのサンプルを参考にさせてもらっています。

それで、目的の USB メモリを探してアクセスしたいのですが、
アクセス用の名前をどうやって取得するかで躓いています。
WMI の CIM_LogicalDevice クラスを使えば「\\.\PHYSICALDRIVE?」
の形で取得ができるのですが、Setup Di API と共通する
情報が得られません。私が見つけられないだけだと思うのですが…。
WMI 使わなくてもアクセス用の名前は得られるのでしょうか。
アドバイスいただけると幸いです。

>>639
一応マイクロソフトのサンプルや、上記サイトのコードなどは
ブレークかけて見たりできてますけど、そういう意味ではなくてでしょうか?
0642630
垢版 |
2009/06/15(月) 16:11:55
うーん、WMI から得られる情報で、PNPDeviceID の中にシリアル番号が
含まれてるっぽいですね。とりあえずこれが一致するかみて、実際にデバイスを
開いて中身を確かめるって感じでいけばいいかな…。
0643デフォルトの名無しさん
垢版 |
2009/06/15(月) 21:01:15
SetupDiEnumDeviceInterfaces・SetupDiGetInterfaceDeviceDetailで
PSP_DEVICE_INTERFACE_DETAIL_DATAを取得して
それのDevicePathでファイル開いて
DeviceIoControlでIOCTL_STORAGE_GET_DEVICE_NUMBERでとった番号と
USBの物理ディスクの番号を比較したらいい
0644630
垢版 |
2009/06/16(火) 11:59:08
どうもありがとうございます。でもこれって GUID_DEVINTERFACE_DISK を指定して
列挙したときの DevicePathじゃないと取れないのでは。

USB のシリアル番号が欲しいんで、USBview のように、
GUID_CLASS_USB_HOST_CONTROLLER からたどって列挙したデバイス情報から
USBの物理ディスクの番号を知りたいんです。

何かボケてるでしょうか。
0645デフォルトの名無しさん
垢版 |
2009/06/16(火) 13:09:42
>>644
何したいのかいまいち見えてこないけど
最終的にUSBメモリのシリアル番号を取れればいいわけ?

USBViewと同じ方法でインターフェースデスクリプタ読んで、
それがマスストレージクラスになってるUSBデバイスのシリアル番号を取得じゃダメ?
0646630
垢版 |
2009/06/16(火) 13:36:43
スミマセンわかりにくくて。
USB メモリにプロテクトドングルを兼ねさせるということで、

(1) シリアル番号はあらかじめわかっている
(2) USB デバイスを列挙してシリアル番号を探す
(3) そのシリアル番号のドライブは?←ここが問題

と、大雑把にはこうです。
で、あれこれ試した結果、苦肉の策が >>642 だったんですが、
もっとスマートな方法があればと思って四苦八苦してます。
0648デフォルトの名無しさん
垢版 |
2009/08/13(木) 20:21:51
ドライバ作成の初心者です。
フィルタドライバで、別プロセスが作成(書き込み)したファイルを監視し
そのパスをユーザモード側(自分のプログラム)に通知を行うドライバを作成したいと思います。
(アンチウイルスソフトの常駐監視機能のような機能)

このあたりの勉強を行いたいのですが、参考になる書籍や、サンプルソースなどご存知のかたが
いましたら教えていただけないでしょうか?(書籍を見たところほとんどがUSBドライバなどの本ばかりでした)

現状はWDKのサンプルソース(src\filesys\配下)やネットで調べていますが、なにぶん始めての領域で
どこからスタートすれば良いのかも悩んでいるところです。
WDKのサンプルで一番参考になりそうソースを教えていただければ大変参考になります。
0649デフォルトの名無しさん
垢版 |
2009/08/15(土) 01:14:03
USBデバイスをPCIデバイスに擬似的に変換(又はエミュレート)する方法ってあるのでしょうか?
0650デフォルトの名無しさん
垢版 |
2009/08/15(土) 17:28:58
そういえば、実USBデバイスをエミュレートする疑似USBデバイスソフトあれば
デバッグ楽かもしれん、と思いつつ作りかたが分からずに挫折したなあ昔。
0651デフォルトの名無しさん
垢版 |
2009/08/16(日) 07:34:35
>>648
書籍といったら「Windows NT ファイルシステム詳説」くらいしか知らないけど絶版。
原書ならUSのAmazonで買えるようだが。
原書のサンプルは以下のExamples以下よりダウンロード可能。
ttp://oreilly.com/catalog/9781565922495/

あとはntifsとかでぐぐったらいくつか出てくるんじゃないかな。フリー版IFSとか
ttp://www.acc.umu.se/~bosse/
0653648
垢版 |
2009/08/20(木) 17:33:43
>> 651
返信遅れました。申し訳ありません。

”Windows NT ファイルシステム詳説”の日本語版は、なぜか会社にありました。
本はあれども、知識を持っている人がいないので1から勉強してみたいとおもいます。
また、FileMonの昔のソースを見つけましたので、これのドライバの部分がとても参考になりそうです。

ご教授ありがとうございました。

0654デフォルトの名無しさん
垢版 |
2009/09/01(火) 12:36:33
KMDFでドライバを作成した場合、WdfCoInstaller01009.dllの再配布は可能でしょうか?
0655デフォルトの名無しさん
垢版 |
2009/09/08(火) 00:40:32
WDMで、LPCバスに接続されている機器をI/Oポート経由でアクセスしたいのですが、
ポートのマッピングの方法を教えてください。

HalTranslateBusAddressの引数にLPCバスタイプが存在しないので、どうした良いものなのか。
よろしくお願いします。
0656デフォルトの名無しさん
垢版 |
2009/09/09(水) 19:56:14
LPCはソフトウェア的にはISA互換と考えていいはず。
それはともかくHalTranslateBusAddressを使いたい理由が不明。
0657655
垢版 |
2009/09/14(月) 13:47:28
>>656

亀レスですいません。レスありがとうございます。

色々と混乱していまして....

I/Oポートアドレスの割り当ては、IoAssignResourcesを使えばよろしいのですか?

0659
垢版 |
2009/09/30(水) 00:13:02
>657
I/Oのみ使用するISA Bus(X-Bus)ボードなら
src/general/portio
のサンプルがほぼそのまま使えるよ!

どんなリソースが、どこから、どれだけボードに割り当てられたかは
IRP_MN_START_DEVICEでわかるよ!

ボードがなくてもドライバのインストールができる(試験用ドライバ
では物理リソースにアクセスしないようしておきます)ので、
クラッシュしても中田氏しても大丈夫なPCを用意してWinDbgで
ドライバや制御アプリの動きをみてみるといいよ!

         ハ_ハ  
       ('(゚∀゚∩ できるよ!
        ヽ  〈 
         ヽヽ_)

ここまで書いて「いまさらISAボードの新製はねぇか?」と思ったが、
せっかく書いたのでこのまま投稿させていただきます。
0660デフォルトの名無しさん
垢版 |
2009/09/30(水) 22:54:06
LPC deviceだとISAPNP対応するかACPIのDSDTに記述がないとOSが認識できないし
リソースも割り当てられないからIRP_MN_START_DEVICEは飛んでこないよ。
0661 ◆0uxK91AxII
垢版 |
2009/10/01(木) 00:21:06
*.infの記述とデバイス マネージャの設定で、来た気がする。
0664デフォルトの名無しさん
垢版 |
2009/12/27(日) 09:09:31
なんということだ
0665デフォルトの名無しさん
垢版 |
2010/02/19(金) 07:24:09
DDKの選びかたについて質問があります。

VISTA以前はDDKが主流だったそうです。
しかし現在、WDKがDDKに置き換わっているようです。

私のPCはOSがWindowsXPなのですが、旧来のDDKをなんとかして手に入れてるべきなのか
それともWDKを入れればよいのかどちらでしょうか?

とりあえず、どんなOSも最新のWDKを入れて開発しておけばいいという考え方は間違っていますでしょうか?
回答よろしくお願いいたします。
0667デフォルトの名無しさん
垢版 |
2010/02/19(金) 09:29:15
ここまで無駄に長文だと読んだだけで腹が立つなw
XP以降がターゲットの場合DDKとWDKどっちがいいの?の、たったこれだけの内容に何行使うんだよ
0668デフォルトの名無しさん
垢版 |
2010/02/19(金) 09:47:20
XP以降がターゲットとは言ってないんじゃないか?
最近のlink.exeは/VXDオプションをサポートしないしターゲットによってはDDKが必要
0669デフォルトの名無しさん
垢版 |
2010/02/19(金) 12:45:44
>>668
ということは開発するものによってはDDKを使う必要もあるのでしょうか?
XPのできるだけ深いレベルでのデバイスドライバを開発したいのですが、
一般的に言って、そういった開発でWDKを用いても大丈夫といえそうですか?
0670デフォルトの名無しさん
垢版 |
2010/02/19(金) 13:20:29
95/98/ME:vxd
98/ME/2K/XP/Vista/7:WDM
2K/XP/Vista/7:KMDF
XP/Vista/7:UMDF

DDK:vxd/wdm
WDK:wdm/kmdf/umdf

テキトーだけどこんな感じ
0671デフォルトの名無しさん
垢版 |
2010/02/19(金) 15:50:26
>>668
ググりゃ即答えが出るような事をわざわざ長文で聞くような低レベルな奴が
非NT系OSをサポートする気のわけ無いだろうよw
それにあの分量書いてvdxサポートの事を抜かしたと言うなら、本物の馬鹿だから何教えても無駄と言う帰結
0675 ◆0uxK91AxII
垢版 |
2010/02/20(土) 08:17:21
Windows 2000以前: DDK
Windows XP以降: WDK

って認識でOK。
0677デフォルトの名無しさん
垢版 |
2010/10/18(月) 19:19:03
ホッシュ!
0678デフォルトの名無しさん
垢版 |
2010/10/29(金) 18:58:31
デバイスドライバの勉強したいんですけど、何から始めたらいいですかね?
サンプルコードみてもチンプンカンプンです
0680デフォルトの名無しさん
垢版 |
2011/03/15(火) 16:48:30.18
すみません、質問ですorz

Win32のアプリと32bitドライバがあるのですが、
Win64で動作させてみようとしたところ、32bitドライバをWin64が認識しません。(当たり前か)

将来的には、フル64bitしたいのですが、当面「Win32アプリ+64bitドライバ」の形体でしのぎたいと思っています。

「Win32アプリ+64bitドライバ」は可能なのでしょうか?
可能だとすれば、サンプルとか情報がどこかに落ちてないでしょうか?
0683680
垢版 |
2011/03/16(水) 09:53:22.20
つ [d]

>32bitドライバとアクセスするのと一緒

そうなんですか。意外でした。。。
0685デフォルトの名無しさん
垢版 |
2011/03/16(水) 20:10:14.50
ドライバのソースを改造したいと思っています。
ドライバの中でOutputDebugString@Win32APIはコールできますか?
cygwin/gcc系ソースなのですが、ドライバの中の人の状態が分からないと不安です。。。
0688685
垢版 |
2011/03/17(木) 08:58:54.11
jkを有難うございました。

DbgPrintでググって使い方も見つけますた\(^o^)/
ttp://ruffnex.oc.to/kenji/windriver/
0690デフォルトの名無しさん
垢版 |
2011/04/22(金) 22:49:52.62
USBのデバイスって入力デバイスとか、イメージングデバイスとか規定のクラスに属していないとだめなの?
例えばPCからUSBでデータをデバイスに送信して、モータを制御するとかそういうことをやるにはどんなデバイスクラスにすればよいの?
0694デフォルトの名無しさん
垢版 |
2011/06/08(水) 17:56:16.73
I/O Stack Locations ttp://www.osronline.com/ddkx/kmarch/irps_8lgn.htm
の中の人って、ダンプ出来るんですか?
0696694
垢版 |
2011/06/08(水) 19:05:44.64
つ [d]

なるほど、ドライバだからメモリアクセス無問題ってことですねw

USBデバイスから受けたデータが化けているかどうか調べたいのです。
デバイス送信データのメモリダンプを行いたいのですが、、、
ダンプツールだとかI/Oスタックロケーションのダンプコードとか、
ありますでしょうか?
0697デフォルトの名無しさん
垢版 |
2011/06/09(木) 08:37:29.85
すみませんlibusb-win32使ってて躓いてます。教えて下さいorz

ホストからターゲットへ、
CLEAR_FEATUREっていうのを送信した後、
リトライの嵐っぽいです。

sysのソースを見ても、
LIBUSB_IOCTL_CLEAR_FEATURE
のcaseでclear_feature(...)をコールしてるっぽいし。

LIBUSBの定数っぽいですが、アプリはコールしてないし。。。
OSがコールしてるのでしょうか???
もしそうなら、どういう時に発生するのでしょうか?
0699デフォルトの名無しさん
垢版 |
2011/06/09(木) 11:56:57.70
あっそういうもんですか。

エンドポイントしぼーんで、OSが復活の呪文?
0700694
垢版 |
2011/06/10(金) 14:00:15.35
I/Oスタックロケーションをダンプされたことのあるかた、
やり方(コードw)を教えて下さいorz
0707デフォルトの名無しさん
垢版 |
2011/07/25(月) 18:52:15.81
Windows Driver Model相談室スレで何度か質問でみた KernelStream のビデオ/オーディオドライバ
とかって何を参考に、みなさん組んでますか?
書籍を何冊かみたけど、その辺が参考になるものが見当たらなくて・・・
0708デフォルトの名無しさん
垢版 |
2011/08/11(木) 13:44:33.90
64bitのデバドラ署名って、なんちゃってじゃ無理?
必ず証明書チェインのルートがMicrosoftである必要あり?

DEBUGONで署名なしでも導入できるけど気持ち悪いし。
0710デフォルトの名無しさん
垢版 |
2011/08/17(水) 02:56:59.57
AVStreamのサンプルをベースにいろいろお試し中だが、KsStudioでしょっぱなからDeviceIoControl
が出まくる…
ソースのメソッドのNTSTATUSの値はSTATUS_SUCCESSだから、何か必要なものが抜けてるんだろけど
何をすればいいのかわからんw

Querying for structure size for KSEVENT_TYPE_SETSUPPORT
SyncIoctl: DeviceIoControl failed. Last Error = 0x00000490
SyncGetSupportedEventSets: size query failed
Getting property KSPROPERTY_PIN_CTYPES
0711デフォルトの名無しさん
垢版 |
2011/08/18(木) 13:27:52.97
kbfiltr からKEYBOARD_INPUT_DATA を生成して ServiceCallBack 送信しても
DirectInput なるクライアントは無反応、な理由は何が考えられますか。

・DirectInput 利用時とそれ以外で、通過するスタックが異なる
・仮想キー生成方法がおかしい

たぶん後者のような希ガスだけど原因よくわからんし・・・
DirectInput なクライアントでなければ動くだけに。
0713片山博文MZ
垢版 |
2011/09/14(水) 17:29:42.34
age
0714片山博文MZ
垢版 |
2011/09/14(水) 17:31:19.18
Windows Liveに入会して、Connectに登録して……
Win98/Me/2K用のWDKを手に入れて……めんどいなぁ。
0715デフォルトの名無しさん
垢版 |
2011/10/16(日) 15:39:19.21

0716デフォルトの名無しさん
垢版 |
2011/11/02(水) 21:04:37.52
ドライバ開発はサンプルとかを1行づつ変えて挙動を自分で調べていくしかないな
最後まで調べ上げてようやく、根本的に違うサンプルを見てることに気がつく
それを何度か繰り返すとようやく本当のサンプルにたどり着くけど
今まで調べた部分も意外に役に立つので決して無駄にはならない
実際、1つドライバを完成させることが出来れば他は応用になるから理解は早いだろうが
完成するソースはサンプルより短くて終わる
0717デフォルトの名無しさん
垢版 |
2011/11/25(金) 23:38:50.79
すでにフィルタドライバがインストールされているデバイスに別のフィルタドライバを入れると、
もともとのフィルタドライバが削除されてしまうんだけど、
これはinfファイルの書き方の問題ですか?
0719デフォルトの名無しさん
垢版 |
2011/12/04(日) 14:43:57.98
WDFの日本語文献の無さに絶望
WDF版Toasterのソース読んでもPDOとデバイススタックが理解できん orz
0720719
垢版 |
2011/12/24(土) 20:40:48.97
目的のドライバが取り敢えず動いた
サンプルは重要だと再認識
0721デフォルトの名無しさん
垢版 |
2011/12/27(火) 08:51:32.67
DirectInput系でMJ_READが飛んでこないのは何で?
kbfiltr でモニタリングしてるけど何も発生せず・・・
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況