Räkna upp enheter via ett nätverk

Använd Windows. Devices.Enumeration API:er för att räkna upp enheter via trådlösa protokoll och nätverksprotokoll.

Räkna upp enheter via nätverks- eller trådlösa protokoll

Ibland behöver du räkna upp enheter som inte är lokalt anslutna och som bara kan identifieras via ett trådlöst protokoll eller nätverksprotokoll. För att göra det, finns det i Windows.Devices.Enumeration API:erna tre olika typer av enhetsobjekt: AssociationEndpoint (AEP), AssociationEndpointContainer (AEP Container) och AssociationEndpointService (AEP Service). Sammantaget benämns dessa AEP:er eller AEP-objekt.

Vissa enhets-API:er tillhandahåller en väljaresträng som du kan använda för att räkna upp genom de tillgängliga AEP-objekten. Detta kan omfatta båda enheterna som är parkopplade och inte är kopplade till systemet. Vissa av enheterna kanske inte kräver parkoppling. Dessa enhets-API:er kan försöka parkoppla enheten om det är nödvändigt innan du interagerar med den. Wi-Fi Direct är ett exempel på API:er som följer det här mönstret. Om dessa enhets-API:er inte automatiskt parkopplar enheten kan du koppla den med hjälp av objektet DeviceInformationPairing som är tillgängligt från DeviceInformation.Pairing.

Det kan dock finnas fall där du vill identifiera enheter manuellt på egen hand utan att använda en fördefinierad väljaresträng. Du kan till exempel bara behöva samla in information om AEP-enheter utan att interagera med dem eller så kanske du vill hitta fler AEP-objekt än vad som identifieras med den fördefinierade selector-strängen. I det här fallet skapar du en egen väljaresträng och använder den enligt anvisningarna under Skapa en enhetsväljare.

När du skapar en egen väljare rekommenderar vi starkt att du begränsar uppräkningsomfånget till de protokoll som du är intresserad av. Du vill till exempel inte ha Wi-Fi radiosökning efter Wi-Fi Direct-enheter om du är särskilt intresserad av UPnP-enheter. Windows har definierat en identitet för varje protokoll som du kan använda för att begränsa uppräkningen. I följande tabell visas protokolltyper och identifierare.

Protokoll- eller nätverksenhetstyp Id
UPnP (inklusive DIAL och DLNA) {0e261de4-12f0-46e6-91ba-428607ccef64}
Webbtjänster på enheter (WSD) {782232aa-a2f9-4993-971b-aedc551346b0}
Wi-Fi Direkt {0407d24e-53de-4c9a-9ba1-9ced54641188}
DNS-baserad tjänsteupptäckt (DNS-SD) {4526e8c1-8aac-4153-9b16-55e86ada0e54}
Tjänstpunkt {d4bf61b3-442e-4ada-882d-fa7B70c832d9}
Nätverksskrivare (Active Directory-skrivare) {37aba761-2124-454c-8d82-c42962c2de2b}
Windows anslut nu (WNC) {4c1b1ef8-2f62-4b9f-9bc5-b21ab636138f}
WiGig-dockningsstationer {a277f3a5-8764-4f88-8045-4c5e962640b1}
Wi-Fi etablering för HP-skrivare {c85ef710-f344-4792-bb6d-85a4346f1e69}
Bluetooth {e0cbf06c-cd8b-4647-bb8a-263b43f0f974}
Bluetooth LE {bb7bb05e-5972-42b5-94fc-76eaa7084d49}
Nätverkskamera {b8238652-b500-41eb-b4f3-4234f7f5ae9}

Exempel på avancerad frågesyntax (AQS)

Varje AEP-typ har en egenskap som du kan använda för att begränsa uppräkningen till ett specifikt protokoll. Tänk på att du kan använda OR-operatorn i ett AQS-filter för att kombinera flera protokoll. Här är några exempel på AQS-filtersträngar som visar hur du frågar efter AEP-enheter.

Den här AQS-frågan söker efter alla UPnP-objekt av typen AssociationEndpoint när DeviceInformationKind är inställd på AsssociationEndpoint.

System.Devices.Aep.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Den här AQS-frågan söker efter alla UPnP- och WSD-AssociationEndpoint-objekt när DeviceInformationKind är inställd på AsssociationEndpoint.

System.Devices.Aep.ProtocolId:="{782232aa-a2f9-4993-971b-aedc551346b0}" OR
System.Devices.Aep.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Den här AQS:en söker efter alla UPnP-AssociationEndpointService-objekt om DeviceInformationKind är inställd på AsssociationEndpointService.

System.Devices.AepService.ProtocolId:="{0e261de4-12f0-46e6-91ba-428607ccef64}"

Den här AQS:en frågar efter AssociationEndpointContainer-objekt när DeviceInformationKind är inställd på AssociationEndpointContainer, men hittar dem bara genom uppräkning via UPnP-protokollet. Vanligtvis skulle det inte vara användbart att räkna upp containrar som bara kommer från ett protokoll. Detta kan dock vara användbart genom att begränsa filtret till protokoll där du vet att enheten kan identifieras.

System.Devices.AepContainer.ProtocolIds:~~"{0e261de4-12f0-46e6-91ba-428607ccef64}"