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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
ようこそ、Blue Screenへ(・∀・)
0077デフォルトの名無しさんNGNG
>>75
NT4.0DDKにRAMDISKのサンプルあるよ
0078デフォルトの名無しさんNGNG
さぁ、盛り上がってまいりました
0079デフォルトの名無しさんNGNG
今だと1GBのRAMDISKも作れるのか、、、時代は変わるなあ
0080デフォルトの名無しさんNGNG
DDKに付いてるサンプルって、ソフトに流用しても問題ないのだろうか?
0081デフォルトの名無しさんNGNG
>>80
利用規定みたのなかった?
0082デフォルトの名無しさんNGNG
>>81
あったの?
じゃぁ探してみようかな。
0083デフォルトの名無しさんNGNG
DDK欲しい。
0084デフォルトの名無しさんNGNG
>>83
ネットに落ちてるのはこれぐらいかな

98DDK
http://download.microsoft.com/download/win98SE/Install/Gold/W98/EN-US/98DDK.EXE

NT4DDK
ftp://ftp.atfile.com/download/WindowsDDK/WinNT/nt4ddk.zip
0085デフォルトの名無しさんNGNG
過去ログくらい見ろよ
0086デフォルトの名無しさんNGNG
盛りsage
0087デフォルトの名無しさんNGNG
>>84
ありがとう。NT4DDKはダウンできなかったです。
2000とかはMSDNに入らないとだめなんですね。
0088デフォルトの名無しさんNGNG
>>87
スレ一覧をDDKで検索
0089デフォルトの名無しさんNGNG
>>87
これだな
WindowsDDK各種についてのスレ
http://pc2.2ch.net/test/read.cgi/tech/1049116134/

NT4DDK
http://download.microsoft.com/download/winntwks40/Install/1998/NT4/EN-US/nt4ddk.zip

XPDDK
http://shelek.org.ru/ddk/DDK_XP.ISO
http://windriver.ssarang.net/pds/DDK_XP.ISO
0090デフォルトの名無しさんNGNG
>>89
ありがとう。
これで W*lter On*y を超えられます。
0091デフォルトの名無しさんNGNG
Win2kDDKって一時期はMS自体が公式にWEBでダウンできるようにしてたよね。
以降、DDKはWEBで公開するのかと思っていたんだけど、なんで方針転換したのだろう。

ところでXPDDKって円盤自体はタダで送料のみ掛かるってことみたいだけど、
DDKだけ送ってもらうとどのぐらいかかるんでしょう?
0092デフォルトの名無しさんNGNG
デバッグ方法がわからんからテスト実行するとき
青くならないようにいつも祈ってる。
0093デフォルトの名無しさんNGNG
>>91
そもそも住所の書き方からしてわからないんだよな。
http://www.microsoft.com/whdc/ddk/ordernetddkcd.mspx
0094デフォルトの名無しさんNGNG
>>92
ドライバのプログラミングの本とかにwindbgの大体の使い方が載ってる。
できるなら、開発用とデバッグ用にパソコンが2台あったほうがいい。
デバッグ用はVmwareでも代用できる。

windbgの最新バージョンは
http://www.microsoft.com/whdc/ddk/debugging/installx86.mspx
あとシンボルが必要だから
http://www.microsoft.com/whdc/ddk/debugging/symbols.mspx
自分のドライバのシンボルも作っておくことが必要。
0095デフォルトの名無しさんNGNG
>>91
http://pc2.2ch.net/test/read.cgi/tech/1049116134/1 によると $25
0096デフォルトの名無しさんNGNG
海外からだとこんなものなのか。
日本MSから送ればいいのに。
0097デフォルトの名無しさんNGNG
送料だけの無料DDKは無くなったみたいだよ。
DDKSuite3が199ドル+送料で入手可能。

1月中旬に頼んで2月頭に届きました。
0098デフォルトの名無しさんNGNG
>>97
Windows Server 2003 DDKは送料だけじゃないの?
0099デフォルトの名無しさんNGNG
送料だけでした。
$25

