Aracılığıyla paylaş


Olay Türlerini Sınıflandırmak için Kullanılan Anahtar Sözcükleri Tanımlama

ETW anahtar sözcüğü, bir olay kategorisi kümesinde bir olayın üyeliğini belirtmek için kullanılan 64 bitlik bir bit maskesidir. Anahtar sözcükteki her bit bir kategoriye karşılık gelir. Bir olayın anahtar sözcüğünde bit kümesi varsa, olay bu bite karşılık gelen olay kategorisine aittir.

Anahtar sözcüğün düşük 48 biti (bit maskesi 0x0000FFFFFFFFFFFF), olay sağlayıcısı (bildirimin yazarı) tarafından tanımlanır. Anahtar sözcüğün ilk 16 biti (bit maskesi 0xFFFF000000000000) Microsoft tarafından tanımlanır. Microsoft tarafından tanımlanan anahtar sözcüklerin tanımları için Windows Kitler include klasöründeki winmeta.h veya winmeta.xml bakın.

Sağlayıcılar, farklı olay türlerini sınıflandırmak için anahtar sözcükler kullanır. Örneğin, okuma kategorisi olarak bit 0 anahtar sözcüğünü (anahtar sözcük değeri 0x1) tanımlayabilir ve ardından okuma anahtar sözcüğünü bir dosyadan veya kayıt defterinden okuma işlemi gerçekleştiren herhangi bir olaya uygulayabilirsiniz. Tüketiciler daha sonra farklı olay sınıflandırmalarını filtrelemek için bit değerleri anahtar sözcüğünü kullanabilir. Örneğin tüketici, oturumun yalnızca okuma kategorisindeki olayları toplamasını sağlamak için olay koleksiyonu oturumunun MatchAnyKeyword özelliğini 0x1 olarak ayarlayabilir.

ETW olay koleksiyonu oturumu, ETW hizmetinin olay izleme günlük dosyasına yazdığı olayları sınırlamak için anahtar sözcükleri (düzeyi kullandığı gibi) kullanabilir. İzleme oturumu, sağlayıcıyı iki anahtar sözcük bit maskesi kümesi kullanarak etkinleştiren bir süreçtir: Olayın anahtar sözcük bitlerinden herhangi biri bu maskede ayarlanan bitlerle eşleşiyorsa olayın yazıldığı "MatchAnyKeyword" bit maskesi ve bir de "MatchAllKeyword" bit maskesi bulunur. "MatchAnyKeyword" ile eşleşen olaylar için olay, yalnızca "MatchAllKeyword" maskesindeki tüm bitler olayın anahtar sözcük bit maskesinde mevcutsa yazılır.

Örneğin, sağlayıcı bir okuma anahtar sözcüğü (bit 0 = 0x1) ve bir yerel erişim anahtar sözcüğü (bit 1 = 0x2) tanımlar ve ikinci bir olayda bir okuma anahtar sözcüğü (bit 0 = 0x1) ve bir uzaktan erişim anahtar sözcüğü (bit 2 = 0x4) tanımlarsa, olay toplama oturumunun "MatchAnyKeyword" bit maskesini 0x1 (okuma) olarak ve "MatchAllKeyword" bit maskesini tüm okuma olaylarını almak için 0x0 (hiçbiri) olarak ayarlayabilirsiniz. Ya da yalnızca yerel okumaları almak için "MatchAnyKeyword" bit maskesini 0x1 ve "MatchAllKeyword" bit maskesini 0x3 (okuma + yerel) olarak ayarlayabilirsiniz.

Sağlayıcınız için anahtar sözcük tanımlamak için anahtar sözcüğü öğesini kullanın. Sağlayıcı için anahtar sözcük tanımlandıktan sonra, olay öğesinin anahtar sözcükleri özniteliğini kullanarak anahtar sözcüğü sağlayıcının olaylarından herhangi birine atayabilirsiniz.

Anahtar sözcüğün adını ve maske özniteliklerini belirtmeniz gerekir. Maske, bit 0 ile bit 47 arasında, anahtar sözcük 8'i ayarlamak için mask="256" veya mask="0x100" gibi bir bit kümesine sahip bir tamsayı olmalıdır. 48 ile 63 arasında bitler Microsoft tarafından tanımlanır (bkz. winmeta.h veya winmeta.xml) ve anahtar sözcük öğesinde kullanılamaz.

simgesi ve ileti öznitelikleri isteğe bağlıdır.

Aşağıdaki örnekte anahtar sözcüğün nasıl tanımlanacağı gösterilmektedir.

<instrumentationManifest
    xmlns="http://schemas.microsoft.com/win/2004/08/events"
    xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    >

    <instrumentation>
        <events>
            <provider name="Microsoft-Windows-SampleProvider"
                guid="{1db28f2e-8f80-4027-8c5a-a11f7f10f62d}"
                symbol="PROVIDER_GUID"
                resourceFileName="<path to the exe or dll that contains the metadata resources>"
                messageFileName="<path to the exe or dll that contains the string resources>"
                message="$(string.Provider.Name)">

                . . .

                <keywords>
                    <keyword name="Read" mask="0x1" symbol="READ_KEYWORD"/>
                    <keyword name="Write" mask="0x2" symbol="WRITE_KEYWORD"/>
                    <keyword name="Local" mask="0x4" symbol="LOCAL_KEYWORD"/>
                    <keyword name="Remote" mask="0x8" symbol="REMOTE_KEYWORD"/>
                </keywords>

                . . .

            </provider>
        </events>
    </instrumentation>

    <localization>
        <resources culture="en-US">
            <stringTable>
                <string id="Provider.Name" value="Sample Provider"/>
            </stringTable>
        </resources>
    </localization>

</instrumentationManifest>