WindowsDDK各種についてのスレ
■ このスレッドは過去ログ倉庫に格納されています
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. >>516 やりたい事は、可能だと思う。 直前のIRP_MJ_READ応答でIoCallDriverしたIRPをcancelし、 次のIRP_MJ_READ応答でIoCompleteRequestすると良い。 コレを安全に行うには、かなり手間がかかるだろうけど、懇切丁寧に教えはしない。 つまり、>>517 >>517-518 ありがとう。ちょっと読んでみてます。 あと、少し質問させてください。 IRP_MJ_READ(KbdClass)のWhen Sentの説明に The raw input thread in the Microsoft Win32 subsystem sends read requests to obtain keyboard input. とありますが、タイミング的には、決まったタイミングではなく、常に送られてきていると考えて良いですか? >>519 パンヤはやったことないのでよくわからないですが、 キーボードマクロ系のソフトの中身を実装してみたくなったので勉強してます。 kdで実際の動きを確かめようとしない奴がdriver開発なんでてきるのだろうか? まぁそうだね。出先で気になったもので。 家帰ったら確かめてみます。 >>520 完了すれば、即座に来ると考えて良い。 >キーボードマクロ系のソフトの中身を実装 特に拘りが無いならば、SendInputでお茶を濁すという手もある。 >>523 ようやく時間ができたのでいじってみました。 「完了すれば」という意味がなんとなくわかったような…。 好きなタイミングで擬似的にキー入力を発生させたいと思ってたんですが、少し難しそうですね。 ドライバをやってみたかったので、SendInputは使わない方向でやってます。 仮想ドライブマウントの3Keyの暗号化ツール作ってみようかと思ったけどデバドラがめんどくさそう… 事故るとOSごと吹っ飛びそうだし…(´・ω・`) RAMディスクで誤魔化すか… >>525 とりあえず、IFS Kit或いは相当品を使うと良い。 特定のdriveのみに処理を行うようにすれば、被害は抑えられる。 すみません32bitXPの開発ではWDKとDDKどっちを使うほうが良いですか? >>528 WDKはWindowsアプリ作成用、ドライバ作りたいんならDDKをインスコしる。 wdkってどっかの商品名とかじゃねえの?w あるいはひょっとしてwdmとddkがごっちゃになってるとかw WDF使いたいならWDK。使わないならどっちでもいい。 最近のPCは、シリアルがないですが、Windbgを使うための接続はどうすればいいんでしょう? >>529-533 フレームワークを使わないならddkのみで良いんですね、wdkがvistaから過去のまででDDKが2003serverから過去ので この場合wdkはvista用のRTM6000ので良いですか?それともベータの6001が良いですか? お勧めはどれですか?ddk2003server wdk6000 6001 >>537 32bit XPならどれでもいいよ。 WDKのサンプルはWDMからWDFになっているからDDKと両方入れて サンプルを比較してみるのもいいと思う。 (多分最新の)DDKに入ってるcl.exeでhello worldがリンクできません。 setenv.bat呼んでcl.exe実行するとなんか最初libc.libがないとか出たので、 環境変数のLIBRARYにdrive:\ddk〜lib\winxpを追加してちょっと 進みました。けど今度は__secure_check_cookieがリンクできないとか出ます。 これって何でしょう? ソースは #include <stdio.h> main() { printf("Hello, world.\n"); } これだけです。 エラーメッセージは今出張先なので、明日まで貼れません(すいません) ともかく__secure_check_cookieがどうとかいうエラーが出ます。 (typoあるかもしれません) わかんないならTARGETTYPE=PROGRAMになっている サンプルを参考にしてmakefileとsourcesを書け。 1394のドライバってどうやって作れば良いですか? DDKのサンプルの1394ドライバを参考にテキトーにいじってみたら? >DDKのサンプルの1394ドライバ \WINDDK\2600.1106\src\wdm\1394 あ、これですか? WDKでいろいろいじってる奴いる? \src\video\r200sampleをビルドしてみたんだが、 Vistaでインストール後、画面プロパティに表示されん。 x86のinfファイルは認識してくれなかったので、mirrorのinf参考にいじってインストしたせいなのか? PENDING中にCloseするとCloseのIRPがこないのですが、回避策はなにかありませんか? その手のモノを作った事は無いけど、IoSetCancelRoutine。 >549 ありがとうございます ですが、IoSetCancelRoutineを呼び出すトリガがないのです クローズが来ないので・・・ IRP_MJ_CLEANUP、これも違うなら、見当が付かない。 IRP_MJ_CLEANUPを実装してみましたが、 Closeと同じようにPendingしているIRPを終了させないと IRP_MJ_CLEANUPは届きませんでした Pendingしたら次のIRPが届くようにすればよさそうな感じですが なにかいい方法は無いでしょうか? KMDFドライバをスタートさせるには OpenSCManager=>CreateService=>StartServiceではスタートできないのでしょうか USBドライバ作ろうと思うんですが、 bulkusbのサンプルを改編すれば、 USBのチップに関係無く作れますか? >>556 作れる >>557 何が聞きたいのかワカラン 定義済みデバイスクラスに属さない独自デバイスなら (ドライバを作成する必要があるから独自デバイスなんだろうけど) 独自デバイスクラスを定義することになる。 guidgen.exeなんかに吐かせたGUIDを使っておk。 x64ホストだと16ビットツールのインストールを選択できないんだがどうにかならないものか ツール自体は32ビットアプリだからx64ホストでもちゃんと動くのに。 仕方ないから32ビット環境にインストールしてコピーしてるんだが USBドライバって、みなさんVista対応で作り直されてるんですか? Win9XとWinNTでドライバモデルが変わったのはよしとして、 Vistaでさらにドライバモデルが発生して苗orz 作り直さなくてもVistaで動いたよ。 作り直すんだったら、WinUSB使った方がよさげ。 ttp://www.microsoft.com/japan/whdc/connect/usb/winusb_howto.mspx これのこと? WunUSBなんてハツミミですが、何モノで、何が良いんだ? >>566 MS謹製の汎用USBドライバ これを介して、自作デバイス用のドライバをユーザモードで書ける ドライバがユーザモードで動くから、Vista x64でデジタル署名しなくてもおk さんkす>>567 uusbd.sys ってのと用途は競合してるようですね。 でもVista 64bitで楽になるわけですか。 機能的にもWinUSBはマターク遜色無しですか? 例えば、Win側でのパケットサイズが小さ杉ないとか。 なんだか、LibUSB ってのもあるようですね。Linuxでも使えるとか。 乱立しててワケワカメ。 LibUSBとかは64bit用には出ないんじゃないの?(証明書買わないだろうし) フリー系ドライバを根絶する気か>MS LibUSBというユーザーが、代表して証明書買うんじゃないの? 寄付金募って。 みなさん、WinUSB使われてんですか? UMDFは2000で使えないから、 テスト的にドライバ作ってみただけで、今のところ使うつもりないかなぁ Vista x64用ドライバ出せって言われたら、これで済ませてしまうかも知れんがw ところで、 ・UUSBD.DLL ・WinUSB ・LibUSB のどれがお勧めですか? USBのinfファイル記述の文法はどこを見れば分かりますか? >>574 WDKのbulkusbのサンプルみれば良いんじゃない? GenInfはあるけど、EditInfは無いんでつね。 >Signature="$Windows NT$" >Provider=%Company% $とか%てなんなん? >>576-578 infについて知りたいっていうならMSDNだろ・・・jk サンクス>>581 > >>575 WDKのbulkusbのサンプル このサンプル弄ったとして、GUIDは変えないとマズイ? ドライバ作成中に間違って、 >C:\WINDOWS\system32\drivers フォルダを空っぽにしてしまいましたorz ドライバが無いせいで内蔵CD-ROMを認識しなくなったのですが、 どうすれば良いでしょう? WinXPインスコCDのイメージをハードディスクに落して、 setup.exeを実行して「Windows XP をインストールする」 を行いましたが、 「コンピュータの Windows のバージョンが CD に収録されているバージョンより新しいた め、セットアップを続行できません。」エラーです。 ドライバディスクにもないので、Windows標準ドライバなんでしょうが、 インストロールできません(><;) ドライバ作るくらいなら、PC起動しなくなるくらいよくある話し 1つ賢くなったということで、Windows再インストールしとけ ここって質問してええんかな? 今までDDKでコンパイルしていたドライバが WDKでコンパイルするとafxres.hが見つからないというエラーが出て、 それは#include "afxres.h"をフルパスで宣言すれば回避できるのは分かるんだが 普通にコンパイル時になめるパスを追加できればいいんじゃ?と 誰かそういうパスの追加方法知らない? >>587 sourcesファイルに、INCLUDESあるだろーからそこに足せばいいだけじゃね? >>588 >>587 だが、ありがとん。 sourcesファイルにINCLUDES=$(BASEDIR)\inc\mfc42; と追加したらできた。 ただ、既にINCLUDES=$(BASEDIR)\inc;という 宣言はしていたのにそこの下位フォルダのmfc42フォルダが WDKから見えなくなったってのは結構不思議だ。 __halt のような組み込み関数を拡張子cppのファイルから呼び出そうとすると '__halt': identifier not found とコンパイルエラーになってしまいます。 拡張子cからはそのまま呼び出せるのですが、C++から直接呼び出すことは可能でしょうか? 方法があれば教えていただけると嬉しいです ttp://www.hsjp.net/upload/index.html up48941.zip (←例としてのソース) バージョンは 6001.18001 です :環境 VC++2005pro WDK 6001.18001 :やりたいこと サンプルソース UsbViewをコンパイルしたい。 (USBからシリアルコードをひっぱりたい)\WINDDK\6001.18001\src\usb\usbview :やったこと 新規プロジェクト作成>Win32>Win32プロジェクト>空のプロジェクト プロジェクト>プロパティ>リンカ>コマンドライン CFGMGR32.LIB COMCTL32.LIB setupapi.lib を追加 ツール>オプション>プロジェクトおよびソリューション>VC++ディレクトリ ディレクトリを表示するプロジェクト>インクルードファイル> C:\WINDDK\6001.18001\inc\api C:\WINDDK\6001.18001\inc\crt を追加 ディレクトリを表示するプロジェクト>ライブラリファイル> C:\WINDDK\6001.18001\lib\wlh を追加 :エラー エラー #include <version.h> が見つかりません。 警告が200以上、、、。 warning C4133: '関数' : 'CHAR [数字]' と 'LPCWSTR' の間で型に互換性がありません。 :わからないこと エラーをなくしたいのと、恐らく間違っているであろう開発環境を正しく設定したい、、、orz :参考URL http://slashdot.jp/ ~fslasht/journal/391690 >>592 プログラム>Windows Driver Kits>WDK 6001.18001>Build Environments>好きな環境選べ コンソールが開いたら CD \WINDDK\6001.18001\src\usb\usbview nmake >>593 レス遅くなってすみません。 サンクスです。 コンパイル通りました。 質問: 1. ○○.sys のドライバをリソースとして実行ファイルに組み込むことは可能ですか? 2. 1が可能な場合 FindResource関数にリソースタイプ(RT_○○)の正しい値がわからない。 1について わからないところ: リソースファイル(○○.sys)をCreateService(にかわるもの)にわたしたいが、なにか適当な関数が見つからない。 2について わからないところ: リソースの読み込みは HRSRC hres = FindResource( GetModuleHandle(NULL), in_path, RT_STRING ); HGLOBAL hmem = LoadResource( GetModuleHandle(NULL), hres ); char *lplock = static_cast< char * >( LockResource( hmem ) ); でやっています。 FindResourceのリソースタイプ(RT_STRING)があっているのか不安。 RT_STRINGとしてリソースにしたなら、RT_STRINGでFindResourceするしかないだろ。 どっちかというとRT_RCDATAのほうがふさわしいと思う。 >>596 さっそくのレスありがとうございます。 RT_RCDATA を使って読み込んでみます。 今VC++2005を使っているのですが、 ソリューションエクスプローラー>○○.sysをクリック> ファイルのプロパティ>ファイルの種類をRCファイルに設定で大丈夫でしょうか? >>597 こんな時間にレスサンクスです。 リソース扱ったことないです、、、orz。 char *lplock = static_cast< char * >( LockResource( hmem ) ); から相変わらず、CreateServiceに値を渡す方法がわかりません。 (CreateServiceに代わる関数が見つかりません、、、orz) GetSystemDirectoryでpathを取って、そこのdrivers直下にでも書き出せば良い。 >>600 レスサンクスです。 1度ファイルに書き出してから、やってみたいと思います。 GetSystemDirectory関数は初めて知りました。 貴重な情報ありがとうございます。 質問:STLのvectorが使いたい。 環境: MFC(VC++2005Pro)で現在開発しています。 プロジェクト>プロパティ>構成プロパティ>C/C++>全般 追加のインクルードディレクトリで以下を設定しています。 C:\WINDDK\6001.18001\inc\crt C:\WINDDK\6001.18001\inc\api エラー: #include <vector>を行うと、 c:\program files\microsoft visual studio 8\vc\include\iosfwd(34) : error C2146: 構文エラー : ';' が、識別子 'fpos_t' の前に必要です。 以下、とんでもない数のエラーが出ます。 解決のため、なにかしらヒントなりいただければと思います。 MFC()笑 とりあえず、makefileでやるべき。 先生方、(フィルタ)ドライバ側からレジストリキー読んだり、 書き込んだりする関数についてサイト、書籍知ってたら教えてください。 ttp://www5a.biglobe.ne.jp/~crab/winddk/kernel/index/index01.html とりあえず↑を見つけたのだがよくわかんね。 ZwOpenKey使いたいんですが、失敗します。 RtlInitUnicodeString( &RegPath, REG_KEY_PATH ); InitializeObjectAttributes( &Attr, &RegPath, OBJ_CASE_INSENSITIVE, NULL, NULL ); 恐らく、↑でパスの指定ミスってると思うんですが、 #define REG_PATH L"\\HEKY_CURRENT_USER\\Software\\TEST_01" ってやったらダメだったのですが、正しくはどのように書くんでしょうか? レスアリガタス。 ZwEnumerateValueKey使ってキーの値を取得したいんですが、 その場合、キーの指定っていうのはどうやるんすか? ZwEnumerateKeyで列挙してから使うんでつか? >>612 >キーの指定 ZwCreateKey kernelModeで列挙っていうのは、どうも嫌なモノを作ろうとしているように見える。 >>613 レスアリガタス。 頭悪いんでまとめると、キーを指定して値とりたい場合っつーのは、 ZwOpenKey使わないで、ZwCreateKey使えでFA? ZwCreateKeyの第2引数は、\\HEKY_CURRENT_USER\\Software\\TEST_01指定でOK? >kernelModeで列挙っていうのは、どうも嫌なモノを作ろうとしているように見える。 ZwEnumerateValueKey使うのは、レジストリのキーの値を取得する関数を他にシラネからです。 レジストリに書き込んである値はインストールパスとインストールした日付です。 Windowsアプリで言う、SHRegGetUSValue関数みたいなのがあればいいのだが、 見つからなかったっす。 スマソ。間違えた。 >>614 間違い >ZwCreateKeyの第2引数は、\\HEKY_CURRENT_USER\\Software\\TEST_01指定でOK? 訂正 ZwCreateKeyの第2引数は、KEY_QUERY_VALUE指定して、InitializeObjectAttributes関数でのパスの指定で \\HEKY_CURRENT_USER\\Software\\TEST_01指定でOK? 俺、頭マヂ悪い ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる