【WDM】Windows Driver Model相談室【デバドラ】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0528デフォルトの名無しさん
2007/11/17(土) 12:27:08あなたには、ドライバ開発は5年早い。
0529デフォルトの名無しさん
2007/11/17(土) 13:13:40根本的に勘違いしていました。ありがとうございました。
0530デフォルトの名無しさん
2007/11/17(土) 23:40:07まずは自分で貼ったURLのサイトを100回読むことだ。
0531チラシ
2007/12/27(木) 13:46:15_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それから500msくらい後から、DPCの処理がされています。
漠然とした質問ですが、原因をご教授ねがえないでしょうか?
0533デフォルトの名無しさん
2007/12/31(月) 00:13:19他のデバイスの割り込み処理が入ってるんじゃね?
もしくは自分のデバイスがさらに割り込んでるとか。
0534デフォルトの名無しさん
2008/01/06(日) 13:19:56http://recwav.dip.jp/
音声でメッセージを伝えよう
http://recwav.dip.jp/M_RECWAV_Media.asp?Speech=1221925210420080106131222
0535デフォルトの名無しさん
2008/01/06(日) 22:46:361 Winアプリ側でReadFile
2 いろいろ処理され、PCI基板のメモリにデータセット(基板側で処理されます)
3 基板が割り込み発生
4 DPCの中で、RtlCopyMemoryでPCI基板のメモリからReadFileのバッファにコピー
データは、200KB〜300KBですが、
4のRtlCopyMemoryに100msくらいかかります。
何かの設定で、バスの速度を早くするとかあるのでしょうか?
それとも、DMA処理とか使って、データのコピー方法を検討する必要があるのでしょうか?
ちなみにその場合、基板内にDMAコントローラがなくても可能なものでしょうか?
詳しいかたお願いします。
0536デフォルトの名無しさん
2008/01/06(日) 23:11:44507か?
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そこそこ行儀が良いと仮定してもread cycleで4byte毎にバストランザクション発生させてんだろ。
1回のトランザクションに何サイクル必要か仕様見て実際に計算すれば予想できるじゃないか。
できるところまで突っ走るのも良いけど、ちゃんと基礎も勉強しないと役に立たない知識になるぞ。
0539デフォルトの名無しさん
2008/01/07(月) 22:46:41非バスマスタならFIFO乗っけるなりして
性能あげるしかないと思うけど・・・
0540デフォルトの名無しさん
2008/01/10(木) 21:10:23Windows 2000/XP/Vista(32bit)でドライバをロード/アンロードできるCUIのツールがあれば教えてください
>hogehoge.exe c:\fugagufa\foo.sys
スレ違いなのは承知していますが、プログラマ以外では使わないツールだろうと考えていますので、
こちらで質問させていただきました。よろしくお願いします
0541デフォルトの名無しさん
2008/01/10(木) 21:47:40ツールとしては見たこと無い
というか、自分も欲しいw
0542デフォルトの名無しさん
2008/01/10(木) 21:53:260543デフォルトの名無しさん
2008/01/10(木) 21:56:45WDK(ドライバ開発キット)に入っているサンプルのdevconツールなんてどうでしょう。
devconは、CUIアプリケーションで指定デバイスを有効/無効できます。
ドライバの有効/無効でロード/アンロードと同じ動作が出来るのではないかと思います。
他にもインストール/アンインストール等もできます。
WDKの入手方法
http://www.microsoft.com/japan/whdc/DevTools/WDK/WDKpkg.mspx
0544デフォルトの名無しさん
2008/01/10(木) 22:23:09ありがとう。
devconはデバイスの管理のようですね。
私の場合は542さんが示していただいているように純粋なアンロード・ロード機能があるもので、
もうすこし汎用的なツールがどこかしらにあるだろうと期待して質問してみました
ちょっとなさそうであれば、チープな実装で片手間に書きます(絶対あると思ってたので。。。
0545デフォルトの名無しさん
2008/01/12(土) 18:33:37CUIってところが問題なのか。
自分でちゃっちゃと書くか、driverloaderあたりをwshで叩くかかな?
0546540
2008/01/13(日) 17:31:06とりあえずかいたのでよければどうぞー
0547デフォルトの名無しさん
2008/01/13(日) 19:39:01乙andありがとう
0548デフォルトの名無しさん
2008/01/19(土) 01:46:52VFW-WDMラッパーの問題で片方ずつしか使用できません。
VFW経由では2台同時使用は出来ないのでしょうか?
例えば、USBポート拡張PCカードを使うなど、何らかの方法でVFW経由の使用が可能でしょうか?
0549デフォルトの名無しさん
2008/01/21(月) 10:00:04自分でドライバを書く気が無いならスレ違い
もし書く気があるなら、そのラッパーの問題とやらを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やっぱりgoogleとtry&errorなデバッグだけじゃ十分な知識が揃いにくいですね
0553548
2008/01/26(土) 09:57:41レスくれた人どうも。
0554ぱーぷりん
2008/02/01(金) 10:01:51ご存知の方教えてください。DDK内を検索しても見つかりませんでした。
0555デフォルトの名無しさん
2008/02/01(金) 10:48:210556デフォルトの名無しさん
2008/02/02(土) 16:34:22今wav等のHDD上のオーディオファイルをオーディオ入力に渡すというアプリを作るために
仮想オーディオ入力ドライバを作りたいんだけど、
ドライバの情報がWEB上探してもあまり見つからなくて難航してます。
参考になりそうなサイトとか知ってたら教えて下さい。
ちなみに、これを実現するにはオーディオファイルを開くアプリと、
アプリからの入力を受け付ける仮想オーディオ入力ドライバがあれば良くて、
同時にマイク等からのオーディオ入力も行うにはフィルタドライバにすれば良いと思ってるんだけど合ってます?
0557556
2008/02/02(土) 16:55:37上位ドライバとして作って、他の上位ドライバへ転送するような処理をさせればいいのかな?
0558556
2008/02/02(土) 18:27:02過疎杉
0559デフォルトの名無しさん
2008/02/02(土) 18:48:070560デフォルトの名無しさん
2008/02/02(土) 18:57:370562デフォルトの名無しさん
2008/02/02(土) 20:18:060563デフォルトの名無しさん
2008/02/03(日) 03:24:29このスレで質問する人の大半が
目的とやりたいことがあってない
0564デフォルトの名無しさん
2008/02/08(金) 15:37:36BIOSの設定を、Windowsから変更することできませんか?
WDM(デバイスドライバ)経由でできたりしないのでしょうか?
BIOSの時計は、Windowsから同期(変更)しているみたいだから、
できそうな気がするのですが・・・
0565デフォルトの名無しさん
2008/02/08(金) 20:18:500566デフォルトの名無しさん
2008/02/08(金) 22:29:510567デフォルトの名無しさん
2008/02/09(土) 00:05:090568デフォルトの名無しさん
2008/02/10(日) 15:54:56設定方法次第。
I/O経由なら可能だろうけど、
保存場所がメモリアドレスに出てきていたら、不可能な場合もある。
0570デフォルトの名無しさん
2008/02/10(日) 20:11:16CMOSの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お前に言いたい事は、
目的によって実装が全然異なるのに「各種」なんてあるわけない。
その程度の事がわかるぐらいになってからドライバを書け。
そもそもDRM対策で個人ドライバ開発者が厳しい状況に置かれている
事を理解しろ。
0573デフォルトの名無しさん
2008/02/11(月) 00:42:06DDK落として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リクエスト元のスレッドなんて意識するような作りをしちゃいかんだろ。
何の為のIRPだ。
readに対する応答処理として、それは誤っている。
故に、死ね。
0577デフォルトの名無しさん
2008/02/18(月) 12:38:07複数のアドレスとring3のスレッドが一対一対応しているなら
アドレスの数だけ新しいデバイスオブジェクトを作っちまったら
どうだ?
どうしてもダメなら
・プロセスID、スレッドID等の情報をドライバに登録する
DeviceControlをつくり、読み書きの前にスレッド情報を
登録しておく。
・ReadFileはやめて
DeviceIoContro(
ハンドル,
スレッド識別読み取りコード,
上記情報バッファのアドレス,
上記情報バイト数,
読み取りデータ格納バッファアドレス,
読み取るバイト数,
...
);
・WriteFileはやめて
DeviceIoContro(
ハンドル,
スレッド識別書き込みコード,
上記情報に書き込みデータを付加したバッファのアドレス,
上記情報 + 書き込むバイト数,
NULL,
0UL,
...
);
実装としては果てしなくダサいな・・・
0578デフォルトの名無しさん
2008/02/18(月) 17:23:470579デフォルトの名無しさん
2008/02/19(火) 21:27:42WDMで書くのをやめる。
0580デフォルトの名無しさん
2008/02/20(水) 12:33:39まずドライバに持たせたバッファにコピーするだろw
0581デフォルトの名無しさん
2008/02/22(金) 01:51:29解決できない問題があり質問させていただきます。
ドライバは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自己レスです。Pinのルーチンが呼ばれない件、解決しました。
Pinの接続設定とPinディスクリプタの設定値に不備があったのが原因でした。
失礼しました。
0583デフォルトの名無しさん
2008/03/03(月) 16:23:26を作ろうとしていますが、インストールで詰まっています。
参考書:滝口著「フィルタドライバプログラミング」では、最も一般的な方法として
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正直あの本の方法は特殊だと思う。
一般的に特定のデバイスで動作させるには、
そのドライバにインストールできるようなInfファイルを書けば良くて
サンプルはDDKについてるから、それとヘルプ参照しながらで
簡単に作れたと思う。
0585デフォルトの名無しさん
2008/03/06(木) 12:34:34ざっとソースを眺めたところ、
device_nameは/listdevicesの出力結果、
filterはHKLM\SYSTEM\CurrentControlSet\Servicesにぶら下がってるキー名
に見えた。
0586デフォルトの名無しさん
2008/03/14(金) 03:44:23Visual Studio 2005 なら正式版あるけどテンプレにドライバなかった
0587デフォルトの名無しさん
2008/03/14(金) 05:52:54Visual Studioに統合もできたはず
0588デフォルトの名無しさん
2008/03/14(金) 11:39:050589デフォルトの名無しさん
2008/03/14(金) 17:24:31本家WHDCサイトも見ておけッ
http://www.microsoft.com/japan/whdc/DevTools/default.mspx
0590デフォルトの名無しさん
2008/03/14(金) 21:03:48ありがとう。探してみるわ
>>589
サー!イエスサー!!
0591デフォルトの名無しさん
2008/03/20(木) 16:36:37wudfddi.hをインクルードすると
構文エラー : 識別子 '_in'
というエラーが出てしまいます。
確か、VS2002や2003で最近のSDKやWDKをコンパイルとすると
この手のエラーが出たような記憶があるのですが、
何とか突破する方法はないでしょうか。
WDKとダウンロードインクルードパスの追加は完了しています。
0592デフォルトの名無しさん
2008/03/23(日) 21:49:58止む無くVC2008をインストールして解決することにしました。
0593デフォルトの名無しさん
2008/05/09(金) 21:00:21それは最近のVC++の/analyzeオプション用の注釈だと思う。
単純に/D__inとかで空に置換してコンパイルできない?
0594デフォルトの名無しさん
2008/05/11(日) 10:33:31VCに最初から入っているPlatformSDKに相当するものとの相性があって
最新のもの同士なら大抵うまくいくが、片方のバージョンが違うと
インクルードがうまくいかないことが多い。
WDKは最近出たものだから余計そうじゃないかと。
逆にPlatformSDK入れてパス通せばうまくいくんじゃないかと。
すでに動いているだろうから余計なことする必要は無いけどね。
0595デフォルトの名無しさん
2008/05/26(月) 21:52:05windows.hがインクルード出来なくて、RegOpenKeyEx()が使えないです。
なにかヒントください。
VC6+XPSP1DDKです。
0596デフォルトの名無しさん
2008/05/26(月) 22:32:31Windows起動中にロードするドライバだとレジストリの場所によっては読めないところもあるので、
注意してくださいね。
0597デフォルトの名無しさん
2008/05/26(月) 22:33:02Windows.hはユーザーモードアプリケーション用であって
ドライバのカーネルモードはntddk.hとかになる。
サンプルをインストールしてよく見てみるべし。
0598デフォルトの名無しさん
2008/05/26(月) 22:36:200599デフォルトの名無しさん
2008/05/28(水) 22:58:32ハードウェアが存在しないのでバスドライバがハードウェアの追加を「検出」することも
ないと思うのですが、実際にはAddDeviceがちゃんと呼び出されるみたいです。
なぜ呼び出されるのでしょうか? MSのサンプルRAMディスクのソースを見ても
特別なことをしているようには見えません。
0600デフォルトの名無しさん
2008/05/29(木) 20:27:50RtlQueryRegistryValuesで読めました。
引数悩んだけど、なんとかなりました。
thx
0601デフォルトの名無しさん
2008/05/30(金) 22:14:07.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トンクス。(599じゃないけど
自分で追ってみたんだけど、Servicesセクションの、AddServicesディレクティブで指定したセクション内で、
StartType = 3 ; SERVICE_DEMAND_START, bulkusbの場合…PnPで検出する場合はこちら
と指定するか、
StartType = 0 ; SERVICE_BOOT_START, ramdiskの場合…OS起動時に必要なデバイスはこちら
の違いだと、思ってるんですが、、あってます?
あとお聴きしたいんですが、
ramdisk(StartType=0?)の場合、AddDeviceに渡されるPDOって何なんでしょうか?
他のデバイスの場合は、バスドライバが作成した何かだと思うんですが…
0604603
2008/06/03(火) 00:13:00modelsセクションの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ファイルの探索に用いられるのか。
0605603
2008/06/03(火) 01:14:27Walter本(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されるんかな?
ご意見かポインタきぼんぬ。
0606603
2008/06/03(火) 01:34:37ちゃんと読まなきゃダメだな。スレ汚しスマソ
0607デフォルトの名無しさん
2008/06/05(木) 17:31:44プリンタドライバ開発を始めようというところで、ソースコードデバッグがしたいのですが、
ブレークポイントの設定ができずに悩んでます。
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:094の時点でだめだね
使ってるモジュールがリリース版になってるなどして
ロードしてるモジュールとシンボルが一致して無い。
ロードしてからコンパイルしなおしてるとか
ちゃんとファイルがコピーされているから
日付、サイズをちゃんと確認すべし。
0609デフォルトの名無しさん
2008/06/06(金) 06:14:490610デフォルトの名無しさん
2008/06/06(金) 10:20:16レスありがとうございます!
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プロセスにアタッチって1台のマシンでやるわけですか?
0613デフォルトの名無しさん
2008/06/07(土) 16:58:490614デフォルトの名無しさん
2008/06/08(日) 12:05:37INFファイルから起動かけるのって無理かな?
逆に、EXEからINF実行って仕組みが一般的?
0615デフォルトの名無しさん
2008/06/08(日) 14:27:19デバッグするマシンにWinDbgいれれば1台でできるし
開発マシンから見たければ、リモート設定すればできる。
ただ、どっちにしろ、パスだのログインだのアクセス権だの
結構めんどくさい&ひっかかるので注意。
>>614
ExeからInfならSetupDi系関数なら簡単じゃなかったかな
ドライバインストール時に呼ばれる個別設定はCoInstallerDLLだったような・・・
0616デフォルトの名無しさん
2008/06/09(月) 00:42:13デバッガから印刷しなければ1台で問題なし
そもそもWinDbg自体から「プリント」はできないはずでは?
WinDbgを入れて、スプーラにアタッチして
それから、メモ帳などを開いて、印刷実行
これでマシンは1台でOKですよね?
ブレークポイントがうまくつけられない orz
0617610
2008/06/09(月) 13:33:11プロセスにアタッチして、とうとうデバッグができました・・・(;*´∀`*)
「ファイルに出力」ってのを選ぶとプリントプロセッサが動かないらしく、
何もつながってないポートを選んで印刷したらブレークポイント設定できました。
VisualStudioでもデバッグできたので、ビルドもできれば楽になりそう・・・
0618デフォルトの名無しさん
2008/06/12(木) 20:52:15CreateFile(filename〜)を指定して、ファイルを作り出そうとしているんですが
うまくいきません 無論fpt=fopen("log.txt","w") などしても
無駄です。
OUTPUTとしては「印刷物(中間ファイル)」と「コード中に外部ファイルに
書き込んだファイル」
を考えているのですが、、、、ドライブのソースコード中に何を
書いたら外部ファイルをつくりだすこともできるんでしょうか?
要するにコンソールでいえば、fopenして外部ファイルに書き込んで
チェックする作業をドライバでもやりたいのです。
0619デフォルトの名無しさん
2008/06/12(木) 23:16:25コンパイルエラーとかはないの?
デバッグでステップ実行してみたら?
俺は印刷データをビットマップファイルに保存するのに成功してるから、
普通のログファイル作成も問題ないはず。
0620sage
2008/06/12(木) 23:27:10AVStreamのMiniDriverとしてUSBAudioドライバを作っているのですが、
MIDIのストリーム転送機能で、KS(KernelStream)から送られてくる
MIDIデータに不明なデータがあります。
KSから送られてくるMIDIデータは、
不明データ(4バイト)+MIDIメッセージ長(4バイト)+MIDIメッセージ(可変長)
の形式で繰り返し送られてきます。
不明データと書いた最初の4バイトが何を指すものか
知っている方がいたら教えてください。
USBAudioドライバからデバイスには、USBMIDIフォーマットで
転送するため、MIDIメッセージ以外のデータを送る事はないのですが、
制御かなにかで必要となるデータなのでしょうか?
宜しくお願いします。
0621デフォルトの名無しさん
2008/06/12(木) 23:39:29sageさん、思いっきりAGEてるんですけど><
0622デフォルトの名無しさん
2008/06/13(金) 17:26:45WDKをVSに統合したいんですけどどうすればいいんですか?
アプリみたいにVS上でIDEを使って開発したいんです。
WDK: Server 2008
VS: VS2008Pro
0623デフォルトの名無しさん
2008/06/14(土) 01:46:17APIつかってエラー出たならGetLastErrorが基本。
>>620
KS系はPinで定義してあるデータを送るものだから
Pinの定義を調べてみては?
>>622
ddkbuild.cmd
0624デフォルトの名無しさん
2008/06/14(土) 13:49:08老師、感謝
今からGoogle先生を訪問します
0625デフォルトの名無しさん
2008/06/14(土) 19:19:24ありがとうございます。
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定石をありがとう。感謝します。
CreateFile関数はどうやらプリンタドライバ中では使えない様
なんですが、、ZwCreateFileという関数があるのですが
それならプリンタドライバ中でも使えるのか今確認していますが
何か情報をお持ちの方は情報をお願いします。
最悪、スプーラに書き込みを行えばWinDbgなしでもDebug作業が
できることはわかりました。
■ このスレッドは過去ログ倉庫に格納されています