summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBarry Golden <[email protected]>2019-09-12 10:46:37 -0700
committerGitHub <[email protected]>2019-09-12 10:46:37 -0700
commitdb43355fe49c4bec3dbb5f84c271e15dc914ce72 (patch)
tree055a4d1bd666d9e41a0faf495ca786a8da47bc47
parentbbe176e4e13cb9f963897173a935e639267a1a20 (diff)
-rw-r--r--audio/sysvad/README.md90
-rw-r--r--avstream/avscamera/README.md10
-rw-r--r--avstream/avscamera/mft0/README.md35
-rw-r--r--avstream/avshws/README.md15
-rw-r--r--avstream/avssamp/README.md9
-rw-r--r--avstream/sampledevicemft/README.md31
-rw-r--r--avstream/samplemft0/README.md31
-rw-r--r--biometrics/README.md9
-rw-r--r--bluetooth/bthecho/README.md115
-rw-r--r--bluetooth/serialhcibus/README.md39
10 files changed, 132 insertions, 252 deletions
diff --git a/audio/sysvad/README.md b/audio/sysvad/README.md
index 128f40b2..77de39a3 100644
--- a/audio/sysvad/README.md
+++ b/audio/sysvad/README.md
@@ -9,15 +9,6 @@ products:
urlFragment: sysvad-virtual-audio-device-driver-sample
---
-<!---
- name: SysVAD Virtual Audio Device Driver Sample
- platform: WDM
- language: cpp
- category: Audio
- description: The Microsoft SysVAD Virtual Audio Device Driver (SYSVAD) shows how to develop a WDM audio driver that exposes support for multiple audio devices.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620183
---->
-
# SysVAD Virtual Audio Device Driver Sample
The Microsoft SysVAD Virtual Audio Device Driver (SYSVAD) shows how to develop a WDM audio driver that exposes support for multiple audio devices.
@@ -26,23 +17,23 @@ Some of these audio devices are embedded in the system (for example, speakers, m
Driver developers can use the framework in this sample to provide support for various audio devices without concern for hardware dependencies. The framework includes implementations of the following interfaces:
-- The CAdapterCommon interface gives the miniports access to virtual mixer hardware. It also implements the **IAdapterPowerManagement** interface.
+- The CAdapterCommon interface gives the miniports access to virtual mixer hardware. It also implements the **IAdapterPowerManagement** interface.
-- The CMiniportTopologySYSVAD interface is the base class for all sample topologies. It has very basic common functions. In addition, this class contains common topology property handlers.
+- The CMiniportTopologySYSVAD interface is the base class for all sample topologies. It has very basic common functions. In addition, this class contains common topology property handlers.
The following table shows the features that are implemented in the various subdirectories of this sample.
-Directory | Description
------|------------
-TabletAudioSample | Endpoints that are present in TabletAudioSample driver.
-PhoneAudioSample | Endpoints that are present in PhoneAudioSample driver.
-EndpointsCommon | Endpoints that are present in both TabletAudioSample and PhoneAudioSample. It also contains other common code shared by both sample drivers.
-SwapAPO | Sample APO that installs onto endpoints exposed by the SysVAD sample driver and swaps the left and right channels.
-DelayAPO | Sample APO that adds a delay to the input samples.
-KwsAPO | Sample APO that uses KSPROPERTY_INTERLEAVEDAUDIO_FORMATINFORMATION to determine if the keyword spotter pin is interleaving loopback audio with the microphone audio and identify which channels contain loopback audio. If it is interleaved the APO will strip out the loopback audio and deliver only the microphone audio upstream. Because channel data is removed, the APO negotiates an output format which is different than the input format.
-KeywordDetectorAdapter | Sample Keyword Detector Adapter.
+| Directory | Description |
+| --- | --- |
+| TabletAudioSample | Endpoints that are present in TabletAudioSample driver |
+| PhoneAudioSample | Endpoints that are present in PhoneAudioSample driver |
+| EndpointsCommon | Endpoints that are present in both TabletAudioSample and PhoneAudioSample. It also contains other common code shared by both sample drivers. |
+| SwapAPO | Sample APO that installs onto endpoints exposed by the SysVAD sample driver and swaps the left and right channels |
+| DelayAPO | Sample APO that adds a delay to the input samples |
+| KwsAPO | Sample APO that uses KSPROPERTY_INTERLEAVEDAUDIO_FORMATINFORMATION to determine if the keyword spotter pin is interleaving loopback audio with the microphone audio and identify which channels contain loopback audio. If it is interleaved the APO will strip out the loopback audio and deliver only the microphone audio upstream. Because channel data is removed, the APO negotiates an output format which is different than the input format. |
+| KeywordDetectorAdapter | Sample Keyword Detector Adapter |
-For more information about the Windows audio engine, see [Exposing Hardware-Offloaded Audio Processing in Windows](http://msdn.microsoft.com/en-us/windows/hardware/br259116), and note that audio hardware that is offload-capable replicates the architecture that is presented in the diagram shown in the topic.
+For more information about the Windows audio engine, see [Hardware-Offloaded Audio Processing](https://docs.microsoft.com/windows-hardware/drivers/audio/hardware-offloaded-audio-processing), and note that audio hardware that is offload-capable replicates the architecture that is presented in the diagram shown in the topic.
## Build the sample
@@ -50,21 +41,21 @@ If you simply want to Build this sample driver and don't intend to run or test i
Perform the following steps to build this sample driver.
-**1. Open the driver solution in Visual Studio**
+### 1. Open the driver solution in Visual Studio
In Microsoft Visual Studio, Click **File** \> **Open** \> **Project/Solution...** and navigate to the folder that contains the sample files (for example, *C:\Windows-driver-samples\audio\sysvad*). Double-click the *sysvad* solution file.
In Visual Studio locate the Solution Explorer. (If this is not already open, choose **Solution Explorer** from the **View** menu.) In Solution Explorer, you can see one solution that has eight projects.
-**2. Set the sample's configuration and platform**
+### 2. Set the sample's configuration and platform
In Solution Explorer, right-click **Solution 'sysvad' (8 projects)**, and choose **Configuration Manager**. Make sure that the configuration and platform settings are the same for the eight projects. By default, the configuration is set to **Debug**, and the platform is set to **Win32** for all the projects. If you make any configuration and/or platform changes for one project, you must make the same changes for the remaining three projects.
-**3. Build the sample using Visual Studio**
+### 3. Build the sample using Visual Studio
In Visual Studio, click **Build** \> **Build Solution**.
-**4. Locate the built driver package**
+### 4. Locate the built driver package
In File Explorer, navigate to the folder that contains the sample files. For example, you would navigate to *C:\\Windows-driver-samples\\audio\\sysvad*, if that's the folder you specified in the preceding Step 1.
@@ -72,16 +63,16 @@ In the folder, the location of the driver package varies depending on the config
The package should contain these files:
-File | Description
------|------------
-TabletAudioSample.sys OR PhoneAudioSample.sys| The driver file.
-SwapAPO.dll | The swap APO.
-DelayAPO.dll | The delay APO.
-KWSApo.dll | The KWS APO.
-sysvad.cat | A signed catalog file, which serves as the signature for the entire package.
-TabletAudioSample.inf | An information (INF) file that contains information needed to install the driver.
-PhoneAudioSample.inf | An information (INF) file that contains information needed to install the driver.
-KeywordDetectorContosoAdapter.dll | Sample Keyword detector adapter.
+| File | Description |
+| --- | --- |
+| TabletAudioSample.sys OR PhoneAudioSample.sys| The driver file |
+| SwapAPO.dll | The swap APO |
+| DelayAPO.dll | The delay APO |
+| KWSApo.dll | The KWS APO |
+| sysvad.cat | A signed catalog file, which serves as the signature for the entire package. |
+| TabletAudioSample.inf | An information (INF) file that contains information needed to install the driver. |
+| PhoneAudioSample.inf | An information (INF) file that contains information needed to install the driver. |
+| KeywordDetectorContosoAdapter.dll | Sample Keyword detector adapter |
## Run the sample
@@ -93,9 +84,9 @@ The process of moving the driver package to the target computer and installing t
Before you automatically deploy a driver, you must provision the target computer. Verify that the target computer has an ethernet cable connecting it to your local network, and that your host and target computers can ping each other. Then perform the following steps to prepare your host and target computers.
-**1. Provision the target computer**
+#### 1. Provision the target computer
-On the target computer install the latest [Windows Driver Kit](http://msdn.microsoft.com/en-us/windows/hardware/gg454513.aspx) (WDK), and then when the installation is completed, navigate to the following folder:
+On the target computer install the latest [Windows Driver Kit](https://docs.microsoft.com/windows-hardware/drivers/download-the-wdk) (WDK), and then when the installation is completed, navigate to the following folder:
\\Program Files (x86)\\Windows Kits\\10\\Remote\\<*architecture*>\\
@@ -107,9 +98,9 @@ Double-click the *WDK Test Target Setup x64-x64\_en-us.msi* file to run it. This
On the host computer, in Visual Studio click **Driver** \> **Test** \> **Configure Computers...**, and then click **Add a new computer**.
-Type the name of the target computer, select **Provision computer and choose debugger settings**, and click **Next**. In the next window, verify that the **Connection Type** is set to Network. Leave the other (default) settings as they are, and click **Next**. For more information about the settings in this window, see [Getting Set Up for Debugging](http://msdn.microsoft.com/en-us/library/windows/hardware/hh450944(v=vs.85).aspx).
+Type the name of the target computer, select **Provision computer and choose debugger settings**, and click **Next**. In the next window, verify that the **Connection Type** is set to Network. Leave the other (default) settings as they are, and click **Next**. For more information about the settings in this window, see [Setting Up Debugging](https://docs.microsoft.com/windows-hardware/drivers/debugger/getting-set-up-for-debugging).
-**2. Prepare the host computer**
+#### 2. Prepare the host computer
If you haven't already done so, then preform the steps in the **Build the sample** section, to build the sample driver.
@@ -125,15 +116,15 @@ On the target computer, perform the steps in the **Test the sample** section to
Before you manually deploy a driver, you must prepare the target computer by turning on test signing and by installing a certificate. You also need to locate the DevCon tool in your WDK installation. After that you're ready to run the built driver sample.
-**1. Prepare the target computer**
+#### 1. Prepare the target computer
Open a Command Prompt window as Administrator. Then enter the following command:
-**bcdedit /set TESTSIGNING ON**
+`bcdedit /set TESTSIGNING ON`
Reboot the target computer. Then navigate to the Tools folder in your WDK installation and locate the DevCon tool. For example, look in the following folder:
-*C:\\Program Files (x86)\\Windows Kits\\10\\Tools\\x64\\devcon.exe*
+C:\\Program Files (x86)\\Windows Kits\\10\\Tools\\x64\\devcon.exe
Copy *devcon.exe* to a folder on the target computer where it is easier to find. For example, create a *C:\\Tools* folder and copy *devcon.exe* to that folder.
@@ -141,23 +132,23 @@ Create a folder on the target for the built driver package (for example, *C:\\Sy
Create a folder on the target computer for the certificate created by the build process. For example, you could create a folder named *C:\\Certificates* on the target computer, and then copy *package.cer* to it from the host computer. You can find this certificate in the same folder on the host computer, as the *package* folder that contains the built driver files. On the target computer, right-click the certificate file, and click **Install**, then follow the prompts to install the test certificate.
-If you need more detailed instructions for setting up the target computer, see [Preparing a Computer for Manual Driver Deployment](https://docs.microsoft.com/en-us/windows-hardware/drivers/develop/preparing-a-computer-for-manual-driver-deployment).
+If you need more detailed instructions for setting up the target computer, see [Preparing a Computer for Manual Driver Deployment](https://docs.microsoft.com/windows-hardware/drivers/develop/preparing-a-computer-for-manual-driver-deployment).
-**2. Install the driver**
+#### 2. Install the driver
-The TabletAudioSample or PhoneAudioSample driver package contains a sample driver and 2 driver extension samples. The following instructions show you how to install and test the sample driver.
+The TabletAudioSample or PhoneAudioSample driver package contains a sample driver and 2 driver extension samples. The following instructions show you how to install and test the sample driver.
-The INF file required for installing this driver is *TabletAudioSample.inf*.
+The INF file required for installing this driver is *TabletAudioSample.inf*.
On the target computer, open a Command Prompt window as Administrator. Navigate to your driver package folder, and enter the following command:
-**devcon dp_add TabletAudioSample.inf**
+`devcon dp_add TabletAudioSample.inf`
If you get an error message about *devcon* not being recognized, try adding the path to the *devcon* tool. For example, if you copied it to a folder called *C:\\Tools*, then try using the following command:
-**C:\\tools\\devcon dp_add TabletAudioSample.inf**
+`C:\\tools\\devcon dp_add TabletAudioSample.inf`
-For more detailed instructions, see [Configuring a Computer for Driver Deployment, Testing, and Debugging](http://msdn.microsoft.com/en-us/library/windows/hardware/hh698272(v=vs.85).aspx).
+For more detailed instructions, see [Provision a computer for driver deployment and testing](https://docs.microsoft.com/windows-hardware/drivers/gettingstarted/provision-a-target-computer-wdk-8-1).
After successfully installing the sample driver, you're now ready to test it.
@@ -168,4 +159,3 @@ On the target computer, in a Command Prompt window, enter **devmgmt** to open De
On the target computer, open Control Panel and navigate to **Hardware and Sound** \> **Manage audio devices**. In the Sound dialog box, select the speaker icon labeled as *Microsoft Virtual Audio Device (WDM) - Tablet Audio Sample*, then click **Set Default**, but do not click **OK**. This will keep the Sound dialog box open.
Locate an MP3 or other audio file on the target computer and double-click to play it. Then in the Sound dialog box, verify that there is activity in the volume level indicator associated with the *Microsoft Virtual Audio Device (WDM) - Tablet Audio Sample* driver.
-
diff --git a/avstream/avscamera/README.md b/avstream/avscamera/README.md
index 51f3353d..da8e8d65 100644
--- a/avstream/avscamera/README.md
+++ b/avstream/avscamera/README.md
@@ -9,16 +9,6 @@ products:
- windows-wdk
---
-
-<!---
- name: AvsCamera - AVStream Camera Sample Driver
- platform: WDM
- language: cpp
- category: Camera AVStream
- description: Provides a pin-centric AVStream capture driver for a simulated front and back camera that performs simulated captures at 320x240 or 640x480 in RGB24, RGB32, YUY2 and NV12 formats at various frame rates.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620184
---->
-
# AvsCamera - AVStream Camera Sample Driver
The AvsCamera sample provides a pin-centric AVStream capture driver for a simulated front and back camera. The driver performs simulated captures at 320x240 or 640x480 in RGB24, RGB32, YUY2 and NV12 formats at various frame rates. The purpose of the sample is to demonstrate how to write a fully functional AVStream camera driver.
diff --git a/avstream/avscamera/mft0/README.md b/avstream/avscamera/mft0/README.md
deleted file mode 100644
index eaee3bdf..00000000
--- a/avstream/avscamera/mft0/README.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-page_type: sample
-description: "Provides a pin-centric AVStream capture driver for a simulated front and back camera that performs simulated captures."
-languages:
-- cpp
-products:
-- windows
-- windows-wdk
----
-
-
-<!---
- name: AvsCamera - AVStream Camera Sample Driver
- platform: WDM
- language: cpp
- category: Camera AVStream
- description: Provides a pin-centric AVStream capture driver for a simulated front and back camera that performs simulated captures at 320x240 or 640x480 in RGB24, RGB32, YUY2 and NV12 formats at various frame rates.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620184
---->
-
-# AvsCamera: AVStream Camera Sample Driver
-
-The AvsCamera sample provides a pin-centric AVStream capture driver for a simulated front and back camera. The driver performs simulated captures at 320x240 or 640x480 in RGB24, RGB32, YUY2 and NV12 formats at various frame rates. The purpose of the sample is to demonstrate how to write a fully functional AVStream camera driver.
-
-This sample features strong parameter validation and overflow detection. It provides validation and simulation logic for all advanced camera controls in the CCaptureFilter class. A real camera driver would replace the filter automation table and CSensor and CSynthesizer class hierarchies to produce a new camera driver.
-
-The sample comes with its own MFT0 called AvsCameraMft0.dll. This MFT0 is used to parse metadata supplied in the AvsCamera driver samples. The metadata communications from the driver is primarily a private channel to its MFT0. The MFT0 is responsible for reformatting that information for the capture pipeline.
-
-## Universal Windows Driver Compliant
-
-This sample builds a Universal Windows Driver. It uses only APIs and DDIs that are included in OneCoreUAP. The sample works on 32-bit and 64-bit x86, amd64 and arm platforms. Once installed, the simulated camera should show in the Windows Inbox camera app.
-
-## Building the sample
-
-The AvsCamera sample can be built by opening the AvsCamera.sln solution file. A successful build produces AvsCamera.sys, AvsCameraMft0.dll, AvsCamera.inf and AvsCamera.cat.
diff --git a/avstream/avshws/README.md b/avstream/avshws/README.md
index a67f71ca..49bb9e04 100644
--- a/avstream/avshws/README.md
+++ b/avstream/avshws/README.md
@@ -8,18 +8,9 @@ products:
- windows-wdk
---
-<!---
- name: AVStream simulated hardware sample driver (Avshws)
- platform: WDM
- language: cpp
- category: Camera
- description: A simulated hardware sample driver providing a pin-centric capture driver to simulate AV capture hardware.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620185
---->
-
# AVStream simulated hardware sample driver (Avshws)
-The AVStream simulated hardware sample driver (Avshws) provides a pin-centric [AVStream](http://msdn.microsoft.com/library/windows/hardware/ff554240) capture driver for a simulated piece of hardware. This streaming media driver performs video captures at 320 x 240 pixels in either RGB24 or YUV422 format using direct memory access (DMA) into capture buffers. The purpose of the sample is to demonstrate how to write a pin-centric AVStream minidriver. The sample also shows how to implement DMA by using the related functionality provided by the AVStream class driver.
+The AVStream simulated hardware sample driver (Avshws) provides a pin-centric [AVStream](https://docs.microsoft.com/windows-hardware/drivers/stream/avstream-overview) capture driver for a simulated piece of hardware. This streaming media driver performs video captures at 320 x 240 pixels in either RGB24 or YUV422 format using direct memory access (DMA) into capture buffers. The purpose of the sample is to demonstrate how to write a pin-centric AVStream minidriver. The sample also shows how to implement DMA by using the related functionality provided by the AVStream class driver.
This sample features enhanced parameter validation and overflow detection.
@@ -27,9 +18,9 @@ This sample features enhanced parameter validation and overflow detection.
After you've installed the sample on your host computer, run Visual Studio, and from the **File** menu, select **Open**, then **Project/Solution...**, navigate to the directory where you've copied the Avshws sample, then to the C++ folder, and select **avshws.vcxproj** (the VC++ Project).
-In the **Solution Explorer** pane in Visual Studio, at the top is **Solution 'avshws'**. Right-click this and select **Configuration Manager**. Follow the instructions in [Building a Driver with the WDK](http://msdn.microsoft.com/library/windows/hardware/ff554644) to set the platform, operating system, and debug configuration you want to use, and to build the sample. This sample project will automatically sign the driver package.
+In the **Solution Explorer** pane in Visual Studio, at the top is **Solution 'avshws'**. Right-click this and select **Configuration Manager**. Follow the instructions in [Building a Driver with Visual Studio and the WDK](https://docs.microsoft.com/windows-hardware/drivers/develop/building-a-driver) to set the platform, operating system, and debug configuration you want to use, and to build the sample. This sample project will automatically sign the driver package.
-Provision your target computer using instructions in, for example, [Preparing a Computer for Provisioning](http://msdn.microsoft.com/library/windows/hardware/dn265573). Ensure that in the **Network and Sharing Center** control panel your target computer has **Network Discovery** and **File and Printer Sharing** enabled.
+Provision your target computer using instructions in, for example, [Provision a computer for driver deployment and testing](https://docs.microsoft.com/windows-hardware/drivers/gettingstarted/provision-a-target-computer-wdk-8-1). Ensure that in the **Network and Sharing Center** control panel your target computer has **Network Discovery** and **File and Printer Sharing** enabled.
## Deploy the driver to the target computer
diff --git a/avstream/avssamp/README.md b/avstream/avssamp/README.md
index ec11091b..42f0d393 100644
--- a/avstream/avssamp/README.md
+++ b/avstream/avssamp/README.md
@@ -8,15 +8,6 @@ products:
- windows-wdk
---
-<!---
- name: AVStream filter-centric simulated capture sample driver (Avssamp)
- platform: WDM
- language: cpp
- category: Camera
- description: An AVStream filter-centric simulated capture sample driver with functional audio.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620186
---->
-
# AVStream filter-centric simulated capture sample driver (Avssamp)
The AVStream filter-centric simulated capture sample driver (Avssamp) provides a filter-centric [AVStream](https://docs.microsoft.com/windows-hardware/drivers/stream/avstream-overview) capture driver with functional audio. This streaming media driver performs video captures at 320 x 240 pixel resolution in RGB24 or YUV422 format while playing a user-provided Pulse Code Modulation (PCM) wave audio file in a loop. The sample demonstrates how to write a filter-centric AVStream minidriver.
diff --git a/avstream/sampledevicemft/README.md b/avstream/sampledevicemft/README.md
index 17f163db..05367d11 100644
--- a/avstream/sampledevicemft/README.md
+++ b/avstream/sampledevicemft/README.md
@@ -8,40 +8,29 @@ products:
- windows-wdk
---
-
-<!---
- name: Driver Device Transform Sample
- platform: WDM
- language: cpp
- category: Camera
- description: A driver device transform which loads in a process streaming an Avstream based camera device using Media Foundation.
- samplefwlink: https://go.microsoft.com/fwlink/?linkid=866747
---->
-
# Driver Device Transform Sample
-Illustrative example for a *Driver Device Transform* which loads in a process streaming an Avstream based camera device using Media Foundation.
+Illustrative example for a *Driver Device Transform* which loads in a process streaming an Avstream based camera device using Media Foundation.
-A *Driver Device Transform* is a new kind of a transform that's used with a specific camera when capturing video. The *Driver Device Transform* is also known as DeviceMFT because it is the first Device Transform applied to the video source. This *Driver Device Transform* is an alternative to the Driver MFT i.e. MFT0 in that, it caters to the source rather than the streams . An N stream source supporting DeviceMFT will have a single instance of the *Device Driver Transform* loaded, while MFT0 will have *N* instances for each pipeline process. The DeviceMFT can advertise multiple streams at the output, which can differ from the number of streams advertised by the source. This is analogous to having a user mode driver in the MF pipeline which intercepts and processes commands before they enter/ leave the Kernel mode driver loaded for the streaming source.
+A *Driver Device Transform* is a new kind of a transform that's used with a specific camera when capturing video. The *Driver Device Transform* is also known as DeviceMFT because it is the first Device Transform applied to the video source. This *Driver Device Transform* is an alternative to the Driver MFT, for example, MFT0 in that it caters to the source rather than the streams. An N stream source supporting DeviceMFT will have a single instance of the *Device Driver Transform* loaded, while MFT0 will have *N* instances for each pipeline process. The DeviceMFT can advertise multiple streams at the output, which can differ from the number of streams advertised by the source. This is analogous to having a user mode driver in the MF pipeline which intercepts and processes commands before they enter/ leave the Kernel mode driver loaded for the streaming source.
-In this sample, the Device Transform , when enabled, will replicate a photo sequence in the user mode from a one pin device . It acts as a passthrough for sources exposing more than one pins.
+In this sample, the Device Transform, when enabled, will replicate a photo sequence in the user mode from a one pin device. It acts as a passthrough for sources exposing more than one pins.
This sample is designed to be used with a specific camera. To run the sample, you need the your camera's device ID and device metadata package.
-Related topics
---------------
+## Related topics
-**Concepts**
+### Concepts
-[UWP device apps for cameras](http://go.microsoft.com/fwlink/p/?LinkId=306683)
+[UWP device apps for cameras](https://docs.microsoft.com/windows-hardware/drivers/devapps/uwp-device-apps-for-webcams)
-[Media Foundation Transforms](http://msdn.microsoft.com/en-us/library/windows/hardware/ms703138)
+[Media Foundation Transforms](https://docs.microsoft.com/windows/win32/medfound/media-foundation-transforms)
-[Roadmap for Developing Streaming Media Drivers](http://msdn.microsoft.com/en-us/library/windows/hardware/ff568130)
+[Streaming media device driver design guide](https://docs.microsoft.com/windows-hardware/drivers/stream)
-[Universal camera driver design guide for Windows 10](https://msdn.microsoft.com/en-us/Library/Windows/Hardware/dn937080)
+[Universal camera driver design guide for Windows 10](https://docs.microsoft.com/windows-hardware/drivers/stream/windows-10-technical-preview-camera-drivers-design-guide)
-**Samples**
+### Samples
[Device app for camera sample](http://go.microsoft.com/fwlink/p/?linkid=249442)
diff --git a/avstream/samplemft0/README.md b/avstream/samplemft0/README.md
index 3d4f8444..0ea52c91 100644
--- a/avstream/samplemft0/README.md
+++ b/avstream/samplemft0/README.md
@@ -8,38 +8,31 @@ products:
- windows-wdk
---
-
-<!---
- name: Driver MFT Sample
- platform: WDM
- language: cpp
- category: Camera
- description: A driver MFT for use with a camera's UWP device app.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=617126
---->
-
# Driver MFT Sample
Provides a *driver MFT* for use with a camera's UWP device app.A *driver MFT* is a Media Foundation Transform that's used with a specific camera when capturing video. The driver MFT is also known as MFT0 because it is the first MFT applied to the video stream captured from the camera. This MFT can provide a video effect or other processing when capturing photos or video from the camera. It can be distributed along with the driver package for a camera.
-In this sample, the driver MFT, when enabled, replaces a portion of the captured video with a green box. To test this sample, download the [UWP device app for camera sample](http://go.microsoft.com/fwlink/p/?linkid=249442) and the [Camera Capture UI sample](http://go.microsoft.com/fwlink/p/?linkid=249441). The [UWP device app for camera sample](http://go.microsoft.com/fwlink/p/?linkid=249442) provides a *UWP device app* that controls the effect implemented by the driver MFT. The [Camera Capture UI sample](http://go.microsoft.com/fwlink/p/?linkid=249441) provides a way to invoke the *UWP device app*.
+In this sample, the driver MFT, when enabled, replaces a portion of the captured video with a green box. To test this sample, download the [UWP device app for camera sample](http://go.microsoft.com/fwlink/p/?linkid=249442) and the [Camera Capture UI sample](http://go.microsoft.com/fwlink/p/?linkid=249441).
+
+The **UWP device app for camera sample** provides a *UWP device app* that controls the effect implemented by the driver MFT.
+
+The **Camera Capture UI sample** provides a way to invoke the **UWP device app**.
This sample is designed to be used with a specific camera. To run the sample, you need the your camera's device ID and device metadata package.
-Related topics
---------------
+## Related topics
-**Concepts**
+### Concepts
-[UWP device apps for cameras](http://go.microsoft.com/fwlink/p/?LinkId=306683)
+[UWP device apps for cameras](https://docs.microsoft.com/windows-hardware/drivers/devapps/uwp-device-apps-for-webcams)
-[Media Foundation Transforms](http://msdn.microsoft.com/en-us/library/windows/hardware/ms703138)
+[Media Foundation Transforms](https://docs.microsoft.com/windows/win32/medfound/media-foundation-transforms)
-[Roadmap for Developing Streaming Media Drivers](http://msdn.microsoft.com/en-us/library/windows/hardware/ff568130)
+[Streaming media device driver design guide](https://docs.microsoft.com/windows-hardware/drivers/stream)
-[Universal camera driver design guide for Windows 10](https://msdn.microsoft.com/en-us/Library/Windows/Hardware/dn937080)
+[Universal camera driver design guide for Windows 10](https://docs.microsoft.com/windows-hardware/drivers/stream/windows-10-technical-preview-camera-drivers-design-guide)
-**Samples**
+### Samples
[Device app for camera sample](http://go.microsoft.com/fwlink/p/?linkid=249442)
diff --git a/biometrics/README.md b/biometrics/README.md
index e8d376e1..2f6371b5 100644
--- a/biometrics/README.md
+++ b/biometrics/README.md
@@ -8,15 +8,6 @@ products:
- windows-wdk
---
-<!---
- name: Windows Biometric Driver Samples (UMDF Version 1)
- platform: UMDF1
- language: cpp
- category: Security Biometrics
- description: Contains the Windows Biometric Driver Interface sample and the Windows Biometric Service Adapter samples.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620189
---->
-
# Windows Biometric Driver Samples (UMDF Version 1)
The Windows Biometric Driver Samples contain the Windows Biometric Driver Interface sample and the Windows Biometric Service Adapter samples.
diff --git a/bluetooth/bthecho/README.md b/bluetooth/bthecho/README.md
index 5c72d411..ae7751af 100644
--- a/bluetooth/bthecho/README.md
+++ b/bluetooth/bthecho/README.md
@@ -8,21 +8,11 @@ products:
- windows-wdk
---
-
-<!---
- name: Bluetooth Echo L2CAP Profile Driver
- platform: WDM
- language: cpp
- category: Bluetooth
- description: Demonstrates development of Bluetooth L2CAP profile drivers using the Bluetooth L2CAP DDIs.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=617640
---->
-
# Bluetooth Echo L2CAP Profile Driver
-This sample demonstrates developing [Bluetooth L2CAP profile drivers](http://msdn.microsoft.com/en-us/library/windows/hardware/ff536598) using [Bluetooth L2CAP DDIs](http://msdn.microsoft.com/en-us/library/windows/hardware/ff536585).The sample includes two drivers. One for a device that acts as an L2CAP server and another for a device that acts as an L2CAP client. The server simply echoes back any data that it receives from client on the same L2CA channel. These drivers can be used with devices that can be installed with bth.inf. Such devices get installed as 'Generic Bluetooth Radio'. Examples of such devices are Bluetooth USB dongles such as (but not limited to):
+This sample demonstrates developing [Bluetooth L2CAP profile drivers](https://docs.microsoft.com/en-us/windows-hardware/drivers/bluetooth) using [Bluetooth L2CAP DDIs](https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/content/_bltooth).The sample includes two drivers. One for a device that acts as an L2CAP server and another for a device that acts as an L2CAP client. The server simply echoes back any data that it receives from client on the same L2CA channel. These drivers can be used with devices that can be installed with bth.inf. Such devices get installed as 'Generic Bluetooth Radio'. Examples of such devices are Bluetooth USB dongles such as (but not limited to):
-```
+```inf
Generic Bluetooth Radio=\
BthUsb, USB\Vid_0a12&Pid_0001
CSR Nanosira=\
@@ -37,58 +27,58 @@ CSR Nanosira-Multimedia WHQL Reference Radio=\
Please refer to bth.inf for the complete list of devices. The installation steps below describe how to install echo server and client with such a device. Please note that RFCOMM based profiles must be developed and accessed using user-mode socket APIs.
-Build the sample
-----------------
+## Build the sample
You can build the sample in two ways: using the Visual Studio Integrated Development Environment (IDE) or from the command line using the Visual Studio Command Prompt window and the Microsoft Build Engine (MSBuild.exe).
-**Building the sample using Visual Studio**
+### Building the sample using Visual Studio
+
+1. Open Visual Studio. From the **File** menu, select **Open Project/Solution** and open the bthecho.sln project file.
+
+1. Right-click the solution in the **Solution Explorer** and select **Configuration Manager**.
+
+1. From the **Configuration Manager**, select the **Active Solution Configuration** and the **Active Solution Platform** (for example, Win32) that correspond to the type of build you are interested in.
+
+1. From the **Build** menu, click **Build Solution** (Ctrl+Shift+B).
-1. Open Visual Studio. From the **File** menu, select **Open Project/Solution** and open the bthecho.sln project file.
-2. Right-click the solution in the **Solution Explorer** and select **Configuration Manager**.
-3. From the **Configuration Manager**, select the **Active Solution Configuration** and the **Active Solution Platform** (for example, Win32) that correspond to the type of build you are interested in.
-4. From the **Build** menu, click **Build Solution** (Ctrl+Shift+B).
+### Building the sample using the command line (MSBuild)
-**Building the sample using the command line (MSBuild)**
+1. Open a Visual Studio Command Prompt window. Click **Start** and search for **Developer Command Prompt**. If your project is under %PROGRAMFILES%, you need to open the command prompt window using elevated permissions (**Run as administrator**). From this window you can use MsBuild.exe to build any Visual Studio project by specifying the project (.VcxProj) or solutions (.Sln) file.
-1. Open a Visual Studio Command Prompt window. Click **Start** and search for **Developer Command Prompt**. If your project is under %PROGRAMFILES%, you need to open the command prompt window using elevated permissions (**Run as administrator**). From this window you can use MsBuild.exe to build any Visual Studio project by specifying the project (.VcxProj) or solutions (.Sln) file.
-2. Navigate to each of the respective project directories and enter the appropriate **MSbuild** command for your target. For example, to perform a clean build of a Visual Studio driver project called BthEcho.vcxproj, navigate to the samples\\bluetooth\\bthecho\\bthcli\\sys project directory and enter the following MSBuild command: **msbuild /t:clean /t:build .\\BthEchoSampleCli.vcxproj**.
-3. If the build succeeds, you will find the driver (BthEchoSampleCli.sys) in the binary output directory corresponding to the target platform.
+1. Navigate to each of the respective project directories and enter the appropriate **MSbuild** command for your target. For example, to perform a clean build of a Visual Studio driver project called BthEcho.vcxproj, navigate to the samples\\bluetooth\\bthecho\\bthcli\\sys project directory and enter the following MSBuild command: **msbuild /t:clean /t:build .\\BthEchoSampleCli.vcxproj**.
-Run the sample
---------------
+1. If the build succeeds, you will find the driver (BthEchoSampleCli.sys) in the binary output directory corresponding to the target platform.
-**INSTALLATION**
+## Run the sample
-**Note**: Bluetooth echo server device and echo client device must be installed on two different machines, as described below.
+### Installation
-**Server Installation**
+> [!NOTE]
+> Bluetooth echo server device and echo client device must be installed on two different machines, as described below.
+
+#### Server Installation
1. Copy KMDF coinstaller (wdfcoinstallerMMmmm.dll, from redist\\wdf\\ ), BthEchoSampleSrv.Sys, BthEchoSampleSrv.inf and bthsrvinst.exe on a temporary directory on the target machine.
-2. Run bthsrvinst.exe /i to install the echo server device. This enables the Bluetooth Enumerator (BthEnum.sys) to enumerate echo server device and create a PDO for the device (please refer to the device tree below).
+1. Run bthsrvinst.exe /i to install the echo server device. This enables the Bluetooth Enumerator (BthEnum.sys) to enumerate echo server device and create a PDO for the device (please refer to the device tree below).
-3. Step \#2 causes BthEnum.sys to create a PDO. Consequently hardware installation wizard gets launched. Either go through the UI and point it to the temporary directory where you copied the binaries in step \#1, or using devcon.exe from the tools\\devcon folder, run the following command from the temporary directory:
+1. Step \#2 causes BthEnum.sys to create a PDO. Consequently hardware installation wizard gets launched. Either go through the UI and point it to the temporary directory where you copied the binaries in step \#1, or using devcon.exe from the tools\\devcon folder, run the following command from the temporary directory:
- ```
- devcon.exe update BthEchoSampleSrv.inf BTHENUM\{c07508f2-b970-43ca-b5dd-cc4f2391bef4}
- ```
+ `devcon.exe update BthEchoSampleSrv.inf BTHENUM\{c07508f2-b970-43ca-b5dd-cc4f2391bef4}`
If devcon.exe fails check the error level using:
- ```
- echo %errorlevel%
- ```
+ `echo %errorlevel%`
If errorlevel is 1, you need to reboot the machine for KMDF update to take effect. If errorlevel is 2, please make sure that you have the driver files described in \#1 available in the current directory. For more information on installation failure please check setup logs.
-4. Upon successful installation you will see 'Bluetooth Echo Sample Server' in Device Manager under Bluetooth devices.
+1. Upon successful installation you will see 'Bluetooth Echo Sample Server' in Device Manager under Bluetooth devices.
-**Device tree for Echo Server device**
+##### Device tree for Echo Server device
(Drivers for FDOs are shown for each devnode in the tree.)
-```
+```txt
--------------------
|BthEchoSampleSrv.sys|<----Function driver for PDO ejected by BthEnum.sys
--------------------
@@ -116,25 +106,24 @@ Run the sample
----------------------
```
-**Client Installation**
+#### Client Installation
-1. **Important**: This must be done on a separate machine from the one where echo server device was installed.
+> [!IMPORTANT]
+> This must be done on a separate machine from the one where echo server device was installed.
-2. Copy KMDF coinstaller (wdfcoinstallerMMmmm.dll, from redist\\wdf\\), BthEchoSampleCli.Sys, BthEchoSampleCli.inf and bthecho.exe on a temporary directory on the target machine.
+1. Copy KMDF coinstaller (wdfcoinstallerMMmmm.dll, from redist\\wdf\\), BthEchoSampleCli.Sys, BthEchoSampleCli.inf and bthecho.exe on a temporary directory on the target machine.
-3. Run bthprops.cpl from a command line or right click on the Bluetooth icon in the system tray and select 'Show Devices' to bring up a list of installed Bluetooth devices.
+1. Run bthprops.cpl from a command line or right click on the Bluetooth icon in the system tray and select 'Show Devices' to bring up a list of installed Bluetooth devices.
-4. In the **Bluetooth Devices** window, click the **Add a device** button.
+1. In the **Bluetooth Devices** window, click the **Add a device** button.
-5. In the Add a Device wizard select the server machine (the machine where you installed the echo server) as a Bluetooth device. If the server machine does not appear, please check the echo server installation and make sure that you have enabled 'Allow Bluetooth device to find this computer' on the server machine as explained above. When the server machine is correctly displayed, select it and pick 'Next'.
+1. In the Add a Device wizard select the server machine (the machine where you installed the echo server) as a Bluetooth device. If the server machine does not appear, please check the echo server installation and make sure that you have enabled 'Allow Bluetooth device to find this computer' on the server machine as explained above. When the server machine is correctly displayed, select it and pick 'Next'.
-6. The wizard should default to a numeric compare ceremony for pairing the machines. When this happens, ensure the numbers match on both the client and the server, select 'Yes' on both machines to indicate they match, and click 'Next' on both machines to complete the pairing.
+1. The wizard should default to a numeric compare ceremony for pairing the machines. When this happens, ensure the numbers match on both the client and the server, select 'Yes' on both machines to indicate they match, and click 'Next' on both machines to complete the pairing.
-7. Go through Device Manager and update driver software for it. Either point the wizard to the temporary directory created in step \#2, or use devcon.exe from the tools\\devcon folder to install the client device:
+1. Go through Device Manager and update driver software for it. Either point the wizard to the temporary directory created in step \#2, or use devcon.exe from the tools\\devcon folder to install the client device:
- ```
- Devcon.exe update BthEchoSampleCli.inf BTHENUM\{c07508f2-b970-43ca-b5dd-cc4f2391bef4}
- ```
+ `devcon.exe update BthEchoSampleCli.inf BTHENUM\{c07508f2-b970-43ca-b5dd-cc4f2391bef4}`
Check for any error from devcon.exe as described in server installation.
@@ -142,22 +131,21 @@ Run the sample
The device tree for echo client device is similar to the one shown for the echo server device, since both client and server are enumerated by BthEnum.sys (although the installation mechanism and properties of client and server are different).
-**Uninstalling Server**
+#### Uninstalling Server
1. Uninstall the device and delete driver software using the Bluetooth Devices window by running bthprops.cpl, right clicking on the device, and selecting 'Remove Device'
-2. Run bthsrvinst.exe /u to uninstall the echo server. This would make bthenum.sys stop enumerating the echo server. Without this step 'Found New Hardware' wizard will be launched again when you reconnect the device.
-
-**Uninstalling Client**
+1. Run bthsrvinst.exe /u to uninstall the echo server. This would make bthenum.sys stop enumerating the echo server. Without this step 'Found New Hardware' wizard will be launched again when you reconnect the device.
+#### Uninstalling Client
-- Uninstall the device and delete driver software using the Bluetooth Devices window by running bthprops.cpl, right clicking on the device, and selecting 'Remove Device'.
+Uninstall the device and delete driver software using the Bluetooth Devices window by running bthprops.cpl, right clicking on the device, and selecting 'Remove Device'.
-**TESTING**
+### Testing
Run BthEcho.exe on the client machine. You should see client sending data to the server and receiving the same data echoed back. Press Ctrl+c to terminate the application. You will see output similar to below:
-```
+```cmd
D:\bth\wdfcli>BthEcho.exe
DevicePath: \\?\bthenum#{c07508f2-b970-43ca-b5dd-cc4f2391bef4}_localmfg&000a#7&3
62d0a3&0&000c55ff727a_c00000001#{fc71b33d-d528-4763-a86c-78777c7bcd7b}
@@ -176,13 +164,13 @@ Written 26 bytes: WDF Bluetooth Sample Echo
You can launch multiple instances of BthEcho.exe. Each client application would cause echo client device to have an independent connection to the echo server and thereby have an independent echo session. You can also have echo client devices and apps installed on multiple machines and talking to a single echo server.
-**CODE TOUR**
+## CODE TOUR
-**Common code**
+### Common code
**Connection object**: The common code contains implementation of a connection object (in connection.\*) that is utilized by both client and the server. Client uses this object to maintain the information about opened connection and the server uses this object to maintain information about the accepted connection. Connection object also supports continuous reader which is utilized by server to read the data sent by client. Connection object is implemented as a WDF user object. Connection details are maintained in BTHECHO\_CONNECTION structure. This structure is used as the context for WDF user object. Passive dispose is used to make the connection object cleanup wait for disconnect completion and continuous reader rundown. Please see WDF documentation for WDF user object and passive dispose (see WdfObjectCreate).
-**Server**
+### Server
**Startup**: Server registers PSM and L2CA server and published SDP record on startup in BthEchoSrvEvtDeviceSelfManagedIoInit (this callback is invoked by WDF during device start). While registering the L2CA server it passes BthEchoSrvIndicationCallback as the callback for incoming connection notifications.
@@ -194,7 +182,7 @@ You can launch multiple instances of BthEcho.exe. Each client application would
**Connection state machine**:
-```
+```txt
ConnectFailed
^
|
@@ -215,11 +203,12 @@ Uninitialized ----> Connecting -------> Connected
One transition to note here is that if disconnect is received in the connecting state (i.e. when the connection is not completed) we wait for connection to completed (transition to connected state) and then invoke disconnect.
-**Important**: Such state machine is needed only if Disconnect is initiated by something other than Bluetooth stack (for example device removal in our case). Bluetooth stack itself would not send disconnect before connect completion. If you adapt this sample for your device please evaluate whether your driver would require such state machine. For example, the echo client device does not need such state machine (although we use common connection code for client and the server).
+> [!IMPORTANT]
+> Such state machine is needed only if Disconnect is initiated by something other than Bluetooth stack (for example device removal in our case). Bluetooth stack itself would not send disconnect before connect completion. If you adapt this sample for your device please evaluate whether your driver would require such state machine. For example, the echo client device does not need such state machine (although we use common connection code for client and the server).
**Shutdown**: Server removes the SDP record and unregisters L2CAP server and PSM in BthEchoSrvEvtDeviceSelfManagedIoCleanup (this callback is invoked by WDF during device removal). It also disconnects any open connections (see Connection rundown above).
-**Client**
+### Client
**Startup**: Client retrieves local and server Bluetooth address in BthEchoSrvEvtDeviceSelfManagedIoInit (this callback is invoked by WDF during device start). Please note that server Bluetooth address would be available regardless of presence of the server. Thus echo client device start doesn't fail even if echo server is not available.
diff --git a/bluetooth/serialhcibus/README.md b/bluetooth/serialhcibus/README.md
index d43bd711..cb7b9378 100644
--- a/bluetooth/serialhcibus/README.md
+++ b/bluetooth/serialhcibus/README.md
@@ -8,37 +8,28 @@ products:
- windows-wdk
---
-
-<!---
- name: Bluetooth Serial HCI Bus Driver
- platform: WDM
- language: cpp
- category: Bluetooth
- description: Demonstrates how to implement a basic bus driver to support the new Bluetooth Extensibility transport DDIs over the UART transport.
- samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=617641
---->
-
# Bluetooth Serial HCI Bus Driver
-The purpose of this sample is to demonstrate how to implement a basic bus driver to support the new [Bluetooth Extensibility transport DDIs](http://msdn.microsoft.com/en-us/library/windows/hardware/ff536585) over the UART transport. Such a serial bus driver can support a multi-radio device over the UART transport and utilize a common Bluetooth HCI packet for communication. The lower edge of this driver interfaces with a UART controller following the Bluetooth SIG's UART (H4) transport protocol.
+The purpose of this sample is to demonstrate how to implement a basic bus driver to support the new [Bluetooth Extensibility transport DDIs](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/bthxddi/) over the UART transport. Such a serial bus driver can support a multi-radio device over the UART transport and utilize a common Bluetooth HCI packet for communication. The lower edge of this driver interfaces with a UART controller following the Bluetooth SIG's UART (H4) transport protocol.
## Universal Windows Driver Compliant
This sample builds a Universal Windows Driver. It uses only APIs and DDIs that are included in OneCoreUAP.
-**Note** This sample driver is generic. It is not designed for a specific device and allows for a vendor to adopt and enhance it for supporting Bluetooth.
+> [!NOTE]
+> This sample driver is generic. It is not designed for a specific device and allows for a vendor to adopt and enhance it for supporting Bluetooth.
This sample driver, as is, may not properly function for a device until all vendor-specific device requirements (for example, device initialization) have been incorporated.
-It is recommended to use the WDK version that matches the target Windows build version or newer for the development of the serial bus driver.
+It is recommended to use the WDK version that matches the target Windows build version or newer for the development of the serial bus driver.
-**FILE MANIFEST**
+## File manifest
-**WDK header file**
+### WDK header file
-BthXDDI.h - this has the constants, struct, and IOCTL definitions for the Bluetooth extensibility transport. This header file is included in WDK.
+Bthxddi.h - contains the constants, struct, and IOCTL definitions for the Bluetooth extensibility transport. This header file is included in WDK.
-**Common code section**
+### Common code section
driver.c - driver initialization
@@ -56,24 +47,24 @@ public.h - header to share with application to support Radio On/Off ("Airplane m
Note: The goal is to keep the common code section the same, so the vendor will only need to update those code sections in the device specific directory.
-**Device-specific code section**
+### Device-specific code section
Debugdef.h - WPP trace GUID; user should use a new GUID (unique per driver)
device.c - device specific functions to implement:
---DeviceInitialize() - to perform UART and Bluetooth device initialization;
+- DeviceInitialize() - to perform UART and Bluetooth device initialization;
---DeviceEnable() - (optional) to bring serial bus device out of disable/reset state.
+- DeviceEnable() - (optional) to bring serial bus device out of disable/reset state.
---DevicePowerOn() - (optional) to power on the device.
+- DevicePowerOn() - (optional) to power on the device.
---DeviceEnableWakeControl() - (optional) to arm for device wake signal
+- DeviceEnableWakeControl() - (optional) to arm for device wake signal
---DeviceDisableWakeControl() - (optional) to disarm for device wake signal
+- DeviceDisableWakeControl() - (optional) to disarm for device wake signal
device.h - header file for device.c
driver.rc - driver version and name
-SerialBusWdk.inx - device specific INF file to install this driver. The vendor will need to add the hardware ID to match the "\_HID" for the Serial Bus Device (Bluetooth) in the DSDT.asl file. For example, in SerialBusWDK.inx, the hardware ID is "ACPI\\<*vendor*\>\_BTH0" where <*vendor*\> could be a 4 digit vendor name.
+SerialBusWdk.inx - device specific INF file to install this driver. The vendor will need to add the hardware ID to match the "\_HID" for the Serial Bus Device (Bluetooth) in the DSCY.asl file. For example, in SerialBusWDK.inx, the hardware ID is "ACPI\\<*vendor*\>\_BTH0" where <*vendor*\> could be a 4 digit vendor name.