<?xml version="1.0" encoding="UTF-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v3" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<assemblyIdentity buildType="release" language="neutral" name="Microsoft-Windows-OobeLdr-Instrumentation" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" version="6.1.7601.17514" versionScope="nonSxS"></assemblyIdentity>
	<registryKeys>
		<!-- OobeLdr Provider -->
		<registryKey keyName="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI\AutoLogger\Microsoft-Windows-Setup\{75EBC33E-8670-4eb6-B535-3B9D6BB222FD}">
			<registryValue name="Enabled" value="1" valueType="REG_DWORD"></registryValue>
			<registryValue name="EnableLevel" value="4" valueType="REG_DWORD"></registryValue>
		</registryKey>
	</registryKeys>
	<instrumentation xmlns:win="http://manifests.microsoft.com/win/2004/08/windows/events" xmlns:xs="http://www.w3.org/2001/XMLSchema">
		<events xmlns:auto-ns1="urn:schemas-microsoft-com:asm.v3" xmlns="http://schemas.microsoft.com/win/2004/08/events">
			<!--
           * Microsoft Windows OobeLdr Provider *
           Author: jasontho (Jason Thorsness)
      -->
			<provider guid="{75EBC33E-8670-4eb6-B535-3B9D6BB222FD}" message="$(string.OobeLdr.ProviderMessage)" messageFileName="%SystemRoot%\system32\oobe\OobeLdr.exe" name="Microsoft-Windows-OobeLdr" resourceFileName="%SystemRoot%\system32\oobe\OobeLdr.exe" symbol="Microsoft_Windows_OobeLdr">
				<channels>
					<channel chid="chaOobeLdrAnalytic" name="Microsoft-Windows-OobeLdr/Analytic" type="Analytic"></channel>
					<!-- This is the official Setup channel as seen in the Event Viewer. -->
					<importChannel chid="chaSetup" name="Setup"></importChannel>
				</channels>
				<keywords>
					<!-- Events with the Performance keyword come in opcode=win:start/win:stop pairs 
               with the same task name.  An individual thread will complete once instance of
               a task with a particular type before starting a new one. -->
					<keyword mask="0x00000001" message="$(string.Performance.KeywordMessage)" name="keyPerformance"></keyword>
					<keyword mask="0x00000002" message="$(string.Diagnostic.KeywordMessage)" name="keyDiagnostic"></keyword>
				</keywords>
				<templates>
					<template tid="tidCommandLine">
						<data inType="win:UnicodeString" name="CommandLine"></data>
					</template>
					<template tid="tidErrorCodeResult">
						<data inType="win:UInt32" name="ErrorCode"></data>
					</template>
					<template tid="tidOobeLdrProcessUnattend">
						<data inType="win:UnicodeString" name="Pass"></data>
					</template>
					<template tid="tidOobeLdrUsingUnattend">
						<data inType="win:UnicodeString" name="Pass"></data>
						<data inType="win:UnicodeString" name="FilePath"></data>
					</template>
				</templates>
				<tasks>
					<task eventGUID="{B85C8230-44B8-4cdb-8254-3763DFA4B07F}" message="$(string.RunOobeLdr.TaskMessage)" name="tskRunOobeLdr" value="1000"></task>
					<task eventGUID="{D4BD14AD-2322-4199-BC76-F9A046B0B006}" message="$(string.OobeLdrProcessUnattend.TaskMessage)" name="tskOobeLdrProcessUnattend" value="2000"></task>
					<task eventGUID="{82D8EFFF-FD94-4954-922C-54C3DF42B1ED}" message="$(string.LaunchOobe.TaskMessage)" name="tskLaunchOobe" value="3000"></task>
				</tasks>
				<events>
					<!-- Official Setup Channel (Will show up in the Event Viewer) Events -->
					<!-- OobeLdr Analytic Events -->
					<!-- OobeLdr Enter/Exit -->
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.RunOobeLdr.StartMessage)" opcode="win:Start" symbol="RunOobeLdrStart" task="tskRunOobeLdr" template="tidCommandLine" value="1001"></event>
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.RunOobeLdr.StopMessage)" opcode="win:Stop" symbol="RunOobeLdrStop" task="tskRunOobeLdr" template="tidErrorCodeResult" value="1002"></event>
					<!-- OobeLdr Process Unattend -->
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.OobeLdrProcessUnattend.StartMessage)" opcode="win:Start" symbol="OobeLdrProcessUnattendStart" task="tskOobeLdrProcessUnattend" template="tidOobeLdrProcessUnattend" value="2001"></event>
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.OobeLdrProcessUnattend.StopMessageExecuted)" opcode="win:Stop" symbol="OobeLdrProcessUnattendStopExecuted" task="tskOobeLdrProcessUnattend" template="tidErrorCodeResult" value="2002"></event>
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.OobeLdrProcessUnattend.StopMessageFailedToExecute)" opcode="win:Stop" symbol="OobeLdrProcessUnattendStopFailedToExecute" task="tskOobeLdrProcessUnattend" template="tidErrorCodeResult" value="2003"></event>
					<event channel="chaOobeLdrAnalytic" keywords="keyDiagnostic" level="win:Informational" message="$(string.OobeLdrProcessUnattend.UsingFile)" opcode="win:Info" symbol="OobeLdrProcessUnattendUsingFile" task="tskOobeLdrProcessUnattend" template="tidOobeLdrUsingUnattend" value="2004"></event>
					<!-- Launch Oobe -->
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.LaunchOobe.StartMessage)" opcode="win:Start" symbol="LaunchOobeStart" task="tskLaunchOobe" value="3001"></event>
					<event channel="chaOobeLdrAnalytic" keywords="keyPerformance" level="win:Informational" message="$(string.LaunchOobe.StopMessage)" opcode="win:Stop" symbol="LaunchOobeStop" task="tskLaunchOobe" template="tidErrorCodeResult" value="3002"></event>
				</events>
			</provider>
		</events>
	</instrumentation>
	<localization>
		<resources culture="en-US">
			<stringTable>
				<!-- Keywords -->
				<string id="Performance.KeywordMessage" value="Performance"></string>
				<string id="Diagnostic.KeywordMessage" value="Diagnostic"></string>
				<!-- Providers -->
				<string id="OobeLdr.ProviderMessage" value="Microsoft-Windows-OobeLdr"></string>
				<!-- RunOobeLdr -->
				<string id="RunOobeLdr.TaskMessage" value="Run OobeLdr"></string>
				<string id="RunOobeLdr.StartMessage" value="OobeLdr.exe is running with command line &quot;%1&quot;."></string>
				<string id="RunOobeLdr.StopMessage" value="OobeLdr.exe exiting with status %1."></string>
				<!-- OobeLdr Process Unattend -->
				<string id="OobeLdrProcessUnattend.TaskMessage" value="OobeLdr Process Unattend"></string>
				<string id="OobeLdrProcessUnattend.StartMessage" value="Executing unattend settings pass &quot;%1&quot;."></string>
				<string id="OobeLdrProcessUnattend.StopMessageExecuted" value="Finished executing unattend pass with status %1."></string>
				<string id="OobeLdrProcessUnattend.StopMessageFailedToExecute" value="Failed to execute unattend pass with status %1."></string>
				<string id="OobeLdrProcessUnattend.UsingFile" value="Using unattend file &quot;%2&quot; for pass &quot;%1&quot;."></string>
				<!-- LaunchOobe -->
				<string id="LaunchOobe.TaskMessage" value="Launch Oobe"></string>
				<string id="LaunchOobe.StartMessage" value="Launching Oobe."></string>
				<string id="LaunchOobe.StopMessage" value="Oobe exited with status %1."></string>
			</stringTable>
		</resources>
	</localization>
	<cbb:debuggingInfo xmlns:cbb="urn:schemas-microsoft-com:asm.internal.v1">
		<cbb:sourceManifest sourcePath="%basedir%\base\ntsetup\opktools\oobeldr\src\microsoft-windows-oobeldr-instrumentation.man"></cbb:sourceManifest>
	</cbb:debuggingInfo>
</assembly>
