diff options
| -rw-r--r-- | tools/dv/samples/DV-FailDriver-WDM/README.md | 2 | ||||
| -rw-r--r-- | usb/UcmUcsiAcpiSample/README.md | 11 | ||||
| -rw-r--r-- | usb/kmdf_enumswitches/README.md | 18 | ||||
| -rw-r--r-- | usb/kmdf_fx2/README.md | 3 | ||||
| -rw-r--r-- | usb/ufxclientsample/README.md | 18 | ||||
| -rw-r--r-- | usb/umdf_filter_kmdf/README.md | 53 | ||||
| -rw-r--r-- | usb/umdf_filter_umdf/README.md | 31 | ||||
| -rw-r--r-- | usb/usbview/README.md | 16 | ||||
| -rw-r--r-- | wpd/WpdBasicHardwareDriver/README.md | 28 | ||||
| -rw-r--r-- | wpd/WpdHelloWorldDriver/README.md | 98 | ||||
| -rw-r--r-- | wpd/WpdMultiTransportDriver/README.md | 18 | ||||
| -rw-r--r-- | wpd/WpdServiceSampleDriver/README.md | 16 | ||||
| -rw-r--r-- | wpd/WpdWudfSampleDriver/README.md | 22 |
13 files changed, 180 insertions, 154 deletions
diff --git a/tools/dv/samples/DV-FailDriver-WDM/README.md b/tools/dv/samples/DV-FailDriver-WDM/README.md index 6d7e1f24..532071c7 100644 --- a/tools/dv/samples/DV-FailDriver-WDM/README.md +++ b/tools/dv/samples/DV-FailDriver-WDM/README.md @@ -10,7 +10,7 @@ products: # DV-FailDriver-WDM -The DV-FailDriver-WDM sample driver contains intentional code errors that are designed to show the capabilities and features of [Driver Verifier](https://docs.microsoft.com/windows-hardware/drivers/devtest/driver-verifier) (DV) and the [Device Fundamentals tests](https://docs.microsoft.com/en-us/windows-hardware/drivers/devtest/device-fundamentals-tests). Driver Verifier is a component of the Windows kernel designed to detect drivers that are behaving poorly and stop their execution via a bugcheck; the Device Fundamentals tests are a series of tests provided in the Windows Driver Kit (WDK) designed to provide a good basic set of tests against a driver. +The DV-FailDriver-WDM sample driver contains intentional code errors that are designed to show the capabilities and features of [Driver Verifier](https://docs.microsoft.com/windows-hardware/drivers/devtest/driver-verifier) (DV) and the [Device Fundamentals tests](https://docs.microsoft.com/windows-hardware/drivers/devtest/device-fundamentals-tests). Driver Verifier is a component of the Windows kernel designed to detect drivers that are behaving poorly and stop their execution via a bugcheck; the Device Fundamentals tests are a series of tests provided in the Windows Driver Kit (WDK) designed to provide a good basic set of tests against a driver. > [!CAUTION] > This sample driver contains intentional code errors that are designed to show the capabilities and features of DV and SDV. This sample driver is not intended as an example for real driver development projects. diff --git a/usb/UcmUcsiAcpiSample/README.md b/usb/UcmUcsiAcpiSample/README.md index 9def12cd..e30e1638 100644 --- a/usb/UcmUcsiAcpiSample/README.md +++ b/usb/UcmUcsiAcpiSample/README.md @@ -19,8 +19,11 @@ Microsoft already provides an inbox UCSI Class extension (UcmUcsiCx.sys) and ACP This sample demonstrates the following: - Preparing connector collection with UcmUcsiCx + - Initializing Platform Policy Manager (or PPM) object with UcmUcsiCx + - Handling IOCTLs from UcmUcsiCx to send or get UCSI block + - Delivering PPM notifications to UcmUcsiCx ## Customizing the sample for your UCSI transport @@ -36,8 +39,11 @@ In this sample, UCMUCSI-specific interactions are split apart from most of the U The following files contain methods that interface with UcmUcsiCx. - Ppm.cpp + - Contains bulk of interactions with UcmUcsiCx. Ppm::CreateAndInitialize which is called in the context of PrepareHardware PnP callback, creates connector collection with UcmUcsiCx by calling DDI UcmUcsiConnectorCollectionCreate and UcmUcsiConnectorCollectionAddConnector. The collection serves as a parameter to initialize PPM object with the class extension when the DDI UcmUcsiPpmCreate is called. Ppm::PpmNotificationCallback function calls DDI on the event of a PPM notification. Ppm::EvtIoDeviceControl contains the logic of handling IOCTLs from UcmUcsiCx. + - Fdo.cpp + - FDO callbacks, functions, and types, most of which do not interface with UcmUcsiCx. However, the method Fdo::CreateAndInitialize calls to UcmUcsiCx DDIs UcmUcsiDeviceInitInitialize and UcmUcsiDeviceInitialize. #### UCSI and WDF Interactions @@ -45,10 +51,15 @@ The following files contain methods that interface with UcmUcsiCx. The remainder of the files perform operations for UCSI and WDF, non-specific to UCM. - Acpi.cpp + - ACPI method evaluation helper routines. + - Driver.cpp + - Entry point to the driver. Initializes the driver with WDF. + - Ppm.cpp + - Type-C Platform Policy Manager. Main interface to talk to the UCSI-compliant hardware (via ACPI transport in this case). ## When to write a UcmUcsiCx client driver diff --git a/usb/kmdf_enumswitches/README.md b/usb/kmdf_enumswitches/README.md index 6f8b2195..2bfb8ac3 100644 --- a/usb/kmdf_enumswitches/README.md +++ b/usb/kmdf_enumswitches/README.md @@ -19,13 +19,18 @@ This sample is written for the OSR USB-FX2 Learning Kit. The specification for t To test the device, follow these steps: 1. If you test signed your driver package, you must enable installation of test signed drivers on the target machine. To do so, either press F8 as the target machine comes up from a reboot, or specify **Bcdedit.exe -set TESTSIGNING ON** and reboot. If you use F8, the change only applies until the next reboot. + 1. Plug in the OSR USB-FX-2 Learning Kit (must be version 2.00 or later). + 1. In Device Manager, select **Update Driver Software**, **Browse my computer for driver software**, **Let me pick from a list of device drivers on my computer**, **Have Disk**. Navigate to the directory that contains your driver package and select the INF file. + 1. After the driver installs, verify that the device appears under the **Sample Device** node in Device Manager. + 1. Flip the switches on the OSR USB-FX-2 hardware board and watch the raw PDO entries appear and disappear under **Sample Device** in Device Manager. + 1. Right-click a raw PDO entry, select **Properties**, and then click the **Events** tab. Under **Information**, examine the hardware ID for the PDO. It should be something like this: - **6FDE7521-1B65-48ae-B628-80BE62016026}\OsrUsbFxRawPdo\6&227995e2&0&08** + `6FDE7521-1B65-48ae-B628-80BE62016026}\OsrUsbFxRawPdo\6&227995e2&0&08` The last digit matches the number of the switch that you toggled. @@ -34,20 +39,31 @@ To test the device, follow these steps: Here is the overview of the device: - Device is based on the development board supplied with the Cypress EZ-USB FX2 Development Kit (CY3681). + - Contains 1 interface and 3 endpoints (Interrupt IN, Bulk Out, Bulk IN). + - Firmware supports vendor commands to query or set LED Bar graph display, 7-segment LED display and query toggle switch states. + - Interrupt Endpoint: - Sends an 8-bit value that represents the state of the switches. + - Sent on startup, resume from suspend, and whenever the switch pack setting changes. + - Firmware does not de-bounce the switch pack. + - One switch change can result in multiple bytes being sent. + - Bits are in the reverse order of the labels on the pack For example, bit 0x80 is labeled 1 on the pack - Bulk Endpoints are configured for loopback: + - Device moves data from IN endpoint to OUT endpoint. + - Device does not change the values of the data it receives nor does it internally create any data. + - Endpoints are always double buffered. + - Maximum packet size depends on speed (64 Full speed, 512 High speed). diff --git a/usb/kmdf_fx2/README.md b/usb/kmdf_fx2/README.md index 8c4ce944..ec709686 100644 --- a/usb/kmdf_fx2/README.md +++ b/usb/kmdf_fx2/README.md @@ -20,8 +20,7 @@ The specification for the device is at <http://www.osronline.com/hardware/OSRFX2 This sample builds a Universal Windows Driver. It uses only APIs and DDIs that are included in OneCoreUAP. -Overview --------- +## Overview Here is the overview of the device: diff --git a/usb/ufxclientsample/README.md b/usb/ufxclientsample/README.md index 848321d9..1030135c 100644 --- a/usb/ufxclientsample/README.md +++ b/usb/ufxclientsample/README.md @@ -8,17 +8,6 @@ products: - windows-wdk --- - - -<!--- - name: USB Function Client Driver - platform: KMDF - language: cpp - category: USB - description: Demonstrates how to create a Windows USB function controller driver using the USB function class extension driver (UFX). - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620315 ----> - # USB Function Client Driver This is a skeleton sample driver that shows how to create a Windows USB function controller driver using the USB function class extension driver (UFX). @@ -26,10 +15,15 @@ This is a skeleton sample driver that shows how to create a Windows USB function This sample demonstrates the following: - Registration with the UFX class extension driver + - Handling USB transfers + - Handling function controller events + - Handling attach and detach notifications + - Handling charger/port detection + - Power management ## Operating system requirements @@ -42,4 +36,4 @@ This sample is not a functional driver. It is a skeleton driver intended to illu ## Installation Note -Installation on Windows 10 Mobile requires the creation of a package. To properly interact with the USB UI on Windows 10 Mobile, the package must include a Security Element that specifies the ID_CAP_USB capability with DEVICE_READ and DEVICE_WRITE rights.
\ No newline at end of file +Installation on Windows 10 Mobile requires the creation of a package. To properly interact with the USB UI on Windows 10 Mobile, the package must include a Security Element that specifies the ID_CAP_USB capability with DEVICE_READ and DEVICE_WRITE rights. diff --git a/usb/umdf_filter_kmdf/README.md b/usb/umdf_filter_kmdf/README.md index 438453ec..6b6ea8c8 100644 --- a/usb/umdf_filter_kmdf/README.md +++ b/usb/umdf_filter_kmdf/README.md @@ -19,33 +19,56 @@ The sample includes Event Tracing for Windows (ETW) tracing support, and is writ The default Solution build configuration is **Debug** and **Win32**. 1. Open the driver project or solution in Visual Studio (find *filtername*.sln or *filtername*.vcxproj). + 1. Right-click the solution in the **Solutions Explorer** and select **Configuration Manager**. + 1. From the **Configuration Manager**, select the **Active Solution Configuration** (for example, Debug or Release) 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). ## Overview - The device is based on the development board supplied with the Cypress EZ-USB FX2 Development Kit (CY3681). + - It contains 1 interface and 3 endpoints (Interrupt IN, Bulk Out, Bulk IN). + - Firmware supports vendor commands to query or set LED Bar graph display and 7-segment LED display, and to query toggle switch states. + - Interrupt Endpoint: -- Sends an 8-bit value that represents the state of the switches. - - Sent on startup, resume from suspend, and whenever the switch pack setting changes. - - Firmware does not de-bounce the switch pack. - - One switch change can result in multiple bytes being sent. - - Bits are in the reverse order of the labels on the pack (for example, bit 0x80 is labeled 1 on the pack). + + - Sends an 8-bit value that represents the state of the switches. + + - Sent on startup, resume from suspend, and whenever the switch pack setting changes. + + - Firmware does not de-bounce the switch pack. + + - One switch change can result in multiple bytes being sent. + + - Bits are in the reverse order of the labels on the pack (for example, bit 0x80 is labeled 1 on the pack). + - Bulk Endpoints are configured for loopback: -- The device moves data from IN endpoint to OUT endpoint. - - The device does not change the values of the data it receives nor does it internally create any data. - - Endpoints are always double buffered. - - Maximum packet size depends on speed (64 full speed, 512 high speed). + + - The device moves data from IN endpoint to OUT endpoint. + + - The device does not change the values of the data it receives nor does it internally create any data. + + - Endpoints are always double buffered. + + - Maximum packet size depends on speed (64 full speed, 512 high speed). + - ETW events: -- Included osrusbfx2.man, which describes events added. - - Three events are targeted to the event log: - - Failure during the add device routine. - - Failure to start the OSR device on a USB 1.1 controller. - - Invocation of the "re-enumerate device" IOCTL. - - Read/write start/stop events can be used to measure the time taken. + + - Included osrusbfx2.man, which describes events added. + + - Three events are targeted to the event log: + + - Failure during the add device routine. + + - Failure to start the OSR device on a USB 1.1 controller. + + - Invocation of the "re-enumerate device" IOCTL. + + - Read/write start/stop events can be used to measure the time taken. ## Testing the driver diff --git a/usb/umdf_filter_umdf/README.md b/usb/umdf_filter_umdf/README.md index 184725ca..15c41483 100644 --- a/usb/umdf_filter_umdf/README.md +++ b/usb/umdf_filter_umdf/README.md @@ -17,19 +17,32 @@ This sample is written for the OSR USB-FX2 Learning Kit. The specification for t ## Overview - The device is based on the development board supplied with the Cypress EZ-USB FX2 Development Kit (CY3681). + - It contains 1 interface and 3 endpoints (Interrupt IN, Bulk Out, Bulk IN). + - Firmware supports vendor commands to query or set LED Bar graph display and 7-segment LED display, and to query toggle switch states. + - Interrupt Endpoint: -- Sends an 8-bit value that represents the state of the switches. - - Sent on startup, resume from suspend, and whenever the switch pack setting changes. - - Firmware does not de-bounce the switch pack. - - One switch change can result in multiple bytes being sent. - - Bits are in the reverse order of the labels on the pack (for example, bit 0x80 is labeled 1 on the pack). + + - Sends an 8-bit value that represents the state of the switches. + + - Sent on startup, resume from suspend, and whenever the switch pack setting changes. + + - Firmware does not de-bounce the switch pack. + + - One switch change can result in multiple bytes being sent. + + - Bits are in the reverse order of the labels on the pack (for example, bit 0x80 is labeled 1 on the pack). + - Bulk Endpoints are configured for loopback: -- The device moves data from IN endpoint to OUT endpoint. - - The device does not change the values of the data it receives nor does it internally create any data. - - Endpoints are always double buffered. - - Maximum packet size depends on speed (64 full speed, 512 high speed). + + - The device moves data from IN endpoint to OUT endpoint. + + - The device does not change the values of the data it receives nor does it internally create any data. + + - Endpoints are always double buffered. + + - Maximum packet size depends on speed (64 full speed, 512 high speed). ## Testing the driver diff --git a/usb/usbview/README.md b/usb/usbview/README.md index 631f4861..b4bdd2bf 100644 --- a/usb/usbview/README.md +++ b/usb/usbview/README.md @@ -17,11 +17,17 @@ This functional application sample demonstrates how a user-mode application can The IOCTL calls (see the system include file USBIOCTL.H) demonstrated by this sample include: - [**IOCTL\_GET\_HCD\_DRIVERKEY\_NAME**](https://docs.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_get_hcd_driverkey_name) + - [**IOCTL\_USB\_GET\_DESCRIPTOR\_FROM\_NODE\_CONNECTION**](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbioctl/ni-usbioctl-ioctl_usb_get_descriptor_from_node_connection) + - [**IOCTL\_USB\_GET\_NODE\_CONNECTION\_DRIVERKEY\_NAME**](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbioctl/ni-usbioctl-ioctl_usb_get_node_connection_driverkey_name) + - [**IOCTL\_USB\_GET\_NODE\_CONNECTION\_INFORMATION**](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbioctl/ni-usbioctl-ioctl_usb_get_node_connection_information) + - [**IOCTL\_USB\_GET\_NODE\_CONNECTION\_NAME**](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbioctl/ni-usbioctl-ioctl_usb_get_node_connection_name) + - [**IOCTL\_USB\_GET\_NODE\_INFORMATION**](https://docs.microsoft.com/windows-hardware/drivers/ddi/content/usbioctl/ni-usbioctl-ioctl_usb_get_node_information) + - [**IOCTL\_USB\_GET\_ROOT\_HUB\_NAME**](https://docs.microsoft.com/windows/win32/api/usbuser/ni-usbuser-ioctl_usb_get_root_hub_name) For information about USB, see [Universal Serial Bus (USB) Drivers](https://docs.microsoft.com/windows-hardware/drivers/usbcon/). @@ -31,6 +37,7 @@ For information about USB, see [Universal Serial Bus (USB) Drivers](https://docs ### Local debugging 1. Change **Debugger** to launch to **Local Windows Debugger**. + 1. On the **Debug** menu, select **Start debugging** or hit **F5**. ### Manual deployment to a remote target computer @@ -38,14 +45,19 @@ For information about USB, see [Universal Serial Bus (USB) Drivers](https://docs If you want to debug the sample app on a remote computer, 1. Copy the executable to a folder on the remote computer. + 1. Specify project properties as per the instructions given in [Remote Debugging](https://docs.microsoft.com/visualstudio/debugger/remote-debugging?view=vs-2015). + 1. Change **Debugger** to launch to **Remote Windows Debugger**. + 1. On the **Debug** menu, select **Start debugging** or hit **F5**. ### View a USB device in Usbview 1. Attach a USB device to one of USB ports on the computer that has Usbview running. + 1. In the device tree, locate the device. For example the device might be under the Intel(R) ICH10 Family USB Universal Host Controller - 3A34 \> Root Hub node. + 1. View host controller and port properties on the right pane. ## Code tour @@ -65,7 +77,9 @@ If you want to debug the sample app on a remote computer, The major topics covered in this tour are: - GUI handling routines + - Device enumeration routines + - Device information display routines The file Usbview.c contains the sample application entry point and GUI handling routines. On entry, the main application window is created, which is actually a dialog box as defined in Usbview.rc. The dialog box consists of a split window with a tree view control on the left side and an edit control on the right side. @@ -75,7 +89,9 @@ The routine RefreshTree() is called to enumerate USB host controller, hubs, and The file Enum.c contains the routines that enumerate the USB bus and populate the tree view control. The USB device enumeration and information collection process is the main point of this sample application. The enumeration process starts at EnumerateHostControllers() and goes like this: 1. Enumerate Host Controllers and Root Hubs. Host controllers have symbolic link names of the form HCDx, where x starts at 0. Use CreateFile() to open each host controller symbolic link. Create a node in the tree view to represent each host controller. After a host controller has been opened, send the host controller an IOCTL\_USB\_GET\_ROOT\_HUB\_NAME request to get the symbolic link name of the root hub that is part of the host controller. + 1. Enumerate Hubs (Root Hubs and External Hubs). Given the name of a hub, use CreateFile() to open the hub. Send the hub an IOCTL\_USB\_GET\_NODE\_INFORMATION request to get info about the hub, such as the number of downstream ports. Create a node in the tree view to represent each hub. + 1. Enumerate Downstream Ports. Given a handle to an open hub and the number of downstream ports on the hub, send the hub an IOCTL\_USB\_GET\_NODE\_CONNECTION\_INFORMATION request for each downstream port of the hub to get info about the device (if any) attached to each port. If there is a device attached to a port, send the hub an IOCTL\_USB\_GET\_NODE\_CONNECTION\_NAME request to get the symbolic link name of the hub attached to the downstream port. If there is a hub attached to the downstream port, recurse to step (2). Create a node in the tree view to represent each hub port and attached device. USB configuration and string descriptors are retrieved from attached devices in GetConfigDescriptor() and GetStringDescriptor() by sending an IOCTL\_USB\_GET\_DESCRIPTOR\_FROM\_NODE\_CONNECTION() to the hub to which the device is attached. The file Display.c contains routines that display information about selected devices in the application edit control. Information about the device was collected during the enumeration of the device tree. This information includes USB device, configuration, and string descriptors and connection and configuration information that is maintained by the USB stack. The routines in this file simply parse and print the data structures for the device that were collected when it was enumerated. The file Dispaud.c parses and prints data structures that are specific to USB audio class devices. diff --git a/wpd/WpdBasicHardwareDriver/README.md b/wpd/WpdBasicHardwareDriver/README.md index de510d47..56414e93 100644 --- a/wpd/WpdBasicHardwareDriver/README.md +++ b/wpd/WpdBasicHardwareDriver/README.md @@ -8,16 +8,6 @@ products: - windows-wdk --- - -<!--- - name: WPD Basic Hardware Sample Driver - platform: UMDF1 - language: cpp - category: WDP - description: Supports nine sensor devices that integrate with the Parallax BS2 programmable microcontroller. - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=620318 ----> - # WPD Basic Hardware Sample Driver (UMDF Version 1) The WpdBasicHardwareDriver is a WPD driver that supports nine devices. These devices were selected because of their simplicity. This simplicity allowed the sample to focus on the tasks that are common to portable devices without getting bogged down in hardware complexities. @@ -32,15 +22,15 @@ The circuit designs are based on the sample circuits provided by Parallax in the The microcontroller firmware for each of the nine circuits is included in the **\\firmware** subdirectory of this sample. -For a complete description of this sample and its underlying code and functionality, refer to the [WPD Basic Hardware Driver](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597697) description in the Windows Driver Kit documentation. +For a complete description of this sample and its underlying code and functionality, refer to the [WPD Basic Hardware Driver](https://docs.microsoft.com/windows-hardware/drivers/portable/the-wpdbasichardwaredriver-sample) description in the Windows Driver Kit documentation. ## Related topics -[WPD Design Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597864) +[WPD Design Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-design-guide) -[WPD Driver Development Tools](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597568) +[WPD Driver Development Tools](https://docs.microsoft.com/windows-hardware/drivers/portable/familiarizing-yourself-with-the-sample-driver) -[WPD Programming Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/) +[WPD Programming Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-programming-guide) ## Installation @@ -49,10 +39,14 @@ To test this sample, you must have a test computer. This can be a second compute To install the WpdBasicHardwareDriver sample, do the following: 1. Copy the driver binary and the wpdbasichardwaredriver.inf file to a directory on your test computer (for example, C:\\wpdbasichardwaredriver.) + 1. Copy the UMDF coinstaller, WUDFUpdate\_*MMmmmm*.dll, from the \\redist\\wdf\\\<architecture\> directory to the same directory (for example, C:\\wpdbasichardwaredriver). - **Note** You can obtain the co-installers by downloading and installing the "Windows Driver Framework (WDF)" package from [WDK 8 Redistributable Components](http://go.microsoft.com/fwlink/p/?LinkID=226396). + > [!NOTE] + > You can obtain the co-installers by downloading and installing the "Windows Driver Framework (WDF)" package from [WDK 8 Redistributable Components](https://go.microsoft.com/fwlink/p/?LinkID=253170). 1. Navigate to the directory that contains the INF file and binaries (for example, cd /d c:\\wpdbasichardwaredriver), and run DevCon.exe as follows: - **devcon.exe install wpdbasichardwaredriver.inf WUDF\\WpdBasicHardware** - You can find DevCon.exe in the \\tools directory of the WDK (for example, \\tools\\devcon\\i386\\devcon.exe).
\ No newline at end of file + + `devcon.exe install wpdbasichardwaredriver.inf WUDF\WpdBasicHardware` + + You can find DevCon.exe in the \\tools directory of the WDK (for example, \\tools\\devcon\\i386\\devcon.exe). diff --git a/wpd/WpdHelloWorldDriver/README.md b/wpd/WpdHelloWorldDriver/README.md index 417859e4..6942f4c6 100644 --- a/wpd/WpdHelloWorldDriver/README.md +++ b/wpd/WpdHelloWorldDriver/README.md @@ -8,81 +8,71 @@ products: - windows-wdk --- - -<!--- - name: WPD Hello World Sample - platform: UMDF1 - language: cpp - category: WPD - description: Supports four objects: a device object, a storage object, a folder object, and a file object. - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=618008 ----> - # WPDHelloWorld sample driver for portable devices The WpdHelloWorld sample driver supports four objects: a device object, a storage object, a folder object, and a file object. Each object supports corresponding properties. These properties are defined in the file WpdObjectProperties.h. The sample driver supports a device object that exposes ten read-only properties. These properties, their types, and their values are listed in the following table. -Property name | Property type | Value ---------------|---------------|------ -DEVICE_PROTOCOL | String | "Hello World Protocol ver 1.00" -DEVICE_FIRMWARE_VERSION | String | "1.0.0.0" -DEVICE_POWER_LEVEL | Integer | 100 -DEVICE_MODEL | String | "Hello World!" -DEVICE_MANUFACTURER | String | "Windows Portable Devices Group" -DEVICE_FRIENDLY | String | "Hello World!" -DEVICE_SERIAL_NUMBER | String | "01234567890123-45676890123456" -DEVICE_SUPPORTS_NONCONSUMABLE | Bool | True -WPD_DEVICE_TYPE | Integer | WPD_DEVICE_TYPE_GENERIC -WPD_FUNCTIONAL_OBJECT_CATEGORY | GUID | WPD_FUNCTIONAL_CATEGORY_STORAGE +| Property name | Property type | Value | +| --- | --- | --- | +| DEVICE_PROTOCOL | String | "Hello World Protocol ver 1.00" | +| DEVICE_FIRMWARE_VERSION | String | "1.0.0.0" | +| DEVICE_POWER_LEVEL | Integer | 100 | +| DEVICE_MODEL | String | "Hello World!" | +| DEVICE_MANUFACTURER | String | "Windows Portable Devices Group" | +| DEVICE_FRIENDLY | String | "Hello World!" | +| DEVICE_SERIAL_NUMBER | String | "01234567890123-45676890123456" | +| DEVICE_SUPPORTS_NONCONSUMABLE | Bool | True | +| WPD_DEVICE_TYPE | Integer | WPD_DEVICE_TYPE_GENERIC | +| WPD_FUNCTIONAL_OBJECT_CATEGORY | GUID | WPD_FUNCTIONAL_CATEGORY_STORAGE | The driver supports a storage object that exposes seven read-only properties. These properties, their types, and their values are listed in the following table. -Property name | Property type | Value ---------------|---------------|------ -STORAGE_CAPACITY | 64-bit Integer | 1024 * 1024 -STORAGE_FREE_SPACE_IN_BYTES | 64-bit Integer | 1024 * 1024 -STORAGE_SERIAL_NUMBER | String | 98765432109876-54321098765432 -STORAGE_FILE_SYSTEM_TYPE | String | FAT32 -STORAGE_DESCRIPTION | String | Hello World! Memory Storage System -WPD_STORAGE_TYPE | Integer | WPD_STORAGE_TYPE_FIXED_ROM -WPD_FUNCTIONAL_OBJECT_CATEGORY | GUID | WPD_FUNCTIONAL_CATEGORY_STORAGE +| Property name | Property type | Value | +| --- | --- | --- | +| STORAGE_CAPACITY | 64-bit Integer | 1024 * 1024 | +| STORAGE_FREE_SPACE_IN_BYTES | 64-bit Integer | 1024 * 1024 | +| STORAGE_SERIAL_NUMBER | String | 98765432109876-54321098765432 | +| STORAGE_FILE_SYSTEM_TYPE | String | FAT32 | +| STORAGE_DESCRIPTION | String | Hello World! Memory Storage System | +| WPD_STORAGE_TYPE | Integer | WPD_STORAGE_TYPE_FIXED_ROM | +| WPD_FUNCTIONAL_OBJECT_CATEGORY | GUID | WPD_FUNCTIONAL_CATEGORY_STORAGE | The driver supports a folder object that exposes three read-only properties. These properties, their types, and their values are listed in the following table. -Property name | Property type | Value ---------------|---------------|------ -WPD_OBJECT_DATE_MODIFIED | Date | 2006/6/26 5:0:0.0 -WPD_OBJECT_DATE_CREATED | Date | 2006/1/25 12:0:0.0 -WPD_OBJECT_ORIGINAL_FILE_NAME_VALUE | String | Documents +| Property name | Property type | Value | +| --- | --- | --- | +| WPD_OBJECT_DATE_MODIFIED | Date | 2006/6/26 5:0:0.0 | +| WPD_OBJECT_DATE_CREATED | Date | 2006/1/25 12:0:0.0 | +| WPD_OBJECT_ORIGINAL_FILE_NAME_VALUE | String | Documents | The driver supports a file object that exposes three read-only properties. These properties, their types, and their values are listed in the following table. -Property name | Property type | Value ---------------|---------------|------ -WPD_OBJECT_DATE_MODIFIED | Date | 2006/6/26 5:0:0.0 -WPD_OBJECT_DATE_CREATED | Date | 2006/1/25 12:0:0.0 -WPD_OBJECT_ORIGINAL_FILE_NAME | String | Readme.txt +| Property name | Property type | Value | +| --- | --- | --- | +| WPD_OBJECT_DATE_MODIFIED | Date | 2006/6/26 5:0:0.0 | +| WPD_OBJECT_DATE_CREATED | Date | 2006/1/25 12:0:0.0 | +| WPD_OBJECT_ORIGINAL_FILE_NAME | String | Readme.txt | In addition to the above properties, every object (for example, device, storage, folder, or file) also supports seven common WPD object properties. These are read-only properties that contain object-specific values for the most part. These properties, their types, and their values are listed in the following table. -Property name | Property type | Value ---------------|---------------|------ -WPD_OBJECT_ID | String | Object-specific -WPD_OBJECT_PERSISTENT_UNIQUE_ID | String | Object-specific -WPD_OBJECT_PARENT_ID | String | Object-specific -WPD_OBJECT_NAME | String | Object-specific -WPD_OBJECT_FORMAT | GUID | Object-specific -WPD_OBJECT_CONTENT_TYPE | GUID | Object-specific -WPD_OBJECT_CAN_DELETE | Bool | False +| Property name | Property type | Value | +| --- | --- | --- | +| WPD_OBJECT_ID | String | Object-specific | +| WPD_OBJECT_PERSISTENT_UNIQUE_ID | String | Object-specific | +| WPD_OBJECT_PARENT_ID | String | Object-specific | +| WPD_OBJECT_NAME | String | Object-specific | +| WPD_OBJECT_FORMAT | GUID | Object-specific | +| WPD_OBJECT_CONTENT_TYPE | GUID | Object-specific | +| WPD_OBJECT_CAN_DELETE | Bool | False | -For a complete description of this sample and its underlying code and functionality, refer to the [WPD HelloWorld Driver](http://msdn.microsoft.com/en-us/library/windows/hardware/) description in the Windows Driver Kit documentation. +For a complete description of this sample and its underlying code and functionality, refer to the [WPD HelloWorld Driver](https://docs.microsoft.com/windows-hardware/drivers/portable/the-sample-driver-architecture) description in the Windows Driver Kit documentation. ## Related topics -[WPD Design Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597864) +[WPD Design Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-design-guide) -[WPD Driver Development Tools](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597568) +[WPD Driver Development Tools](https://docs.microsoft.com/windows-hardware/drivers/portable/familiarizing-yourself-with-the-sample-driver) -[WPD Programming Guide](https://msdn.microsoft.com/en-us/library/windows/hardware/ff597898)
\ No newline at end of file +[WPD Programming Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-programming-guide) diff --git a/wpd/WpdMultiTransportDriver/README.md b/wpd/WpdMultiTransportDriver/README.md index 024bf124..3656e8b9 100644 --- a/wpd/WpdMultiTransportDriver/README.md +++ b/wpd/WpdMultiTransportDriver/README.md @@ -8,28 +8,18 @@ products: - windows-wdk --- - -<!--- - name: WPD multi-transport sample driver - platform: UMDF1 - language: cpp - category: WPD - description: Demonstrates how to extend the WpdHelloWorldDriver for a device that supports multiple transports. - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=618009 ----> - # WPD multi-transport sample driver The WpdMultiTransportDriver sample demonstrates how you could extend the WpdHelloWorldDriver for a device that supports multiple transports. A transport is a protocol over which a portable device communicates with a computer. Example transports include Internet Protocol (IP), Bluetooth, and USB. A number of portable devices now support multiple transports. For example, a number of cell phones support both Bluetooth and USB. Windows supports a multitransport driver model that ensures that only one node appears for each device. -For a complete description of this sample and its underlying code and functionality, refer to the [WPD MultiTransport Driver](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597709) description in the Windows Driver Kit documentation. +For a complete description of this sample and its underlying code and functionality, refer to the [WPD MultiTransport Driver](https://docs.microsoft.com/windows-hardware/drivers/portable/the-wpdmultitransportdriver-sample) description in the Windows Driver Kit documentation. ## Related topics -[WPD Design Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597864) +[WPD Design Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-design-guide) -[WPD Driver Development Tools](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597568) +[WPD Driver Development Tools](https://docs.microsoft.com/windows-hardware/drivers/portable/familiarizing-yourself-with-the-sample-driver) -[WPD Programming Guide](https://msdn.microsoft.com/en-us/library/windows/hardware/ff597898)
\ No newline at end of file +[WPD Programming Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-programming-guide) diff --git a/wpd/WpdServiceSampleDriver/README.md b/wpd/WpdServiceSampleDriver/README.md index 11754a04..4cd6b4dc 100644 --- a/wpd/WpdServiceSampleDriver/README.md +++ b/wpd/WpdServiceSampleDriver/README.md @@ -8,24 +8,14 @@ products: - windows-wdk --- - -<!--- - name: WPD service sample driver - platform: UMDF1 - language: cpp - category: WPD - description: Demonstrates how to extend the WpdHelloWorldDriver sample so that it supports a simulated device with a Contacts device service. - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=618010 ----> - # WPD service sample driver Demonstrates how to extend the WpdHelloWorldDriver sample so that it supports a simulated device with a Contacts device service. ## Related topics -[WPD Design Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597864) +[WPD Design Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-design-guide) -[WPD Driver Development Tools](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597568) +[WPD Driver Development Tools](https://docs.microsoft.com/windows-hardware/drivers/portable/familiarizing-yourself-with-the-sample-driver) -[WPD Programming Guide](https://msdn.microsoft.com/en-us/library/windows/hardware/ff597898) +[WPD Programming Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-programming-guide) diff --git a/wpd/WpdWudfSampleDriver/README.md b/wpd/WpdWudfSampleDriver/README.md index 440de631..63d7898f 100644 --- a/wpd/WpdWudfSampleDriver/README.md +++ b/wpd/WpdWudfSampleDriver/README.md @@ -8,30 +8,20 @@ products: - windows-wdk --- - -<!--- - name: WPD WUDF sample driver - platform: UMDF1 - language: cpp - category: WPD - description: Demonstrates virtually all aspects of the WPD device driver interface (DDI). - samplefwlink: http://go.microsoft.com/fwlink/p/?LinkId=618011 ----> - # WPD WUDF sample driver -The comprehensive WPD sample driver (`WpdWudfSampleDriver`) demonstrates virtually all aspects of the Microsoft Windows Portable Devides (WPD) device driver interface (DDI). This driver is built as a normal User-Mode Driver Framework (UMDF) driver that also processes the WPD command set. Although this driver does not interact with actual hardware, it simulates communicating with a device that supports phone contacts, pictures, music, and video. +The comprehensive WPD sample driver (WpdWudfSampleDriver) demonstrates virtually all aspects of the Microsoft Windows Portable Devices (WPD) device driver interface (DDI). This driver is built as a normal User-Mode Driver Framework (UMDF) driver that also processes the WPD command set. Although this driver does not interact with actual hardware, it simulates communicating with a device that supports phone contacts, pictures, music, and video. This driver was written in the simplest way to demonstrate concepts. Therefore, the sample driver might perform operations or be structured in a way that are inefficient in a production driver. Additionally, this sample does not use real hardware. Instead, it simulates a device by using data structures in memory. Therefore, the driver might be implemented in a way that is unrealistic for production hardware. -Some of the tasks that are accomplished by the `WpdWudfSampleDriver` are written for the advanced Windows Portable Devices (WPD) driver developer. +Some of the tasks that are accomplished by the `WpdWudfSampleDriver` sample are written for the advanced Windows Portable Devices (WPD) driver developer. -For a complete description of this sample and its underlying code and functionality, refer to the [WPD WUDF Sample Driver](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597723) description in the Windows Driver Kit documentation. +For a complete description of this sample and its underlying code and functionality, refer to the [WPD WUDF Sample Driver](https://docs.microsoft.com/windows-hardware/drivers/portable/the-wpdwudfsampledriver-sample) description in the Windows Driver Kit documentation. ## Related topics -[WPD Design Guide](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597864) +[WPD Design Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-design-guide) -[WPD Driver Development Tools](http://msdn.microsoft.com/en-us/library/windows/hardware/ff597568) +[WPD Driver Development Tools](https://docs.microsoft.com/windows-hardware/drivers/portable/familiarizing-yourself-with-the-sample-driver) -[WPD Programming Guide](https://msdn.microsoft.com/en-us/library/windows/hardware/ff597898)
\ No newline at end of file +[WPD Programming Guide](https://docs.microsoft.com/windows-hardware/drivers/portable/wpd-programming-guide) |
