<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Windows SDK Support Team Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/winsdk/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/winsdk/feed.xml</link>
    <description>#define _WIN32_WINNT</description>
    <lastBuildDate>Wed, 28 Mar 2018 23:27:37 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>OpenService() fails on a service marked for deletion on Windows 10, Version 1703 (OS build 15063)</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/openservice-fails-on-a-service-marked-for-deletion-on-windows-10-version-1703-os-build-15063</link>
      <pubDate>Thu, 24 Aug 2017 20:09:24 GMT</pubDate>
      <dc:creator><![CDATA[Frank K [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/?p=1865</guid>
      <description><![CDATA[OpenService() fails with error code 1060 or ERROR_SERVICE_DOES_NOT_EXIST when a service is marked...]]></description>
      <content:encoded><![CDATA[OpenService() fails with error code 1060 or <strong class="">ERROR_SERVICE_DOES_NOT_EXIST </strong>when a service is marked for deletion (DeleteService).

This is a known bug.

It should be fixed in Windows 10 Fall Creators Update.

<strong>Update:</strong>

Windows 10 1703 with Cumulative Update February 22, 2018—KB4077528 (OS Build 15063.936) or later the problem has been fixed.

https://support.microsoft.com/en-us/help/4077528/windows-10-update-kb4077528]]></content:encoded>
    </item>
    <item>
      <title>Leveraging Exploit Guard in Windows Insider Build to Easily Audit Your Code</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/leveraging-exploit-guard-in-windows-insider-build-to-easily-audit-your-code</link>
      <pubDate>Mon, 07 Aug 2017 00:56:33 GMT</pubDate>
      <dc:creator><![CDATA[Chris Lewis [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/?p=1835</guid>
      <description><![CDATA[If you are a software developer and are looking to improve upon the security compliance of your...]]></description>
      <content:encoded><![CDATA[If you are a software developer and are looking to improve upon the security compliance of your software, there is a feature in the current Windows 10 Enterprise Insider Preview (as of 10.0.16253 - I can't guarantee this will make it or make it unchanged into future builds) that could be very useful to you.  In Settings-&gt;Windows Defender-&gt;Windows Defender Security Center-&gt;App and Browser Control-&gt;Exploit Protection Settings, you can enable custom exploit settings for either the entire system or specific programs.  There's a lot of different protections that can be turned on there and many of them can be turned on in Audit Mode.  In Audit Mode, instead of terminating a process when the situation occurs, it will write an event to the event log instead.  For admins, that means allowing the software to continue to run while being made aware of when the situation occurs.  For someone looking to improve upon their product by stopping these situations from happening in their software, it provides the added benefits of enabling security features without having to recompile (in some cases) and telling you exactly where in the code in your processes the issue occurs when it is encountered at runtime.  In build 10.0.16253, the protections that can be audited are:
<ul>
 	<li>Arbitrary Code Guard - Prevents non-image backed execute code and code page modifications (e.g. VirtualAlloc/VirtualProtect created/modified code)</li>
 	<li>Block Low Integrity Images</li>
 	<li>Block Remote Images</li>
 	<li>Block Untrusted Fonts</li>
 	<li>Code Integrity Guard</li>
 	<li>Disable Win32k system calls</li>
 	<li>Do Not Allow Child Processes</li>
 	<li>Export Address Filtering- One step in one common methodology to patch a function to another function</li>
 	<li>Import Address Filtering - One step in one common methodology to patch a function to another function</li>
 	<li>Simulate Execution</li>
 	<li>Validate API Invocation (CallerCheck)</li>
 	<li>Validate Image Dependency Integrity</li>
 	<li>Validate Stack Integrity</li>
</ul>
To take full advantage of this, install the Windows Performance Toolkit.  It's one of the installation options with the Windows SDK installer.  After enabling the settings that you are interested in for your application, open up an admin command prompt and browse to the Windows Performance Toolkit directory (typically Program Files (x86)\Windows Kits\{Version}\Windows Performance Toolkit).  You can enable and start collecting tracing for the aforementioned exploit protection settings with the data that you'll need to resolve stack traces by running the following two commands (after substituting whatever paths you want for the filenames):

xperf -on "PROC_THREAD+LOADER" -f "wdeg_klogger.etl"

xperf -start "WDEG" -on "Microsoft-Windows-Security-Mitigations:0xFFFFFFFFFFFFFFFF:0xFF:'stack'"  -f "wdeg_unmerged.etl"

After you run through whatever scenario you want to collect, you can stop the tracing and merge the data together with the following (after again substituting whatever paths you want for the filenames):

xperf -stop -stop "WDEG" -d "wdeg_merged.etl"

You can then delete the first two files that were created since you'll have all the data that you need in the third at this point.  You can open up the resultant etl file in Windows Performance Analyzer (WPA) and have a look at the data.  If you're not familiar with doing this, here's a sample preset file for looking at just this sort of data:
<pre>&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;WpaProfileContainer xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" Version="2" xmlns="https://tempuri.org/SerializableElement.xsd"&gt;
  &lt;Content xsi:type="WpaProfile2"&gt;
    &lt;Sessions /&gt;
    &lt;Views /&gt;
    &lt;ModifiedGraphs&gt;
      &lt;GraphSchema Guid="04f69f98-176e-4d1c-b44e-97f734996ab8"&gt;
        &lt;ModifiedPresets&gt;
          &lt;Preset Name="EG Stacks" BarGraphIntervalCount="50" IsThreadActivityTable="false" LeftFrozenColumnCount="5" RightFrozenColumnCount="9" KeyColumnCount="4" GraphColumnCount="10" InitialFilterQuery="[Event Name]:~=&amp;quot;Microsoft-Windows-Security-Miti&amp;quot;" InitialFilterShouldKeep="true" GraphFilterTopValue="0" GraphFilterThresholdValue="0" HelpText="{}{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Segoe UI;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ltrch Groups all the events by provider, task, and opcode.}\li0\ri0\sa0\sb0\fi0\ql\par}
}
}"&gt;
            &lt;Columns&gt;
              &lt;Column Name="Provider Name" Guid="8b4c40f8-0d99-437d-86ab-56ec200137dc" Width="200" IsVisible="true" SortPriority="18" /&gt;
              &lt;Column Name="Task Name" Guid="511777f7-30ef-4e86-bd0b-0facaf23a0d3" Width="80" IsVisible="true" SortPriority="19" /&gt;
              &lt;Column Name="Event Name" Guid="90fe0b49-e3bb-440f-b829-5813c42108a1" Width="100" IsVisible="false" SortPriority="0" /&gt;
              &lt;Column Name="Stack" Guid="26eed6bf-f07d-4bb0-a36f-43a7d3a68828" Width="247" IsVisible="true" SortPriority="0"&gt;
                &lt;StackOptionsParameter /&gt;
              &lt;/Column&gt;
              &lt;Column Name="Message" Guid="0734f1a4-fbd9-4ff6-aec0-cf43875c8253" Width="100" IsVisible="true" SortPriority="0" /&gt;
              &lt;Column Name="Process" Guid="7ee6a5ff-1faf-428a-a7c2-7d2cb2b5cf26" Width="150" IsVisible="true" SortPriority="28" /&gt;
              &lt;Column Name="ThreadId" Guid="edf01e5d-3644-4dbc-ab9d-f8954e6db6ea" Width="50" IsVisible="true" SortPriority="27" /&gt;
              &lt;Column Name="Time" Guid="bbfc990a-b6c9-4dcd-858b-f040ab4a1efe" Width="80" IsVisible="true" SortPriority="29" /&gt;
            &lt;/Columns&gt;
            &lt;MetadataEntries&gt;
              &lt;MetadataEntry Guid="edf01e5d-3644-4dbc-ab9d-f8954e6db6ea" Name="ThreadId" ColumnMetadata="EndThreadId" /&gt;
              &lt;MetadataEntry Guid="bbfc990a-b6c9-4dcd-858b-f040ab4a1efe" Name="Time" ColumnMetadata="StartTime" /&gt;
              &lt;MetadataEntry Guid="bbfc990a-b6c9-4dcd-858b-f040ab4a1efe" Name="Time" ColumnMetadata="EndTime" /&gt;
            &lt;/MetadataEntries&gt;
            &lt;HighlightEntries /&gt;
          &lt;/Preset&gt;
        &lt;/ModifiedPresets&gt;
        &lt;PersistedPresets /&gt;
      &lt;/GraphSchema&gt;
    &lt;/ModifiedGraphs&gt;
  &lt;/Content&gt;
&lt;/WpaProfileContainer&gt;</pre>
You can save it with a wpaPreset file extension, load your data in WPA, go to My Presets (File-&gt;Window-&gt;My Presents in the newer versions of WPA), select Import, browse to wherever you saved the preset, choose it, and double-click it to bring up the view.  You'll want to load symbols in order to make the most of this.  You set up symbols in WPA under File-&gt;Configure Symbols; you'll want to point it to the Microsoft symbol server at msdl.microsoft.com/download/symbols as well as your symbol server (or location where you have your symbols files if you don't have a symbol server setup).  You can configure WPA to load symbols automatically whenever you load a trace, but you can also always manually load symbols by going to File-&gt;Load Symbols.  Once that's done, you'll be able to look at your stack traces pretty easily.  It'll look something like this:

<a href="https://msdnshared.blob.core.windows.net/media/2017/08/wpa_eg_preset_ss.png"><img width="1024" height="579" class="alignnone size-large wp-image-1855" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/08/wpa_eg_preset_ss-1024x579.png" /></a>

Here's the sample code that I used compiled as an x64 console application when creating the above:
<pre><span>#include</span> <span>&lt;Windows.h&gt;</span>
<span>#include</span> <span>&lt;iostream&gt;</span>
<span>using</span> <span>namespace</span> std;
<span>void</span>* CreateCodeInVirtualMemory(<span>BOOL</span> <span>writable</span>)
{
	<span>BYTE</span> code[3] = { 0x33, 0xc0, 0xc3 };
	<span>LPVOID</span> result = VirtualAlloc(<span>NULL</span>, <span>sizeof</span>(code), <span>MEM_COMMIT</span> | <span>MEM_RESERVE</span>, <span>writable</span> ? <span>PAGE_EXECUTE_READWRITE</span> : <span>PAGE_READWRITE</span>);
	<span>if</span> (result)
	{
		memcpy(result, code, <span>sizeof</span>(code));
	}
	<span>else</span> cout <span>&lt;&lt;</span> <span>"VirtualAllocEx failed with error "</span> <span>&lt;&lt;</span> GetLastError() <span>&lt;&lt;</span> endl;
	<span>return</span> result;
}
<span>void</span> CreateCodeInVirtualMemoryAndExecute(<span>BOOL</span> <span>useWritableMemory</span>)
{
	<span>LPTHREAD_START_ROUTINE</span> addr = (<span>LPTHREAD_START_ROUTINE</span>)CreateCodeInVirtualMemory(<span>useWritableMemory</span>);
	<span>if</span> (addr)
	{
		<span>DWORD</span> result = addr(<span>NULL</span>);
		cout <span>&lt;&lt;</span> <span>"Code at 0x"</span> <span>&lt;&lt;</span> hex <span>&lt;&lt;</span> (<span>void</span>*)addr <span>&lt;&lt;</span> <span>" returned "</span> <span>&lt;&lt;</span> result <span>&lt;&lt;</span> endl;
	}
	<span>else</span> cout <span>&lt;&lt;</span> <span>"NULL address was not executed"</span> <span>&lt;&lt;</span> endl;
}
<span>void</span> ExecuteIllegalMemory()
{
	CreateCodeInVirtualMemoryAndExecute(<span>FALSE</span>);
}
 
<span>void</span> PrintOptions()
{
	cout <span>&lt;&lt;</span> <span>"Enter one of the following options:"</span> <span>&lt;&lt;</span> endl;
	cout <span>&lt;&lt;</span> <span>"1 - Execute Memory Not Marked As Executable"</span> <span>&lt;&lt;</span> endl;
	cout <span>&lt;&lt;</span> <span>"2 - Create Code in Virtual Memory"</span> <span>&lt;&lt;</span> endl;
	cout <span>&lt;&lt;</span> <span>"3 - Create Code in Virtual Memory and Execute"</span> <span>&lt;&lt;</span> endl;
	cout <span>&lt;&lt;</span> <span>"0 - Exit"</span> <span>&lt;&lt;</span> endl;
 
}
<span>void</span> DecisionLoop()
{
	<span>while</span> (<span>true</span>)
	{
		<span>int</span> selection;
		PrintOptions();
		cin <span>&gt;&gt;</span> selection;
		<span>switch</span> (selection)
		{
			<span>case</span> 0:
				<span>return</span>;
			<span>case</span> 1:
				ExecuteIllegalMemory();
				<span>break</span>;
			<span>case</span> 2:
				CreateCodeInVirtualMemory(<span>TRUE</span>);
				<span>break</span>;
			<span>case</span> 3:
				CreateCodeInVirtualMemoryAndExecute(<span>TRUE</span>);
				<span>break</span>;
			<span>default</span>:
				cout <span>&lt;&lt;</span> <span>"Invalid input"</span> <span>&lt;&lt;</span> endl;
		}
	}
}
<span>int</span> main()
{
	DecisionLoop();
	<span>return</span> 0;
}
</pre>
There are certainly more use cases for this that aren't covered here; this just scratches the surface of the possibilities :)

This kind of thing can also be done in much the same way for most anything that you find under Applications and Services logs in Event Viewer; click on the properties for a specific log and it will have the name in the form of Provider-Name-Parts/LogName.  You just want to use the "Provider-Name-Parts" portion in the xperf command.]]></content:encoded>
    </item>
    <item>
      <title>Why can't I restore files even when I have backup/restore privileges enabled?</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/why-cant-i-restore-files-even-when-i-have-backuprestore-privileges-enabled</link>
      <pubDate>Mon, 12 Dec 2016 17:25:03 GMT</pubDate>
      <dc:creator><![CDATA[Chris Lewis [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/?p=1815</guid>
      <description><![CDATA[Backup and restore privileges allow some, but not all, types of access checks to be bypassed....]]></description>
      <content:encoded><![CDATA[Backup and restore privileges allow some, but not all, types of access checks to be bypassed.  Typically those are sufficient to allow a backup utility to restore data to even sensitive folders.  However, there are some exceptions to that.  For example, at the time of this writing, much of the contents under %programfiles%\WindowsApps out of the box won't grant sufficient privileges for restore operations that need to modify data on the disk.  If I enable auditing on my Windows 10 1607 system, I may see entries such as this when trying to restore data even when running from a Local System service:

<strong>Access Reasons:  </strong>
<ul>
 	<li style="text-align: left">READ_CONTROL: Unknown or unchecked</li>
 	<li style="text-align: left">WRITE_DAC: Unknown or unchecked</li>
 	<li style="text-align: left">WRITE_OWNER: Unknown or unchecked</li>
 	<li style="text-align: left">SYNCHRONIZE: Unknown or unchecked</li>
 	<li style="text-align: left">ACCESS_SYS_SEC: Unknown or unchecked</li>
 	<li style="text-align: left">ReadData (or ListDirectory): Unknown or unchecked</li>
 	<li style="text-align: left">WriteData (or AddFile): Denied by Process Trust Label ACE</li>
 	<li style="text-align: left">AppendData (or AddSubdirectory or CreatePipeInstance): Denied by Process Trust Label ACE</li>
 	<li style="text-align: left">WriteEA: Denied by Process Trust Label ACE</li>
 	<li style="text-align: left">ReadAttributes: Unknown or unchecked</li>
 	<li style="text-align: left">WriteAttributes: Unknown or unchecked</li>
</ul>
<strong>Access Mask: </strong> 0x11E0197
<strong>Privileges Used for Access Check</strong>:
<ul>
 	<li>SeBackupPrivilege</li>
 	<li>SeRestorePrivilege</li>
</ul>
This is because of the <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/dn518240(v=vs.85).aspx">SYSTEM_PROCESS_TRUST_LABEL_ACE</a> present in an object's SACL; while its meaning isn't documented, you can reason that the <a href="https://msdn.microsoft.com/en-us/library/windows/hardware/dn518240(v=vs.85).aspx">SYSTEM_PROCESS_TRUST_LABEL_ACE</a>, which you can see on the object through the use of common security APIs, corresponds to the message "Denied by Process Trust Label ACE."  You can see that by running code such as (which could easily be modified to check for said ACE if one wanted to do so):
<div><span class="sc9"><span style="color: #804000;font-family: Courier New;font-size: small">#include &lt;Windows.h&gt;
#include &lt;sddl.h&gt;
#include &lt;AclAPI.h&gt;
#include &lt;winternl.h&gt;
#include &lt;sstream&gt;
</span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">typedef</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small">  </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NTSTATUS</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">__stdcall</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PZwQueryDirectoryFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HANDLE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HANDLE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Event</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ApcRoutine</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ApcContext</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PIO_STATUS_BLOCK</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">IoStatusBlock</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileInformation</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Length</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileInformationClass</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">BOOLEAN</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ReturnSingleEntry</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PUNICODE_STRING</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">BOOLEAN</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">RestartScan</span></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">typedef</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">struct</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">_FILE_DIRECTORY_INFORMATION</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NextEntryOffset</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileIndex</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CreationTime</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LastAccessTime</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LastWriteTime</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ChangeTime</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">EndOfFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LARGE_INTEGER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AllocationSize</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileAttributes</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNameLength</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">WCHAR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">];</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_DIRECTORY_INFORMATION</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PFILE_DIRECTORY_INFORMATION</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
</span><span class="sc11"><span style="font-family: Courier New;font-size: small">PZwQueryDirectoryFile</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NtQueryDirectoryFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">enum</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileInfoClass</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">:</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileDirInformation</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">};</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">EnablePrivileges</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">()</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HANDLE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">myToken</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LUID_AND_ATTRIBUTES</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">3</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">]</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{};</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">for</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&lt;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">_countof</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">++)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">].</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Attributes</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_PRIVILEGE_ENABLED</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LookupPrivilegeValueW</span></span><span class="sc10"><span style="color: #000080;font-family: Courier New;font-size: small"><b>(</b></span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_BACKUP_NAME</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">].</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Luid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LookupPrivilegeValueW</span></span><span class="sc10"><span style="color: #000080;font-family: Courier New;font-size: small"><b>(</b></span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_RESTORE_NAME</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">].</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Luid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LookupPrivilegeValueW</span></span><span class="sc10"><span style="color: #000080;font-family: Courier New;font-size: small"><b>(</b></span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_SECURITY_NAME</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">[</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">2</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">].</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Luid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">bufferSize</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>sizeof</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LUID_AND_ATTRIBUTES</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">_countof</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">+</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>sizeof</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PTOKEN_PRIVILEGES</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PTOKEN_PRIVILEGES</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">malloc</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">bufferSize</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(!</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PrivilegeCount</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">_countof</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">memcpy</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Privileges</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>sizeof</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">attr</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">));</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(!</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OpenProcessToken</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetCurrentProcess</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(),</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">TOKEN_ADJUST_PRIVILEGES</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">myToken</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">))</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(!</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AdjustTokenPrivileges</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">myToken</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FALSE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">))</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetLastError</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">()</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ERROR_NOT_ALL_ASSIGNED</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"Not all privileges were assigned...\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">free</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">tp</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">myToken</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">myToken</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">
</span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OutputSYSTEM_PROCESS_TRUST_LABEL_ACE_TYPESACLEntries</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LPCWSTR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PSECURITY_DESCRIPTOR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">psd</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PACL</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">dacl</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PACL</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sacl</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HANDLE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hFile</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CreateFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ACCESS_SYSTEM_SECURITY</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">|</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">READ_CONTROL</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_SHARE_READ</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">|</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_SHARE_WRITE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">|</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_SHARE_DELETE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OPEN_EXISTING</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_FLAG_BACKUP_SEMANTICS</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hFile</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">INVALID_HANDLE_VALUE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">err</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetSecurityInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_OBJECT_TYPE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">::</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SE_FILE_OBJECT</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SACL_SECURITY_INFORMATION</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">|</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PROCESS_TRUST_LABEL_SECURITY_INFORMATION</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">dacl</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sacl</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">psd</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">err</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">!=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"Failed to get security info:\t%d\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">err</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>return</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">else</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ACL_SIZE_INFORMATION</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sizeInfo</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{};</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sacl</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">            </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetAclInformation</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sacl</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sizeInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>sizeof</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sizeInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">),</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AclSizeInformation</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">))</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">for</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ULONG</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&lt;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sizeInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AceCount</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">++)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PACE_HEADER</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetAce</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">sacl</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">**)&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;&amp;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">type</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AceType</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">flags</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">AceFlags</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"System ACE %d is of type %d with flags %x\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">i</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">type</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">flags</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                        </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">type</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SYSTEM_PROCESS_TRUST_LABEL_ACE_TYPE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SYSTEM_PROCESS_TRUST_LABEL_ACE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ace</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SYSTEM_PROCESS_TRUST_LABEL_ACE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*)</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ah</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PSID</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">aceSid</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PSID</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)(&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ace</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">SidStart</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LPWSTR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ssid</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"%s:\tProcess Trust Level Ace with access mask %x for SID "</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ace</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Mask</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">aceSid</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                                </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"(NULL)\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">else</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ConvertSidToStringSidW</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">aceSid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ssid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">))</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                                </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"%s\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ssid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                                </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LocalFree</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ssid</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">else</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                                </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"(could not convert)\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                            </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ace</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">Mask</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                        </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">                </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">            </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">else</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"Null SACL\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessDirectory</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LPCWSTR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessFdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LPCWSTR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PFILE_DIRECTORY_INFORMATION</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc2"><span style="color: #008000;font-family: Courier New;font-size: small">//Skip . and ..
</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">one</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CompareStringOrdinal</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"."</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNameLength</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">/</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">2</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">TRUE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">one</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CSTR_EQUAL</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">||</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CompareStringOrdinal</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L".."</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-</span></b></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNameLength</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">/</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">2</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">TRUE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CSTR_EQUAL</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>return</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">std</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">::</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wstringstream</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&lt;&lt;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(*(--(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">str</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">().</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">end</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">())).</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">_Ptr</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">!=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc7"><span style="color: #808080;font-family: Courier New;font-size: small">'\\'</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&lt;&lt;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"\\"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">write</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNameLength</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">/</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">2</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">p</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileAttributes</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_ATTRIBUTE_DIRECTORY</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OutputSYSTEM_PROCESS_TRUST_LABEL_ACE_TYPESACLEntries</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">str</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">().</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">data</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">());</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessDirectory</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">str</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">().</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">data</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(),</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">+</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">1</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">else</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OutputSYSTEM_PROCESS_TRUST_LABEL_ACE_TYPESACLEntries</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wss</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">.</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">str</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">().</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">data</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">());</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessDirectory</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">LPCWSTR</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&gt;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>return</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HANDLE</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CreateFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GENERIC_READ</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_SHARE_READ</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">|</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_SHARE_WRITE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">OPEN_EXISTING</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FILE_FLAG_BACKUP_SEMANTICS</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">==</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">INVALID_HANDLE_VALUE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"Failed to process %s:\t%d\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetLastError</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">());</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>return</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fniSize</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">200000</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc2"><span style="color: #008000;font-family: Courier New;font-size: small">//arbitrarily large for laziness and since we're not going to check status values
</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small">    </span></span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">void</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">*</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">malloc</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fniSize</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(!</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">IO_STATUS_BLOCK</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">iosb</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{};</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HRESULT</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">status</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">HRESULT_FROM_NT</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NtQueryDirectoryFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">&amp;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">iosb</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fniSize</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileDirInformation</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FALSE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>NULL</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FALSE</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">));</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FAILED</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">status</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">))</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">wprintf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"Failed to query %s:\t%x\n"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">status</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">free</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc5"><span style="color: #0000ff;font-family: Courier New;font-size: small"><b>return</b></span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PFILE_DIRECTORY_INFORMATION</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PFILE_DIRECTORY_INFORMATION</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessFdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">while</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NextEntryOffset</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">!=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DWORD</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">offset</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">-&gt;</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NextEntryOffset</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PFILE_DIRECTORY_INFORMATION</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)((</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">__int3264</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">+</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">offset</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">        </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessFdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">directoryName</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">fdi</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">currentRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">maxRecurseLevel</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">free</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">FileNamesInfo</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">CloseHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">hf</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span><span class="sc0">
</span><span class="sc16"><span style="color: #8000ff;font-family: Courier New;font-size: small">int</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">main</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">()</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">{</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">EnablePrivileges</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NtQueryDirectoryFile</span></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">=</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">PZwQueryDirectoryFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetProcAddress</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">GetModuleHandle</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"ntdll.dll"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">),</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">"NtQueryDirectoryFile"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">if</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(!</span></b></span><span class="sc11"><span style="font-family: Courier New;font-size: small">NtQueryDirectoryFile</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">)</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">DebugBreak</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">();</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc11"><span style="font-family: Courier New;font-size: small">ProcessDirectory</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">(</span></b></span><span class="sc6"><span style="color: #808080;font-family: Courier New;font-size: small">L"C:\\Program Files\\WindowsApps\\"</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">,</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">3</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">);</span></b></span><span class="sc0">
<span style="font-family: Courier New;font-size: small">    </span></span><span class="sc5"><b><span style="color: #0000ff;font-family: Courier New;font-size: small">return</span></b></span><span class="sc0"><span style="font-family: Courier New;font-size: small"> </span></span><span class="sc4"><span style="color: #ff8000;font-family: Courier New;font-size: small">0</span></span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">;</span></b></span><span class="sc0">
</span><span class="sc10"><b><span style="color: #000080;font-family: Courier New;font-size: small">}</span></b></span></div>]]></content:encoded>
    </item>
    <item>
      <title>Visual Studio Team Services and Personal Microsoft Accounts</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/visual-studio-team-services-and-microsoft-accounts-vsts-and-msas</link>
      <pubDate>Thu, 29 Sep 2016 19:40:43 GMT</pubDate>
      <dc:creator><![CDATA[Jeff Lambert]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/?p=1755</guid>
      <description><![CDATA[Visual Studio Team Services and Personal Microsoft Accounts
10/5/2016 Update - Due to the...]]></description>
      <content:encoded><![CDATA[<h2>Visual Studio Team Services and Personal Microsoft Accounts</h2>
<blockquote><strong>10/5/2016 Update</strong> - <em>Due to the unexpectedly high impact to many corporate <i>VSTS</i> accounts backed by Personal Microsoft accounts, VSTS accounts are temporarily exempted from the scenario described below. <i>Personal Microsoft accounts </i>created from VSTS invite links or on VisualStudio.com can now be created even if they have the same sign-in name as a Work or School account. <strong>This is temporary!</strong> Some time in 2017, <i>Personal Microsoft accounts</i> will be permanently blocked if the sign-in name is already in use by a Work or School account. </em>

<em>Please use this extra time to plan your move to one of the 3 options below, and if you are setting up a new VSTS account, please use one of the 3 options below from the start.</em>

/Jeff</blockquote>

<hr />

Jeff here from the Windows SDK team. I am on temporary assignment to the VSTS group, so this blog post is something a little different.

Microsoft operates two cloud-scale identity systems: Personal Microsoft accounts and Azure Active Directory (AAD).
1. <strong>Personal Microsoft accounts</strong> (formerly called Live ID). These accounts are meant to be created, managed and used by individuals and are bound to Microsoft’s consumer Terms and Privacy policy.
2. <strong>Work or school accounts in Azure AD.</strong> These are typically created by IT departments for their users (employees or students). They’re meant to be used to access corporate owned resources such as Office 365 services. They are governable by IT (meaning that IT gets to control and audit the use of these accounts).

When you create a Personal Microsoft account, you either get a new email address from Microsoft (@Outlook.com, @Hotmail.com, etc.) or you can use your own email address or phone number as a sign-in name. Some users have created a Personal Microsoft account with their Work or School email address as a sign-in name. If their organization uses Office 365 or any other business service from Microsoft that relies on Azure AD for authentication, these users will end up with two Microsoft identities with the same sign-in name. When logging on with one of these “Dopplegangers” you may see this dialog:
<a href="https://msdnshared.blob.core.windows.net/media/2016/09/MSAWSA.png"><img width="300" height="172" class="size-medium wp-image-1785 aligncenter" alt="MSAWSA" src="https://msdnshared.blob.core.windows.net/media/2016/09/MSAWSA-300x172.png" /></a>

Starting on 9/15/2016, Microsoft blocked being able to create new Personal Microsoft accounts using a Work or School email address of a domain that’s configured in an Azure AD or Office 365. There are several problems that can arise when you have duplicate Personal/Work or School accounts with the same sign-in name. It is always confusing which account you need or are using, and in some situations it is not possible to choose the correct account. To address these problems, Microsoft no longer lets you create accounts that overlap. <a href="https://blogs.technet.microsoft.com/enterprisemobility/2016/09/15/cleaning-up-the-azure-ad-and-microsoft-account-overlap/">This is explained in this blog</a>. Previously created Personal Microsoft accounts will continue to work, though.

Trying to create a duplicate account throws the error: "You can't sign up here with a work or school email address."<a href="https://msdnshared.blob.core.windows.net/media/2016/09/Error1.png"><img width="270" height="71" class="size-full wp-image-1795 aligncenter" alt="Error" src="https://msdnshared.blob.core.windows.net/media/2016/09/Error1.png" /></a>
<h2>Impact to Visual Studio Team Services</h2>
VSTS has been greatly impacted by this change. Many VSTS accounts are “Personal Microsoft account backed,” this means that you can only logon to VSTS using a Personal Microsoft account. Many businesses have been adding users to Personal Microsoft account backed VSTS accounts by inviting User@company.com. VSTS allows you to invite any user, whether or not the account already exists. In this scenario, the VSTS admin invites a new corporate user, User@company.com, and they receive the email in their corporate inbox. After receiving the email invite, they are prompted to create a Personal Microsoft account when they try to access VSTS, if needed. Many VSTS administrators assume users will be able to create the new Personal Microsoft account, but since 9/15/2016 this has been blocked. Previously invitees to VSTS successfully created Personal Microsoft accounts with their @company.com address, however new invitees may not create a Personal Microsoft account that duplicated the sign-in name of their Work School account.

One of the VSTS program managers shared this with me, as to why using a Personal Microsoft account version of User@company.com (Work or School account) isn't secure.
<blockquote><em><span style="margin: 0px;color: black;font-family: 'Calibri',sans-serif;font-size: 11pt">"Using a corporate email address to create a personal Microsoft account does not make [it] more or less governable than using a personal email address, but it creates a expectation/perception of governability that has hurt enough customers that we've decided to stop that practice.</span><span style="margin: 0px;color: black;font-family: 'Calibri',sans-serif"> </span></em>

<span style="margin: 0px;color: black;font-family: 'Calibri',sans-serif;font-size: 11pt"><em>Unlike user accounts in Azure AD,  IT pros have no administrative control of personal Microsoft accounts, regardless of the email address those accounts were created with. They can’t prevent users from changing the account username and they can’t prevent users from continuing to use those accounts after they leave the organization. They can't apply policies to them. They can't delete them. They can't exert any control over what applications are accessed by these accounts. They can’t audit usage and can't validate to authorities any particular use of those accounts. They can’t ask Microsoft to release control of these accounts or of account data."</em></span></blockquote>
Now that new duplicate Personal Microsoft accounts are blocked, the only ways for new users to access VSTS are:

1)      Invite users using a real Personal Microsoft account email account (@Hotmail, @Outlook).

2)      Invite users using an email account NOT associated with Azure/O365 (@Gmail, @Yahoo). These users will still need to create a Personal Microsoft account, if they haven’t already.

3)      <a href="https://www.visualstudio.com/docs/setup-admin/team-services/manage-organization-access-for-your-account-vs">Create a link between your Azure/O365 AAD and VSTS</a>.

To use options 1 and 2 you need to be OK with @Hotmail, @Gmail, etc. accounts in your VSTS account list. Options 1 and 2 are the easiest, no planning needed.

If you need your VSTS users to only use their corporate email accounts, then you need to use option 3. Option 3 is the more difficult, and requires some thought and planning. <a href="https://www.visualstudio.com/docs/setup-admin/team-services/manage-organization-access-for-your-account-vs">Information on linking an AAD and VSTS can be found here</a>.

Some things to watch out for if you link your AAD and VSTS.

1)      External accounts. When you link VSTS and an AAD, only users in the AAD can access VSTS. Corporate users will be fine, but if your VSTS account had any @Hotmail, etc. accounts you will need to add them to your AAD. (When adding a user, choose ‘User with an existing Microsoft Account’.)

2)      Guest accounts. When a VSTS account is backed by Personal Microsoft accounts, there is no concept of guest users, only when you link an AAD to your VSTS account does this show up. Corporate users in the AAD will be members so they are OK, but there are several gotchas with using external Personal Microsoft accounts (guests) with a VSTS account. You can see the user type in the new Azure portal (www.azure.com.)

<img width="212" height="128" class=" wp-image-1775 aligncenter" alt="Guest" src="https://msdnshared.blob.core.windows.net/media/2016/09/Guest.png" />
<ol>
 	<li>Guests can’t search the AAD to add new users VSTS. <a href="https://blogs.msdn.microsoft.com/dstfs/2015/12/23/issues-with-azure-active-directory-guest-users-in-aad-backed-visual-studio-team-services-accounts/">See this blog for more information </a>and how to use PowerShell to change Guests to Members. Please note: the error message has changed recently, instead of one about AAD guests searching the directory, you will receive the error, “No identities found.”</li>
 	<li>A guest can’t be assigned ownership of a VSTS account. A guest can still own it, if they owned it before the AAD was linked and you then added their account to the AAD. You could also use <a href="https://blogs.msdn.microsoft.com/dstfs/2015/12/23/issues-with-azure-active-directory-guest-users-in-aad-backed-visual-studio-team-services-accounts/">PowerShell</a> to switch them to a guest in the AAD (but shouldn’t.)</li>
 	<li>Guests can be denied all access. There is an option on the settings tab for a VSTS account, External Guest Access. It is set to allow by default, if you set it to deny then no guests can access VSTS. It is possible to have an AAD with only guests in it and in this case no one will be able to access VSTS. You would need to use <a href="https://blogs.msdn.microsoft.com/dstfs/2015/12/23/issues-with-azure-active-directory-guest-users-in-aad-backed-visual-studio-team-services-accounts/">PowerShell </a>to flip the VSTS owner to be a member, then logon to VSTS and set guest access back to Allow.
<a href="https://msdnshared.blob.core.windows.net/media/2016/09/External.png"><img width="300" height="76" class="size-medium wp-image-1765 aligncenter" alt="External" src="https://msdnshared.blob.core.windows.net/media/2016/09/External-300x76.png" /></a></li>
</ol>
/Jeff
<a href="https://msdnshared.blob.core.windows.net/media/2016/09/External.png"> </a>]]></content:encoded>
    </item>
    <item>
      <title>Why does SqlDataReader behave differently with Set-PSDebug enabled?</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/why-does-sqldatareader-behave-differently-with-set-psdebug-enabled</link>
      <pubDate>Tue, 27 Sep 2016 14:59:40 GMT</pubDate>
      <dc:creator><![CDATA[Chris Lewis [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/?p=1715</guid>
      <description><![CDATA[We recently had someone ask why their PowerShell script stopped working correctly when they enabled...]]></description>
      <content:encoded><![CDATA[We recently had someone ask why their PowerShell script stopped working correctly when they enabled tracing with the command Set-PSDebug -Trace 2.  The part of the code in question that didn't work basically boiled down to something like this:
<code>
function Execute-Query($connectionString)
{
$connection = New-Object System.Data.SqlClient.SQLConnection;
$connection.ConnectionString = $connectionString;
$connection.Open();
$cmd = $connection.CreateCommand();
$cmd.CommandText = "SELECT * FROM [dbo].[Table]";
$cmd.Connection = $connection;
$result = $cmd.ExecuteReader();
$result
}
$result = Execute-Query $connString
foreach($Record in $result)
{
$Record[1]
}</code>

When this was ran with Set-PSDebug -Trace 2 turned on, the foreach loop's body would not execute no matter how many records where returned by the query.  If Set-PSDebug -Off is then set and the code ran again, it would execute the body of the loop for each record that the query returned.

This happens because the output from Set-PSDebug -Trace 2 results in the object being generically enumerated before it gets to the foreach loop and the object only supports being enumerated through once.  It's also an issue to some degree because said object is assigned to a variable before that variable is then written to the pipeline which results in the need for more trace output.  Assigning the collection result to a variable, outputting that variable from the function, assigning to a second variable, and operating the foreach loop against that variable while having the tracing enumerate through the collection each time in order to output its contents is what ultimately causes this to result in different behavior with the tracing enabled versus disabled.  That is not supported to behave differently in that scenario and thus will not be changed to accommodate that scenario.  Most collections can be enumerated through multiple times so this won't come up with them, but if you do want to use Set-PSDebug and use classes which are enumerable but only once for a given object, you do have some options besides just turning Set-PSDebug off.

If you don't <em>need</em> to do the multiple variable assignments or have the function return the collection directly, you can output the $cmd object and only call ExecuteReader() when your code actually needs the result of the query.

If you're using PowerShell 4 or 5, this can be worked around by changing the lines "$result =$cmd.ExecuteReader(); $result" to "$result = $cmd.ExecuteReader().GetEnumerator(); $result" unless you need to use members of SqlDataReader that aren't present in its IEnumerator.  That isn't the only way to resolve it but it is the smallest code change that comes to mind while keeping the multiple variable assignments in tact.  You can see how the output differs in the trace output from Set-PSDebug -Trace 2 when calling ExecuteReader().GetEnumerator() versus ExecuteReader().  When just ExecuteReader() is assigned to the variable, the collection is enumerated through in the output and the type of the variable is SqlDataReader.  When ExecuteReader().GetEnumerator() is assigned to the variable,  just IEnumerator is seen in the trace output when the variable is set instead of the collections being enumerated through and the variable is of the type DbEnumerator.  If one doesn't need the assignment to $result in the function, simply outputting "$cmd.ExecuteReader()" to the pipeline also works in this situation.  If you do need to assign the SqlDataReader type to a variable to use its members but only from within the function itself and don't mind doing the query twice, you can assign $result to $cmd.ExecuteReader(), do what you need to do with $result, call $result.Close(), and then  call $cmd.ExecuteReader() again to output its result.

If the multiple variable assignments of the collection and working with Set-PSDebug -Trace 2 are necessary for one's scenario, one thing that you can do that works at least as far back as Powershell 2 is to wrap the enumerable results into another collection object which supports multiple enumerations.  For instance, instead of assigning the result of $cmd.ExecuteReader() directly to result, you could make $result = New-Object System.Collections.ArrayList and then pipe the ExecuteReader function's results to ForEach-Object { [void]$reader.Add($_) }.  That would result in an ArrayList containing the data record objects which could be enumerated through multiple times.  If you want to assign that collection to a variable to work with within a function before putting it to the pipeline from that function and using that variable in a foreach loop, you'll want to wrap that in another collection as well if Write-Output with the NoEnumerate option isn't available (e.g. your PowerShell version is older than 4).

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Hotfix List for February 2016</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/hotfix-list-for-february-2016</link>
      <pubDate>Wed, 10 Feb 2016 06:16:49 GMT</pubDate>
      <dc:creator><![CDATA[Jeff Lambert]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/2016/02/10/hotfix-list-for-february-2016/</guid>
      <description><![CDATA[Hi guys, 
Jeff here from the Windows SDK team. Here are the Windows hotfixes for February...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Calibri; font-size: small;">Hi guys, <br /></span></p>
<p><span style="font-family: Calibri; font-size: small;">Jeff here from the Windows SDK team. Here are the Windows hotfixes for February 2016.</span></p>
<p><a href="https://support.microsoft.com/kb/3007507"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3007507</span></a><span style="font-family: Times New Roman; font-size: small;">&nbsp; &nbsp;"HTTP Error 500.19" error when you browse an IIS 8.5 website in Windows</span></p>
<p><a href="https://support.microsoft.com/kb/3090343"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3090343</span></a><span style="font-family: Times New Roman; font-size: small;">&nbsp; &nbsp;Cluster service stops during the VSS backup in a Windows Server 2012 R2 or Windows Server 2012-based Hyper-V cluster</span></p>
<p><a href="https://support.microsoft.com/kb/3123593"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3123593</span></a><span style="font-family: Times New Roman; font-size: small;">&nbsp; &nbsp;A multi-site failover cluster goes into a split brain situation in Windows Server 2012 R2</span></p>
<p><a href="https://support.microsoft.com/kb/3133689"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3133689</span></a><span style="font-family: Times New Roman; font-size: small;">&nbsp; &nbsp;UBPM doesn't set environmental variables correctly when you run scheduled tasks in Windows Server 2012 R2<br /></span></p>
<p><span style="font-family: Calibri; font-size: small;">Happy patching!<br /></span></p>
<p><span style="font-family: Calibri; font-size: small;">/Jeff</span></p>
<p><span style="font-family: Calibri; font-size: small;">Follow us on Twitter, </span><a href="https://www.twitter.com/WindowsSDK"><span style="color: #0000ff; font-family: Calibri; font-size: small;">www.twitter.com/WindowsSDK</span></a><span style="font-family: Calibri; font-size: small;">. </span></p>]]></content:encoded>
    </item>
    <item>
      <title>Hotfix for January 2016</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/hotfix-for-january-2016</link>
      <pubDate>Wed, 13 Jan 2016 06:27:27 GMT</pubDate>
      <dc:creator><![CDATA[Jeff Lambert]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/2016/01/13/hotfix-for-january-2016/</guid>
      <description><![CDATA[&nbsp;
&nbsp;
Jeff here from the SDK team. This month there is only 1 public hotfix because of the...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: small;">Jeff here from the SDK team. This month there is only 1 public hotfix because of the holidays.</span></p>
<p><span style="font-family: Calibri; font-size: small;">&nbsp;</span></p>
<p><span style="font-family: Calibri; font-size: small;">3047331 </span><a href="https://support.microsoft.com/en-us/kb/3047331"><span style="color: #0563c1; font-family: Calibri; font-size: small;">&ldquo;0x00000050" Stop error on a failover cluster that is running Windows Server 2012 R2 or Windows Server 2012</span></a></p>
<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: small;">Happy patching.</span></p>
<p><span style="font-family: Calibri; font-size: small;">/Jeff</span></p>
<p><span style="font-family: Calibri; font-size: small;">Follow us on Twitter, </span><a href="https://www.twitter.com/WindowsSDK"><span style="color: #0563c1; font-family: Calibri; font-size: small;">www.twitter.com/WindowsSDK</span></a><span style="font-family: Calibri; font-size: small;">. </span></p>]]></content:encoded>
    </item>
    <item>
      <title>Why CryptCATAdminCalcHashFromFileHandle fails with a seemingly unexpected error code</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/why-cryptcatadmincalchashfromfilehandle-fails-with-a-seemingly-unexpected-error-code</link>
      <pubDate>Tue, 05 Jan 2016 05:16:00 GMT</pubDate>
      <dc:creator><![CDATA[Chris Lewis [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/2016/01/05/why-cryptcatadmincalchashfromfilehandle-fails-with-a-seemingly-unexpected-error-code/</guid>
      <description><![CDATA[CryptCATAdminCalcHashFromFileHandle can fail when evaluating a file path to an executable while...]]></description>
      <content:encoded><![CDATA[<p><span style="font-size: medium"><span style="font-family: calibri"></span></span></p>  <p>CryptCATAdminCalcHashFromFileHandle can fail when evaluating a file path to an executable while setting the last error code to 0x800700c1.&#160; It’s an HRESULT instead of just an error code, but the relevant portion of the error code is 0xc1 (193L).&#160; That is the error code for ERROR_BAD_EXE_FORMAT.&#160; In some cases, this will happen even though the executable can run without an error.&#160; So why would this function return ERROR_BAD_EXE_FORMAT when directly executing the file works without issue?</p>  <p>There are actually several reasons why this error can be returned, and only some of them would actually prevent an executable from being able to run on an unrestricted system.&#160; All of them come from the portable executable (PE) header of the file.&#160; The types used below can be found in the Windows SDK, primarily in winnt.h.&#160; Here are most of the reasons:</p>  <ul>   <li>PIMAGE_DOS_HEADER-&gt;e_magic is an invalid value </li>    <li>PIMAGE_DOS_HEADER-&gt;e_lfanew is an invalid value </li>    <li>PIMAGE_NT_HEADERS-&gt;Signature is an invalid value </li>    <li>PIMAGE_NT_HEADERS-&gt;FileHeader.SizeOfOptionalHeader is an invalid value </li>    <li>PIMAGE_NT_HEADERS-&gt;FileHeader.Machine is an invalid value </li>    <li>PIMAGE_NT_HEADERS-&gt;OptionalHeader.Magic is an invalid value </li>    <li>PIMAGE_NT_HEADERS-&gt;OptionalHeader.FileAlignment is an invalid value </li>    <li>Any of the populated members of PIMAGE_NT_HEADERS-&gt;OptionalHeader.DataDirectory have invalid values </li>    <li>The certificate directory (IMAGE_DIRECTORY_ENTRY_SECURITY) has an offset that puts its data in an invalid location; see <a title="https://msdn.microsoft.com/en-us/windows/hardware/gg463180" href="https://msdn.microsoft.com/en-us/windows/hardware/gg463180">https://msdn.microsoft.com/en-us/windows/hardware/gg463180</a> for more details on what the standards for that are. </li> </ul>  <p>If you encounter this error on an executable file, these can be identified manually by looking at the output of a couple of tools.&#160; If there’s a problem with the IMAGE_DIRECTORY_ENTRY_SECURITY section, then running <a href="https://msdn.microsoft.com/en-us/library/8s9b9yaz(v=vs.110).aspx" target="_blank">SignTool.exe</a> verify /v <em>filename</em> will output “SignTool Error: File not valid: <em>filename</em>”.&#160; The rest of them can be identified by looking through the output of <a href="https://msdn.microsoft.com/en-us/library/c1h23y6c.aspx" target="_blank">dumpbin.exe</a>.&#160; Dumpbin is available through Visual Studio and SignTool is available through the Windows SDK.</p>  <p><span style="font-size: medium"><span style="font-family: calibri"></span></span></p>  <p><span style="font-size: medium"><span style="font-family: calibri">Follow us on Twitter, </span><a href="https://www.twitter.com/WindowsSDK"><span style="font-size: small; font-family: calibri; color: #0000ff">www.twitter.com/WindowsSDK</span></a><span style="font-family: calibri">. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Hotfixes for December 2015</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/hotfixes-for-december-2015</link>
      <pubDate>Wed, 09 Dec 2015 06:17:00 GMT</pubDate>
      <dc:creator><![CDATA[Jeff Lambert]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/2015/12/09/hotfixes-for-december-2015/</guid>
      <description><![CDATA[Jeff here, from the SDK team with the Holiday Hotfixes. Happy patching.
KB2920591&nbsp; &nbsp;High...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: medium;">Jeff here, from the SDK team with the Holiday Hotfixes. Happy patching.<br /></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/2920591"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB2920591</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;High CPU usage and performance issues occur when access-based enumeration is enabled in Windows 7 Service Pack 1 or Windows Server 2008 R2 Service Pack 1</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3084463"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3084463</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;WSUSutil.exe csaimport fails upon import in Windows Server 2012 R2 or Windows Server 2012</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3095319"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3095319</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;You receive an error message when you use GPMC to manage audit policies in Windows 8.1 or Windows Server 2012 R2</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3102997"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3102997</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Data is corrupted after iSCSI sessions or paths recover in Windows Server 2012 R2 or Windows Server 2012</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3102998"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3102998</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Application can't connect to iSCSI servers in Windows Server 2012 R2 or Windows Server 2012</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3106296"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3106296</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Can't connect to a wireless network when you resume the computer from hibernation</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3107128"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3107128</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Search result is incomplete if search criteria contain digits in Windows</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3108319"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3108319</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;VSS backup of the PI Data server fails and the computer crashes in Windows 8.1 or Windows Server 2012 R2</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3109093"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3109093</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Applications can't communicate over TCP loopback path in Windows 8.1 or Windows Server 2012 R2</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3109099"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3109099</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Update adds support for the slow timer in LACP in Windows Server 2012 R2</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3109156"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3109156</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Applications may freeze when ADSI APIs waits infinitely for server to respond in Windows Server 2012 R2</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3109600"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3109600</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Users can't log on to Outlook Web App client from a browser in Windows</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3109973"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3109973</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Backup fails with a "File Not Found" error on a Windows Server 2012 R2 cluster</span></span></p>
<p><span style="font-size: medium;"><a href="https://support.microsoft.com/kb/3114133"><span style="color: #0000ff; font-family: Times New Roman; font-size: small;">KB3114133</span></a><span style="font-family: Times New Roman;">&nbsp; &nbsp;Windows Server Backup fails when you back up multiple volumes in Windows Server 2012 R2</span></span></p>
<p><span style="font-family: Calibri; font-size: medium;">Happy Holidays,</span></p>
<p><span style="font-family: Calibri; font-size: medium;">/Jeff</span></p>
<p><span style="font-size: medium;"><span style="font-family: Calibri;">Follow us on Twitter, </span><a href="https://www.twitter.com/WindowsSDK"><span style="color: #0000ff; font-family: Calibri; font-size: small;">www.twitter.com/WindowsSDK</span></a><span style="font-family: Calibri;">. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>SHA-1 Code Signing Deprecation in Windows beginning January 1, 2016</title>
      <link>https://docs.microsoft.com/archive/blogs/winsdk/sha-1-code-signing-deprecation-in-windows-beginning-january-1-2016</link>
      <pubDate>Fri, 20 Nov 2015 15:51:00 GMT</pubDate>
      <dc:creator><![CDATA[Frank K [MSFT]]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/winsdk/2015/11/20/sha-1-code-signing-deprecation-in-windows-beginning-january-1-2016/</guid>
      <description><![CDATA[This post is to help the product team spread the word on Windows (version 7 and higher) and Windows...]]></description>
      <content:encoded><![CDATA[<p>This post is to help the product team spread the word on Windows (version 7 and higher) and Windows Server will no longer trust any code that is signed with a SHA-1 code signing certificate and that contains a timestamp value greater than January 1,2016, <strong>effective January 1, 2016</strong>.</p>
<p>For more information or to get the latest information on this topic, please check out the following WIKI on Microsoft Technet,&nbsp;<a href="https://aka.ms/sha1">https://aka.ms/sha1</a></p>]]></content:encoded>
    </item>
  </channel>
</rss>