Upload
everett-bryant
View
216
Download
2
Embed Size (px)
Citation preview
Plug And Play For Network Plug And Play For Network Connected DevicesConnected Devices
Cameron Brodeur and Kristina HotzCameron Brodeur and Kristina HotzProgram ManagersProgram ManagersWindows Device Experience GroupWindows Device Experience GroupMicrosoft CorporationMicrosoft Corporation
Session OutlineSession Outline
Discusses generic resource discovery Discusses generic resource discovery and how to turn a Network Connected and how to turn a Network Connected Device (NCD) into a Plug and Play Device (NCD) into a Plug and Play (PnP) device (PnP) device
Windows Rally OverviewWindows Rally Overview
Function Discovery (FD)Function Discovery (FD)
Plug and Play Extensions for Network Plug and Play Extensions for Network Connected Devices (PnP-X)Connected Devices (PnP-X)
DemoDemo
QuestionsQuestions
Windows® Rally™ ProgramWindows® Rally™ Program
Simple Unified License
Access to Technologies
Technical Guidance
Windows® Rally™ DevicesWindows® Rally™ Devices
Reliable and simple to manage
Effortless to configure and
maintain
More secure and provide rich
digital experiences
Windows Rally ExperiencesWindows Rally ExperiencesApplications
IP Network(IPv4, IPv6)
Wir
eles
s S
etu
p
Ethernet/Wireless
Qu
alit
y o
f S
ervi
ce
AV DevicesDis
cove
ry
Net
wo
rk M
ap
Windows Rally Experiences
Device Specific Drivers
Management Interfaces
NetworkedDevices
LL
TD
: Q
oS
Ext
ensi
on
s
LL
TD
: T
op
olo
gy
Map
Win
do
ws
Co
nn
ect
No
w
Fu
nct
ion
Dis
cove
ry
UPnPDevice Profile
for Web Services
Plug and Play Extensions
Windows Rally TechnologiesWindows Rally Technologies
Windows Rally Technologies
Function DiscoveryFunction DiscoveryGeneric resource detectionGeneric resource detection
Kristina HotzKristina HotzProgram ManagerProgram Manager
Why Function Discovery?Why Function Discovery?
Many flavors of devices and resourcesMany flavors of devices and resourcesUSBUSB
WSDWSD
UPnPUPnP
Different protocolsDifferent protocolsDifferent discoveryDifferent discovery
Different metadata acquisitionDifferent metadata acquisition
Need abstraction layer for unificationNeed abstraction layer for unification
NetBIOSNetBIOS
Etc.Etc.
Function Discovery (FD)Function Discovery (FD)
New feature in Windows Vista for New feature in Windows Vista for resource discoveryresource discovery
Provides uniform API for resource discovery Provides uniform API for resource discovery and metadata exchangeand metadata exchange
Is extensible allowing discovery via virtually Is extensible allowing discovery via virtually any protocolany protocol
Can aggregate results from multiple protocolsCan aggregate results from multiple protocolsFind NetBIOS and WSD shares with single queryFind NetBIOS and WSD shares with single query
Find all UPnP and WSD devices with same codeFind all UPnP and WSD devices with same code
FD Architectural OverviewFD Architectural Overview
Function Discovery API
Client
Query Manager
WNet Provider
WNetAPIs
SSDP Provider
SSDP
WSD Provider
WSD
3rd Party Provider
NativeAPIs
Registry
PnP Provider
Registry Provider
SetupDI API
Category Manager
Registry
Legend:Legend:
ClientClient
Client InterfaceClient Interface
ProvidersProviders
Underlying APIsUnderlying APIs
Internal ComponentsInternal Components
Discovery: PnPDiscovery: PnP hDevInfoSet = ::SetupDiGetClassDevs (hDevInfoSet = ::SetupDiGetClassDevs ( NULL,NULL, NULL,NULL, NULL,NULL, DIGCF_ALLCLASSES );DIGCF_ALLCLASSES ); bSuccess = ::SetupDiEnumDeviceInfo (bSuccess = ::SetupDiEnumDeviceInfo ( hDevInfoSet,hDevInfoSet, dwIndex++,dwIndex++, &sddInfoElement );&sddInfoElement );if (bSuccess) if (bSuccess) {{ pRootDevNode = new DevNode;pRootDevNode = new DevNode; pRootDevNode->guidClass = pRootDevNode->guidClass =
sddInfoElement.ClassGuid;sddInfoElement.ClassGuid; if (::SetupDiGetDeviceInstanceId(if (::SetupDiGetDeviceInstanceId( hDevInfoSet,hDevInfoSet, &sddInfoElement,&sddInfoElement, szDevId,szDevId, 2047,2047, &dwSizeNeeded ))&dwSizeNeeded )) { { pRootDevNode->pszName = newpRootDevNode->pszName = new WCHAR[dwSizeNeeded];WCHAR[dwSizeNeeded]; wcsncpy(wcsncpy( pRootDevNode->pszName,pRootDevNode->pszName, szDevId,szDevId, dwSizeNeeded );dwSizeNeeded ); }}pCurrDevNode = pRootDevNode;pCurrDevNode = pRootDevNode;pCurrDevNode->pNext = NULL;pCurrDevNode->pNext = NULL;
while (::SetupDiEnumDeviceInfo (while (::SetupDiEnumDeviceInfo ( hDevInfoSet,hDevInfoSet, dwIndex++,dwIndex++, &sddInfoElement ))&sddInfoElement )) {{ pCurrDevNode->pNext = new DevNode;pCurrDevNode->pNext = new DevNode; pCurrDevNode = pCurrDevNode->pNext; pCurrDevNode = pCurrDevNode->pNext;
pCurrDevNode->guidClass = pCurrDevNode->guidClass =
sddInfoElement.ClassGuid;sddInfoElement.ClassGuid; if (::SetupDiGetDeviceInstanceId(if (::SetupDiGetDeviceInstanceId( hDevInfoSet,hDevInfoSet, &sddInfoElement,&sddInfoElement, szDevId,szDevId, 2047,2047, &dwSizeNeeded ))&dwSizeNeeded )) { {
pCurrDevNode->pszName = newpCurrDevNode->pszName = new WCHAR[dwSizeNeeded];WCHAR[dwSizeNeeded]; wcsncpy( wcsncpy( pCurrDevNode->pszName,pCurrDevNode->pszName, szDevId,szDevId, dwSizeNeeded );dwSizeNeeded ); } } pCurrDevNode->pNext = NULL; pCurrDevNode->pNext = NULL; } } *ppDevNodes = pRootDevNode;*ppDevNodes = pRootDevNode;}}
Discovery: RegistryDiscovery: RegistrylResult = RegOpenKeyEx(lResult = RegOpenKeyEx( HKEY_LOCAL_MACHINE,HKEY_LOCAL_MACHINE, pwszSubKey,pwszSubKey, 0,0, KEY_READ,KEY_READ, &hKey);&hKey);
if( ERROR_SUCCESS == lResult )if( ERROR_SUCCESS == lResult ) lResult = RegQueryInfoKey(lResult = RegQueryInfoKey( hKey, NULL, NULL,hKey, NULL, NULL, NULL, &dwSubKeys, NULL,NULL, &dwSubKeys, NULL, NULL, &dwValues, NULL,NULL, &dwValues, NULL, NULL, NULL, NULL);NULL, NULL, NULL);
for( DWORD i = 0; ( i < dwValues ) && for( DWORD i = 0; ( i < dwValues ) && ( lResult == ERROR_SUCCESS ); i++ )( lResult == ERROR_SUCCESS ); i++ )
{{ WCHAR achValueName[MAX_PATH];WCHAR achValueName[MAX_PATH]; DWORD cchValueName = DWORD cchValueName =
ARRAY_SIZE( achValueName );ARRAY_SIZE( achValueName ); DWORD dwType;DWORD dwType; BYTE* pBuffer = new BYTE[MAX_PATH];BYTE* pBuffer = new BYTE[MAX_PATH]; DWORD dwBufSize = MAX_PATH;DWORD dwBufSize = MAX_PATH;
lResult = RegEnumValue(lResult = RegEnumValue( hKey, i, achValueName,hKey, i, achValueName, &cchValueName, NULL,&cchValueName, NULL, NULL, NULL, NULL );NULL, NULL, NULL );
if( ERROR_SUCCESS == lResult )if( ERROR_SUCCESS == lResult ) {{
lResult = RegQueryValueEx(lResult = RegQueryValueEx( hKey, achValueName, NULL,hKey, achValueName, NULL, &dwType, pBuffer, &dwBufSize );&dwType, pBuffer, &dwBufSize ); }} if ( pBuffer )if ( pBuffer ) delete pBuffer;delete pBuffer; }}
for( DWORD i = 0; ( i < dwSubKeys ) && for( DWORD i = 0; ( i < dwSubKeys ) && ( lResult == ERROR_SUCCESS ); i++ )( lResult == ERROR_SUCCESS ); i++ )
{{ WCHAR pwszNewSubKey[256];WCHAR pwszNewSubKey[256]; dwSize = MAX_PATH;dwSize = MAX_PATH; lResult = RegEnumKeyEx(lResult = RegEnumKeyEx( hKey, i, szName,hKey, i, szName, &dwSize, NULL, NULL,&dwSize, NULL, NULL, NULL, &ftWrite);NULL, &ftWrite); if( SUCCEEDED( StringCchPrintf(if( SUCCEEDED( StringCchPrintf( pwszNewSubKey, 256, L"%s\\%s",pwszNewSubKey, 256, L"%s\\%s", pwszSubKey, szName)))pwszSubKey, szName))) {{ Result = Result =
EnumerateSubKeys( pwszNewSubKey );EnumerateSubKeys( pwszNewSubKey ); }} }} if( hKey )if( hKey ) RegCloseKey( hKey );RegCloseKey( hKey );
return ERROR_SUCCESS;return ERROR_SUCCESS;
Discovery: FD PnPDiscovery: FD PnP
hr = spDiscovery->CreateInstanceCollectionQuery(hr = spDiscovery->CreateInstanceCollectionQuery(
FCTN_CATEGORY_PNP,FCTN_CATEGORY_PNP,
NULL,NULL,
TRUE,TRUE,
spNotify,spNotify,
&spFunQuery );&spFunQuery );
if ( SUCCEEDED( hr ))if ( SUCCEEDED( hr ))
hr = spFunQuery->Execute( &spFunInsts );hr = spFunQuery->Execute( &spFunInsts );
Discovery: FD RegistryDiscovery: FD Registry
hr = spDiscovery->CreateInstanceCollectionQuery(hr = spDiscovery->CreateInstanceCollectionQuery(
FCTN_CATEGORY_REGISTRY,FCTN_CATEGORY_REGISTRY,
NULL,NULL,
TRUE,TRUE,
spNotify,spNotify,
&spFunQuery );&spFunQuery );
if ( SUCCEEDED( hr ))if ( SUCCEEDED( hr ))
hr = spFunQuery->Execute( &spFunInsts );hr = spFunQuery->Execute( &spFunInsts );
Discovery: FD WSDDiscovery: FD WSD
hr = spDiscovery->CreateInstanceCollectionQuery(hr = spDiscovery->CreateInstanceCollectionQuery(
FCTN_CATEGORY_WSDISCOVERY,FCTN_CATEGORY_WSDISCOVERY,
NULL,NULL,
TRUE,TRUE,
spNotify,spNotify,
&spFunQuery );&spFunQuery );
if ( SUCCEEDED( hr ))if ( SUCCEEDED( hr ))
hr = spFunQuery->Execute( &spFunInsts );hr = spFunQuery->Execute( &spFunInsts );
FD Feature OverviewFD Feature Overview
DiscoveryDiscoveryQuery by protocol category insteadQuery by protocol category insteadof with protocol codeof with protocol code
Refine query using properties or constraints Refine query using properties or constraints (i.e., PnP Interface IDs)(i.e., PnP Interface IDs)
Define aggregate categories toDefine aggregate categories toTarget more than one providerTarget more than one provider
I.e., NetBIOS and WSDI.e., NetBIOS and WSD
Always apply constraintsAlways apply constraintsCategory will only return network printersCategory will only return network printers
FD Feature OverviewFD Feature Overview
NotificationsNotificationsClients receive notifications from categoryClients receive notifications from category
Send on resource add/removeSend on resource add/remove
ActivationActivationInstantiate and initialize software objects Instantiate and initialize software objects associated with resourceassociated with resource
Application provides the ClassID Application provides the ClassID and interface desiredand interface desired
FD binds object to resourceFD binds object to resource
The Function Instance (FI)The Function Instance (FI)
Single unit of discoverySingle unit of discoveryRepresents the discovered resourceRepresents the discovered resource
Created by the provider in responseCreated by the provider in responseto a query to a query
Local resources returned as collectionLocal resources returned as collectionof Function Instancesof Function Instances
Network resources returned as discovered Network resources returned as discovered via notificationsvia notifications
The Function Instance (FI)The Function Instance (FI)
Store resource information as propertiesStore resource information as propertiesStore containsStore contains
MetadataMetadata
Configuration dataConfiguration data
State dataState data
Exposed through IPropertyStore interfaceExposed through IPropertyStore interface
Allow read and write (when supported)Allow read and write (when supported)of resource informationof resource information
PnP-XPnP-XPlug and Play for networked devicesPlug and Play for networked devices
Cameron BrodeurCameron BrodeurProgram ManagerProgram Manager
Device Connectivity OptionsDevice Connectivity Options
Windows provides many different options Windows provides many different options for device connectivityfor device connectivity
Wired busesWired busesUSB 1.x and 2.0USB 1.x and 2.0
IEEE 1394IEEE 1394
Wireless personal area networkWireless personal area networkBluetoothBluetooth
Ultra-Wideband (UWB)Ultra-Wideband (UWB)
IP connectedIP connectedWi-FiWi-Fi
EthernetEthernet
IP devices limited in adoptionIP devices limited in adoption
Custom solutions for integrating Custom solutions for integrating with Windowswith Windows
A non-PnP deviceA non-PnP device
HistoricallyHistoricallyDual approachDual approach
The IP “bus” is handled differently from other busesThe IP “bus” is handled differently from other buses
This presents several problemsThis presents several problemsDisparate programming modelsDisparate programming models
No single end-user experienceNo single end-user experience
The device experience depends on the connector selectedThe device experience depends on the connector selected
Well understood experiencewhen plugging into this port
Fuels device adoptionFuels device adoption
Lowers support costsLowers support costs
A PnP deviceA PnP device
Undefined experience whenplugging into this port
The FutureThe FutureSingle modelSingle model
Unification of IP and directly connected devicesUnification of IP and directly connected devicesUsers should not have to care about the busUsers should not have to care about the bus
Directly Connected
IP Network
BenefitsBenefits
NCDs are simple to discover and useNCDs are simple to discover and useInstalled and managed just like local, Installed and managed just like local, bus-attached devicesbus-attached devices
Lower support costsLower support costs
Broader device adoptionBroader device adoption
NCDs can be enumerated and accessed NCDs can be enumerated and accessed using standard Windows application using standard Windows application programming interfaces (APIs)programming interfaces (APIs)
Allows use of FD API and legacy APIsAllows use of FD API and legacy APIs
Improved end-user experienceImproved end-user experience
BenefitsBenefits
NCDs benefit from existing Windows NCDs benefit from existing Windows assets for device managementassets for device management
Windows PnP and device management Windows PnP and device management infrastructureinfrastructure
Windows UpdateWindows Update
DiscoveryDiscovery
Before a device can be installed,Before a device can be installed,it must be discoveredit must be discovered
Network protocols replace the bus-specific electrical Network protocols replace the bus-specific electrical signals used for physically connected devicessignals used for physically connected devices
Metadata exchangeMetadata exchangeEnough information about the device mustEnough information about the device mustbe retrieved for installation purposesbe retrieved for installation purposes
Hardware IDHardware ID
Class IDClass ID
Friendly NameFriendly Name
Etc.Etc.
AssociationAssociation
With physical connections, the cable itself With physical connections, the cable itself establishes the associationestablishes the association
For NCDs, the following questions applyFor NCDs, the following questions applyWith which PC is the device associated?With which PC is the device associated?
Can the device be associated with more than one PC?Can the device be associated with more than one PC?
Enabling A Single Model Through PnPEnabling A Single Model Through PnP
The framework for enabling a single connectivity model already The framework for enabling a single connectivity model already exists today: It’s Windows PnP (Plug and Play)exists today: It’s Windows PnP (Plug and Play)
An IP bus enumerator (IPBusEnum) enumerates NCDsAn IP bus enumerator (IPBusEnum) enumerates NCDs
A PDO is created for each enumerated deviceA PDO is created for each enumerated device
PnP handles the installation of the device like any other devicePnP handles the installation of the device like any other device
The enabling components are collectively called PnP-X: The enabling components are collectively called PnP-X: PnP extensions for NCDsPnP extensions for NCDs
PnP
PC
I
US
B
1394
PC
MC
IA
IPBusEnum
Class Drivers
Physical Discovery Network Discovery
User opens Network ExplorerUser opens Network ExplorerMulticast sent by discovery providersMulticast sent by discovery providers
List of device FIs returned to Network ExplorerList of device FIs returned to Network Explorer
Network Explorer displays discovered devicesNetwork Explorer displays discovered devices
Devices respond to multicast requestDevices respond to multicast request
FD creates a Function Instance (FI)FD creates a Function Instance (FI)for each devicefor each device
PnP-X devices presented as “Installable”PnP-X devices presented as “Installable”
User selects device for installationUser selects device for installation
Network Explorer adds the FI to the Association Network Explorer adds the FI to the Association Database, which is maintained as a FD categoryDatabase, which is maintained as a FD categoryFD notifies IPBusEnum service that a new device FD notifies IPBusEnum service that a new device has been added to Association Databasehas been added to Association DatabaseIPBusEnum gathers data from FI and deviceIPBusEnum gathers data from FI and device
Creates PnP device node (DevNode)Creates PnP device node (DevNode)
PnP begins device installPnP begins device installFinds matching INF fileFinds matching INF file
Loads device driver and softwareLoads device driver and software
Function Discovery API
PnP
Network Discovery Providers
IPBusEnum
Association
Database
How PnP-X WorksHow PnP-X Works
Network Explorer UI
3rd PartyWSD SSDP
XboxFI
StorageFI
PrinterFI
WSD SSDP 3rd PartyWSD SSDP
PnP
DevNode
DeviceDriver
Legend:
PnP-X
Function
DiscoveryNetwork
Providers
Driver
Applications now see the device as unavailableApplications now see the device as unavailable
Queries to PnP reflect offline stateQueries to PnP reflect offline state
Device starts-upDevice starts-upSends WSD Hello or SSPD Alive messageSends WSD Hello or SSPD Alive message
FD creates FI for device; IPBusEnum notifiedFD creates FI for device; IPBusEnum notified
IPBusEnum checks association databaseIPBusEnum checks association databaseMatching device found in databaseMatching device found in database
PnP DevNode recreatedPnP DevNode recreated
Device driver loadedDevice driver loaded
Applications now see the device as availableApplications now see the device as available
Queries to PnP reflect online stateQueries to PnP reflect online state
Function Discovery API
PnP
Network Discovery Providers
IPBusEnum
How PnP-X WorksHow PnP-X WorksDevice goes offlineDevice goes offline
Sends WSD Bye or SSDP Bye-Bye messageSends WSD Bye or SSDP Bye-Bye message
Network Explorer UI
3rd PartyWSD SSDP
StorageFI
WSD SSDPWSD SSDP
PnP
DevNode
DeviceDriver
IPBusEnum calls PnPIPBusEnum calls PnPDriver unloaded Driver unloaded
PnP DevNode removedPnP DevNode removed
Device shutdown
Bye message sent
Status: OFFLINE
Device startupAlive message sent
Status: ONLINE
AssociationDatabase
StorageDevice
Legend:Legend:
PnP-XPnP-X
FunctionFunction
DiscoveryDiscoveryNetwork Network
ProvidersProviders
DriverDriver
3rd Party
Inbox Protocol SupportInbox Protocol Support
Inbox support is provided for the following discovery Inbox support is provided for the following discovery protocols in Windows Vistaprotocols in Windows Vista
Web Services Discovery Protocol (WS-Discovery)Web Services Discovery Protocol (WS-Discovery)Part of the Web Services on Devices suite of protocolsPart of the Web Services on Devices suite of protocols
Devices must support WS-Discovery as well as the Device ProfileDevices must support WS-Discovery as well as the Device Profilefor Web Services to be installable by PnP-Xfor Web Services to be installable by PnP-X
Simple Services Discovery Protocol (SSDP)Simple Services Discovery Protocol (SSDP)Used by UPnP for device discoveryUsed by UPnP for device discovery
Devices must support SSDP as well as Device DescriptionDevices must support SSDP as well as Device Descriptionto be installable by PnP-Xto be installable by PnP-X
Support for additional protocols can be enabled through Support for additional protocols can be enabled through the installation of a FD providerthe installation of a FD provider
Must conform to the requirements in the PnP-XMust conform to the requirements in the PnP-Xand FD specificationsand FD specifications
See PnP-X and FD documentation for detailsSee PnP-X and FD documentation for details
Device RequirementsDevice Requirements
Devices must support one of the inbox Devices must support one of the inbox protocols or provide a custom providerprotocols or provide a custom provider
Devices must include additional XMLDevices must include additional XMLdata in the discovery metadatadata in the discovery metadata<HardwareId><HardwareId>
<CompatibleId><CompatibleId>
<DeviceCategory><DeviceCategory>
Allows PnP-X to recognize that the device Allows PnP-X to recognize that the device is “installable” and create a PnP DevNodeis “installable” and create a PnP DevNode
Device-Side XML Example (UPnP)Device-Side XML Example (UPnP)
<?xml version="1.0" ?> <?xml version="1.0" ?> <root xmlns="urn:schemas-upnp-org:device-1-0"><root xmlns="urn:schemas-upnp-org:device-1-0"> <specVersion><specVersion> <major>1</major> <major>1</major> <minor>0</minor> <minor>0</minor> </specVersion></specVersion> <URLBase>http://192.168.0.1:1234</URLBase> <URLBase>http://192.168.0.1:1234</URLBase> <device><device> <pnpx:X_hardwareId>MSFT_MediaPlayer_HWID</pnpx:X_hardwareId><pnpx:X_hardwareId>MSFT_MediaPlayer_HWID</pnpx:X_hardwareId> <pnpx:X_compatibleId>MSFT_MediaPlayer_CPID</pnpx:X_compatibleId><pnpx:X_compatibleId>MSFT_MediaPlayer_CPID</pnpx:X_compatibleId> <pnpx:X_deviceCategory>MediaDevices</pnpx:X_deviceCategory><pnpx:X_deviceCategory>MediaDevices</pnpx:X_deviceCategory> <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType> <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType> <friendlyName>Microsoft Advanced Media Player</friendlyName> <friendlyName>Microsoft Advanced Media Player</friendlyName> <manufacturer>Microsoft</manufacturer> <manufacturer>Microsoft</manufacturer> ...... </device></device></root></root>
DevNode CreationDevNode Creation
IPBusEnum creates a PnP DevNode IPBusEnum creates a PnP DevNode for the devicefor the device
Information discovered about the device is stored Information discovered about the device is stored in the DevNode property store, includingin the DevNode property store, including
IP AddressIP Address
Hardware IDs and Compatible IDs for the deviceHardware IDs and Compatible IDs for the device
Device UUID (GUID)Device UUID (GUID)
PnP installs a driver using the “standard” processPnP installs a driver using the “standard” processSearch driver packages (INF files) looking for the best Search driver packages (INF files) looking for the best match based on hardware and compatible IDsmatch based on hardware and compatible IDs
Invoke the specified class installer and optional Invoke the specified class installer and optional co-installer to carry out the installation processco-installer to carry out the installation process
Device Driver DetailsDevice Driver Details
Manufacturer can supply a kernel-modeManufacturer can supply a kernel-modeor user-mode driver for the deviceor user-mode driver for the device
Driver can also be a class driver supplied Driver can also be a class driver supplied by Microsoftby Microsoft
For proprietary devices or devices that are tiedFor proprietary devices or devices that are tiedto a single application, the install process can to a single application, the install process can simply install the application or servicesimply install the application or service
CommunicatingCommunicating With Your Device With Your Device
Base-level functionality for an associated network Base-level functionality for an associated network connected device simply returns the IP address connected device simply returns the IP address of the deviceof the device
Communication with network connected devices Communication with network connected devices will go through existing network stackswill go through existing network stacks
.NET Framework.NET Framework
WSDWSD
UPnPUPnP
WinSockWinSock
Protocol choice left up to the vendorProtocol choice left up to the vendor
Industry AdoptionIndustry Adoption
PnP-X adoption is growingPnP-X adoption is growingWSD-based printersWSD-based printers
Wi-Fi digital camerasWi-Fi digital cameras
Media Center Extender devices, including Media Center Extender devices, including the Xbox 360the Xbox 360
Network Attached Storage devicesNetwork Attached Storage devices
Adoption is acceleratingAdoption is accelerating
The time to consider PnP-X for your networked The time to consider PnP-X for your networked devices is nowdevices is now
MaxtorMaxtorNetwork Attached StorageNetwork Attached Storage
Call To ActionCall To Action
Evaluate PnP-X and Function Discovery Evaluate PnP-X and Function Discovery for your NCDsfor your NCDs
Review the PnP-X and Function Discovery Review the PnP-X and Function Discovery documentation on MSDNdocumentation on MSDN
For WSD and UPnP devices, update your For WSD and UPnP devices, update your device to provide the information specifieddevice to provide the information specifiedby the PnP-X documentationby the PnP-X documentation
For other devices, write a Function Discovery For other devices, write a Function Discovery provider that conforms to requirements provider that conforms to requirements specified by the FD documentationspecified by the FD documentation
Additional ResourcesAdditional Resources
Web ResourcesWeb ResourcesFunction Discovery SpecsFunction Discovery Specshttp://msdn.microsoft.com/library/default.asp?url=/library/en-ushttp://msdn.microsoft.com/library/default.asp?url=/library/en-us/fundisc/ncd/portal.asp/fundisc/ncd/portal.aspPnP-X SpecsPnP-X SpecsSee the Windows Rally SDK at See the Windows Rally SDK at http://www.microsoft.com/rallyhttp://www.microsoft.com/rallyFunction Discovery SDK Documentation Function Discovery SDK Documentation http://http://windowssdk.msdn.microsoft.com/library/default.asp?urlwindowssdk.msdn.microsoft.com/library/default.asp?url=/library/en-us/=/library/en-us/fundisc/ncd/about_function_discovery.aspfundisc/ncd/about_function_discovery.aspWhitepapersWhitepapershttp://www.microsoft.com/rallyhttp://www.microsoft.com/rally
Related SessionsRelated SessionsWeb Services on devices in Windows VistaWeb Services on devices in Windows VistaWeb Services on devices: The protocol now and for the futureWeb Services on devices: The protocol now and for the future
Email address for more informationEmail address for more information rally @ microsoft.comrally @ microsoft.com
© 2006 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation.
MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.