Aracılığıyla paylaş


TraceLogging Sarmalayıcı Makroları

TraceLoggingWrite ve TraceLoggingWriteActivity makro parametrelerine göre yapılandırılmış TraceLogging olaylarını yayar. Bu makroların her biri bir dizi gerekli parametreyi ve ardından en fazla 99 isteğe bağlı parametreyi kabul eder. İsteğe bağlı her parametre olayı yapılandırıyor veya olaya bir alan ekliyor. İsteğe bağlı her parametre, bu sayfada açıklanan TraceLogging Sarmalayıcı makrolarından biri olmalıdır.

Mesela:

TraceLoggingWrite(
    g_hProvider,
    "MyEvent1",
    TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
    TraceLoggingKeyword(MyNetworkingKeyword),
    TraceLoggingString(operationName), // Adds an "operationName" field.
    TraceLoggingHResult(hr, "NetStatus")); // Adds a "NetStatus" field.

Bu örnekte, g_hProvider ve "MyEvent1" gerekli parametrelerdir. Olay için kullanılacak sağlayıcıyı ve olayın adını belirtir. Kalan parametrelerin her biri bir sarmalayıcı makrodur. TraceLoggingLevel ve TraceLoggingKeyword parametreleri olayı yapılandırıyor. TraceLoggingString ve TraceLoggingHResult parametreleri olaya alan ekler.

Olay Yapılandırması makroları

Aşağıdaki makrolar olayı yapılandırıyor.

traceLoggingWrite belirli bir yapılandırma makrosunda sağlanmadıysa, bu olay için varsayılan bir değer kullanılır. Örneğin, bir olay için TraceLoggingLevel parametresi kullanılmazsa, olay varsayılan 5 (VERBOSE) düzeyini kullanır.

  • TraceLoggingLevel olayın düzeyiniayarlar. Düzey, olay önem derecesini gösteren 8 bitlik bir değerdir. 1 (WINEVENT_LEVEL_CRITICAL) ile 5 (WINEVENT_LEVEL_VERBOSE) düzeyler <winmeta.h>içinde tanımlanır. Belirtilmezse, olay varsayılan olarak düzey 5 (VERBOSE) olur. Düzey, ETW olay yönlendirme ve filtrelemenin önemli bir parçasıdır, bu nedenle tüm olayların sıfır olmayan anlamlı bir düzeyi olmalıdır.
  • TraceLoggingKeyword olayın anahtar sözcüğünüayarlar. Anahtar sözcük, her bitin olayın ait olduğu kategoriyi gösteren 64 bitlik bir değerdir. Anahtar sözcüğün düşük 48 biti sağlayıcının sahibi tarafından tanımlanırken, anahtar sözcüğün en yüksek 16 biti Microsoft tarafından tanımlanır. Örneğin, "MyCompany.MyComponent" adlı tüm sağlayıcıların "Ağ" anlamına gelen anahtar sözcük 0x1 kullanmasına karar vekleyebilirsiniz. Belirtilmezse, olay varsayılan olarak anahtar sözcük 0x0 (Yok) olarak belirlenir. Anahtar sözcük ETW olay yönlendirme ve filtrelemenin önemli bir parçasıdır, bu nedenle tüm olayların sıfır olmayan anlamlı bir anahtar sözcüğü olmalıdır.
  • traceLoggingOpcodeolayın opcodeayarlar. opcode, olay için özel semantiği gösteren 8 bitlik bir değerdir; örneğin, olay bir ETW etkinliği (ilgili olaylar grubu) başlangıcını (WINEVENT_OPCODE_START) veya sonunu (WINEVENT_OPCODE_STOP) kaydeder. Belirtilmezse, olay özel semantiğin gerekli olmadığını belirten opcode 0 (WINEVENT_OPCODE_INFO) olarak varsayılan değerdir.
  • traceLoggingChannelolayın kanalınıayarlar. Kanal, çeşitli amaçlarla kullanılan 8 bitlik bir değerdir. Belirtilmezse, olay varsayılan olarak kanal 11 (WINEVENT_CHANNEL_TRACELOGGING) olarak belirlenir. Çoğu olayın kanalını değiştirmesi gerekmez ve traceLoggingChannel kullanmamalıdır.
  • TraceLoggingEventTag olayın etiketini ayarlar. etiketi, sağlayıcı tanımlı semantiği olan 28 bitlik bir değerdir. Örneğin, bir sağlayıcı olayın potansiyel olarak kişisel bilgiler içerdiğini ve sağlayıcıya özgü olay işleme araçlarından özel işlem alması gerektiğini belirtmek için etiket biti 0x1000000 tanımlayabilir. Belirtilmezse, etiket varsayılan olarak 0 olur.
  • TraceLoggingDescription olayın açıklamasını ayarlar. Açıklama, olayın insan tarafından okunabilen açıklamasına sahip bir dize değişmez değeridir. Bu, olay amacı hakkında bir açıklama görevi görür ve açıklama, bileşeninizin hata ayıklama simgelerine (PDB) ek açıklama olarak da kaydedilir. Belirtilmezse, açıklama varsayılan olarak ""olur.
  • TraceLoggingCustomAttribute bileşenin hata ayıklama simgelerine (PDB) bir anahtar-değer ek açıklaması ekler.