>>92
いたるところにDbgPrintを埋め込むしか・・・
0100デフォルトの名無しさんNGNG
PlatformSDKはUpdaterもあるのに、この扱いの違いはなんなんだ?
0101デフォルトの名無しさんNGNG
普通のソフト:誰でも作る → 便利になる
ドライバ:誰でも作れるというわけでもないし、作る奴も限られる → 何か不便なまま
だったりして。

>>92に関することで
青画面になるような例外って、
__try {
}
__except(){
}
でカバーできなないんかな?
0102デフォルトの名無しさんNGNG
な が一個多い。
0103デフォルトの名無しさんNGNG
>>92
>>16
DbgPrintを簡単に見たいなら、
ローカルとLAN対応なDbgPrintビューア
http://www.sysinternals.com/ntw2k/freeware/debugview.shtml

あと、青画面は例外ハンドラで防げるようですね。

//何も無いドライバ
#include <ntddk.h>

NTSTATUS
DriverEntry(
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
)    
{
    __try {
        DbgPrint("in try\n");
        //クラッシュ
        IoDeleteDevice(NULL);
    }
    __except(EXCEPTION_EXECUTE_HANDLER) {
        //例外が発生した
        DbgPrint("in except\n");
    }
    DbgPrint("end\n");
    return STATUS_SUCCESS;
}
0104デフォルトの名無しさんNGNG
ProbeForRead()あたりにしか、例外ハンドラについて書いてないんだけど
他の関数でも使えるのかな?
0105デフォルトの名無しさんNGNG
ここに例外ハンドラについて書いてある
http://www.osr.com/ddk/kmarch/other_23zb.htm
0106デフォルトの名無しさんNGNG
おまえら、ドライバの本って何冊持ってる?

SoftEtherの作者は4冊のようだが。
http://www.softether.com/jp/journal/pic/IMG_1855.jpg
おれも、この4冊持ってるけど。
0107デフォルトの名無しさんNGNG
八重洲出版の月刊ドライバーを購読して無いやつはもぐり
0108デフォルトの名無しさんNGNG
>>107
ペーパーでゴールドな漏れには関係なさそうだな
0109デフォルトの名無しさんNGNG
>>107
ぜんぜん関係ねーだろw
0110デフォルトの名無しさんNGNG
これ系の本って、どれも分厚いわりにたいして中身無かったり、応用できるようなことが無かったり、
そのくせやたら高かったりするから自費で買おうとは思わない。
自分にはサンプルソースを基点にリファレンス辿ってった方が遥かに理解しやすい。
0111デフォルトの名無しさんNGNG
>>110
月刊ドライバーのことかー!!!
0112デフォルトの名無しさんNGNG
>>110
「WDMデバイスドライバプログラミング完全ガイド」はまともだと思うぞ。

>>111
:-P
0113デフォルトの名無しさんNGNG
ドライバを取り上げてる雑誌は無いのか?
もちろん、「月刊ドライバー」以外で。

「トランジスタ技術」は内容によっては出ることもあるみたいだが。
0114デフォルトの名無しさんNGNG
WDMがWMD(大量破壊兵器)に見えてしまう。
0115デフォルトの名無しさんNGNG
>>113
>>61- みたいに単発記事は極稀にあるけど、大抵は概要をかする程度
需要もほとんど無いし
0116デフォルトの名無しさんNGNG
虎技よりインターフェイスの方がドライバの記事の頻度高いような。

ところでWMDがどういう言いまわしの頭文字か気になるな。
普通に考えたらMDWのような気がするんだけど。Weaponが先頭に来るのか?
0117デフォルトの名無しさんNGNG
>>116
Weapons of Mass Destruction
0118デフォルトの名無しさん NGNG
インターフェースで連載してたよ。実用的なのが売りで…
0119デフォルトの名無しさんNGNG
>>118
肝心の内容はどうだったんだ?
0120デフォルトの名無しさんNGNG
話題が無いからさっぱり盛り上がらないインターネットだな
0121デフォルトの名無しさんNGNG
foo.sys の 動的な実行はできませんか?
Windows/System32 にブチこんで、
レジストリに登録して
リブートして、というのはやり方がわかるんですが、
/Program Files/Foo/Foo.exe をダブルクリックすると
/Program Files/Foo/foo.sys を実行する、
という風にしたいんですけど。
0122デフォルトの名無しさんNGNG
あと、そのとき、レジストリを変更したくないんですよ。
つまり、/Program Files/Foo/Foo.sys をレジストリに登録して、
なんかのAPIをコールして、、、というのではなく、
Err = WinNT_Load_SYS_Driver( char *path);
みたいなのがほしいんですけど、可能ですかね。
0123デフォルトの名無しさんNGNG
サービスAPIじゃだめなの? CreateService()あたり参照。
ドライバのインストール、アンインストールできるけど。

レジストリの追加、削除は勝手にやってくれるよ。
0124デフォルトの名無しさんNGNG
それでもいいんですけど、やっぱ、レジストリは
変更されてしまうんですかね。

たとえば、ドライバ立ち上げ → 青画面即死 → OS再起動、
という手順を踏んだとき、レジストリには前のドライバの残滓が残っていそうで、
それがいやなんですよね。
とにかく、レジストリってトラブルの巣窟(2chではスクツですか?)なんで、
極力いじりたくないんですよ。
0125デフォルトの名無しさんNGNG
>>124
> 青画面即死
それはバグがあるだけ

> レジストリってトラブルの巣窟
それは理解が足りてないだけ
0126デフォルトの名無しさんNGNG
即死
0127デフォルトの名無しさんNGNG
>>124
青画面がでれば、レジストリは残りますね。
でも、青画面を出しそうなコードをDriverEntry()に置かなければ
再起動時にインストールされても問題はないでしょ。
0128デフォルトの名無しさんNGNG
>>124
>>103の例外ハンドラの導入をお勧めする
0129デフォルトの名無しさんNGNG
WDMとは言えないけど、糞エイティブとかいうサウンド会社のせいで、
XPでAureal3D機能が制限されてしまったサウンドチップ「Vortex2」の
ドライバを操作して、XPでもAurealを使えるようにしようと思ったけど、
動作が不安定になったので、挫折しました・・・・(涙

上手い人なら動作不安定にならないドライバが作れるんですかね・・・?
0130デフォルトの名無しさんNGNG
ドライバって難しいね。
0131デフォルトの名無しさんNGNG
プリンタドライバの先生はいるですか?
0132デフォルトの名無しさんNGNG
GPDファイルについて詳しい方おられますでしょうか?

プリンタドライバのプロパティで「紙サイズ」をユーザ指定にしたいんですが、
ヘルプファイルのサンプル通りにカスタマイズ指定の紙サイズエントリーだけをGPDに書くと、
「ユーザ指定サイズ」と表示されないんです。
数値を入れた定型サイズ指定のエントリーを加えると、
プロパティで「ユーザ指定サイズ」が選択出来るようになるんですが、
これで良いのでしょうか?ユーザ指定でなく入れた数値のサイズになってしまう様子なのですが・・・。

どなたかご教授願います。
0133デフォルトの名無しさんNGNG
WDMデバイスドライバプログラミング完全ガイド〈上〉
http://www.amazon.co.jp/exec/obidos/ASIN/4756133959/

アマゾンにエントリしてます。
どなたか、お売りください m(_ _"m)
0134デフォルトの名無しさんNGNG
>133
外注さんがうちに持ち込んでるけどいい本だよ。
自分も購入依頼出したけど買えんかった。
0135デフォルトの名無しさんNGNG
>>134
(;´Д⊂)泣けてきたyo
0136デフォルトの名無しさんNGNG
いい本だから売らないよ
0137デフォルトの名無しさんNGNG
WriteFile(USB)でサイズに64MB指定したらドライバ呼ばれる前に失敗したんだけど、
これってWriteFile()側の仕様でつか?63MBは無問題でした。
0138デフォルトの名無しさんNGNG
>>133-
こういうのこそ電子書籍で復活してほしいねー
技術書って案外需要あるんじゃないだろうか。紙っぽい利便性を持ちつつ検索出来ればかなり便利なんだけど
0139デフォルトの名無しさんNGNG
>>133
これの原書って
http://www.amazon.co.jp/exec/obidos/ASIN/0201695901/
これ?
0140デフォルトの名無しさんNGNG
>>139 そうでつ
0141デフォルトの名無しさんNGNG
>139じゃないけど、あれの原書なら買おうかな
0142デフォルトの名無しさんNGNG
WDMデバイスドライバプログラミング完全ガイドは,俺のスキル不足もあるかと思うけど判りづらかった。
逆にCQから出ているWindows2000デバイスドライバ入門は手っ取り早く理解するには良かったよ。

なので完全ガイド上下が本棚で眠っていて開きもしないけど,
そのうち必要になるかもしれないなぁと手放す気にはなれない。

技術書ってそうだよね。今はいらないと思っても将来必要になったり。
見つけたときに押さえておくが基本ですね。。。
0143デフォルトの名無しさんNGNG
PCIバスマスタDMA転送で使うAllocateCommonBuffer()で確保するサイズってどのくらいが適値なんでしょうか?
0144デフォルトの名無しさんNGNG
ここらへんで質問しなされ
http://www.sciencepark.co.jp:8080/bbs1/wwwboard.html
http://www.ouk.co.jp/ogawa/treecrsdx/index.cgi?
0145デフォルトの名無しさんNGNG
>>142

>技術書ってそうだよね。今はいらないと思っても将来必要になったり。
>見つけたときに押さえておくが基本ですね。。。

積ん読に体のいい理由を付けるんじゃない
0146デフォルトの名無しさんNGNG
>144
サイエンスパークは8080のせいで会社から見れん。
もいっこのはヲチしてみますょ。
0147デフォルトの名無しさんNGNG
>>145
このてのは必要な時に引く辞書みたいなもんだろ
普段から読んでるやついるのか?
0148デフォルトの名無しさんNGNG
>>147
(゚Д゚)?
0149デフォルトの名無しさんNGNG
>>146
http://wannabe.fam.cx/service/esexy/esexy.cgi?eSexyUrl=http%3A%2F%2Fwww.sciencepark.co.jp%3A8080%2Fbbs1%2Fwwwboard.html
0150デフォルトの名無しさんNGNG
>149
見れたょ。�dクス
0151デフォルトの名無しさんNGNG
 
0152デフォルトの名無しさんNGNG
海外のデバイスドライバ関連のお勧めチュートリアルは?
0153デフォルトの名無しさんNGNG
osr
ntdev
ntfsd
0154デフォルトの名無しさんNGNG
保守
0155デフォルトの名無しさんNGNG
入門でパケットフィルター書いた。
むずかしいね
そう、むずかしんだよ
サンプルまねても動きゃ-しない
0156デフォルトの名無しさんNGNG
物理アドレスと仮想アドレスが合うようにマッピングしてメモリを確保する
関数、もしくは方法はありませんか?
0157デフォルトの名無しさんNGNG
物理アド==仮想アド ってこと???


仮想からマップさせて物理アド取得するんじゃダメなの?
0158156NGNG
>>157
そうです。

一旦ページング機能を切りたいのです。
ページング機能を切るコードは物理アド=仮想アドなメモリ上に置く必要があると
思うのですが。
0159デフォルトの名無しさんNGNG
>>156
OS管理外領域つかうってのは?
0160デフォルトの名無しさんNGNG
>156
IoGetDmaAdapter()で得たハンドルを使ってAllocateCommonBuffer()するってのはどぉ?
0161デフォルトの名無しさんNGNG
>>156
http://tech.millto.net/~morry/vwin32/PhysMap/
これを煮るなり焼くなりはどうか?
0162デフォルトの名無しさんNGNG
>156
1)ユーザーモードでアドレスを指定してVirtualAlloc()を呼び仮想空間を確保。
2)そのアドレス値をカーネルモードに渡し、MmAllocateContiguousMemory()で物理空間を確保。
  確保できなかったら1)に戻る。
