<?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>All about Windows Hardware Development</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/xiz/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/xiz/feed.xml</link>
    <description>Windows Driver/Device Development and Hardware Certifcation</description>
    <lastBuildDate>Wed, 17 Apr 2019 03:28:47 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>6 months after I move to Intel MCG</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/6-months-after-i-move-to-intel-mcg</link>
      <pubDate>Sun, 01 Jun 2014 21:27:43 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2014/06/01/6-months-after-i-move-to-intel-mcg/</guid>
      <description><![CDATA[Cheers! Great place to wok on Windows Tablet in MCG!]]></description>
      <content:encoded><![CDATA[<p>Cheers! Great place to wok on Windows Tablet in MCG!</p>]]></content:encoded>
    </item>
    <item>
      <title>MaximumTransferSize is obsolete after Win2000</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/maximumtransfersize-is-obsolete-after-win2000</link>
      <pubDate>Sun, 03 Nov 2013 18:21:53 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/maximumtransfersize-is-obsolete-after-win2000/</guid>
      <description><![CDATA[MaximumTransferSize member of the USBD_PIPE_INFORMATION structure is obsolete after Win2000. Systems...]]></description>
      <content:encoded><![CDATA[<p>MaximumTransferSize member of the <a href="https://msdn.microsoft.com/en-us/library/ms793357.aspx">USBD_PIPE_INFORMATION</a> structure is obsolete after Win2000. Systems after win2000 don't care about this value anyway.The USB stack ignores the value in MaximumTransferSize for both composite and non-composite devices, this values will be set to the default.The default values of MaximumTransferSize under Vista are listed below.<br /><br /><br />1.&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://msdn.microsoft.com/en-us/library/ms790486.aspx">https://msdn.microsoft.com/en-us/library/ms790486.aspx</a><br />2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="https://msdn.microsoft.com/en-us/library/ms793357.aspx">https://msdn.microsoft.com/en-us/library/ms793357.aspx</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Layered Driver Architecture</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/layered-driver-architecture</link>
      <pubDate>Sun, 03 Nov 2013 18:21:19 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/layered-driver-architecture/</guid>
      <description><![CDATA[https://msdn.microsoft.com/en-us/library/ms791644.aspxLayered Driver ArchitectureWindows operating...]]></description>
      <content:encoded><![CDATA[<p><a href="https://msdn.microsoft.com/en-us/library/ms791644.aspx">https://msdn.microsoft.com/en-us/library/ms791644.aspx</a><br /><br />Layered Driver Architecture<br /><a name="gs_basics_91f4bc09-43a3-4b77-94d9-0e92f1003c18.xml"></a><br />Windows operating systems support a layered driver architecture. Every device is serviced by a chain of drivers, typically called a driver stack. Each driver in the stack isolates some hardware-dependent features from the drivers above it.<br />The following figure shows the types of drivers that could potentially be in a driver stack for a hypothetical device. In reality, few (if any) driver stacks contain all these types of drivers.<br />Layered Driver Architecture<br />As the preceding figure shows:<br />Above the driver stack is an application. The application handles requests from users and other applications, and calls either the Win32 API or a routine that is exposed by the user-mode client driver.<br />A user-mode client driver handles requests from applications or from the Win32 API. For requests that require kernel-mode services, the user-mode client driver calls the Win32 API, which calls the appropriate kernel-mode client or support routine to carry out the request. User-mode client drivers are usually implemented as dynamic-link libraries (DLL). Printers support many operations that can be performed in user mode, and so typically have user-mode clients; disks and other storage devices, networks, and input devices do not.<br />A kernel-mode client driver handles requests similar to those handled by the user-mode client, except that these requests are carried out in kernel mode, rather than in user mode.<br />A device class and miniclass driver pair provides the bulk of the device-specific support. The class driver supplies system-required but hardware-independent support for a particular class of device. Class drivers are typically supplied by Microsoft.<br />A miniclass driver handles operations for a specific type of device of a particular class. For example, the battery class driver supports common operations for any battery, while a miniclass driver for a vendor's UPS device handles details unique to that particular device. Miniclass drivers are typically supplied by hardware vendors.<br />A corresponding port driver (for some devices, this is a host controller or host adapter driver) supports required I/O operations on an underlying port, hub, or other physical device through which the device attaches. Whether any such drivers are present depends on the type of device and the bus to which it eventually connects.<br />All driver stacks for storage devices have a port driver. For example, the SCSI port driver provides support for I/O over the SCSI bus.<br />For USB devices, a hub and host controller driver pair perform the duties of the port driver. These drivers handle I/O between the devices on the USB bus and the bus itself.<br />A corresponding miniport driver handles device-specific operations for the port driver. For most types of devices, the port driver is supplied with the operating system, and the miniport driver is supplied by the device vendor.<br />At the bottom of the figure is the hardware bus driver. Microsoft supplies bus drivers for all the major buses as part of the operating system. You should not attempt to replace these drivers.<br />Network drivers have their own unique terminology, defined in <a id="ctl00_rs1_mainContentContainer_ctl01" href="https://msdn.microsoft.com/en-us/library/ms797342.aspx">Windows 2000 and Later Network Architecture and the OSI Model</a>. Nevertheless, network drivers are similarly layered, and each layer isolates device-specific or protocol-specific functionality from the layer above it.<br />Exactly which drivers are present, and what they are called, depends on the type of device and the bus to which it connects.<br />Graphics cards, for example, require a display driver, a video port driver, and a video miniport driver. The display driver is analogous to the kernel-mode client driver in the previous figure. It provides general drawing capabilities and can often work with more than one graphics card. The video port driver supports device-independent graphics operations. It works in tandem with the video miniport driver, which provides functionality that is specific to one graphics card (or a family of graphics cards). The paired video port/miniport drivers are analogous to the port/miniport drivers in the figure, and no class/miniclass drivers are present. For more information, see <a id="ctl00_rs1_mainContentContainer_ctl02" href="https://msdn.microsoft.com/en-us/library/ms801048.aspx">Display Architecture</a>.<br />For simplicity, filter drivers are not shown in the previous figure. However, a filter driver can fit in at any layer of the driver stack above the hardware bus driver. A filter driver adds value to an existing driver by "filtering" &mdash; intercepting and manipulating device I/O. As a general rule, filter drivers do not operate the hardware directly, but work only on data and I/O requests passed to them from the next-higher or next-lower driver.<br />DirectShow, the Microsoft software for video capture, includes system-supplied filter drivers that run in user mode. These filters act as clients of the kernel-mode stream class driver to expose the underlying video capture technology.</p>]]></content:encoded>
    </item>
    <item>
      <title>"CTS" is not supported by USBSer.sys?</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/cts-is-not-supported-by-usbser-sys</link>
      <pubDate>Sun, 03 Nov 2013 18:20:47 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/cts-is-not-supported-by-usbser-sys/</guid>
      <description><![CDATA[The usbser.sys assumes that the device has always signaled CTS.The RTS/CTS hardware handshaking is...]]></description>
      <content:encoded><![CDATA[<p>The usbser.sys assumes that the device has always signaled CTS.<br />The RTS/CTS hardware handshaking is not implemented in usbser.sys.</p>]]></content:encoded>
    </item>
    <item>
      <title>Get installed hotfixes in Windows</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/get-installed-hotfixes-in-windows</link>
      <pubDate>Sun, 03 Nov 2013 18:20:17 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/get-installed-hotfixes-in-windows/</guid>
      <description><![CDATA[Here is a command: wmic qfe list full

On XP, go to the registry directly:&nbsp;Instances of this...]]></description>
      <content:encoded><![CDATA[<p>Here is a command: <span class="Apple-style-span" style="font-weight: bold;">wmic qfe list full</span></p>
<ul>
<li>On XP, go to the registry directly:&nbsp;<br />Instances of this class represent updates found in two places in the registry:
<p>&nbsp;</p>
<ul>
<li>
<p><strong>HKEY_LOCAL_MACHINE</strong>\<strong>SOFTWARE</strong>\<strong>Microsoft</strong>\<strong>Windows&nbsp; NT</strong>\ &nbsp; &nbsp;<strong>CurrentVersion</strong>\<strong>Hotfix</strong></p>
</li>
<li>
<p><strong>HKEY_LOCAL_MACHINE</strong>\<strong>SOFTWARE</strong>\<strong>Microsoft</strong>\<strong>Updates</strong></p>
</li>
</ul>
</li>
<li>On Vista+, the registry doesn't exist any more. Try the WMI Class:&nbsp;Win32_QuickFixEngineering Class&nbsp;<a href="https://msdn.microsoft.com/en-us/library/aa394391(VS.85).aspx">https://msdn.microsoft.com/en-us/library/aa394391(VS.85).aspx</a></li>
</ul>]]></content:encoded>
    </item>
    <item>
      <title>To ignore a device's serial number</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/to-ignore-a-devices-serial-number</link>
      <pubDate>Sun, 03 Nov 2013 18:19:33 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/to-ignore-a-devices-serial-number/</guid>
      <description><![CDATA[https://www.lvr.com/usbfaq.htmDuring device testing, we attach many devices that are identical except...]]></description>
      <content:encoded><![CDATA[<p><a href="https://www.lvr.com/usbfaq.htm">https://www.lvr.com/usbfaq.htm</a><br /><br />During device testing, we attach many devices that are identical except for the serial numbers. How can I prevent Windows from asking to install a new driver every time a device is attached?<br /><br />This method causes Windows 2000 and XP to ignore a device's serial number. It's recommended for test environments only.<br /><br />This registry key controls whether Windows uses or ignores device serial numbers:<br /><br />[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\UsbFlags]<br /><br /><br />It's possible to ignore all serial numbers, though this approach is NOT recommended. To ignore all serial numbers, in the above key, change this value to zero:<br /><br />GlobalDisableSerNumGen = 1<br /><br />To ignore the serial number for an individual device, create an entry under the above ...\UsbFlags key. The name must<br />start with "IgnoreHWSerNum" followed by the vendor and product ID of the device. A value of 1 = disable the serial number.<br /><br />Example (Vendor ID = 0925h, Product ID = 016Ah):<br /><br />IgnoreHWSerNum0925016A= 1</p>]]></content:encoded>
    </item>
    <item>
      <title>Run program as Local System Account</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/run-program-as-local-system-account</link>
      <pubDate>Sun, 03 Nov 2013 18:18:53 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/run-program-as-local-system-account/</guid>
      <description><![CDATA[To delete registry keys under Vista+...
This article&nbsp; which demonstrates the use of PSTools...]]></description>
      <content:encoded><![CDATA[<p>To delete registry keys under Vista+...</p>
<p>This <a href="https://verbalprocessor.com/2007/12/05/running-a-cmd-prompt-as-local-system">article</a>&nbsp; which demonstrates the use of <a href="https://download.sysinternals.com/Files/PsTools.zip">PSTools</a> from <a href="https://sysinternals.com/">SysInternals</a> which was acquired by Microsoft&nbsp; in July, 2006. I launched the command line and issued the following statement&nbsp; and suddenly I was running under the Local System Account like magic:</p>
<pre><code>psexec -i -s cmd.exe</code></pre>
<p>PSTools worked great.</p>
<p>&nbsp;</p>
<p>https://verbalprocessor.com/2007/12/05/running-a-cmd-prompt-as-local-system</p>
<p>https://download.sysinternals.com/Files/PsTools.zip</p>]]></content:encoded>
    </item>
    <item>
      <title>How to remove phantom/ghost devices</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/how-to-remove-phantomghost-devices</link>
      <pubDate>Sun, 03 Nov 2013 18:18:24 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/how-to-remove-phantomghost-devices/</guid>
      <description><![CDATA[What is phantom devices
Hidden, inactive deives, ghost devices. When a device is physically removed...]]></description>
      <content:encoded><![CDATA[<p>What is phantom devices</p>
<p>Hidden, inactive deives, ghost devices. When a device is physically removed from a machine, the driver becomes a phantom and is no longer visible in Device Manager. Normally this is desirable, but can be a problem if you wish to remove the device driver.</p>
<ul>
<li>How to identify and remove phantom devices in device manager (manually)?</li>
</ul>
<p>do the following:<br />1.&nbsp; From the command prompt on the problem media server, run:C:\&gt;set devmgr_show_nonpresent_devices=1C:\&gt;start devmgmt.msc<br />2.&nbsp; Then, select View from the drop down and select to Show Hidden Devices.At this point, any ghost tape devices will be seen with lighter, transparent icon and can be removed.&nbsp; This is done by right-clicking the ghost tape device and selecting "Uninstall".</p>
<p>&nbsp;</p>
<ul>
<li>How to do this programming...</li>
</ul>
<p>devcon command works!</p>
<p>Find *&nbsp; FindAll *&nbsp; Remove "@hwid"</p>]]></content:encoded>
    </item>
    <item>
      <title>Test Unit Ready (TUR)</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/test-unit-ready-tur</link>
      <pubDate>Sun, 03 Nov 2013 18:17:45 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/test-unit-ready-tur/</guid>
      <description><![CDATA[The SCSI Test Unit Ready command is used to determine if a device is&nbsp; ready to transfer data...]]></description>
      <content:encoded><![CDATA[<p>The SCSI <strong>Test Unit Ready command</strong> is used to determine if a device is&nbsp; ready to transfer data (read/write). The device will then return either good status or a <a title="SCSI check condition" href="https://www.blogger.com/wiki/SCSI_check_condition">check&nbsp; condition</a></p>
<p>SCSI communication takes place between an <a title="SCSI initiator" href="https://www.blogger.com/wiki/SCSI_initiator">initiator</a> and a <a class="mw-redirect" title="SCSI target" href="https://www.blogger.com/wiki/SCSI_target">target</a>. The initiator sends a&nbsp; <a title="SCSI command" href="https://www.blogger.com/wiki/SCSI_command">command</a> to the target&nbsp; which then responds. SCSI commands are sent in a Command Descriptor Block (<a title="SCSI CDB" href="https://www.blogger.com/wiki/SCSI_CDB">CDB</a>). At the end of the command the&nbsp; target returns a <a title="SCSI Status Code" href="https://www.blogger.com/wiki/SCSI_Status_Code">Status Code</a> byte which is usually 00h for&nbsp; success, 02h for a Check Condition (error), or 08h for busy.</p>
<p>When the target returns a Check Condition in response to a command, the&nbsp; initiator usually then issues a <a title="SCSI Request Sense Command" href="https://www.blogger.com/wiki/SCSI_Request_Sense_Command">SCSI Request Sense command</a> in order&nbsp; to obtain more information.</p>
<p>&nbsp;</p>
<p><a href="https://support.microsoft.com/kb/842411">https://support.microsoft.com/kb/842411</a></p>
<p>To check the status of a backup device, Plug and Play sends a Test Unit Ready&nbsp; request to the device every second</p>]]></content:encoded>
    </item>
    <item>
      <title>Overview of Signing and Install Process</title>
      <link>https://docs.microsoft.com/archive/blogs/xiz/overview-of-signing-and-install-process</link>
      <pubDate>Sun, 03 Nov 2013 18:17:17 GMT</pubDate>
      <dc:creator><![CDATA[Fred ZH]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/xiz/2013/11/03/overview-of-signing-and-install-process/</guid>
      <description><![CDATA[&nbsp;
&nbsp;
I think "PIC" actually means...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<div class="post-header">&nbsp;</div>
<div id="post-body-1297054845646062498" class="post-body entry-content"><a href="https://3.bp.blogspot.com/_KxTbM65wrnM/Sguzzm9XGKI/AAAAAAAAABA/dIfYCV2shs0/s1600-h/Untitled.jpg"><img id="BLOGGER_PHOTO_ID_5335555882763098274" style="margin: 0px auto 10px; width: 400px; height: 260px; text-align: center; display: block; cursor: pointer;" src="https://3.bp.blogspot.com/_KxTbM65wrnM/Sguzzm9XGKI/AAAAAAAAABA/dIfYCV2shs0/s400/Untitled.jpg" alt="" border="0" /></a>I think "PIC" actually means "SPC".<br /><br /><a href="https://msdn.microsoft.com/en-us/library/aa906274.aspx">https://msdn.microsoft.com/en-us/library/aa906274.aspx</a><br />Kernel-Mode Code Signing Requirements for Public Release of a Driver<br />Windows Vista 64-bit Versions<br />The kernel-mode code signing policy requires that a kernel-mode driver be signed as follows:<br />?&nbsp;&nbsp;&nbsp; A kernel-mode boot-start driver must have an embedded Software Publisher Certificate (SPC) signature. This applies to any type of PnP or non-PnP kernel-mode boot-start driver.<br />?&nbsp;&nbsp;&nbsp; A non-PnP kernel-mode driver that is not a boot-start driver must have either a catalog file with an SPC signature or the driver file must include an embedded SPC signature.<br />?&nbsp;&nbsp;&nbsp; A PnP kernel-mode driver that is not a boot-start driver must have either an embedded SPC signature, a catalog file with a WHQL release signature, or a catalog file with an SPC signature. Although the kernel-mode code signing policy does not require that the catalog file of a PnP driver be signed, PnP device installation treats a driver as signed only if the catalog file of the driver is also signed.</div>]]></content:encoded>
    </item>
  </channel>
</rss>