Alan makroları

TraceLogging, bir olaya alan eklemek için birçok sarmalayıcı makrolarını destekler. Her alan bir ad-değer çiftidir. Örneğin, TraceLoggingInt32(argc, "ArgCount") değeri argcolan "ArgCount" adlı bir INT32 alanı ekler.

Alan sarmalayıcı makrolarının çoğu benzer parametreleri kabul eder:

  • değer: Alana eklenecek verileri belirlemek için çalışma zamanında değerlendirilecek bir ifade. Alan sarmalayıcı makrolarının çoğu, değeri belirtmek için tek bir parametre kullanır, ancak bazı makrolar alan değeri için birden çok parametre gerektirir, örneğin işaretçi ve uzunluk. Değer parametreleri her zaman gereklidir.
    • Bazı durumlarda, alan değeri pszValueolarak belirtilir. Bu durumda, alana eklenecek 0 sonlandırılan karakter dizesine işaret eder. pszValue NULL olabilir; bu durumda alan değeri ""boş bir dize olur.
    • Bazı durumlarda, alan değeri pchValueolarak belirtilir. Bu durumda, alana eklenecek cchValue karakterleri içeren bir dizenin işaretçisidir. pchValue yalnızca cchValue 0 olduğunda NULL olabilir.
    • Bazı durumlarda, alan değeri otomatik olarak belirlenen bir boyuta (cbValue parametresi olmadan) pValue olarak belirtilir ve bu durumda alana eklenecek değerin işaretçisidir. pValue NULL olmayabilir.
    • Bazı durumlarda alan değeri, alana eklenecek verilerin boyutunu (bayt cinsinden) belirtmek için cbValue parametresiyle pValue olarak belirtilir. pValue yalnızca cbValue 0 olduğunda NULL olabilir.
  • adı: Alan için kullanılacak ada sahip bir dize değişmez değeri (derleme zamanı sabiti). Çoğu alan sarmalayıcı makroları bir ad parametresi gerektirmez. name parametresini atlarsanız, alanın adı makronun değerinin önişlemci metnine, pszValue, pchValueveya pValue parametresine göre belirlenir. Örneğin, TraceLoggingInt32(x[4] + y)TraceLoggingInt32(x[4] + y, "x[4] + y")eşdeğerdir. Her ikisi de x[4] + yifadesi değerlendirilerek belirlenen bir değerle olaya "x[4] + y" adlı bir alan ekler.
  • açıklaması: Alan için kullanılacak açıklamaya sahip bir dize değişmez değeri (derleme zamanı sabiti). Bu çoğunlukla alana açıklama eklemek için uygun bir yer olarak kullanılır, ancak açıklama da bileşenin hata ayıklama simgelerine (PDB) ek açıklama olarak kaydedilir. Açıklama isteğe bağlıdır. Açıklama parametresi atlanırsa, alanın açıklaması varsayılan olarak ""olur.
  • etiketi: sağlayıcı tanımlı semantik ile 28 bitlik bir tamsayı (derleme zamanı sabiti). Örneğin bir sağlayıcı, alanın bir telefon numarası içerdiğini ve sağlayıcıya özgü olay işleme araçlarından özel işlem alması gerektiğini belirtmek için etiket 0x2 tanımlayabilir. Etiket parametresi atlanırsa, alanın etiketi varsayılan olarak 0 olur.

