トップページ⇒tech
998コメント379KB

【WDM】Windows Driver Model相談室【デバドラ】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ようこそ、Blue Screenへ(・∀・)
0528デフォルトの名無しさん2007/11/17(土) 12:27:08
>>525
あなたには、ドライバ開発は5年早い。
0529デフォルトの名無しさん2007/11/17(土) 13:13:40
>>527
根本的に勘違いしていました。ありがとうございました。
0530デフォルトの名無しさん2007/11/17(土) 23:40:07
>525

まずは自分で貼ったURLのサイトを100回読むことだ。
0531チラシ2007/12/27(木) 13:46:15
usbd.sys 6.0.6000.16553って動き怪しくないか?
_URB_CONTROL_VENDOR_OR_CLASS_REQUESTを
IOCTL_INTERNAL_USB_SUBMIT_URBでIoCallDriverすると
成功と失敗を交互に繰り返すんだが・・・
失敗時、バスにはパケット流れないのにURBヘッダの
ステータスはUSBD_STATUS_DEV_NOT_RESPONDING・・・orz
0532デフォルトの名無しさん2007/12/30(日) 01:39:29
ISRの処理の中から、IoRequestDpcでDPC呼んでるんですけど、
それから500msくらい後から、DPCの処理がされています。
漠然とした質問ですが、原因をご教授ねがえないでしょうか?

0533デフォルトの名無しさん2007/12/31(月) 00:13:19
>>532
他のデバイスの割り込み処理が入ってるんじゃね?
もしくは自分のデバイスがさらに割り込んでるとか。
0534デフォルトの名無しさん2008/01/06(日) 13:19:56
れこーどうえーぶ
http://recwav.dip.jp/

音声でメッセージを伝えよう
http://recwav.dip.jp/M_RECWAV_Media.asp?Speech=1221925210420080106131222
0535デフォルトの名無しさん2008/01/06(日) 22:46:36
PCI用のドライバ開発でデータ転送で困ってます。
1 Winアプリ側でReadFile
2 いろいろ処理され、PCI基板のメモリにデータセット(基板側で処理されます)
3 基板が割り込み発生
4 DPCの中で、RtlCopyMemoryでPCI基板のメモリからReadFileのバッファにコピー

データは、200KB〜300KBですが、
4のRtlCopyMemoryに100msくらいかかります。
何かの設定で、バスの速度を早くするとかあるのでしょうか?
それとも、DMA処理とか使って、データのコピー方法を検討する必要があるのでしょうか?
ちなみにその場合、基板内にDMAコントローラがなくても可能なものでしょうか?

詳しいかたお願いします。
0536デフォルトの名無しさん2008/01/06(日) 23:11:44
>>535
507か?
I/Oで3MB/sだから、ありえる数値じゃないの。
性能が欲しいならバスマスタでしょ。
もちろんデバイスが対応していないと無理だけど。
0537デフォルトの名無しさん2008/01/06(日) 23:32:37
早速の回答ありがとうございます。
(ちなみに507です。就職決まったので悪あがき再開してます。)
I/Oで3MB/sというのは、PCIの仕様なのでしょうか。
参考になるURLとかご存知ですか?
バスマスタDMA可能にするには、どういった機能が基板に必要なのでしょうか。
システムDMAというのがあるらしいですが、これはPC既存のもの??
でも遅いようですね。




0538デフォルトの名無しさん2008/01/07(月) 01:41:39
>>537
そこそこ行儀が良いと仮定してもread cycleで4byte毎にバストランザクション発生させてんだろ。
1回のトランザクションに何サイクル必要か仕様見て実際に計算すれば予想できるじゃないか。

できるところまで突っ走るのも良いけど、ちゃんと基礎も勉強しないと役に立たない知識になるぞ。
0539デフォルトの名無しさん2008/01/07(月) 22:46:41
デバイスのローカル側が遅いだけじゃないの?
非バスマスタならFIFO乗っけるなりして
性能あげるしかないと思うけど・・・
0540デフォルトの名無しさん2008/01/10(木) 21:10:23
”気軽に「こんなソフトありませんか?」 ”スレから移動してきました。

