問題タブ [windows-nt]
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.
c++ - Windows NT Native API に関する最新の書籍や Web サイトはありますか?
NT には、"ネイティブ API" と呼ばれるほとんど文書化されていない API があります。この API には、共通のサブシステム (つまり、Windows API、OS/2 API、および POSIX (現在は通常 " Interix " と呼ばれます) サブシステム) が実装されています。
この API を文書化しようとする書籍や Web サイトがいくつかあります。
- これらの関数のいくつかは、Windows Driver Kitに記載されています。
- Undocumented Windows 2000 Secrets, A Programmers Cookbook, Sven V. Schreiber 著
- 文書化されていない NTernals
- Windows NT/2000 ネイティブ API リファレンス、Gary Nebbett 著
- NirSoft の Windows Vista カーネル構造
残念ながら、64 ビット バージョンの Windows に触れようとしている書籍や Web サイトは 1 つもありません (もちろん WDK は除きますが、WDK には制限があります...)。API 呼び出し自体は同じです。大きな問題は、構造定義自体に関係しています。つまり、ポインター値と DWORD は 32 ビット プラットフォームでは同じサイズですが、x64 プラットフォームでは異なります。したがって、DWORD の配列として定義されることが多い構造の「不明なパディング」ビットは、x64 ウィンドウでは正しくなく、結果は完全にゴミになります。
API呼び出しごとに手動で追加のパディングを追加することで、これらの種類のことを手動で回避してきましたが、これは本当にイライラしています.必要に応じて DWORD の代わりにポインターを使用して、1 つの構造定義で 32 ビットと 64 ビットの両方の Windows に対応できるようにします。
そのようなリソースは存在しますか?
windows - 私は自分のコンソールを所有していますか、それとも親から継承しましたか?
CreateProcess 内で新しく割り当てられたコンソールとは対照的に、NT キャラクター モード アプリケーションは、そのコンソールが親プロセスから継承されているかどうかをどのように判断できますか?
うわー、人気のないタグ!適切なプログラマーを引き付けるためのウィンドウの追加
@anonymous downvoter: いくつかのフィードバックのみに基づいて、この質問を限定的に拡張できます。不明な点を述べてください (ただし、Windows カーネルとサブシステムに精通している必要があります)。ここにいる私たちの多くはプログラマーであるため、私たちのユーモアは非常に具体的であり、タイトルの駄洒落を過度に判断しないでください。
kernel - コマンドとプログラムはどのように Windows OS と通信しますか
Windows 用に作成されたプログラムは、どのように Windows NT のカーネルと対話したり、コマンドを発行したりするのですか?
また、カーネルはどのようにデータを返しますか?
windows-ce - MMF (排他的/非共有メモリ マップ ファイル)
私たちのアプリケーションは WinCE5.0 で動作します (.net cf で書かれています)
特定の理由により、アプリケーションで使用する MMF ファイルを作成する必要がありました (MMF ファイルはアプリケーションでのみ使用する必要があります)。
ここで、ランダムな時間に (いつ、どのような状況で正確に見つけることはできません)、MMF ファイルが他のプロセスによって使用され、データが書き込まれることに気付きました。これにより、MMF ファイルが破損します。
これを回避する方法をお知らせください。
言い換えれば、MMF をアプリケーション専用にして共有しないようにしたいということです。
ありがとう。
windows - Windows のバグを見つけましたか?
「C:\Program Files (x86)」で作業すると、そのパスの下のどこかにあるプログラムで奇妙な問題が発生しました。テストプログラムで動作を再現しました。
プログラムは、すべてのコマンド ライン引数 (プログラムを識別するために使用されるプログラムへのパスを含む) をカウントして返します。急いでいたので「HelloWorld.exe」と名付けました。
プログラムを実行する 3 つの方法で、2 つの異なる結果が得られますが、私は同じ結果を期待していました。
独自のディレクトリから HelloWorld.exe を実行すると、出力は次のようになります。
その出力は正しく、期待されています。
「P:\Test (x86)」にある HelloWorld.exe を別の場所から実行し、引用符で囲まれたパスを使用すると、出力は次のようになります。
その出力も正しく、期待されています。
ただし、HelloWorld.exe を別の場所から実行し、エスケープされたスペースと角かっこを含むパスを使用すると、プログラムは検出されます (つまり、パスは正しい) が、出力は間違っています。
何らかの理由でエスケープされたスペース
P:\Test\^ ^(x86^)\HelloWorld.exe
何らかの理由でスペース読み取り演算子になり、プログラムを見つけるためにパスを1つの文字列として読み取った後、プログラムが参照する配列を作成する前に、実際には2つの文字列であると判断します.
この動作は、Windows XP (x86) と Windows Server 2008 R2 (x64) の両方で発生します。Windowsのすべての(NT)バージョンに存在すると思います。
windows - 実行中のプロセスのログオン タイプを照会するにはどうすればよいですか?
LOGON32_LOGON_BATCH
少なくとも、ソフトウェアがバッチ ジョブとして実行されている場合 ( ) と対話的に実行されている場合 ( ) を区別したいと考えていLOGON32_LOGON_INTERACTIVE
ます。
php - イントラネット アプリケーションのログイン資格情報として Windows 認証を使用する
PHP でイントラネット Web アプリケーションに取り組んでいます。Windows NT ログイン資格情報を使用してアプリケーションにログオンしようとしています。ここでの問題は、リモート ユーザーの Windows ユーザー名を取得する方法です。ユーザー名を取得し、さまざまな LDAP グループと照合して、アプリケーションの適切なページに誘導できるようにしたいと考えています。
私はこれまで試してきました
どちらも空の値を返します。
更新: $_SERVER['REMOTE_ADDR'] を使用すると、コンピューターの IP アドレスを取得できます。とにかく、ユーザー ID/ユーザー名 (一意のもの) を取得し、それを使用して LDAP グループと比較することはできますか? 彼らがウェブサイトのメインページに入り、セッションを保存してから、ウェブサイト全体でセッション変数を使用するときに、これを行いたいと思います。
optimization - Windows システムの最大 COM ポート番号を確認する方法は?
仮想 COM ポートを介して通信するデバイスがいくつかあるシステムがあります。時間の経過とともに、COM ポート番号が変更されます。これらのデバイスの新しい COM ポート番号を検索して記憶するコードを作成しました。これはうまくいきます。
私の問題は、COM ポート番号の検索範囲を定義することです。Microsoft KBで、通常 (デフォルトで) Windows NT OS の COM ポートは 256 に制限されていることがわかりました。また、これは構成可能であり、システムが非常に異なる最大 COM ポート番号を持つことを妨げるものは何もないことも指定しています。
COMポート番号の範囲をプログラムで知る方法があるかどうか疑問に思っています。明らかに、システムに 2⁸ の範囲のみを検索させると、たとえば 2¹⁶ の範囲を検索するよりもはるかに短い時間で済みます! しかし、私のアプリケーションを実行しているシステムが 2⁸ を超える COM ポート番号をサポートするように設定されている場合、ある時点で、COM ポート番号の割り当てが COM0 (または COM1 ですか?) にループバックするまで、アプリケーションは確実に何度も失敗し始めます。あまり魔術を必要としないなら、それは避けたい。
私は主にJavaで作業していますが、どんなアイデアでも大歓迎です。
c++ - fscanf double がファイルの途中で変数を読み取る - Windows NT 4.0 dll
Windows NT 4.0 dll ファイル内の txt ファイルの読み取りで問題が発生しています。質問する前に、私は現在、これを新しい OS に移行することに興味はありません。この 1 つの問題を修正して、この超レガシー ソフトウェアの移行について他の人に心配してもらいたいだけです。
次のように、fscanf を使用して txt ファイルを読み取ると、問題が発生します。
MATLAB で作成された txt ファイルは、5 つのスペースで区切られた 8 列の 128 行で構成され、MATLAB 内で次のようにフォーマットされます。
このコードは私が書いたものではなく、数年間機能しました。しかし、最近、Windows NT 4.0 OS とソフトウェアを再構築/再インストールする必要があり、奇妙なエラーが発生しました。プログラムは、行 123 に到達するまで、上部にあるコードを使用して txt ファイルを正常に読み取ります。この時点で、8 番目の列を 2 回読み取ります。その結果、後続のすべての変数が 1 桁シフトされ、最後の変数が完全に台無しになります。プログラムの数行。興味深いことに、この問題は、最初の 123 行をまとめて新しい txt ファイルに手動でコピー アンド ペーストし、最後の数行を 1 つずつ同じ新しい txt ファイルにコピーして貼り付け、それを入力として使用することで解決できます (コピーが完了しました)。ワードパッド内の NT マシン上)。そうすることで、この二重読み取りの問題が解消されます。どのような問題がこのエラーを引き起こす可能性があるのか わかりませんが、しかし、そのような奇妙で不格好な方法で修正することもできます。問題は新しい入力と古い入力で発生するため、入力ファイルは変更されていないため、問題ではないと思います。
ああ、さらに、txt ファイルの各列間のスペースの数を変更すると、エラーの場所が移動します。スペースを 1 つに減らすと、120 行目あたりでエラーが発生しますが、スペースの数を増やすと (5 ではなく 7 を試行)、エラーが 124 行目まで押し下げられます。
私はプログラミングの専門家ではありません (常に必要に応じて学習する人でした)。ありがとう!
operating-system - Windows NT がマイクロカーネルから離れたのはなぜですか?
Windows NT は当初、マイクロカーネル アーキテクチャを実装するように設計されましたが、ハイブリッド カーネルに移行したと聞いています。
変化の原因は何ですか?これに関する情報を見つけるのに苦労しています。