問題タブ [etw]
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.
windows - ソケット/名前付きパイプへの ETW イベントの使用
ETW イベントを作成するアプリケーションがあります。ここまでは、リアルタイム ロガーとファイル ロガーを使用してそのイベントを消費しました。
私は疑問に思っていました-イベントを開いているソケット/名前付きパイプに消費することは可能ですか?
logman のリモート マシンを使用して ETW を使用することは、私が探しているものではないことに注意してください。
前もって感謝します、
タル。
windows - 警告 - wevtutil を実行しているプロバイダー リソースにアクセスできません
Windows イベント プロバイダーを作成しようとすると、「プロバイダー」リソースにアクセスできない問題を解決するための支援が必要です。ManGen ユーティリティを使用してマニフェスト ファイルを作成し、「.exe」ファイルにメッセージおよびリソース ファイルとして名前を付けます。 exe ファイルを含む .rc' ファイルと、予期される '.res' ファイルが生成されますが、wevtutil を実行すると、「リソースにアクセスできません」という警告が表示され続けます。
macros - ETWマクロの定義DoTraceMessage、WPP_CLEANUP、WPP_INIT_TRACING?
Event Tracing for Windows(ETW)のWindowsソフトウェアトレースプリプロセッサ(WPP)コンポーネントを使用する場合は、次の3つのマクロを含むファイルを含める必要があります。
WPP_INIT_TRACING
マクロはソフトウェアトレースをアクティブにしますDoTraceMessage
トレースメッセージをログに記録するマクロWPP_CLEANUP
マクロはソフトウェアトレースを非アクティブ化します
これらのマクロを含むインクルードファイルは、ソースファイルの最後に以下を追加すると自動的に生成されます。
これらはマクロであるため、実際には他のことを行うために拡張されます。これらのマクロが何に展開されるかの例が必要です。
これらの生成されたマクロのサンプルが必要な理由は、Visual Studioを所有しておらず、C / C ++で記述していないか、Microsoftコンパイラを使用していないためです。
ボーナスおしゃべり。Microsoft SDKは、マクロ定義を含むサンプルインクルードファイル(tracedrv.tmh
)を提供します。
delphi - EnumerateTraceGuids が「パラメーターが正しくありません」を返す (87)
Windows API 関数EnumerateTraceGuidsを呼び出そうとしています:
MSDNのコード サンプルから始めます。
コードを Delphi に変換します。
API呼び出しで:
結果コードを取得しますERROR_INVALID_PARAMETER
(87、パラメーターが正しくありません)。
私は何を間違っていますか?
MSDN は何が原因かを説明していますERROR_INVALID_PARAMETER
:
ERROR_INVALID_PARAMETER
次のいずれかが当てはまります。
- PropertyArrayCount がゼロです
- GuidPropertiesArray は NULL です
最初のケースは真です。私の 2 番目のパラメーターPropertyArrayCount
はゼロです。サンプルがそうあるべきだと言っているように。
.net - .NET 用のパフォーマンスおよび監視ツール
Windows/Web アプリケーションのパフォーマンスの監視と診断を識別するさまざまな方法は何ですか (サード パーティのツールではなく、Microsoft が提供するツール/アプリケーションが必要です)。
前もって感謝します!
windows - Microsoft-Windows-NDIS-PacketCapture プロバイダーからのリアルタイム ETW イベントを使用する方法は?
より大きな問題は、リアルタイムの ETW ネットワーク スタック イベントを一般的にどのように使用するかということですが、私は特にMicrosoft-Windows-NDIS-PacketCapture provider に興味があります。他のすべてのネットワーク スタック プロバイダーは部分的に機能しますが、NDIS-PacketCapture (NDIS-PC) はまったく機能しないため、これはおそらくここで尋ねることができる最も簡単な質問です。
次のコードをベースとして使用しており、リアルタイムで動作するようにほとんど変更していません: http://msdn.microsoft.com/en-us/library/windows/desktop/ee441325(v=vs.85) .aspx
私が行った変更は次のとおりです。
StartTrace を呼び出して、他の処理を行う前に NDIS-PC セッションを開始します。プロパティ struct EVENT_TRACE_PROPERTIES で、LogFileMode = EVENT_TRACE_REAL_TIME_MODE、LogFileNameOffset = 0、Wnode.Guid = 何かランダムな GUID を設定します。
呼び出しステータス = EnableTraceEx2(hSession, &Current_Guid, EVENT_CONTROL_CODE_ENABLE_PROVIDER, TRACE_LEVEL_VERBOSE, 0, 0, 0, NULL); ここで、hSession は StartTrace を使用して開始されたセッションであり、Current_Guid は
{0x2ED6006E,0x4729,0x4609,{0xB4,0x23,0x3E,0xE7,0xBC,0xD6,0x78,0xEF}};
次に、LoggerName = ワイド文字列、LogFileName = NULL、および LogFileMode = EVENT_TRACE_REAL_TIME_MODE で OpenTrace を呼び出します。
最後に、先ほど開いたトレース ハンドルで ProcessTrace を呼び出します。
繰り返しますが、他のすべては MSDN の例で提供されているものと同じままにしておきます
プロバイダーを Microsoft-Windows-Winsock-AFD や Microsoft-Windows-TCPIP などの別のものに1 回変更するだけで同じコードを使用すると、定義したレコード コールバックが呼び出されます (ただし、まだできません)。プロパティを取得しますが、この問題をできるだけ単純にするために、これ以上掘り下げることはしません)。NDIS-PC を使用すると、0 コールバックが発生します。ControlTrace を使用して手動でフラッシュしようとしましたが、成功しませんでした。また、「EventRecordCallback」の代わりに「EventCallback」を定義しようとしましたが、成功しませんでした。
このプロセスに関係するすべてのデータ構造を調べて、各プロバイダーを比較したところ、それらはすべて正しく同じに見えました。関数からのすべての戻り値と返されたデータ構造を調べましたが、試したプロバイダー間でも同じように見えます。
「logman "My Trace Session 04" -ets」を呼び出してセッション プロパティを調べたところ、NDIS-PC と TCPIP で同じように見えます。
C:\windows\system32>logman "マイ トレース セッション 04" -ets
名前: マイ トレース セッション 04 状態:
実行中 ルート パス: %systemdrive%\PerfLogs\Admin セグメント:
オフ スケジュール: オン名前: My Trace Session 04\My Trace Session 04 タイプ:
トレース 追加: オフ 循環: オフ 上書き:
オフ バッファー サイズ: 64 失われたバッファー: 0 書き込まれたバッファー: 0 バッファー フラッシュ タイマー: 1 クロック タイプ: パフォーマンス ファイル モード: リアルタイムプロバイダー: 名前: Microsoft-Windows-NDIS-PacketCapture プロバイダー GUID: {2ED6006E-4729-4609-B423-3EE7BCD678EF} レベル:
5 (win:Verbose) KeywordsAll: 0x0 KeywordsAny:
0xffffffffffffffff (Ethernet802.3,WirelessWAN,Tunnel,Nativ e802.11,PacketStart,PacketEnd,ut:SendPath,ut:ReceivePath,ut:L3ConnectPath,ut:L2C onnectPath,ut:ClosePath,ut:Authentication,ut:Configuration,ut: Global,ut:Dropped, ut:PiiPresent,ut:Packet,ut:Address,ut:StdTemplateHint,ut:StateTransition,win:ResponseTime,Microsoft-Windows-NDIS-PacketCapture/Diagnostic,0x2,0x4,0x8,0x10,0x20 , 0x40,0x80,0x100,0x400,0x800,0x1000,0x2000,0x4000,0x20000,0x40000,0x80000,0x10000 0,0x200000,0x400000,0x800000,0x1000000,0x2000000,0x4000000,0x8000000,0x10000000, 0x20000000,0x400000000000,0x800000000000,0x2000000000000, 0x4000000000000,0x80000 00000000,0x10000000000000,0x20000000000000,0x40000000000000,0x80000000000000,0x1 00000000000000,0x200000000000000,0x400000000000000,0x800000000000000,0x100000000 0000000,0x2000000000000000,0x4000000000000000) プロパティ: 0 フィルター タイプ: 0コマンドは正常に完了しました。
また、logman を使用して手動でセッションを開始し、コードで開いて処理しようとしましたが、それもうまくいきませんでした。また、ETLファイルに書き込もうとしましたが、それも機能しません。私が試したことは他にもたくさんありますが、何も機能していません。
リアルタイム ETW 消費に関係するインターネット上のすべてのもの (MSDN、Google 検索、Stackoverflow など) を調べましたが、リアルタイム ETW イベント消費の完全な例を 1 つも見たことがありません。すべての例は、ETL ファイルからのイベントの使用、または記録されたイベントの ETL ファイルへのエクスポートを示しており、リアルタイムの使用を機能させるためにいくつかのパラメーターを変更することを示しています。上記で要約したコードの変更は、それらの変更を反映していると思います。
私は VS2010 SP1 を使用して 32 ビット コンソール アプリを作成している Win7 Ultimate を使用しています。また、改善なしで64ビットアプリを作成しようとしました。
次の 2 つの投稿は関連性がありますが、試したり実施したりしても何の違いもありませんでした。リアルタイム モードでは、コードはセッション名をプロパティ構造体の末尾にコピーしますが、ログ ファイルのオフセットはとにかく 0 にする必要があります。他のすべてのプロバイダーは問題なく動作するため、アライメントの問題はないと思います。
Windows ETW: カーネル コンシューマーが EventCallback または BufferCallback イベントを受信しない Windows ETW: StartTrace がエラー 87 (ERROR_INVALID_PARAMETER) で失敗する
小さくて些細なことを見逃しているような気がしますが、これでうまくいくはずです。助けていただければ幸いです。
.net - なぜEventLogではなくETWを使用するのですか?
標準の.NETEventLogクラスではなくEventTracingfor Windows(ETW)を使用する必要があるのはなぜですか。その逆も同様です。かなりの数のパフォーマンスカウンターを使用することを知っていると、決定に影響しますか?
私がこれまでに知っていること:
- ETWのパフォーマンスははるかに優れているはずです。
- ETWは、統合する作業がはるかに多くなります(たとえば、Windows用の.NETイベントトレース)
- ETWの標準チャネルの1つ(アプリケーション、システムなど)を選択すると、同じ情報がイベントログで利用可能になります。
c# - ログイベントを挿入するとき、TimeCreated フィールドの精度が不十分です
.net Framework 4 を使用して C# で Windows イベント ログにアプリケーション ログを記録しようとしていますが、ログ エントリを挿入すると、TimeCreated フィールド (イベント ビューアー -> Windows ログ -> アプリケーション -> -> 詳細 -> フレンドリー ビュー) -> System) のような値を取得します
ご覧のとおり、1 秒未満の精度は失われていますが、ビューアーで "." の後に数字がある別のイベントを確認できます。より正確なタイムスタンプを示します。
これは .Net Framework/CLR/C# の何らかの制限ですか、それとも間違ったことをしているだけですか?
ありがとう。
VS2010SP1、Win7/Server 2008 R2環境。
アップデート:
私が試したことに言及することができます
これまでのところ、log4netのEventLogAppender。
更新 2:
そのため、ETW を使用してイベント ログにイベントを挿入すると、実際には SystemTime の分解能が 1 秒未満のイベントが生成されます。これが実際に必要なのかもしれませんが、私の場合はやり過ぎのように感じます。
winapi - NDIS などのカーネル プロバイダーからの ETW PID 精度
私は、Windows イベント、ネットワーク イベント、特に NDIS-PacketCapture と TCPIP のイベント トレーシングをいじっています。各 ETW メッセージには PID フィールドがあり、割り当ての背後にあるロジックを理解しようとしています。TCPIP イベントの大部分は、PID フィールドに正しい PID を持ち、NDIS-Packet キャプチャの大部分も同様に持っているようです。ただし、PID が明らかに正しくない多くのインスタンス (おそらく 30%) があります。これらの誤った PID 情報の一部は、偽陽性であり、一部は偽陰性です。たとえば、Chrome からの特定のパケットを見逃して、そのケースに PID 0 を割り当てるだけです (偽陰性)。実行しているアプリケーションの PID を取得して、PID フィールドでこれらのイベントをキャッチすることがあります (誤検知)。私が分析できる限り、
注意すべきもう 1 つの興味深い点は、一部の TCPIP イベントには、ヘッダーの PID と一致する「PID」プロパティが含まれていることです。この「PID」プロパティは、ヘッダー PID よりも正確であるように見えますが、それでも偽陽性と偽陰性を示します。
バグがありますか? ETW メッセージの PID フィールドの目的を理解していませんか? これらのプロバイダーは、気が向いたときにゴミを入れることを選択しているだけですか?
StartTrace、EnableTraceEx2、OpenTrace、ProcessEventRecordProperties(PEVENT_RECORD pEvent) コールバックなど、C++ で Win32/64 トレース関数を使用しています。より具体的には、この例を変更して、NDIS-PacketCapture および TCPIP イベントを取得しました。http://msdn.microsoft.com/en-us/library/windows/desktop/ee441329(v=vs.85).aspx
これは、典型的な TCPIP イベントのすべての値がどのように見えるかです (私は xxx.. を IP とポート番号に使用しています)
どんな助けでも大歓迎です。
c++ - ユーザーモードアプリケーションからWPPを使用する
私はユーザーモードでWPPを使用しようとしましたが、VS10で正常に使用でき、projファイルに追加してターゲットをリリースしました。
次に、Wpp.targetsは次のように定義されます。
この手順は、次の記事から取得されました:http ://www.devproconnections.com/article/visual-studio-2010/wpp-tracing-in-visual-c-2010-projects
VS10-> Debugでこれをコンパイルしようとすると、「tmh」ファイルが生成されていることがわかりますが、実際に何かをログに記録したいときにエラーが発生します。
DoTraceMessage(TRACE_ERROR、L "Aha"); //エラーC2065:'TRACE_ERROR':宣言されていない識別子エラーC3861:' WPP_CALL_Application_Test_cpp':識別子が見つかりません
私が言ったように、VS10->リリースターゲットの同じコードで問題はありません。参考までに、これが私の定義です。
リリースモードを使用すると機能するのに、デバッグモードでは機能しない理由を誰かが知っていますか?