Windows 2000/XP/Vista(32bit)でドライバをロード/アンロードできるCUIのツールがあれば教えてください
>hogehoge.exe c:\fugagufa\foo.sys

スレ違いなのは承知していますが、プログラマ以外では使わないツールだろうと考えていますので、
こちらで質問させていただきました。よろしくお願いします
0541デフォルトの名無しさん2008/01/10(木) 21:47:40
CodeProjectで見たような気がするが
ツールとしては見たこと無い
というか、自分も欲しいw
0542デフォルトの名無しさん2008/01/10(木) 21:53:26
ttp://ruffnex.oc.to/kenji/windriver/packet/DrvHookIpTest.cpp
0543デフォルトの名無しさん2008/01/10(木) 21:56:45
>>540
WDK(ドライバ開発キット)に入っているサンプルのdevconツールなんてどうでしょう。
devconは、CUIアプリケーションで指定デバイスを有効/無効できます。
ドライバの有効/無効でロード/アンロードと同じ動作が出来るのではないかと思います。
他にもインストール/アンインストール等もできます。

WDKの入手方法
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
0544デフォルトの名無しさん2008/01/10(木) 22:23:09
>>542-543
ありがとう。
devconはデバイスの管理のようですね。
私の場合は542さんが示していただいているように純粋なアンロード・ロード機能があるもので、
もうすこし汎用的なツールがどこかしらにあるだろうと期待して質問してみました

