問題タブ [device-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
device-driver - FreeBSDドライバーのデバッグ支援(イーサネットの問題)
pfSense(FreeBSD distro)をインストールしたばかりで、イーサネットアダプタに問題があります-ARPテーブルなどがすべて正しいにもかかわらず、マシンにpingを送信できない状態にすることができるようです。 (pingを実行しているマシンでは、パケットが到着し、応答がWiresharkで送信されているのを確認できますが、リモートマシンは何も取得しません)
OS開発に興味があり、知識が限られているので、これをデバッグしてみたいと思いますが、多くの点で、どこから始めればよいのかよくわかりません。
- 使用しているドライバーのソースコードを取得するにはどうすればよいですか?それらはFreeBSDソースコードの一部になるのでしょうか、それとも外部プロジェクトがあるのでしょうか?(または、私が使用しているドライバーは、Realtekによってリリースされた独自のドライバーである可能性が高いため、ソースコードがありません)
- さらに言えば、現在使用しているドライバーを特定するにはどうすればよいですか?
- 最後に、カーネルレベル/デバイスドライバーをデバッグする方法に関する優れたリソースはありますか?
(ばかげた質問をしている場合、またはこれをデバッグすることで達成したいことについて過度に楽観的であると思われる場合は、お詫びしますが、この分野での経験はありませんが、自分は賢い人だと思っており、始めなければなりませんどこか!)
security - 安全な「1回限りの」ローカルファイルアクセスシステムを実装/使用するにはどうすればよいですか?
安全な「1回限りの」ローカルファイルアクセスシステムを知っている人はいますか?または、どのように作成するのでしょうか。システムでデータを使用する場合は、データを読み取ることができなければならないことは理解していますが、データの利用方法を厳しく制限し、他の場所にコピーして使用する可能性を減らすことができると思います。
これらは私の要件です:
「安全な/暗号化された」データファイルをUSBスティック(読み取り専用のCD / DVDでもかまいませんが、読み取り/書き込みUSBまたはフロッピーの場合はより良い)に保存し、このファイルを1回読み取ることができるようにします(および主に1回のみ)、デコードされたブロックごとに、パスワードが入力された後。ファイルの内容はおそらく基本的なtext/xml(またはテキストでエンコードされたデータ)であり、主にシーケンシャルストリームとして読み取られます。データは(理想的には)通常のWindowsファイルアクセス方法で読み取ることができます。つまり、stdファイル、FSOオブジェクト(ストリームおよびテキストファイル)、すべてのBASIC PC(VB6 / VB.NET)ファイル処理方法、さらにはExcelテキスト(インポート)。はい、私はこれがおそらくオブジェクトを打ち負かすことを知っています(そのようなファイルはその後開く/保存することができるので)、しかし私はまだこの可能性を望んでいます。最後に、「アクセス」基準が満たされると、デバイスはそれ以上のアクセスを防ぎます。
データへのアクセスは、ローカルPCシステムでのみ行われます。LAN、デバイス共有はサポートされていません。デバイス上のデータは、通常の方法でコピーできないようにする必要があります。データは、可能であれば通常の方法を使用して、または必要に応じて特別なアプリケーションを使用してデバイスに書き込まれます。
物事を単純にするために、1つのパスワード、1つのファイル、1つの使用、および1つのユーザーだけが素晴らしいでしょうが、他の可能な拡張機能には次のものがあります。
- 'n'を許可すると開きます
- 複数のパスワードを持っている2人以上のユーザー、個別に行動する
- サイロパスワード、アクセスを取得するためにさらに2人のユーザーが一緒に署名する(または、アクセスを取得するためにm人以上のユーザーから少なくともn人が一緒に署名する)
- 最初のブロックを呼び出すアプリケーションとは関係なく、最初のブロックアクセス時にパスワードプロンプトを表示する必要があります
- パスワードは埋め込み/自動である可能性があります
- 指定されたマシン/mac/ ip / diskシリアル番号(または他のマシンコード)にアクセスを結び付けます
- 指名されたプログラム/アプリケーションへのアクセスを結び付ける
- 可能であれば、データファイルを削除して安全に上書きします
これを行う際の私の最初の推測は、stdリムーバブルデバイスドライバーの拡張(または置換)として表示される「疑似デバイス」ドライバーが必要であることを示唆しています。ドライバーは、各ファイルブロックをセクターごとに処理し、許可されていない場合は、さらにデコードされたブロックのサーバーを拒否します。デバイスは通常のディレクトリリストを提供するべきではありませんが、何らかの形式のコンテンツ要約がユーザーに提供される場合があります(オプション)。
DRMシステムとは異なり、私はいかなる形式のオンラインアクセス/認証も望んでいません(しかしそれを考慮します)、私は自己完結型のシステムを好みます。
私はそのようなデバイス/システムを長く懸命に探してきましたが、まだ見つけていません。ほとんどのデバイスとシステムツール(例:Iomega / ironkey)は、ファイルへのアクセスのロックを解除しているように見えますが、制限はありません。
パフォーマンスは問題ではありません。フロッピーの読み取り速度が遅い場合は問題ありません。Encyptionメソッドは不可知論者であり、適度に強力な40ビット以上(128ビット)であれば問題ありません。データが何であるか、またはその目的を伝えることはできません。誰かにデータを提供し、その使用を可能な限り制限し、彼らがそれを使って何ができるかを制限する方法が必要です。機密データを保護するための実際の要件であり、DRMやMP3/ビデオなどを対象としたものではありません。
私は「オフィス」開発者であり、デバイスドライバーやDRMにあまり詳しくありません。では、このようなプロジェクトをどこから始めればよいでしょうか。joe-publicが利用できるものはありますか?
ありがとう-ティム。
PS:更新
私は自分たちと特定の指定された単一のサービスプロバイダーとの間でデータを渡したいだけであることを指摘する必要があります。私たちが提供するデータを彼らにコピーしてほしくない。これは、「単一の」1回限りのプロセスをサポートするために一度使用され、その後で実行されます。データは「ストリーミング/読み取り」されるため、「消費」する必要があります。プロセスが失敗した場合、サービスプロバイダーにデータを再発行します。データは当社の所有物であり、販売/ライセンス供与されていません。
絶対確実な解決策はないことは承知していますが、リスクと報酬の比率によって、システムを壊そうとする偶然の試みを思いとどまらせる必要があります。データには明確な商業的価値はありません。
PPS:それは本当の要件です...あなたはどうしますか?
@eriksonsの思慮深い回答に対する賛成票から判断すると、皆さんは「不可能/気にしないでください」と言っていますが、データが私たちの希望に従って使用されることを個人的に監督することは別として、あなたはどうしますか?
winapi - IOCTL を上位フィルター ドライバー (kbfiltr/moufiltr) に送信してデバイスを有効/無効にする Raw PDO
私はドライバー開発にまったく慣れておらず、キーボードまたはマウスデバイスを有効または無効にする単純なフィルタードライバーを作成しようとしています。動作させることができれば、マウスが接続されているときにラップトップのタッチパッドを無効にするために使用したいと考えています。おそらくこれを行うソフトウェアが既に存在することはわかっていますが、デバイスドライバーに本当に興味があり、これを自分で行う方法を学びます。
私は、上位フィルター ドライバーとしてインストールされた、WDK に同梱されているkbfiltrとmoufiltrの例を使用しています。kbfiltr の例では、ユーザーモード プログラムによって列挙および接続できる pdo が作成されます。これにより、KbFilter_EvtIoDeviceControlForRawPdoによって処理される PDO に IOCTL を送信できます。ただし、 KbFilter_EvtIoInternalDeviceControlを呼び出すなど、フィルター ドライバーに関連することを試してみると、次のようなことができます。
BSOD が発生します。上記のコードではありません。バニラの例では、null への設定がコメント アウトされています。Kbfilter を呼び出すだけで BSOD が発生します。デバイス拡張機能を PDO で直接設定しようとしましたが、これも BSOD の原因になります。これはおそらく、kbfiltr ではなく PDO devExt であるためでしょうか?
(関連: BSOD からスタック トレースを取得する良い方法は何ですか? テスト環境として Virtual PC を使用し、XPSP3 の未チェックのビルドを使用しています)
IOCTL_INTERNAL_KEYBOARD_DISCONNECT をドライバー スタックに直接送信することはできません (入力デバイスは一度に 1 つの接続のみを受け入れることを理解していますか?) したがって、生の PDO が必要です。実際には 2 つの IOCTL (有効化と無効化) を送信するだけで済み、これらは既に定義されているため、キーボードの切断と接続を使用するだけでよいと考えました。
これらの仮定のいずれかについて間違っている場合は、お知らせください。私は本当に初心者であることを知っていますが、PDO を介したこの種の通信に関する多くのドキュメントは見つかりませんでした。
filesystems - ファイルシステムの read() I/O のプロセス (およびサブプロセス) を監視する最良の方法は?
次のように機能するコマンドラインプログラムを開発したいと思います。
myprogram /c [some_executable_here]
ユーザーが指定したコマンドを起動し、読み取りI / Oのプロセス(およびサブプロセス)を「監視」し、そのプログラムが終了すると、「読み取られた」ファイルのリストを出力します(最終的に read()システムコール)。
私の最初の実装 OS は Windows ですが、Linux でも同様のことを行いたいと考えています。
私がこれまで見てきたすべての FileSystem ウォッチのような API は、プロセスではなく、ディレクトリ (または個々のファイル) を監視することを目的としているため、これを行う最善の方法が何であるかはわかりません。
編集: Windows と Linux でこれを行うために、最終的にこれを実装する方法 (または少なくとも従うことができる API へのポインター) のコード例を探しています。
また、明確にするために、OpendFilesView、procmon、または実行の最初と最後から ID (およびサブプロセス) によってプロセスを明確に識別できないシステムレベルのツールからの grep 文字列などのメソッドを使用することはできません。 ; 「foo.exe」を検索して間違ったものを取得することにより、タイミングの問題が発生したり、誤検知が発生したりする可能性はありません。
linux - /dev/ のデバイスを実際のドライバーに関連付ける方法
Linuxでデバイスドライバーがどのように機能するかを理解しようとしています。
次のようなデバイス ノードがあります (メジャー番号 89、デバイス名 i2c-0)
/li>名前の付いた i2c ドライバーがあり、起動時
i2c.ko
に実行します。insmod i2c.ko
driver では、初期化中に次の関数が呼び出されます。
/li>
私の質問は次のとおりです。ユーザーが呼び出すときopen("/dev/i2c-0", O_RDWR)
、カーネルはどのドライバーを使用するかをどのように認識しますか? デバイス名は ですi2c-0
が、登録されているデバイス名はi2c
です。カーネルが正しいドライバーを使用できるのは、それらが同じメジャー番号を使用しているからですか?
flash - Web ポータルを介した周辺機器との対話
わかりました、これはばかげた質問だと確信しているので、事前にお詫び申し上げます。
私は ActiveX を使ったことは一度もありませんし、Flash/Silverlight を使って何ができるかについても行き詰まったことはありません。
私が本当に求めているのは次のようなことだと思います: 非標準のデバイス、つまりバーコード リーダーが接続されたマシンを使用している場合。オフラインでインストール可能なソフトウェアを介してこのデバイスにアクセスする唯一の方法はありますか?
乾杯、クリス。
windows-xp - WindowsXPにデバイスドライバをサイレントインストールします
catファイルなしでWindowsXPにデバイスを接続せずに、プログラムでデバイスドライバーをサイレントインストールする方法はありますか?
WindowsDriverKitのDriverPackageInstall関数を使用しています。また、デバイスが接続されている場合にのみドライバをインストールできます。それ以外の場合は、ERROR_NO_SUCH_DEVINSTというエラーが発生します。ただし、この方法はWindowsVistaでは正常に機能します。
もう1つの問題は、catファイルがないためにインストールを続行または停止するようにユーザーに求める警告ダイアログです。両方のOSに表示されます。
何か案は?
device-driver - NDIS または TDI ドライバーの作成を学びたい
このような C で書かれたドライバーの開発を段階的に説明している良い本を提案できる人はいますか? 初心者向けの本を探しています。これを行う方法について、プロセスを一から説明しているオンライン リソースがある場合は、非常に高く評価されます。
c - デバイスドライバとそれが制御するFPGA間でレジスタとビットフィールドの定義を共有する方法
VHDLからのビット定義だけでなくレジスタオフセット用の適切な#defineを含むCヘッダーファイルの生成を支援するために利用できる優れた既存のソフトウェアツールはありますか?そのようなツールが存在する場合、それらにVHDLにどのような制限を課し、エクスポートする必要があるものをどのように指定しますか?
これまでのところ、これらのツールを見つけましたが、私が探しているものとは異なります。
これらのツールに基づいて、適切なワークフローがVHDL(おそらくコメントに追加のタグを含む)からCに直接移動しようとするのではなく、CとVHDLの両方を生成することであるかどうかにも興味があります。