3)CR3レジスタから確保した仮想アドレスのテーブルを探す。そのテーブルを書き直し
  確保した物理アドレスにマップする。物理→仮想アドレス変換はMmGetVirtualForPhysical()を使う。

試していないけど
0163デフォルトの名無しさんNGNG
>>155
うぷキボン
0164デフォルトの名無しさんNGNG
>>162
MmAllocateContiguousMemory()ってまずくね?
とにかくマップするだけの関数だったような。
0165デフォルトの名無しさんNGNG
PFNいじるしかない
0166156NGNG
皆さん、レスどうもです。

基本的に>>162をベースに作りました。
ただ、物理メモリの空きを探すのにMmAllocateContiguousMemory()を使うのは
まずいようなので、PFNデータベースを参照しました。
(WinNT系のPFNの資料がほとんど見当たらなかったので、怪しいかも)
0167デフォルトの名無しさんNGNG
WinXP SP2のシンボルファイル、まだー?
0168155NGNG
>>163
参考にしたサイト
http://www.codeproject.com/internet/drvfltip.asp
0169デフォルトの名無しさんNGNG
>>167
Windbgのシンボルサーバにはアップされているみたい。
XPのSP2 RC2でもコマンドが使えるようになった。
0170デフォルトの名無しさんNGNG
USBのBulk転送をタイムアウト中断させるにはどうしたらいいの?
0171デフォルトの名無しさんNGNG
>>167
http://WindowsBeta.microsoft.com
にあがってたよ。
ベータアカウント持ってる人に頼んでみたら。
0172デフォルトの名無しさんNGNG
>>170
ドライバは、bulkusbのままでいいんでない?

FILE_FLAG_OVERLAPPEDで開いて、非同期通信して
タイムアウトしたら、CancelIo発行
0173170NGNG
>>172
ありが�d。試してみます。
0174170NGNG
>>172
うまくいきました。どーもです。
0175デフォルトの名無しさんNGNG
皆様よろしくお願い致します。
DDKの勉強はじめたんですが、DDK付属のサンプルが
コンパイルできなくて困っています。

DDK_XPの \WINDDK\2600\src\network\ndis ディレクトリ内の
サンプルがすべてコンパイルでエラーを排出します。

エラーの内容
driver\passthrou.h(318) : error C2146: syntax error : missing ')'
before identifier 'DevicePnPEvent'
など多数のエラーが出ます。

環境:Win2k、DDK_XP(ネットに落ちてたもの)

setenv.batで環境変数は登録しています。
他のサンプルはしっかりコンパイルできるんですが、ndisディレクトリ以下が
コンパイルできません。

ndis.h か ndis.lib ファイルが壊れているのか?とも考えました。
初歩的質問ですがご存知の方ご教授ねがいます。
0176デフォルトの名無しさんNGNG
>>175
Build Enviromentsのメニュー下にあるコマンドプロント使ってる?
BUILDで全部通ったけど
0177175NGNG
>>176
レスありがとう御座います。
Win2k FreeBuildでビルドしています。
javaSDKとか影響していたりするのでしょうか…
原因不明です。
特定のディレクトリのサンプルだけです。
DDKをアンインストールして再インストール後もこの症状が消えません。
sourceファイルもDirsも変更していないのですが…
■ このスレッドは過去ログ倉庫に格納されています