【WDM】Windows Driver Model相談室【デバドラ】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
2008/12/29(月) 19:30:17理由は、買えなくなる前にかっておこうかと、、
宝くじ買ったほうが良かったかな。
作ればok。
0792デフォルトの名無しさん
2009/01/03(土) 20:22:46個人的にはオレンジのウォルターオニーさんのほうがオススメ。
基本的な概念はそれで、あとはWDKのドキュメント、サンプルとにらめっこ。
0793デフォルトの名無しさん
2009/01/04(日) 21:19:31されたのが痛いな。
0794デフォルトの名無しさん
2009/01/05(月) 02:59:3664bitは署名必須になっちゃったし
次のOSでは32bitも必須になるだろうし
もうドライバ趣味で作ったりとかできないね。
ので、Linux勉強している自分がいる。
0795デフォルトの名無しさん
2009/01/05(月) 06:27:28http://citadel.x10hosting.com/readydriverplus/index.php
0796デフォルトの名無しさん
2009/01/05(月) 23:11:45これからはデバイスドライバの類はユーザーモードで動くようになっていくんでしょう。
趣味で作るだけなら署名無効にすればいいのだしね。
ブートやその他カーネルモードドライバを公開しにくいのは残念だけど
それらのドライバがWindowsの不安定さの一員でもあったのだからしょうがないよ
0797デフォルトの名無しさん
2009/01/07(水) 20:54:21署名無効にできないから問題なんだよ。
毎回F8なんてやってらんね。
それに署名付きが高品質とは限らんし。
0798デフォルトの名無しさん
2009/01/07(水) 21:03:44>>795
0799デフォルトの名無しさん
2009/01/07(水) 22:48:27外で計算してからdeviceiocontrolとかでドライバに結果渡すのとで速さに違いある?
>時間のかかる計算ってドライバの中でやるのと
するな。
0801デフォルトの名無しさん
2009/01/08(木) 20:37:170802デフォルトの名無しさん
2009/01/08(木) 22:38:56落ちる落ちないみたいな品質面もあるけどセキュリティ面もでかい。
また、ウェブサイトが乗っ取られるようなことがあって擦り返られても平気になる。
そんな気はする。
0804デフォルトの名無しさん
2009/01/09(金) 23:21:16でかくねーよ。
ドライバロードさせられる権限あればドライバ使わんでもOS乗っ取れる。
0805デフォルトの名無しさん
2009/01/10(土) 10:46:47単にPC乗っ取ったり、破壊するだけならそうだね。
0806デフォルトの名無しさん
2009/01/26(月) 01:00:02どうよ?
0807デフォルトの名無しさん
2009/01/26(月) 02:36:450808デフォルトの名無しさん
2009/01/30(金) 14:16:03とりあえずWindowsXP用のデバイスドライバをプログラミングする良い入門書とかある?
0809デフォルトの名無しさん
2009/01/30(金) 20:39:300810デフォルトの名無しさん
2009/01/30(金) 21:04:050811デフォルトの名無しさん
2009/01/31(土) 01:26:210812デフォルトの名無しさん
2009/01/31(土) 10:13:47USBチップ積んだ回路にPICとか使ってキーボードやゲームパッドを直接制御した方が簡単だよ
0813デフォルトの名無しさん
2009/01/31(土) 14:19:32とりあえずVMにXP突っ込んで試してみるお
0814デフォルトの名無しさん
2009/02/02(月) 04:42:35入り口から聞く様じゃ作れないな
俺もその用途でドライバ作ったが、結局なんかあったら聞こうと思って開いてたこのスレで
改めて聞くことなんか何も無かった
本も要らない
ググれば全ての必要な情報が揃う
0815デフォルトの名無しさん
2009/02/02(月) 10:31:130816デフォルトの名無しさん
2009/02/07(土) 19:18:22USBのデバイスとのやりとりのデータをキャプチャするソフトはありますでしょうか。
0817デフォルトの名無しさん
2009/02/07(土) 19:34:140818デフォルトの名無しさん
2009/02/08(日) 00:40:03ありがとうございました!
0819デフォルトの名無しさん
2009/02/08(日) 08:05:23ignoreされてんのかwrnに出ないし、動作するけど気持ち悪いんだお(´;ω;`)
0820デフォルトの名無しさん
2009/02/12(木) 09:35:180821デフォルトの名無しさん
2009/02/12(木) 16:33:17WDMデバイスドライバ プログラミング完全ガイド (アスキー)
0822デフォルトの名無しさん
2009/02/19(木) 10:58:17現在PCIデバイスドライバをWDMで作成しているのですが、IoAttachDeviceToDeviceStack
関数で必ずブルースクリーンになってしまいます。
ためしにWDMに付属していたサンプルのPCIデバイスドライバ(PCIDRV.sys)を
インストールしてみたのですが、同じようにIoAttachDeviceToDeviceStack
でブルースクリーンです。
IoCreateDeviceが成功していることは確認しています。
こういった場合、何が原因なのでしょうか?(ハードウェア?)
0823デフォルトの名無しさん
2009/03/11(水) 22:52:520824デフォルトの名無しさん
2009/03/12(木) 09:39:430825デフォルトの名無しさん
2009/03/13(金) 21:40:30盗みは犯罪、イクナイ
0826デフォルトの名無しさん
2009/03/16(月) 09:39:19USBならusbstorの上で取れる。
IDEはシラネ。
0828デフォルトの名無しさん
2009/03/18(水) 19:35:39カーネル空間とユーザー空間とでMutexで同期を取りたいのですが
どちらかで作成した Mutex をもう片方に告知する方法ってありませんか?
おい、やめろ馬鹿
このスレは早くも終了ですね
とりあえず、キレイな方法は無い。
親切に説明してくれてる書籍ってあるんでしょうか
0831デフォルトの名無しさん
2009/04/01(水) 09:00:22「Windows Vista カーネルソフトウェア開発技法」
「Windows Vistaデバイスドライバプログラミング」
とりあえずフリーのWDKのインストールまではできたのですが
wdm.hとntddk.hがコンパイラバージョンが合わないとかで
サンプルがビルドできないorz
とりあえず本待ちだ
もってるVCがバージョン6だからだ
とりあえず7以降のがほしいってことで
0834デフォルトの名無しさん
2009/04/01(水) 15:13:520835デフォルトの名無しさん
2009/04/01(水) 15:17:14基本CUIだぞ。
>>834
パス通したり設定さえやってればVCで動くプロジェクトも作れる。
WDKサンプルのままmakefileとか使った方が手っ取り早いが。
2000用のは作ったことがあるのですよ
なのでだいじょうぶかなぁと
0837デフォルトの名無しさん
2009/04/01(水) 22:39:550838デフォルトの名無しさん
2009/04/02(木) 16:10:48Limuxのカーネル関係勉強してからWindowsをさわろうと思う。
0839デフォルトの名無しさん
2009/04/02(木) 22:56:47どれでビルドしても2000でもXPでもvistaでも使えるようだけど、
各osのビルド環境で別々に作ったドライバを使ったほうがいいの?
0840デフォルトの名無しさん
2009/04/09(木) 14:32:040841デフォルトの名無しさん
2009/04/09(木) 16:04:15どのOSにも存在する機能を使ってるぶんには同じ。
XPとかVistaにしかない関数を使うんなら、OS毎にビルドするなり
ダイナミックロードするなりすればよろし。
0842デフォルトの名無しさん
2009/04/09(木) 19:14:220843デフォルトの名無しさん
2009/04/27(月) 23:19:49IDEの設定についてです。
WinDDK\6001.18002\inc配下に
api
atl21
atl30
crt
ddk
mfc42
wdf
というフォルダがそれぞれありますが、
Visual Studio 2008の
ツール→オプション→プロジェクトおよびソリューション→VC++ディレクトリ
にてインクルードディレクトリを設定しようと考えているのですが、
設定する対象フォルダは「ddk」のみで大丈夫でしょうか?
※インテリセンス機能を使いたいので。。。
宜しくお願いします。
0844デフォルトの名無しさん
2009/04/30(木) 22:21:56ドライバ内で検出する方法があれば教えてください
0845デフォルトの名無しさん
2009/05/04(月) 23:57:22ソースによると思うけれども
手元では、inc\api と inc\ddk をインクルードファイルの設定に入れてる。
>>844
MajorFunction[IRP_MJ_POWER] の中で
IRP_MN_SET_POWERやIRP_MN_QUERY_POWER で引っ掛けて
Parameters.Power.ShutdownType や powerState.SystemState を
見れば、ある程度、判るよ。
というか、普通実装してあるはずだけど。
0846843
2009/05/09(土) 16:04:32ありがとうございます
実はあの後色々錯誤してapiとddkのみ
インクルードファイルに設定することにしました。
再確認できてよかったです。
0847デフォルトの名無しさん
2009/05/10(日) 23:18:12あるデバイスに対して、I/Oの入出力と
割り込みのハンドリングを行うだけの
簡単なドライバを作りたいのですが、
簡単なサンプルソースはどこかに無いでしょうか?
(ソースファイル1つ、ヘッダファイル1つくらいのもの)
DDKのサンプルは少々複雑で・・・。
よろしくお願いします。
0848デフォルトの名無しさん
2009/05/16(土) 05:26:191>c:\winddk\3790.1830\inc\wxp\usbioctl.h(449) : error C2220: warning treated as
error - no object file generated
1>c:\winddk\3790.1830\inc\wxp\usbioctl.h(449) : error C4200: nonstandard extensi
on used : zero-sized array in struct/union
1>c:\winddk\3790.1830\inc\wxp\usbioctl.h(472) : error C4200: nonstandard extensi
on used : zero-sized array in struct/union
1>c:\winddk\3790.1830\inc\wxp\usbioctl.h(528) : error C4200: nonstandard extensi
on used : zero-sized array in struct/union
100>c:\winddk\3790.1830\inc\wxp\usbioctl.h(449) : error C2220: warning treated a
s error - no object file generated
100>c:\winddk\3790.1830\inc\wxp\usbioctl.h(449) : error C4200: nonstandard exten
sion used : zero-sized array in struct/union
100>c:\winddk\3790.1830\inc\wxp\usbioctl.h(472) : error C4200: nonstandard exten
sion used : zero-sized array in struct/union
100>c:\winddk\3790.1830\inc\wxp\usbioctl.h(528) : error C4200: nonstandard exten
sion used : zero-sized array in struct/union
宜しくお願いします。
Cで書けばOK。
0850デフォルトの名無しさん
2009/05/16(土) 14:58:58build通りました!ありがとうございました!
0851デフォルトの名無しさん
2009/05/19(火) 01:01:24infファイルは自分で書くしかないのでしょうか?
0852デフォルトの名無しさん
2009/05/23(土) 14:34:46MSDN会員だけ先行して公開されてる
0853デフォルトの名無しさん
2009/06/02(火) 00:16:09デバイスマネージャ→ドライバの詳細上のデジタル署名者欄で
署名なしとされてしまう模様。
リリース署名したがVista x64でのこれがどうも気になる。
やっぱロゴテスト合格しないとここは署名なしのままなのかな。
0854デフォルトの名無しさん
2009/06/02(火) 01:06:110855デフォルトの名無しさん
2009/06/10(水) 05:12:17高卒だけど怪しいのみつけた、一応はあらゆるプロトコルの解析ができるみたい
すれ違いだったらすまん
0856デフォルトの名無しさん
2009/09/06(日) 18:21:59UPPERなりLOWERなりにSetupDIで突っ込むんだろうね。
アプリが大変だね。CDB・CBW・タスクファイル・・・
0857デフォルトの名無しさん
2009/10/22(木) 15:24:45フック時に起動させるモジュールの対象パスを取得、コマンド引数を取得したいと思っています。
モジュールの対象パスは取得することは成功したのですが、コマンド引数の文字列の取得を行うことができません。
NTSTATUS NtCreateProcess(
OUT PHANDLE ProcessHandle,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
IN HANDLE ParentProcess,
IN BOOLEAN InheritObjectTable,
IN HANDLE SectionHandle OPTIONAL,
IN HANDLE DebugPort OPTIONAL,
IN HANDLE ExceptionPort OPTIONAL );
これら引数からアプリ起動時のコマンド引数の文字列を取得する方法をご存知の方をご存知の方がいましたら、
教えていただけないでしょうか。よろしくお願いいたします。
0858デフォルトの名無しさん
2009/11/17(火) 00:07:07PCやってるなんてお�hるかもしれんのう。
0859デフォルトの名無しさん
2009/11/17(火) 00:07:240860デフォルトの名無しさん
2009/11/17(火) 02:30:380861デフォルトの名無しさん
2009/12/10(木) 15:08:06サンプル見てもコンパイルの仕方すら分からない状況ですが
まあそれは調べたらあったのでいいとして
アプリケーションとどうやって通信するのかとか、ドライバ自体をどうやってシステムに登録するのかとか
ほとんど何も分からないし調べても出てこないんですが
サンプルコードでもあれば教えてください
0862デフォルトの名無しさん
2009/12/10(木) 15:46:58まずはWDDFの書籍買って一から勉強しろ。
0863デフォルトの名無しさん
2009/12/10(木) 21:30:27geekなサイトにもぐりこんでだいたいやり方は分かった
0864862
2009/12/10(木) 22:49:39いや、アフォでなければ分かる。
WDKあるならドキュメント読めば全部きっちり載ってる。
英語が面倒で見てすらいないんだろ。
大体、
> サンプルコードでもあれば教えてください
って、network\ndis\filterにndisのlowerfilterがあるわけだが。
ろくに探しもしてないことが明白。
0865デフォルトの名無しさん
2009/12/13(日) 23:04:150866デフォルトの名無しさん
2009/12/23(水) 16:54:59これ見るとIoIsWdmVersionAvailableの引数が
Vistaと7で同じになってるんだけど誤記じゃないの?
RtlIsNtDdiVersionAvailableのほうを使うべきと書いてあるのはこの問題があるから?
でもこの関数をXP以前のOSで使おうとしてもライブラリのリンクができない。
0867デフォルトの名無しさん
2010/01/05(火) 12:43:34いったいどういう仕組みなんだろ?
ユーザーランドのコードを対応するものに変換してくれるとか?
0868デフォルトの名無しさん
2010/02/17(水) 06:46:430869デフォルトの名無しさん
2010/02/18(木) 08:09:490871デフォルトの名無しさん
2010/02/18(木) 16:45:20ありがとうございます。
助かりました。
0872デフォルトの名無しさん
2010/02/22(月) 09:51:03GetLastErrorでアクセス拒否が返されるんですが、何が悪いですか。
ドライバ側:
(1) AddDeviceで IoRegisterDeviceInterface(PDO, &GUID, NULL, &IfName);
(2) IoSetDeviceInterfaceState(&IfName, TRUE);
ユーザプログラム側:
(1) SetupDiGetClassDevs
(2) SetupDiEnumDeviceInterfaces
(3) SetupDiGetDeviceInterfaceDetail(サイズ取得用)
(4) SetupDiGetDeviceInterfaceDetail(ifName取得用)
(5) CreateFile(ifDetail->DevicePath,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL, OPEN_EXISTING, 0, NULL);
ここで-1が返され、失敗。
GetLastError で FormatMessage すると「アクセスが拒否されました」
何が原因と考えられるんでしょうか。
ドライバ側では正常に返ってるし、ユーザ側も(5)以外は正常、
GUIDもドライバとユーザで一致してます。
infが悪い・・・?
0873デフォルトの名無しさん
2010/02/22(月) 09:52:56開発、動作とも WinXP で CheckBuild(6001.18002) で動作させてます。
0875872
2010/02/22(月) 10:59:39return CompleteIrp(Irp,STATUS_SUCCESS,0);
で記述してますが、その前のDebugPrintExが表示されないので
そもそもIRP_MJ_CREATE前の I/Oマネージャによるアクセス権限チェックで
弾かれてるような印象です。
0876デフォルトの名無しさん
2010/02/22(月) 22:56:350877872
2010/02/23(火) 08:29:56CreateFile( ifDetail->DevicePath,
GENERIC_READ,
0,
NULL, OPEN_EXISTING, 0, NULL);
にしてみましたが、ダメでした。
WinDDKサンプルの Toaster Bus だとうまく I/O できるので、
その辺の差異を見ないといけない・・・にしてもよくわからない。
0878872
2010/02/23(火) 08:34:14Toaster Bus だと inf で Registry にアクセス権の設定をして、
IoCreateDevice で FILE_DEVICE_SECURE_OPEN を指定してますが・・・
0879デフォルトの名無しさん
2010/02/23(火) 19:28:270880デフォルトの名無しさん
2010/02/23(火) 21:56:34単純にCreateFileするユーザーのアクセス権限で
Administrators指定して開けばいける気がする。
0881872
2010/02/24(水) 11:13:23あと CUI なプログラムなので、
(1) DOS窓開始ユーザを Administrator で実行して実行してみたり、
(2) Explorerから実行ファイル右クリックで別ユーザ→Administrator指定して実行してみたり
でも変わらずです。
Class が UNKNOWN なドライバだけどUpper や Lower がいるはずもないし・・・
うちのマシン環境が腐ってる・・・?OS入れ直ししてみた方がいいんでしょうか。
0882872
2010/02/24(水) 16:20:44CreateFile の 第1引数のパスの末尾に"\\" を追加するとうまくいきました
・・・が、そういう仕様ですか?
MSDN みてますが、第1引数 lpFileName の指定で特筆無いし・・・
本当に正しいのか良く分からないです。
0883デフォルトの名無しさん
2010/02/24(水) 19:52:08てかなんで\\を追加とかいう不可思議な発想に至ったのか
0884872
2010/02/24(水) 21:41:20Windows Vista デバイスドライバプログラミングの書籍にあるサンプルプログラムに
Detail で DevicePath を取得したあと \\hoge を追加したパスで
CreateFile してて、それだとうまくいきました。
んで、色々パスを試したら \\ を追加すれば
動くって所に(たまたま)行き着いた、ってトコです。
0885デフォルトの名無しさん
2010/02/25(木) 06:31:060887デフォルトの名無しさん
2010/02/25(木) 13:57:170888872
2010/02/25(木) 14:28:58結局今のPCの環境がおかしい・・・何が違うんだorz
OS入れなおしてみるか・・・。お騒がせ(?)しました。
0889872
2010/02/25(木) 14:42:18転載OKなんかな。
http://www.sbcr.jp/books/download/art.asp?newsid=2095
からダウンロードして展開できたソース 1-8\open_close_final\VistaSample2
をまんま使用。
どういう仕組みでメモリ破壊してるんでしょう??
■ このスレッドは過去ログ倉庫に格納されています