問題タブ [systems-programming]

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.

0 投票する
1 に答える
635 参照

winapi - VC++ でハードディスクの隠しパーティションを取得する方法は?

VC++ でハードディスクの隠しパーティションを取得する方法は?

0 投票する
1 に答える
59 参照

windows - ボリューム添付通知を受け取るにはどうすればよいですか

ボリュームがファイルシステムに接続されている場合、Windowsでは
、ウィンドウエクスプローラーがボリュームを検出し、自動的に更新します。

テクニックだろうか。
プログラム(デバイスドライバーを含む)はどのように通知を受け取りますか?
-もちろん、それはポーリングを意味するものではありません。イベント(またはメッセージ)を取得したい。

ネットワークボリューム(SMBなど)が接続されたときに通知を受け取りたいのですが。
前もって感謝します。

0 投票する
2 に答える
2767 参照

c++ - C ++プログラムから(Windows XPで)キーボード割り込みを変更するにはどうすればよいですか?

  • キーボード入力を変更するWindowsプログラムを作成するための小さなプロジェクト(私のOSコースの一部として)が与えられました。これにより、入力された小文字を大文字に変換します(caps-lockを使用せずに)。したがって、キーボードで入力すると、入力内容が大文字に変換されて表示されます。

    • geninterrupt()を呼び出し、変数_AH、_ALを使用して、Turbo Cを使用してこれを非常に簡単に実行しました。次を使用して、文字を読み取る必要がありました。

      _AH = 0x07; //エコーなしで文字を読み取るgeninterrupt(0x21); //割り込みを行います

    • 次に、それを大文字に変換するには、次を使用して5番目のビットをマスクする必要があります。

      _AL = _AL&0xDF; //入力した文字を11011111でマスクします

    • 次に、任意の出力ルーチンを使用して文字を表示します。

現在、このソリューションは古いCDOSコンパイラでのみ機能します。しかし、私たちがやろうとしているのは、WindowsXPで最新のC/ C ++コンパイラを使用して、これに近いまたは同様のソリューションを作成することです。私が最初に考えたのは、キーボードISRを変更して、入力された文字の5番目のビットをマスクして大文字にすることです。しかし、私はこれを正確に行う方法がわかりません。次に、Win32コンソールプログラムを作成して、同じソリューションを実行するか(ただし、役に立たない)、Windows互換のソリューションを作成したかったのですが、使用する関数がわかりません。第三に、自分のニーズに合わせてISRを直接変更するWindowsプログラムを作成しようと思いました。そして私はまだこれを行う方法を探しています!

どうぞよろしくお願いします。これについて私を助けていただければ幸いです。

前もって感謝します !

(私はmingw-GCCコンパイラを搭載したIntelX86でWindowsXPを使用しています。)

0 投票する
5 に答える
2555 参照

linux - Linux システム プログラミング

私は Linux のシステム プログラミングに入りたいと思っており、それにアプローチする方法とどこから始めればよいかを知りたいと思っていました。私は Web 開発のバックグラウンド (Python、PHP) を持っていますが、C と C++ も多少知っています。

基本的に、私は知りたいです:

  1. どの言語を学び、追求する必要がありますか (主に C と C++ だと思います)?
  2. システム プログラミングに固有の言語をどこでどのように学習しますか? 書籍、ウェブサイト、ブログ、チュートリアルなど
  3. これを基本から始めることができる他の良い場所はありますか?
  4. そもそも良いライブラリはありますか?
  5. どのような環境設定 (または概算) が必要ですか? Linuxがそこにある必要があると仮定しますが、GUIを使用してログインすることはめったにないLinuxボックスがあります(常にSSHを使用します)。GUI の方がはるかに便利ですか、それとも VI エディタで十分ですか? (質問のこの部分がserverfault.comに行くべきかどうか教えてください

PS: 明確にするために、システム プログラミングとは、デバイス ドライバー、システム ツールの作成、Linux プラットフォームには存在しないが他のプラットフォームには存在するネイティブ アプリケーションの作成、Linux カーネルの操作などを意味します。

0 投票する
2 に答える
2105 参照

operating-system - 2 つのプロセス間の通信手段としてファイルを使用することの欠点は何ですか?

パフォーマンス上の理由から改善が必要なレガシー コードがあります。私のアプリケーションは、特定の情報を交換する必要がある 2 つの実行可能ファイルで構成されています。従来のコードでは、1 つの exe がファイルに書き込み (ファイル名は引数として exe に渡されます)、2 番目の実行可能ファイルは最初にそのようなファイルが存在するかどうかを確認します。存在しない場合は再度チェックし、見つかった場合はファイルの内容を読み取ります。このようにして、2 つの実行可能ファイル間で情報が転送されます。コードが構造化されている方法では、2 番目の実行可能ファイルは最初の試行自体で成功します。

今、私はこのコードをクリーンアップする必要があり、パイプのようなプロセス間通信ではなく、ファイルを通信手段として使用することの欠点は何だろうと思っていました.ファイルを開いて読み取るのは、パイプよりも高価ですか? 他にデメリットはありますか?そして、パフォーマンスの低下はどれほど重要だと思いますか。

レガシー コードは、Windows と Linux の両方で実行されます。

0 投票する
1 に答える
1163 参照

macos - OSXネットワークサービスの接続ステータスをプログラムで取得するにはどうすればよいですか?

OS Xのシステム環境設定で、「ネットワーク」をクリックすると、「イーサネット」の横に緑色の点が表示され、「AirPort」と「FireWire」の横に赤い点が表示されます。これは、イーサネット経由でネットワークとインターネットにアクセスするときに、AirPortとFireWireをオフにしたためです。

システム環境設定に表示されるこれらのネットワークサービスのどれに緑色の点があり、どれに赤い点があるかをプログラムで判断する必要があります。イーサネットおよびFireWireの場合、表示されるステータスは「接続済み」または「未接続」であり、AirPortの場合、表示されるステータスは「オン」または「オフ」です。おそらく、他のネットワークサービスには他のステータスラベルがあります。

'/Library/Preferences/SystemConfiguration'内のすべてのplistファイル、特に'preferences.plist'と'NetworkInterfaces.plist'を選択しました。ロケーションセット、ネットワークサービスの順序、プロキシ情報(これも私のタスクにとって重要です)など、あらゆる種類の情報を取得できますが、特定のネットワークサービスがオンかオフかを判断する方法がわかりません。緑のドットを表示するのと同じです。

また、システム構成フレームワーク、特にSCNetworkConnectionGetStatus関数を使用してみましたが、取得するのは無効な接続ステータスだけです。

この接続ステータス情報を実際に取得する方法を知っている人はいますか?

ありがとう。

0 投票する
1 に答える
5080 参照

.net - Windows でプログラムによって USB デバイスを再起動する

私が開発している一部のソフトウェアには、USB デバイスが必要です (これは、USB-to-UART ブリッジを使用して、SerialPort としてやり取りします)。

コンピューターを休止状態から再起動した後、デバイスが検出されず、シリアル ポートを介してデバイスへの書き込みや読み取りができなくなることがあります。デバイスへの読み取り/書き込みアクセスが必要です。

ユーザーが何らかのアクション (物理的またはその他) を実行することに依存できないため、プログラムでデバイスを再起動する方法が必要です。

.NET フレームワークを使用して、Windows XP/Vista/7 でプログラムによって USB デバイスを再起動するにはどうすればよいですか?

0 投票する
2 に答える
309 参照

c - マイクロ最適化: フラグ/ブール型に intptr_t を使用

私が理解していることから、 intptr_t の定義はアーキテクチャによって異なります-プロセスのすべての均一なアドレス空間にアクセスできるポインターを表す能力があることが保証されています。

Nginx (人気のあるオープン ソース Web サーバー) は、フラグ (ブール値) として使用される型を定義し、これは への typedefintptr_tです。例として x86-64 アーキテクチャを使用すると、すべてのサイズのオペランドをカバーする大量の命令にアクセスできますが、なぜフラグを intptr_t に定義するのでしょうか。確かに、32 ビットの bool 型を使用するという伝統も同様に法案に適合するでしょうか?

私は32ビットのVを超えました。私が新しい開発者だったとき、8 ビット bools は自分自身を議論し、結論は、プロセッサ設計の複雑さのために、一般的なケースでは 32 ビット bool の方がパフォーマンスが優れているというものでした。では、なぜ 64 ビット bools に移行する必要があるのでしょうか?

0 投票する
2 に答える
1059 参照

c - Windows 上の libeio

libeioを Windowsに移植するには何が必要でしょうか?

0 投票する
2 に答える
933 参照

linux - Unixドメインソケットを介した構造体の送信

Linuxでプロセス間通信を行うためにUnixドメインソケットを使用しています。接続時に、クライアントはsendを使用して構造体をサーバーに送信します。この構造体には、最後に識別子文字列を含むクライアントに関する情報が含まれています。サーバーは、検索した情報を受信し、別の構造体を送り返します。クライアントはrecvでブロックしますが、何も取得しません。サーバーはエラーなしで送信呼び出しを完了し、次に進みます。

私がここで見逃している基本的なものはありますか?ソケットを介して文字列を送信すると、両側で送受信が正常に行われます。データには終了NULLが必要ですか?それは正しくないようです...