問題タブ [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.

0 投票する
0 に答える
398 参照

windows - ソケット/名前付きパイプへの ETW イベントの使用

ETW イベントを作成するアプリケーションがあります。ここまでは、リアルタイム ロガーとファイル ロガーを使用してそのイベントを消費しました。

私は疑問に思っていました-イベントを開いているソケット/名前付きパイプに消費することは可能ですか?

logman のリモート マシンを使用して ETW を使用することは、私が探しているものではないことに注意してください。

前もって感謝します、

タル。

0 投票する
4 に答える
7810 参照

windows - 警告 - wevtutil を実行しているプロバイダー リソースにアクセスできません

Windows イベント プロバイダーを作成しようとすると、「プロバイダー」リソースにアクセスできない問題を解決するための支援が必要です。ManGen ユーティリティを使用してマニフェスト ファイルを作成し、「.exe」ファイルにメッセージおよびリソース ファイルとして名前を付けます。 exe ファイルを含む .rc' ファイルと、予期される '.res' ファイルが生成されますが、wevtutil を実行すると、「リソースにアクセスできません」という警告が表示され続けます。

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

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 )を提供します。

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

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 ゼロです。サンプルがそうあるべきだと言っているように。

0 投票する
3 に答える
419 参照

.net - .NET 用のパフォーマンスおよび監視ツール

Windows/Web アプリケーションのパフォーマンスの監視と診断を識別するさまざまな方法は何ですか (サード パーティのツールではなく、Microsoft が提供するツール/アプリケーションが必要です)。

前もって感謝します!

0 投票する
4 に答える
9685 参照

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

私が行った変更は次のとおりです。

  1. StartTrace を呼び出して、他の処理を行う前に NDIS-PC セッションを開始します。プロパティ struct EVENT_TRACE_PROPERTIES で、LogFileMode = EVENT_TRACE_REAL_TIME_MODE、LogFileNameOffset = 0、Wnode.Guid = 何かランダムな GUID を設定します。

  2. 呼び出しステータス = 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}};

  3. 次に、LoggerName = ワイド文字列、LogFileName = NULL、および LogFileMode = EVENT_TRACE_REAL_TIME_MODE で OpenTrace を呼び出します。

  4. 最後に、先ほど開いたトレース ハンドルで ProcessTrace を呼び出します。

  5. 繰り返しますが、他のすべては 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) で失敗する

小さくて些細なことを見逃しているような気がしますが、これでうまくいくはずです。助けていただければ幸いです。

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

.net - なぜEventLogではなくETWを使用するのですか?

標準の.NETEventLogクラスではなくEventTracingfor Windows(ETW)を使用する必要があるのはなぜですか。その逆も同様です。かなりの数のパフォーマンスカウンターを使用することを知っていると、決定に影響しますか?

私がこれまでに知っていること:

  1. ETWのパフォーマンスははるかに優れているはずです。
  2. ETWは、統合する作業がはるかに多くなります(たとえば、Windows用の.NETイベントトレース
  3. ETWの標準チャネルの1つ(アプリケーション、システムなど)を選択すると、同じ情報がイベントログで利用可能になります。
0 投票する
2 に答える
628 参照

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 秒未満のイベントが生成されます。これが実際に必要なのかもしれませんが、私の場合はやり過ぎのように感じます。

0 投票する
0 に答える
843 参照

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 とポート番号に使用しています)

どんな助けでも大歓迎です。

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

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->リリースターゲットの同じコードで問題はありません。参考までに、これが私の定義です。

リリースモードを使用すると機能するのに、デバッグモードでは機能しない理由を誰かが知っていますか?