Örneğin, aşağıdaki sarmalayıcı makro çağrılarının tümü aynı etkiye sahiptir:

  • TraceLoggingInt32(argc)
  • TraceLoggingInt32(argc, "argc")
  • TraceLoggingInt32(argc, "argc", "")
  • TraceLoggingInt32(argc, "argc", "", 0)

Skalerler

  • TraceLoggingValue(değer, [ad, ...]):

    Değer parametresinin türünden otomatik olarak çıkarılmış türe sahip bir alan ekler. (yalnızca C++)

  • TraceLoggingInt8(değer, [ad, ...]):

    INT8 değerine sahip bir alan ekler.

  • TraceLoggingUInt8(değer, [ad, ...]):

    UINT8 değerine sahip bir alan ekler.

  • TraceLoggingInt16(value, [name, ...]):

    INT16 değerine sahip bir alan ekler.

  • TraceLoggingUInt16(değer, [ad, ...]):

    UINT16 değerine sahip bir alan ekler.

  • TraceLoggingInt32(value, [name, ...]):

    INT32 değerine sahip bir alan ekler.

  • TraceLoggingUInt32(değer, [ad, ...]):

    UINT32 değerine sahip bir alan ekler.

  • TraceLoggingInt64(value, [name, ...]):

    INT64 değerine sahip bir alan ekler.

  • TraceLoggingUInt64(değer, [ad, ...]):

    UINT64 değerine sahip bir alan ekler.

  • TraceLoggingIntPtr(değer, [ad, ...]):

    INT_PTR değerine sahip bir alan ekler (işaretçiyle aynı boyutta imzalı tamsayı).

  • TraceLoggingUIntPtr(değer, [ad, ...]):

    UINT_PTR değerine sahip bir alan ekler (işaretçiyle aynı boyutta işaretsiz tamsayı).

  • TraceLoggingLong(değer, [ad, ...]):

    LONG değerine sahip bir alan ekler (Windows platformlarında long int, 32 bit olarak imzalanan).

  • TraceLoggingULong(değer, [ad, ...]):

    ULONG değerine sahip bir alan ekler (windows platformlarında işaretsiz uzun int, 32 bit).

  • TraceLoggingHexInt8(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla INT8 değerine sahip bir alan ekler.

  • TraceLoggingHexUInt8(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla UINT8 değerine sahip bir alan ekler.

  • TraceLoggingHexInt16(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla INT16 değerine sahip bir alan ekler.

  • TraceLoggingHexUInt16(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla UINT16 değerine sahip bir alan ekler.

  • TraceLoggingHexInt32(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla INT32 değerine sahip bir alan ekler.

  • TraceLoggingHexUInt32(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla UINT32 değerine sahip bir alan ekler.

  • TraceLoggingHexInt64(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla INT64 değerine sahip bir alan ekler.

  • TraceLoggingHexUInt64(value, [name, ...]):

    Onaltılık biçimlendirme ipucuyla UINT64 değerine sahip bir alan ekler.

  • TraceLoggingHexIntPtr(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla INT_PTR değerine sahip bir alan ekler.

  • TraceLoggingHexUIntPtr(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla UINT_PTR değerine sahip bir alan ekler.

  • TraceLoggingHexLong(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla LONG değerine sahip bir alan ekler.

  • TraceLoggingHexULong(değer, [ad, ...]):

    Onaltılık biçimlendirme ipucuyla ULONG değerine sahip bir alan ekler.

  • TraceLoggingFloat32(değer, [ad, ...]):

    FLOAT (32 bit kayan nokta) değerine sahip bir alan ekler.

  • TraceLoggingFloat64(değer, [ad, ...]):

    DOUBLE (64 bit kayan nokta) değerine sahip bir alan ekler.

  • TraceLoggingBoolean(değer, [ad, ...]):

    8 bit Boole değerine sahip bir alan ekler (Win32 BOOLEAN veya C++ bool).

  • TraceLoggingBool(value, [name, ...]):

    32 bit Boole değeri olan bir alan ekler (Win32 BOOL).

  • TraceLoggingChar(değer, [ad, ...]):

    char değerine sahip bir alan ekler (genellikle kod sayfası 1252 olarak ele alınan dize biçimlendirme ipucuna sahip 8 bitlik tamsayı).

  • TraceLoggingChar16(değer, [ad, ...]):

    char16_t değerine sahip bir alan ekler (genellikle UCS-2 olarak ele alınan dize biçimlendirme ipucuna sahip 16 bitlik tamsayı).

  • TraceLoggingWChar(değer, [ad, ...]):

    wchar_t değerine sahip bir alan ekler (Windows platformlarında char16_t ile aynıdır).

  • TraceLoggingPointer(değer, [ad, ...]):

    void* değerine sahip bir alan ekler (onaltılık biçimlendirme ipucuyla işaretçi boyutundaki değer).

  • TraceLoggingCodePointer(değer, [ad, ...]):

    void* değerine sahip bir alan ekler (kod işaretçisi biçimlendirme ipucuyla işaretçi boyutundaki değer).

  • TraceLoggingPid(değer, [ad, ...]):

    İşlem kimliği biçimlendirme ipucuyla INT32 değerine sahip bir alan ekler.

  • TraceLoggingTid(değer, [ad, ...]):

    İş parçacığı kimliği biçimlendirme ipucuyla INT32 değerine sahip bir alan ekler.

  • TraceLoggingIPv4Address(değer, [ad, ...]):

    IPv4 biçimlendirme ipucu (ağ bayt sırası) ile UINT32 değerine sahip bir alan ekler.

  • TraceLoggingIPv6Address(pValue, [ad, ...]):

    IPv6 biçimlendirme ipucuyla 16 baytlık ikili değere sahip bir alan ekler.

  • traceLoggingPort(değer, [ad, ...]) ):

    IP bağlantı noktası biçimlendirme ipucu (ağ bayt sırası) ile UINT16 değerine sahip bir alan ekler.

  • TraceLoggingSocketAddress(pValue, cbValue, [name, ...]):

    SOCKADDR değerine sahip bir alan ekler.

  • TraceLoggingWinError(değer, [ad, ...]):

    Win32 hata kodu biçimlendirme ipucuyla UINT32 değerine sahip bir alan ekler.

  • TraceLoggingNTStatus(value, [name, ...]):

    WinNT hata kodu biçimlendirme ipucuyla NTSTATUS (LONG) değerine sahip bir alan ekler.

  • TraceLoggingHResult(değer, [ad, ...]):

    Windows HRESULT biçimlendirme ipucuyla HRESULT (LONG) değerine sahip bir alan ekler.

  • TraceLoggingFileTime(value, [name, ...]):

    FILETIME değerine sahip bir alan ekler. C kodunda kullanıldığında, value parametresi bir lvalue ifadesi olmalıdır.

  • TraceLoggingFileTimeUtc(value, [name, ...]):

    UTC saat dilimi biçimlendirme ipucuyla FILETIME değerine sahip bir alan ekler. C kodunda kullanıldığında, value parametresi bir lvalue ifadesi olmalıdır.

  • TraceLoggingSystemTime(value, [name, ...]):

    SYSTEMTIME değeri bir alan ekler. C kodunda kullanıldığında, value parametresi bir lvalue ifadesi olmalıdır.

  • TraceLoggingSystemTimeUtc(value, [name, ...]):

    UTC saat dilimi biçimlendirme ipucuyla SYSTEMTIME değerine sahip bir alan ekler. C kodunda kullanıldığında, value parametresi bir lvalue ifadesi olmalıdır.

  • TraceLoggingGuid(değer, [ad, ...]):

    GUID değerine sahip bir alan ekler. C kodunda kullanıldığında, value parametresi bir lvalue ifadesi olmalıdır.

  • TraceLoggingString(pszValue, [name, ...]):

    0 ile sonlandırılan char dizesine sahip bir alan ekler (genellikle kod sayfası 1252 olarak ele alınır). pszValue NULL ise, alan değeri olarak boş bir dize "" kullanılır.

  • TraceLoggingUtf8String(pszValue, [name, ...]):

    UTF-8 biçimlendirme ipucuna sahip 0 sonlandırılan char dizesine sahip bir alan ekler. pszValue NULL ise, alan değeri olarak boş bir dize "" kullanılır.

  • TraceLoggingString16(pszValue, [name, ...]):

    0 ile sonlandırılan char16_t dizesine (UTF-16) sahip bir alan ekler. pszValue NULL ise, alan değeri olarak boş bir dize u"" kullanılır.

  • TraceLoggingWideString(pszValue, [name, ...]):

    0 sonlandırılan wchar_t dizesine (Windows'da UTF-16) sahip bir alan ekler. pszValue NULL ise, alan değeri olarak boş bir dize L"" kullanılır.

  • TraceLoggingCountedString(pchValue, cchValue, [name, ...]):

    Sayılan char dizesine sahip bir alan ekler (genellikle kod sayfası 1252 olarak kabul edilir). pchValue yalnızca cchValue 0 olduğunda NULL olabilir.

  • TraceLoggingCountedUtf8String(pchValue, cchValue, [name, description, tag]):

    UTF-8 biçimlendirme ipucuna sahip sayılan char dizesine sahip bir alan ekler. pchValue yalnızca cchValue 0 olduğunda NULL olabilir.

  • TraceLoggingCountedString16(pchValue, cchValue, [name, ...]):

    Sayılan char16_t dizesine (UTF-16) sahip bir alan ekler. pchValue yalnızca cchValue 0 olduğunda NULL olabilir.

  • TraceLoggingCountedWideString(pchValue, cchValue, [name, description, tag]):

    Sayılan wchar_t dizesine (Windows'da UTF-16) sahip bir alan ekler. pchValue yalnızca cchValue 0 olduğunda NULL olabilir.

  • TraceLoggingAnsiString(pValue, [name, ...]):

    ANSI_STRING değerine sahip bir alan ekler. pValue işaretçisi NULL olmamalıdır.

  • TraceLoggingUnicodeString(pValue, [name, ...]):

    UNICODE_STRING değerine sahip bir alan ekler. pValue işaretçisi NULL olmamalıdır.

  • TraceLoggingSid(pValue, [name, ...]):

    SID değerine sahip bir alan ekler. pValue işaretçisi NULL olmamalıdır ve düzgün başlatılan bir SID'ye işaret etmelidir (Revision ve SubAuthorityCount geçerli olmalıdır).

  • TraceLoggingBinary(pValue, cbValue, [name, ...]):

    İkili veri içeren bir alan ekler.

  • TraceLoggingBinaryEx(pValue, cbValue, outType, [name, ...]):

    outTypetarafından belirtilen biçimlendirme ipucuna sahip ikili veri içeren bir alan ekler.

  • TraceLoggingBinaryBuffer(pValue, StructType, [name, ...]):

    İkili veri içeren bir alan ekler. pValue bir StructType yapısı için NULL olmayan bir işaretçi olmalıdır. pValue->Buffer verilerin başlangıcına işaret etmeli ve pValue->Length alana eklenecek veri bayt sayısı olmalıdır.

  • TraceLoggingBinaryBufferEx(pValue, StructType, outType, name, description, tag):

    outTypetarafından belirtilen biçimlendirme ipucuna sahip ikili veri içeren bir alan ekler. pValue bir StructType yapısı için NULL olmayan bir işaretçi olmalıdır. pValue->Buffer verilerin başlangıcına işaret etmeli ve pValue->Length alana eklenecek veri bayt sayısı olmalıdır.

  • TraceLoggingCustom(pValue, cbValue, protocol, bSchema, cbSchema, [name, ...]):

    Serileştirme protokolüne göre serileştirilmiş ikili veri içeren bir alan ekler. Olay kod çözücüsü tarafından seri durumdan çıkarma işlemine izin vermek için olayla birlikte derleme zamanı sabit kod çözme bilgileri de eklenir.

Yapı

Adlandırılmış bir yapı (alan grubu) oluşturmak için TraceLoggingStruct(fieldCount, name, [...])makroyukullanabilirsiniz. fieldCount parametresi, sonraki alanlardan kaçının yapının bir parçası olarak sayılması gerektiğini gösterir. Yapılar iç içe yerleştirilmiş olabilir; bu durumda her iç içe yapı ve içerdiği alanlar, üst yapıyı tanımlamak amacıyla tek bir alan olarak sayılır.

Dizi

Skaler (tek) değer dizisi içeren bir alan oluşturabilirsiniz. Örneğin, bir GUID dizisini olayınıza tek bir alan olarak eklersiniz.

Not

TraceLogging protokolü tüm türlerdeki dizileri desteklerken, TraceLoggingProvider.h yalnızca basit değer dizileri için sarmalayıcı makrolar sağlar; örneğin, INT32 ve GUID dizileri için makrolar sağlar, ancak Dize dizileri veya yapı dizileri için makro sağlamaz. Verileri bir arabelleğe sıralayarak ve ardından aşağıda açıklanan TraceLoggingPacked makrolarını kullanarak karmaşık değer dizileriyle olaylar oluşturmak mümkündür.

TraceLogging sabit uzunlukta ve değişken uzunlukta dizileri destekler.

  • Dizi uzunluğunun derleme zamanında bilinmediği ve olay her oluşturulduğunda farklı olabileceği durumlarda Array makroyu kullanın.
  • Dizi uzunluğunun derleme zamanında (dizi uzunluğu sabit olduğunda) bilindiği durumlarda FixedArray makroyu kullanın. Bu, olay tüketicisine belirli bir olay adına sahip tüm olayların dizi alanında aynı sayıda öğeye sahip olacağını bildirir.

Tüm dizi makroları pValues ve cValues parametrelerinin belirtilmesi gerekir; pValues dizi içeriğinin başlangıcına işaret eder ve cValues dizideki öğe sayısına ayarlanır. pValues yalnızca cValues 0 olduğunda NULL olabilir.

Dizi makrolarının tümü isteğe bağlı olarak adı, açıklamave etiket parametrelerini Skaler makrolar için açıklandığı şekilde kabul eder. ad belirtilmezse, alan adı pValuesönişlemci metninden belirlenir. açıklama belirtilmezse, alan açıklaması ""olur. etiketi belirtilmezse, alan etiketi 0olur.

Not

ETW'nin olaylarınızı bırakmadığından emin olmak için büyük dizilerle olay oluşturmaktan kaçının. ETW, 64 KB'tan büyük olayları desteklemez. Bu tür olaylar ETW tarafından sessizce bırakılır. Buna ek olarak, tüketici oturumunun BufferSize daha büyük olaylar da ETW tarafından bırakılır. Olay boyutu, olayın üst bilgilerinin, meta verilerinin (sağlayıcı, olay ve alan adları) ve verilerin (alan değerleri) toplamını temel alır.

  • traceLoggingInt8Array(pValues, cValues, [name, ...])
  • traceLoggingInt8FixedArray(pValues, cValues, [name, ...])
  • traceLoggingUInt8Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt8FixedArray(pValues, cValues, [name, ...])
  • traceLoggingInt16Array(pValues, cValues, [name, ...])
  • traceLoggingInt16FixedArray(pValues, cValues, [name, ...])
  • traceLoggingUInt16Array(pValues, cValues, [name, ...])
  • traceLoggingUInt16FixedArray(pValues, cValues, [name, ...])
  • traceLoggingInt32Array(pValues, cValues, [name, ...])
  • traceLoggingInt32FixedArray(pValues, cValues, [name, ...])
  • traceLoggingUInt32Array(pValues, cValues, [name, ...])
  • traceLoggingUInt32FixedArray(pValues, cValues, [name, ...])
  • traceLoggingInt64Array(pValues, cValues, [name, ...])
  • traceLoggingInt64FixedArray(pValues, cValues, [name, ...])
  • traceLoggingUInt64Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt64FixedArray(pValues, cValues, [name, ...])
  • traceLoggingIntPtrArray(pValues, cValues, [name, ...])
  • traceLoggingIntPtrFixedArray(pValues, cValues, [name, ...])
  • traceLoggingUIntPtrArray(pValues, cValues, [name, ...])
  • traceLoggingUIntPtrFixedArray(pValues, cValues, [name, ...])
  • traceLoggingLongArray(pValues, cValues, [name, ...])
  • TraceLoggingLongFixedArray(pValues, cValues, [name, ...])
  • traceLoggingULongArray(pValues, cValues, [name, ...])
  • traceLoggingULongFixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexInt8Array(pValues, cValues, [name, ...])
  • traceLoggingHexInt8FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexUInt8Array(pValues, cValues, [name, ...])
  • traceLoggingHexUInt8FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexInt16Array(pValues, cValues, [name, ...])
  • TraceLoggingHexInt16FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexUInt16Array(pValues, cValues, [name, ...])
  • traceLoggingHexUInt16FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexInt32Array(pValues, cValues, [name, ...])
  • traceLoggingHexInt32FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexUInt32Array(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt32FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexInt64Array(pValues, cValues, [name, ...])
  • traceLoggingHexInt64FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexUInt64Array(pValues, cValues, [name, ...])
  • traceLoggingHexUInt64FixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexIntPtrArray(pValues, cValues, [name, ...])
  • traceLoggingHexIntPtrFixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexUIntPtrArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUIntPtrFixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexLongArray(pValues, cValues, [name, ...])
  • traceLoggingHexLongFixedArray(pValues, cValues, [name, ...])
  • traceLoggingHexULongArray(pValues, cValues, [name, ...])
  • traceLoggingHexULongFixedArray(pValues, cValues, [name, ...])
  • traceLoggingFloat32Array(pValues, cValues, [name, ...])
  • TraceLoggingFloat32FixedArray(pValues, cValues, [name, ...])
  • traceLoggingFloat64Array(pValues, cValues, [name, ...])
  • TraceLoggingFloat64FixedArray(pValues, cValues, [name, ...])
  • traceLoggingBooleanArray(pValues, cValues, [name, ...])
  • TraceLoggingBooleanFixedArray(pValues, cValues, [name, ...])
  • traceLoggingBoolArray(pValues, cValues, [name, ...])
  • traceLoggingBoolFixedArray(pValues, cValues, [name, ...])
  • traceLoggingCharArray(pValues, cValues, [name, ...])
  • traceLoggingCharFixedArray(pValues, cValues, [name, ...])
  • traceLoggingChar16Array(pValues, cValues, [name, ...])
  • traceLoggingChar16FixedArray(pValues, cValues, [name, ...])
  • traceLoggingWCharArray(pValues, cValues, [name, ...])
  • traceLoggingWCharFixedArray(pValues, cValues, [name, ...])
  • traceLoggingPointerArray(pValues, cValues, [name, ...])
  • TraceLoggingPointerFixedArray(pValues, cValues, [name, ...])
  • traceLoggingCodePointerArray(pValues, cValues, [name, ...])
  • traceLoggingCodePointerFixedArray(pValues, cValues, [name, ...])
  • traceLoggingFileTimeArray(pValues, cValues, [name, ...])
  • traceLoggingFileTimeFixedArray(pValues, cValues, [name, ...])
  • traceLoggingFileTimeUtcArray(pValues, cValues, [name, ...])
  • traceLoggingFileTimeUtcFixedArray(pValues, cValues, [name, ...])
  • traceLoggingSystemTimeArray(pValues, cValues, [name, ...])
  • traceLoggingSystemTimeFixedArray(pValues, cValues, [name, ...])
  • traceLoggingSystemTimeUtcArray(pValues, cValues, [name, ...])
  • traceLoggingSystemTimeUtcFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingGuidArray(pValues, cValues, [name, ...])
  • TraceLoggingGuidFixedArray(pValues, cValues, [name, ...])

Paketlenmiş makrolar

TraceLoggingProvider.h yalnızca, her alan makrosunun tek bir alana karşılık geldiği alanlar ve alanın değeriyle tek bir bitişik bellek bölgesine karşılık gelen alanlar olmak üzere, blittable alan türleri için alan makroları sağlar.

TraceLoggingProvider.h aşağıdakiler gibi daha karmaşık durumlar için doğrudan destek sağlamaz:

  • Dize dizisi gibi değişken uzunlukta bir diziyi günlüğe kaydetme.
  • Bir yapı dizisini günlüğe kaydetme.
  • Olay günlüğü ek yükünü azaltmak için tek bir arabellek aracılığıyla ETW'ye birden çok alan geçirme.

Bu senaryoları desteklemek için TraceLoggingProvider.h, olayın olay tanımını (meta veriler) ve alan değerlerini (veriler) doğrudan işlemenize olanak sağlayan çeşitli TraceLoggingPacked makroları tanımlar.

Uyarı

TraceLoggingPacked makrolarının doğru kullanılması zordur ve TraceLogging olaylarının nasıl oluşturulduğunun iyi anlaşılmasını gerektirir. Yanlış kullanılırsa, doğru şekilde kodunu çözmeyen bozuk olaylarla sonuçlanır.

Bu makroların kullanımıyla ilgili ayrıntılar için TraceLoggingProvider.h üst bilgisindeki açıklamalara bakın.

  • TraceLoggingPackedField(pValue, cbValue, inType, [name, description, tags]):

    Alan verileri (pValue, cbValue) ve alan meta verileri (ad, inType) ekler.

  • TraceLoggingPackedFieldEx(pValue, cbValue, inType, outType, [name, ...]):

    Bir biçimlendirme ipucu (outType) ile birlikte alan verileri (pValue, cbValue) ve alan meta verileri (ad, inType) ekler.

  • TraceLoggingPackedMetadata(inType, [ad, ...]):

    Alan verileri eklemeden alan meta verileri (ad, inType) ekler. Karşılık gelen alan verileri TraceLoggingPackedData aracılığıyla eklenmelidir.

  • TraceLoggingPackedMetadataEx(inType, outType, [name, ...]):

    Alan verileri eklemeden alan meta verileri (ad, inType) ve biçimlendirme ipucu (outType) ekler. Karşılık gelen alan verileri TraceLoggingPackedData aracılığıyla eklenmelidir.

  • TraceLoggingPackedStruct(fieldCount, name, [...]):

    Bir yapı için alan meta verileri (ad, fieldCount) ekler.

  • TraceLoggingPackedStructArray(fieldCount, [name, ...]):

    Değişken uzunlukta bir yapı dizisi için alan meta verileri (name, fieldCount) ekler. Dizi uzunluğu TraceLoggingPackedData aracılığıyla belirtilmelidir.

  • TraceLoggingPackedData(pValue, cbValue):

    Alan meta verileri eklemeden bir olaya alan verileri ekler. Karşılık gelen meta veriler Meta Veri makroları aracılığıyla eklenmelidir.

  • TraceLoggingPackedDataEx(pValue, cbValue, dataDescType):

    Alan meta verileri eklemeden, veriler için EVENT_DATA_DESCRIPTOR belirli bir Type kullanarak bir olaya alan verileri ekler. Karşılık gelen meta veriler Meta Veri makroları aracılığıyla eklenmelidir.