ちょっとなさそうであれば、チープな実装で片手間に書きます(絶対あると思ってたので。。。
0545デフォルトの名無しさん2008/01/12(土) 18:33:37
>>540
CUIってところが問題なのか。
自分でちゃっちゃと書くか、driverloaderあたりをwshで叩くかかな?
05465402008/01/13(日) 17:31:06
ttp://www.hsjp.net/upload/src/up9293.zip
とりあえずかいたのでよければどうぞー 
0547デフォルトの名無しさん2008/01/13(日) 19:39:01
>546
乙andありがとう
0548デフォルトの名無しさん2008/01/19(土) 01:46:52
logicoolのWebカメラ l2台をUSBで接続したいのですが、
VFW-WDMラッパーの問題で片方ずつしか使用できません。
VFW経由では2台同時使用は出来ないのでしょうか?
例えば、USBポート拡張PCカードを使うなど、何らかの方法でVFW経由の使用が可能でしょうか?
0549デフォルトの名無しさん2008/01/21(月) 10:00:04
>>548
自分でドライバを書く気が無いならスレ違い

もし書く気があるなら、そのラッパーの問題とやらをkwsk
0550デフォルトの名無しさん2008/01/25(金) 22:57:17
デバイスと関係のないカーネル空間一般の質問になります。

ユーザモードだとVirtualAllocで確保した空間に実行コードを書き込み、
VirtualProtectで実行可能属性を与えることで実行することができます。
これをカーネル空間で行いたいと考え、
ExAllocatePoolで確保した空間に同じようにコードを書き込みますが、特に保護属性を変更せずに実行できるように見えます。
(プログラム自体はバグっているので自信が無いのですが)これは私のCPUだから、ということではなく、
カーネル空間には保護属性はないと考えて間違ってませんでしょうか?
0551デフォルトの名無しさん2008/01/26(土) 00:36:26
> カーネル空間には保護属性はないと考えて間違ってませんでしょうか?
間違っているよ。poolは実行可能領域になるだけでスタック領域は実行不可能になっている。
!pteで簡単に見れるんだからちゃんと調べようよ。
0552デフォルトの名無しさん2008/01/26(土) 01:00:31
ありがとう。!pte知りませんでしたorz  とても勉強になります。
やっぱりgoogleとtry&errorなデバッグだけじゃ十分な知識が揃いにくいですね
05535482008/01/26(土) 09:57:41
PCカードではないが、PCIボードでUSBポートを増設して自己解決。
レスくれた人どうも。
0554ぱーぷりん2008/02/01(金) 10:01:51
WDFDRIVERやWDFDEVICE等の定義ヘッダーは何処のなんと言うファイル名か、
ご存知の方教えてください。DDK内を検索しても見つかりませんでした。
0555デフォルトの名無しさん2008/02/01(金) 10:48:21
wdf\kmdf\10\wdftypes.h
0556デフォルトの名無しさん2008/02/02(土) 16:34:22
デバイスドライバは作った事が無くて、
今wav等のHDD上のオーディオファイルをオーディオ入力に渡すというアプリを作るために
仮想オーディオ入力ドライバを作りたいんだけど、
ドライバの情報がWEB上探してもあまり見つからなくて難航してます。
参考になりそうなサイトとか知ってたら教えて下さい。

ちなみに、これを実現するにはオーディオファイルを開くアプリと、
アプリからの入力を受け付ける仮想オーディオ入力ドライバがあれば良くて、
同時にマイク等からのオーディオ入力も行うにはフィルタドライバにすれば良いと思ってるんだけど合ってます?
05575562008/02/02(土) 16:55:37
あれ勘違い?フィルタドライバ(=中間ドライバ?)だとアプリからの要求を直接受けられないから
上位ドライバとして作って、他の上位ドライバへ転送するような処理をさせればいいのかな?
05585562008/02/02(土) 18:27:02
ループバックデバイス使えば良さそう

過疎杉
0559デフォルトの名無しさん2008/02/02(土) 18:48:07
既にフリーのものがあるのにご苦労なことです
0560デフォルトの名無しさん2008/02/02(土) 18:57:37
あるなら教えて下さい
05615562008/02/02(土) 19:05:40
2chにただ>>559とだけ書かれるとあるなら探さないといけないし
実は嘘で無いかもしれないから困る
0562デフォルトの名無しさん2008/02/02(土) 20:18:06
信じずに探さなければいいじゃない
0563デフォルトの名無しさん2008/02/03(日) 03:24:29
何がしたいかが問題だな
このスレで質問する人の大半が
目的とやりたいことがあってない
0564デフォルトの名無しさん2008/02/08(金) 15:37:36
スレ違いかも知れませんが、もし分かる方がいらっしゃいましたら教えてください。

BIOSの設定を、Windowsから変更することできませんか?
WDM(デバイスドライバ)経由でできたりしないのでしょうか?

BIOSの時計は、Windowsから同期(変更)しているみたいだから、
できそうな気がするのですが・・・

0565デフォルトの名無しさん2008/02/08(金) 20:18:50
BIOSはメーカーによってまったく違う物だけど、そこはどうする気だ?
0566デフォルトの名無しさん2008/02/08(金) 22:29:51
結論から言うと無理
0567デフォルトの名無しさん2008/02/09(土) 00:05:09
デバイス依存で直接IOポート叩く覚悟ならば全くできないことはないんぢゃないかと思いますけれども
0568デフォルトの名無しさん2008/02/10(日) 15:54:56
できますよ
0569 ◆0uxK91AxII 2008/02/10(日) 16:54:50
>>564
設定方法次第。
I/O経由なら可能だろうけど、
保存場所がメモリアドレスに出てきていたら、不可能な場合もある。
0570デフォルトの名無しさん2008/02/10(日) 20:11:16
今でもBIOSの設定情報がCMOS RAMに存在すると仮定した話。

CMOSのI/O portのlockはHALが持っているから勝手にアクセスすると
トラブルの原因になる。
DDKではobsoleteと書かれているがHalGetBusDataの引数に
BUS_DATA_TYPEでCmosがあるからそれを使えばアクセス可能だと
思われる。
0571デフォルトの名無しさん2008/02/10(日) 21:34:09
デバイスドライバ関係の良い書籍とかサイトがあったら教えて下さい。
目標は各種ループバックデバイスが作れるレベルです。
0572デフォルトの名無しさん2008/02/10(日) 21:59:43
>>571
お前に言いたい事は、

目的によって実装が全然異なるのに「各種」なんてあるわけない。
その程度の事がわかるぐらいになってからドライバを書け。

そもそもDRM対策で個人ドライバ開発者が厳しい状況に置かれている
事を理解しろ。
0573デフォルトの名無しさん2008/02/11(月) 00:42:06
>>571
DDK落としてtoasterで心行くまで遊べばいいと思う。

実際より書籍が好きなら忘れてくれ。
0574デフォルトの名無しさん2008/02/17(日) 21:47:25
質問です。
複数の異なるアドレスからデータを非同期に読みたいのです。
例えば4つのスレッドからドライバにアクセス(ReadFie、IO_CTRL_・・・等)する場合に、
複写元にデータが入ったタイミングで割り込みきて、
DPCで複写先(スレッド毎に異なる場所)にコピーするとき、
ISR、DPCでどのスレッドからのReadFileがきたのかを
判断する基準てあるのでしょうか?
ISRには独自データを追加する場所もないようです。
ISR、DPCを複数用意する手段があるのでしょうか?











0575デフォルトの名無しさん2008/02/18(月) 08:23:37
>>574
リクエスト元のスレッドなんて意識するような作りをしちゃいかんだろ。
何の為のIRPだ。
0576 ◆0uxK91AxII 2008/02/18(月) 10:19:11
>>574
readに対する応答処理として、それは誤っている。
故に、死ね。
0577デフォルトの名無しさん2008/02/18(月) 12:38:07
>574
複数のアドレスとring3のスレッドが一対一対応しているなら
アドレスの数だけ新しいデバイスオブジェクトを作っちまったら
どうだ?

どうしてもダメなら
・プロセスID、スレッドID等の情報をドライバに登録する
 DeviceControlをつくり、読み書きの前にスレッド情報を
 登録しておく。
・ReadFileはやめて
 DeviceIoContro(
     ハンドル,
     スレッド識別読み取りコード,
     上記情報バッファのアドレス,
     上記情報バイト数,
     読み取りデータ格納バッファアドレス,
     読み取るバイト数,
     ...
     );
・WriteFileはやめて
 DeviceIoContro(
     ハンドル,
     スレッド識別書き込みコード,
     上記情報に書き込みデータを付加したバッファのアドレス,
     上記情報 + 書き込むバイト数,
     NULL,
     0UL,
     ...
     );
実装としては果てしなくダサいな・・・
0578デフォルトの名無しさん2008/02/18(月) 17:23:47
574は本質的な間違いを犯している。よって終了。
0579デフォルトの名無しさん2008/02/19(火) 21:27:42
>>574
WDMで書くのをやめる。
0580デフォルトの名無しさん2008/02/20(水) 12:33:39
>>574
まずドライバに持たせたバッファにコピーするだろw
0581デフォルトの名無しさん2008/02/22(金) 01:51:29
WindowsXP環境でUSBAudioドライバを作成しています。
解決できない問題があり質問させていただきます。

ドライバはKS(KernelStream)のMiniDriverとしてつくっており、
Filter1つに、Pinが WaveとMidi用のCapture/RenderPinの計4本の構成です。
あと、各ピン用のBridge Pinを用意しています。

PinのCreateまでは成功しているのですが、
その後、Pinステートの変更、PCMストリームデータのRead/Writeをしようとすると
KSから MiniDriverの
・PinSetDeviceState ルーチン
・PinProcess ルーチン
がコールされなく、原因を探しています。

原因の手掛かりになりそうなことでもいいので
わかる方がいましたら教えていただけないでしょうか?
( KSPropertyでサポートしないといけないものがある、
KSディスクリプタの設定内容に怪しい箇所がある、 など)

ドライバの動作確認には、WDKの付属ツール
KSStudioを使っています。 WDKは Ver6001です。

ちなみに、
 PinCreate ルーチン
 PinClose ルーチン
 PinSetDataFormat ルーチン
 IntersectHandler ルーチン
はKSから問題なくコールされています。
各ルーチンは、KSPINディスクリプタに登録しています。
宜しくお願いします。
0582デフォルトの名無しさん2008/02/25(月) 00:14:32
>>581
自己レスです。Pinのルーチンが呼ばれない件、解決しました。
Pinの接続設定とPinディスクリプタの設定値に不備があったのが原因でした。
失礼しました。
0583デフォルトの名無しさん2008/03/03(月) 16:23:26
USBデバイスのファンクションドライバの上層に挿入する、ごく普通のフィルタドライバ
を作ろうとしていますが、インストールで詰まっています。
参考書:滝口著「フィルタドライバプログラミング」では、最も一般的な方法として
DDKのサンプルにある「addfilter.exe」をビルドして使えといっており、たしかに配賦
のためインストーラーが必要になりコマンドラインベースの方法が良いので納得です。
しかし説明に乏しく引数の指定方法がよくわかりません。
usage:
addfilter [/listdevices] [/device device_name] [/add filter] [/remove filter] [/lower]

とありますが、 [/device device_name] というときdevice_nameはどんな指定のしかたをするのでしょうか?
XXXX.sysといったことなのか、それとも何かレジストリキーのようなものなのか。
[/add filter]も同様で何を指定するのか判然としません。

どなたかご存知のかた、教えていただけませんか?
宜しくお願いします。

0584デフォルトの名無しさん2008/03/03(月) 17:42:21
>>583
正直あの本の方法は特殊だと思う。
一般的に特定のデバイスで動作させるには、
そのドライバにインストールできるようなInfファイルを書けば良くて
サンプルはDDKについてるから、それとヘルプ参照しながらで
簡単に作れたと思う。

0585デフォルトの名無しさん2008/03/06(木) 12:34:34
>583
ざっとソースを眺めたところ、
device_nameは/listdevicesの出力結果、
filterはHKLM\SYSTEM\CurrentControlSet\Servicesにぶら下がってるキー名
に見えた。
0586デフォルトの名無しさん2008/03/14(金) 03:44:23
ドライバ作ってみたいんだけど環境は何が必要?
Visual Studio 2005 なら正式版あるけどテンプレにドライバなかった
0587デフォルトの名無しさん2008/03/14(金) 05:52:54
DDK
Visual Studioに統合もできたはず
0588デフォルトの名無しさん2008/03/14(金) 11:39:05
DDKWizard
0589デフォルトの名無しさん2008/03/14(金) 17:24:31
Vistaリリースに伴いDriver Development Kit (DDK) はWindows Driver Kit (WDK)になったッ
本家WHDCサイトも見ておけッ
http://www.microsoft.com/japan/whdc/DevTools/default.mspx
0590デフォルトの名無しさん2008/03/14(金) 21:03:48
>>587-588
ありがとう。探してみるわ

>>589
サー!イエスサー!!
0591デフォルトの名無しさん2008/03/20(木) 16:36:37
UMDFは一般のDLLで開発できるということで手を出してみたのですが、
wudfddi.hをインクルードすると
構文エラー : 識別子 '_in'
というエラーが出てしまいます。
確か、VS2002や2003で最近のSDKやWDKをコンパイルとすると
この手のエラーが出たような記憶があるのですが、
何とか突破する方法はないでしょうか。
WDKとダウンロードインクルードパスの追加は完了しています。
0592デフォルトの名無しさん2008/03/23(日) 21:49:58
>>591
止む無くVC2008をインストールして解決することにしました。
0593デフォルトの名無しさん2008/05/09(金) 21:00:21
>>591
それは最近のVC++の/analyzeオプション用の注釈だと思う。
単純に/D__inとかで空に置換してコンパイルできない?
0594デフォルトの名無しさん2008/05/11(日) 10:33:31
ちがうと思う。

VCに最初から入っているPlatformSDKに相当するものとの相性があって
最新のもの同士なら大抵うまくいくが、片方のバージョンが違うと
インクルードがうまくいかないことが多い。
WDKは最近出たものだから余計そうじゃないかと。

逆にPlatformSDK入れてパス通せばうまくいくんじゃないかと。
すでに動いているだろうから余計なことする必要は無いけどね。
0595デフォルトの名無しさん2008/05/26(月) 21:52:05
ドライバから、レジストリって読みに行けますか?
windows.hがインクルード出来なくて、RegOpenKeyEx()が使えないです。
なにかヒントください。
VC6+XPSP1DDKです。
0596デフォルトの名無しさん2008/05/26(月) 22:32:31
RtlQueryRegistryValuesかな?
Windows起動中にロードするドライバだとレジストリの場所によっては読めないところもあるので、
注意してくださいね。
0597デフォルトの名無しさん2008/05/26(月) 22:33:02
Zw系の関数にある

Windows.hはユーザーモードアプリケーション用であって
ドライバのカーネルモードはntddk.hとかになる。
サンプルをインストールしてよく見てみるべし。
0598デフォルトの名無しさん2008/05/26(月) 22:36:20
あ、Rtlか スマソ
0599デフォルトの名無しさん2008/05/28(水) 22:58:32
RAMディスクみたいな仮想ディスクのドライバを作成した場合、
ハードウェアが存在しないのでバスドライバがハードウェアの追加を「検出」することも
ないと思うのですが、実際にはAddDeviceがちゃんと呼び出されるみたいです。
なぜ呼び出されるのでしょうか? MSのサンプルRAMディスクのソースを見ても
特別なことをしているようには見えません。
0600デフォルトの名無しさん2008/05/29(木) 20:27:50
>>596-598
RtlQueryRegistryValuesで読めました。
引数悩んだけど、なんとかなりました。
thx
0601デフォルトの名無しさん2008/05/30(金) 22:14:07
>599
.inf(inx)
0602デフォルトの名無しさん2008/05/31(土) 09:38:22
まず、カーネルモードドライバといっても実際にはサービスのようなものがある
デバイスマネージャで非表示デバイスの表示をやると出てくるやつがそれだ。

そこに登録されているものは、すべてのデバイスの列挙が終わってから
DriverEntryが呼ばれる。

DriverEntryでの処理が適切であれば、AddDeviceがすぐに呼ばれるはず
AddDevice内で正式に処理を行う。

で、普通のドライバかカーネルモードサービス(という表現を他のところで見たが
これの正式な言い方は知らない)をどこで区別してるかというと
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
が本体のエントリポイント。

だから手順を知っていればInfすらいらないはず
まあ、Inf使ったほうが確実だとは思うけどね。
0603デフォルトの名無しさん2008/06/02(月) 10:54:45
>>601-602
トンクス。(599じゃないけど

自分で追ってみたんだけど、Servicesセクションの、AddServicesディレクティブで指定したセクション内で、
 StartType = 3 ; SERVICE_DEMAND_START, bulkusbの場合…PnPで検出する場合はこちら
と指定するか、
 StartType = 0 ; SERVICE_BOOT_START, ramdiskの場合…OS起動時に必要なデバイスはこちら
の違いだと、思ってるんですが、、あってます?

あとお聴きしたいんですが、
ramdisk(StartType=0?)の場合、AddDeviceに渡されるPDOって何なんでしょうか?
他のデバイスの場合は、バスドライバが作成した何かだと思うんですが…

06046032008/06/03(火) 00:13:00
StartTypeはなんか違いますね。
modelsセクションのhw-id, ramdiskサンプルでいうと以下のRamdiskのところ(普通のバスならベンダIDやプロダクトIDが入る)に、
テキトーなIDを書いておけば、デバイスの有無に関わらず、AddDeviceが呼ばれるようになるのかな?

[Manufacturer]
%MSFT% = DiskDevice,NTx86

; For Win2K
[DiskDevice]
%DiskDevDesc% = DiskInstall, Ramdisk

; For XP and later
[DiskDevice.NTx86]
%DiskDevDesc% = DiskInstall, Ramdisk

このhw-idは、PnPデバイスならデバイスが接続されたときのinfファイルの探索に用いられるのか。
06056032008/06/03(火) 01:14:27
「ハードウェアの追加と削除」でRamdisk (WDF版)をインストールしたところ、
Walter本(15章)でいうHardware (instance) keyが、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\UNKNOWN\0000 として
登録された。
(USBだと HKLM\SYSTEM\CurrentControlSet\Enum\USB 以下にHardware keyが来る。デバイス1つごとに。)

察するに、Ramdiskのような非PnPデバイスは、OSの起動時なりにこのEnum\Root以下のキーがすべて対応するドライバにPDOとしてAddDeviceされるんかな?
ご意見かポインタきぼんぬ。

06066032008/06/03(火) 01:34:37
walter本の2章に書いてあるわ…<root bus。
ちゃんと読まなきゃダメだな。スレ汚しスマソ
0607デフォルトの名無しさん2008/06/05(木) 17:31:44
WinDBGの使い方について教えてください。

プリンタドライバ開発を始めようというところで、ソースコードデバッグがしたいのですが、
ブレークポイントの設定ができずに悩んでます。

1.サンプルをServer 2003 Checked x86 でビルドし、インストール・実行はできた。
2.そこでできた.pdbと.dllとソース類をまとめて解析用マシンにコピーし、Symbol Path、SrcPath, Image Pathに追加。
3.src*c:\test*http://msdl.microsoft.com/download/symbolsとやって、何やらダウンロードはできている模様。

4.解析用マシンからBreakし、F9などでブレークポイントを入れても、その行の色が変わらない。
5.Edit - BreakPointダイアログを見てみると、ブレークポイントが追加されているみたいだが、
     「0 eu      0001 (0001) .....」となっており、「unresolved」らしい。

�C.印刷実行中にメッセージボックスを出し、そこで解析用マシンからBreak。
�D.Step実行をすると、アセンブラが表示されて1行ずつ実行されているような雰囲気。


どうもシンボルが読み込めていない気がするのですが、どうすれば良いでしょうか?
0608デフォルトの名無しさん2008/06/05(木) 22:36:09
>>607
4の時点でだめだね
使ってるモジュールがリリース版になってるなどして
ロードしてるモジュールとシンボルが一致して無い。

ロードしてからコンパイルしなおしてるとか
ちゃんとファイルがコピーされているから
日付、サイズをちゃんと確認すべし。
0609デフォルトの名無しさん2008/06/06(金) 06:14:49
src*
0610デフォルトの名無しさん2008/06/06(金) 10:20:16
>>608
レスありがとうございます!

1.実行用マシンの Server 2003 Checked x86 でリビルドし、プリンタインストール。
2.すぐに解析用マシンにソースとpdbファイルなどをコピー。
3.実行用マシン再起動

としてみましたが、結果変わりませんでした。
何か基本的な手順を抜かしていたりしませんか?

あと基本的な質問なのですが、
実行用マシンで印刷が実行されると、それに必要なモジュールが解析用マシンにロードされるのでしょうか?
そしてモジュールがロードされた後に、pdbなどのシンボルを探してロードするのですか?


>>609
すみません、タイプミスでした。
実際は srv にしていたので、そこは大丈夫かと思います。
0611デフォルトの名無しさん2008/06/07(土) 00:46:11
ああ、ごめん、プリンタドライバってユーザーモードで動いてるっぽいね
(DLLって言われた時点で気がつくべきだった)
カーネルデバッグできるのはカーネルモードだけだった気がする

だから、VisualStudioか、WinDbgで、起動してるプロセスにアタッチするように
するしか無いんじゃないかな
0612デフォルトの名無しさん2008/06/07(土) 09:53:37
じゃあ根本的に違うことやってたんですね・・・orz
プロセスにアタッチって1台のマシンでやるわけですか?
0613デフォルトの名無しさん2008/06/07(土) 16:58:49
デバッガから印刷しなければ1台で問題なし
0614デフォルトの名無しさん2008/06/08(日) 12:05:37
デバイスドライバインストール時に、EXEを実行したいんだけど、
INFファイルから起動かけるのって無理かな?
逆に、EXEからINF実行って仕組みが一般的?
0615デフォルトの名無しさん2008/06/08(日) 14:27:19
>>612
デバッグするマシンにWinDbgいれれば1台でできるし
開発マシンから見たければ、リモート設定すればできる。

ただ、どっちにしろ、パスだのログインだのアクセス権だの
結構めんどくさい&ひっかかるので注意。

>>614
ExeからInfならSetupDi系関数なら簡単じゃなかったかな
ドライバインストール時に呼ばれる個別設定はCoInstallerDLLだったような・・・

0616デフォルトの名無しさん2008/06/09(月) 00:42:13
>>613
デバッガから印刷しなければ1台で問題なし

そもそもWinDbg自体から「プリント」はできないはずでは?
WinDbgを入れて、スプーラにアタッチして
それから、メモ帳などを開いて、印刷実行

これでマシンは1台でOKですよね?

ブレークポイントがうまくつけられない orz
06176102008/06/09(月) 13:33:11
レスしてくれた方ありがとうございました!

プロセスにアタッチして、とうとうデバッグができました・・・(;*´∀`*)
「ファイルに出力」ってのを選ぶとプリントプロセッサが動かないらしく、
何もつながってないポートを選んで印刷したらブレークポイント設定できました。

VisualStudioでもデバッグできたので、ビルドもできれば楽になりそう・・・
0618デフォルトの名無しさん2008/06/12(木) 20:52:15
プリンタドライバのCOREソースコード中に
CreateFile(filename〜)を指定して、ファイルを作り出そうとしているんですが
うまくいきません 無論fpt=fopen("log.txt","w") などしても
無駄です。
OUTPUTとしては「印刷物(中間ファイル)」と「コード中に外部ファイルに
書き込んだファイル」
を考えているのですが、、、、ドライブのソースコード中に何を
書いたら外部ファイルをつくりだすこともできるんでしょうか?

要するにコンソールでいえば、fopenして外部ファイルに書き込んで
チェックする作業をドライバでもやりたいのです。
0619デフォルトの名無しさん2008/06/12(木) 23:16:25
>>618
コンパイルエラーとかはないの?
デバッグでステップ実行してみたら?

俺は印刷データをビットマップファイルに保存するのに成功してるから、
普通のログファイル作成も問題ないはず。
0620sage2008/06/12(木) 23:27:10
MIDIストリームについて教えてください。

AVStreamのMiniDriverとしてUSBAudioドライバを作っているのですが、
MIDIのストリーム転送機能で、KS(KernelStream)から送られてくる
MIDIデータに不明なデータがあります。

KSから送られてくるMIDIデータは、

不明データ(4バイト)+MIDIメッセージ長(4バイト)+MIDIメッセージ(可変長)

の形式で繰り返し送られてきます。

不明データと書いた最初の4バイトが何を指すものか
知っている方がいたら教えてください。

USBAudioドライバからデバイスには、USBMIDIフォーマットで
転送するため、MIDIメッセージ以外のデータを送る事はないのですが、
制御かなにかで必要となるデータなのでしょうか?

宜しくお願いします。
0621デフォルトの名無しさん2008/06/12(木) 23:39:29
>>620
sageさん、思いっきりAGEてるんですけど><
0622デフォルトの名無しさん2008/06/13(金) 17:26:45
老師!
WDKをVSに統合したいんですけどどうすればいいんですか?
アプリみたいにVS上でIDEを使って開発したいんです。
WDK: Server 2008
VS: VS2008Pro
0623デフォルトの名無しさん2008/06/14(土) 01:46:17
>>618
APIつかってエラー出たならGetLastErrorが基本。

>>620
KS系はPinで定義してあるデータを送るものだから
Pinの定義を調べてみては?

>>622
ddkbuild.cmd
0624デフォルトの名無しさん2008/06/14(土) 13:49:08
>>623
老師、感謝
今からGoogle先生を訪問します
0625デフォルトの名無しさん2008/06/14(土) 19:19:24
>>623
ありがとうございます。
PINの定義としては、
DataRange.MajorFormat = STATICGUIDOF(KSDATAFORMAT_TYPE_MUSIC);
DataRange.SubFormat = STATICGUIDOF(KSDATAFORMAT_SUBTYPE_MIDI);
DataRange.Specifier = STATICGUIDOF(KSDATAFORMAT_SPECIFIER_NONE);
Technology = STATICGUIDOF(KSMUSIC_TECHNOLOGY_PORT);
を設定しています。
WDKドキュメントで、KSから送られるMIDIデータのフォーマットを
探しているのですが、見つけられないでいます。
0626デフォルトの名無しさん2008/06/14(土) 20:52:39
むむ
タイムスタンプぢゃないのかしらん
0627デフォルトの名無しさん2008/06/14(土) 23:20:24
>>623
定石をありがとう。感謝します。

CreateFile関数はどうやらプリンタドライバ中では使えない様
なんですが、、ZwCreateFileという関数があるのですが
それならプリンタドライバ中でも使えるのか今確認していますが
何か情報をお持ちの方は情報をお願いします。

最悪、スプーラに書き込みを行えばWinDbgなしでもDebug作業が
できることはわかりました。
■ このスレッドは過去ログ倉庫に格納されています