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. 最近の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? 俺、頭マヂ悪い >HEKY_CURRENT_USER 諦めれ。 つーかマニュアル読め中坊^o^ >HEKY_CURRENT_USER いるわけないやん・・・・。 レス3つも北。愛が伝わってきた。 厨房らしくサンプルソースにグレップかけて、いろいろ見てみた。 "\\Registry\\Machine\\Software\\TEST_01" の指定でとりあえず、HKEY_LOCAL_MACHINE以下にあるキーは取得できそう。 サンプルにHKEY_CURRENT_USER以下のレジストリを扱う処理がなかったと 思ったんけど、探しきれていない? "\\Registry\\User\CurrentUser\\ こんな感じだと思うんだけど、、、。 うまく開けない、、、。 教えてエロい人。 current userって誰を期待している? ここまで書いてもわかんないならあきらめろ。 ツンデレスアリガタス。 とりあえず、HKEY_LOCAL_MACHINE以下の可変長データ取得できるようになったお。 HKEY_CURRENT_USERは無理っぽいお。 みなさまの暖かい助言により、なんとか目的が達成できそうです。 チラ裏スマソ。 >>622 CURRENTとUSERを英和辞書で引いてみ 謎が氷解するだろう ハードウェアidや互換性idをデバイスマネージャで見ると PCI\VEN_102C&DEV_00E0&REV_04 PCI\VEN_102C&DEV_00E0 PCI\VEN_102C&DEV_00E0&CC_030000 PCI\VEN_102C&CC_030000 というふうに複数あったりしますが、 SetupDiGetDeviceRegistryPropertyで取得するとき どれが取れるかはどういう風に決まってるんでしょうか? デバイスマネージャで見れてるものが取得されるに決ってるじゃん >>624 SPDRP_HARDWAREIDのことを言っているのであればREG_MULTI_SZなので全部取れるはず。 >>625-626 文字列間に\0があるから最初のひとつしか取れてないと勘違いしてただけでした。 テレビーチューナーのドライバをx64用に作るのは難しい? ペンギンなら解析の情報はここにあるんだけど。 ttp://linux.paken.org/index.php?CX23416GYC-STVLP%A4%CE%B2%F2%C0%CF WDK のサンプル usbview を参考に USB デバイスを列挙するサンプルを書いてます。 WDK は C:\WinDDK\6001.18002 にインストールしています。 ttp://support.microsoft.com/default.aspx?scid=kb;JA;259695 を元に、SetupDiEnumDeviceInterfaces と SetupDiGetDeviceInterfaceDetail に変更しようとしているのですが、この場合は SetupDiGetClassDevs の 第一パラメータにクラス GUID を指定しないといけないようです。 そこで、enum.c にあるように「(LPGUID)&GUID_CLASS_USB_HOST_CONTROLLER」 を指定してみたのですが、リンクエラーになります。 GREP してたどってみると、 wdf.lib に実体があるようなので、C:\WinDDK\6001.18002\lib\wnet\i386 を ライブラリディレクトリに追加して #pragma comment(lib, "wdf.lib") を書き加えてみましたが、さらにたくさんのリンクエラーが出るようになりました (wdf.lib の未解決シンボル)。 どのように設定すればリンクできるのでしょうか。 ググっても情報が少ないので参ります…。 忘れてました。 コンパイラは Visual C++ 2005 です。 とりあえずコンソールアプリとして作っています。 >>632 どうも。 #pragma comment(lib, "setupapi.lib") は追加してあって、GUID_CLASS_USB_HOST_CONTROLLER を使わない SetupDi のサンプルはビルドできています。 エラーに出てくるシンボルを grep して、片っ端から追加してるんですが、 こんな方法しかないんでしょうか…。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる