Статьи

Windows Phone Native Series — Перечисление драйверов

Пришло время немного выйти за пределы стандартного Windows Phone SDK — вплоть до нативной разработки. Это потребует больше усилий, но вы сможете получить гораздо больше информации таким образом. Давайте начнем с основ — что вам нужно ?

  • Некоторый опыт работы с C ++
  • Visual Studio 2008
  • Windows Mobile 6 Professional SDK
  • Visual Studio 2010
  • Windows Phone SDK
  • Дамп телефона GAC
  • Фактическое устройство Windows Phone

Предполагая, что у вас есть все необходимые инструменты и навыки, давайте начнем. Прежде всего, вам нужно создать проект смарт-устройства ATL в Visual Studio 2008.

Вы должны убедиться, что проект правильно настроен, чтобы он мог правильно использоваться приложением Windows Phone. Подробности доступны здесь (написано Heathcliff74 из XDA ). Мой проект называется NativeLink, а основной класс, над которым я буду экспериментировать, называется CNativeAPI . Помните, что есть также специальный интерфейс, который называется INativeAPI .

Откройте NativeAPI.cpp (я использовал соглашения об именах по умолчанию) и создайте новый метод:

STDMETHODIMP CNativeAPI::GetDeviceDriverInformation(BSTR* Data)
{

} 

Возвращаемым значением будет двоичная строка, в которой перечислены все зарегистрированные драйверы. Теперь откройте NativeLink.idl и убедитесь, что у вас есть правильная ссылка на интерфейс для этого метода:

interface INativeAPI : IUnknown{
	HRESULT GetDeviceDriverInformation(BSTR* Data);
};

Этот метод также должен быть объявлен в NativeAPI.h :

BEGIN_COM_MAP(CNativeAPI)
	COM_INTERFACE_ENTRY(INativeAPI)
END_COM_MAP()

STDMETHOD(GetDeviceDriverInformation)(BSTR* Data);

Давайте перейдем к самому API. Есть два метода, которые мы можем вызвать для получения списка драйверов — FindFirstDevice и FindNextDevice .

В качестве исходного примера я использовал эту статью .

FindFirstDevice получает начальный дескриптор, который позже будет использоваться FindNextDevice для поиска полного набора.

Давайте объявим дескриптор, который будет использоваться с методом:

HANDLE hDriver;

При вызове FindFirstDevice мне также нужно указать тип поиска устройства. Это можно сделать с помощью экземпляра DeviceSearchType :

DeviceSearchType DeviceSearch = DeviceSearchByLegacyName;

Конечно, вы можете использовать другой тип поиска устройства, но для удобства я собираюсь работать с устаревшими именами. Теперь мне нужен экземпляр DEVMGR_DEVICE_INFORMATION , который фактически будет хранить информацию, полученную через дескриптор.

DEVMGR_DEVICE_INFORMATION DeviceInfo;

Размер структуры может быть легко определен с помощью sizeof .

DeviceInfo.dwSize = sizeof(DEVMGR_DEVICE_INFORMATION);

Теперь я могу вызвать FindFirstDevice :

hDriver = FindFirstDevice(DeviceSearch,L"*",&DeviceInfo);

Первый параметр — это тип поиска. Второй параметр указывает, что метод должен просматривать все устройства. На DeviceInfo ссылается непосредственно его адрес в памяти (указатель — таким образом, префикс амперсанда). Обратите внимание, что в соответствии с документацией для метода третьи параметры ( pdi ) установлены в [out] .

Предполагая, что драйвер действителен, теперь я могу прочитать возвращенные значения:

CComBSTR composite("");

if (hDriver != INVALID_HANDLE_VALUE)
{
do
{
CComBSTR ccLegacyName = SysAllocString(DeviceInfo.szLegacyName);
SysFreeString(ccLegacyName);
CComBSTR ccDeviceKey = SysAllocString(DeviceInfo.szDeviceKey);
SysFreeString(ccDeviceKey);
CComBSTR ccBusName = SysAllocString(DeviceInfo.szBusName);
SysFreeString(ccBusName);
CComBSTR ccDeviceName = SysAllocString(DeviceInfo.szDeviceName);
SysFreeString(ccDeviceName);

composite.AppendBSTR(ccLegacyName);
composite.AppendBSTR(ccDeviceKey);
composite.AppendBSTR(ccBusName);
composite.AppendBSTR(ccDeviceName);
composite.Append("\n");
} while (FindNextDevice(hDriver,&DeviceInfo));
}

Обратите внимание, что когда я выполняю преобразование строк из WCHAR , я создаю один составной CComBSTR, который будет использоваться для хранения всего списка. Поскольку FindNextDevice имеет возвращаемое значение BOOL, его можно легко интегрировать как часть цикла do … while.

Все, что мне нужно сделать, чтобы завершить метод, это вернуть данные, отсоединившись от составного CComBSTR и закрыв дескриптор:

*Data = composite.Detach();

FindClose(hDriver);

return S_OK;

Если вы хотите проверить, как выглядит весь метод, вот фрагмент:

STDMETHODIMP CNativeAPI::GetDeviceDriverInformation(BSTR* Data)
{
	HANDLE hDriver;
	DeviceSearchType DeviceSearch = DeviceSearchByLegacyName;

	DEVMGR_DEVICE_INFORMATION DeviceInfo;

	DeviceInfo.dwSize = sizeof(DEVMGR_DEVICE_INFORMATION);

	hDriver = FindFirstDevice(DeviceSearch,L"*",&DeviceInfo);

	CComBSTR composite("");
	
	if (hDriver != INVALID_HANDLE_VALUE)
	{
		do
		{
			CComBSTR ccLegacyName = SysAllocString(DeviceInfo.szLegacyName);
			SysFreeString(ccLegacyName);
			CComBSTR ccDeviceKey = SysAllocString(DeviceInfo.szDeviceKey);
			SysFreeString(ccDeviceKey);
			CComBSTR ccBusName = SysAllocString(DeviceInfo.szBusName);
			SysFreeString(ccBusName);
			CComBSTR ccDeviceName = SysAllocString(DeviceInfo.szDeviceName);
			SysFreeString(ccDeviceName);

			composite.AppendBSTR(ccLegacyName);
			composite.AppendBSTR(ccDeviceKey);
			composite.AppendBSTR(ccBusName);
			composite.AppendBSTR(ccDeviceName);
			composite.Append("\n");
		} while (FindNextDevice(hDriver,&DeviceInfo));
	}

	*Data = composite.Detach();

	FindClose(hDriver);

    return S_OK;
}

Давайте посмотрим, как мы можем теперь интегрировать это в приложение Windows Phone. Создайте новый проект Mango (7.1) и следуйте (еще раз) общим инструкциям предварительной настройки здесь . Если вам интересно, где вы можете получить Microsoft.Phone.InteropServices.dll , вы можете использовать Reflection или вывести библиотеки GAC из образа эмулятора .

Поскольку вам понадобятся интерфейс и идентификаторы GUID, вот где их можно найти в файле IDL:

Тем не менее, в приложении Windows Phone у меня есть эти объявления в основном пространстве имен:

[ComImport, ClassInterface(ClassInterfaceType.None), Guid("8848DEB3-66B6-4AE3-A6F6-4A9C2F6595A5")]
public class CNativeAPI
{
}

[ComImport, Guid("57C3A135-837D-486F-93E3-BF878F61892B"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface INativeAPI
{
    [return: MarshalAs(UnmanagedType.BStr)]
    string GetDeviceDriverInformation();
}

Когда страница загружена, я регистрирую COM и создаю экземпляр класса hook:

INativeAPI NativeAPIHook;
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
    ComBridge.RegisterComDll("NativeLink.dll", new Guid("8848DEB3-66B6-4AE3-A6F6-4A9C2F6595A5"));
    NativeAPIHook = (INativeAPI)new CNativeAPI();
}

Я добавил одну кнопку, которая будет отображать информацию о драйвере в MessageBox:

private void btnDriverInfo_Click(object sender, RoutedEventArgs e)
{
    string data = NativeAPIHook.GetDeviceDriverInformation();
    MessageBox.Show(data);
}

Можете ли вы проверить это в эмуляторе? Нет . Причиной этого являются связи библиотечной архитектуры (ARMV4I).

Ваш вывод может быть похож на это:

$ устройства \ DAL1 $ автобус \ BuiltInPhase1_0_8_0 $ автобус \ BuiltInPhase1_0_8_0 $ устройство \ DAL1
$ устройство \ CCS0 $ автобус \ BuiltInPhase1_0_11_0 $ автобус \ BuiltInPhase1_0_11_0 $ устройство \ CCS0
$ устройство \ ERR1 $ автобус \ BuiltInPhase1_0_19_0 $ автобус \ BuiltInPhase1_0_19_0 $ устройство \ ERR1
$ устройство \ PMD1 $ автобус \ BuiltInPhase1_0_17_0 $ автобус \ BuiltInPhase1_0_17_0 $ устройство \ PMD1
Drivers \ BuiltIn \ DM $ устройство \ DMV1 $ автобус \ BuiltInPhase1_0_7_0 $ устройство \ DMV1
$ устройство \ DSK1 $ автобус \ BuiltInPhase1_0_6_0 $ автобус \ BuiltInPhase1_0_6_0 $ устройство \ DSK1
$ устройства \ SME1 $ bus \ BuiltInPhase1_0_4_0 $ bus \ BuiltInPhase1_0_4_0 $ device \ SME1
Drivers \ BuiltIn \ RPC $ device \ RPC1 $ bus \ BuiltInPhase1_0_3_0 $ устройство \
устройство RPC1 $ \ DAL0 $ bus \ BuiltInPhase1_0_0_0 $ 0
$ 0 $ устройства $ автобус \ BuiltInPhase1_0_1_0 $ автобус \ BuiltInPhase1_0_1_0 $ устройство \ DAM1
$ DEVICE \ RMT1Drivers \ BuiltIn \ RemoteApisSvc $ автобус \ BuiltInPhase1_0_18_0 $ устройство \ RMT1
$ устройство \ Crm1 $ автобус \ BuiltInPhase1_0_0_0 $ автобус \ BuiltInPhase1_0_0_0 $ устройство \ Crm1
$ устройство \ sdc1 $ автобус \ BuiltInPhase1_0_9_0 $ автобус \ BuiltInPhase1_0_9_0 $ устройство \ sdc1
$ устройство \ SHC1 $ автобус \ BuiltInPhase1_0_15_0 $ автобус \ BuiltInPhase1_0_15_0 $ устройство \ SHC1
$ устройство \ GIO1 $ автобус \ BuiltInPhase1_0_16_0 $ автобус \ BuiltInPhase1_0_16_0 $ устройство \ GIO1
$ устройство \ MCD1 $ автобус \ BuiltInPhase1_0_10_0 $ автобус \ BuiltInPhase1_0_10_0 $ устройство \ MCD1
$ устройство \ PMS1 $ bus \ BuiltInPhase1_0_14_0 $ bus \ BuiltInPhase1_0_14_0 $ device \ PMS1
$ bus \ SDBus_0_0_0 \ Драйверы \ SDCARD \ ClientDrivers \ Class \ SDMemory_Class \ устройство High_Capacity $ device \ DSK2
$ \ устройство \ DSK2 $ $ устройства \ Builtin_0 $ $ устройства \ Builtin_0 $ $ _DD \ CPM0
$ bus \ BuiltIn_0_60_0Drivers \ BuiltIn \ ErrorReporting $ device \ DWX1 $ device \ DWX1
Уведомить $ bus \ NFY0 $ bus \ NFY0 $ device \
Драйверы NFY0 \ BuiltIn \ QEM $ bus \ BuiltIn_0_5_0 $ device \ QEM1 $ device \ QEM1
$ bus \ BuiltIn_0_46 \ BuiltIn \ WAPIMAN $ device \ WAM1 $ device \ WAM1
$ bus \ BuiltIn_0_47_0Drivers \ BuiltIn \ ALPCD $ device \ LPC2 $ device \ LPC2
$ bus \ BuiltIn_0_57_0Drivers \ BuiltIn \ Устройство DelayedBootWork $ \ устройство DBW0 $ \ DBW0
$ bus_In_DBD64 Устройство \ NTLMSSP_SVC $ устройство \ SSP0
$ \ SSP0 $ \ BuiltIn_0_77_0Drivers \ BuiltIn \ SqmEngine $ устройство \ SQM1 $ устройство \ SQM1
$ bus \ BuiltIn_0_45_0_драйверы \ BuiltIn \ AudioRtgMgr $ устройство \ встроенное устройство \ ARM1
$, \ AR_1_устройства $ 67 $ device \ CRD0 $ device \ CRD0
$ bus \ BuiltIn_0_8_0Drivers \ BuiltIn \ runQuiet $ device \ RQT1 $ device \ RQT1
$ шины \ BuiltIn_0_36_0Drivers \ BuiltIn \ CLKREGIM $ устройство \ CRM2 $ DEVICE \ CRM2
$ автобус \ BuiltIn_0_18_0Drivers \ BuiltIn \ MSM_TIME $ устройство \ TMS1 $ устройство \ TMS1
$ шины \ BuiltIn_0_33_0Drivers \ BuiltIn \ I2CMDD $ устройство \ I2C1 $ устройство \ I2C1
$ автобус \ BuiltIn_0_6_0Drivers \ BuiltIn \ SerialHS2 $ device \ COM2 $ device \
шина COM2 $ \ BuiltIn_0_17_0Drivers \ BuiltIn \ SerialHS $ device \ COM9 $ устройство \ COM9
$ bus \ BuiltIn_0_32_0Drivers \ BuiltIn \ Battery $ устройство \ BAT1 $ устройство \ BAT1_
$ шина \ Built_ $ $ Встроенный \ BuiltIn \ UsbFn $ device \ UFN1 $ device \ UFN1
$ bus \ USBFN_1_0 \ Drivers \ USB \ FunctionDrivers \ CompositeFN $ device \ UFC1 $ device \ UFC1
$ bus \ USBCFN_1_29 \ Драйверы \ USB \ FunctionDrivers \ устройство MtpClientDrvUTs $ $ \ MUT1
$ bus \ USBCFN_1_30 \ Драйверы \ USB \ FunctionDrivers \ Serial_Class $ device \ COM1 $ device \ COM1
$ bus \ BuiltIn_0_21_0Drivers \ BuiltIn \ SPIbus $ device \ SPI1 $ device \
Драйверы SPI1 \ BuiltIn \ RIL $ bus \ BuiltIn_0_76_0 $ device \ RIL1 $ device \ RIL1
Драйверы \ BuiltIn \ GSL $ bus \ BuiltIn_0_7_0 $ device \ GSL1 $ device \ GSL1
$ bus \ BuiltIn_0_16_0Drivers \ BuiltIn \ WaveDev $ device \ WAV1 $ device \
Драйверы WAV1 \ BuiltIn \ SIM $ bus \ BuiltIn_0_68_0 $ device \ SIM1 $ device \ SIM1
Drivers \ BuiltIn \ SMS $ bus \ BuiltIn_0_69_0 $ устройство \ SMS1 $ устройство \ SMS1 $ устройство \ SMS1
$ bus \ BuiltIn_0_87_0Drivers \ BuiltIn \ NDIS $ device \ NDS0 $ device \ NDS0
Comm \ nwifi $ bus \ NWF1 $ bus \ NWF1 $ device \ NWF1
Drivers \ BuiltIn \ KBD $ bus \ BuiltIn_0_2_0 $ устройство \ устройство KPD1 $, устройство \ KPD1
$ bus \ BuiltIn_0_3_0Drivers \ BuiltIn \ Accelerometer $ device \ ACC1 $ device \ ACC1
$ bus \ BuiltIn_0_24_0Drivers \ BuiltIn \ NLed $ device \ NLD1 $ device \ NLD1
$ bus \ BuiltIn_0_15_0Drivers \ BuiltIn \ DCVS $ device \ DVS1 $ device \
Драйверы DVS1 \ BuiltIn \ QVD $ bus \ BuiltIn_0_14_0 $ device \ QVD1 $ device \ QVD1
$ bus \ IPS0Comm \ Devices \ TCPIP \ устройство \ WfpIPSec $ device \ IPS0 $ IPS0
$ bus \ WFP0Comm \ Devices \ TCPIP \ WfpKfd $ device \ WFP0 $ device \ WFP0
$ bus \ DP60Comm \ Devices \ TCPIP6 \ DHCPV6L $ device \ DP60 $ device \ DP60
$ bus \ NAT0Comm \ ConnectionSharing \ Driver $ device \ NAT0 $ устройство \ шина NAT0
$ \ DP40Comm \ Devices \ TCPIP \ устройство $ DHCP \ устройство DP40 $ \
драйверы DP40 \ BuiltIn \ WWN $ bus \ BuiltIn_0_72_0 $ устройство \ WWN0 $ устройство \
драйверы WWN0 \ BuiltIn \ BFE $ bus \ BuiltIn_0_79_0 $ устройство \ BFE0 $ device \ BFE0
$ bus \ BuiltIn_0_82_0Drivers \ BuiltIn \ Ws2Serv $ device \ WSS1 $ device \ WSS1
$ bus \ SDBus_0_1_1 \ Драйверы \ SDCARD \ ClientDrivers \ Пользовательское \ MANF-02D0-CARDID-4329-FUNC-1 $ устройство \ N устройство \ NDL1
Drivers \ BuiltIn \ BTD $ автобус \ BuiltIn_0_49_0 $ DEVICE \ BTD0 $ DEVICE \ BTD0
$ автобус \ BuiltIn_0_86_0Drivers \ BuiltIn \ NDISUIO $ устройство \ UIO1 $ DEVICE \ UIO1
$ шины \ BuiltIn_0_20_0Drivers \ BuiltIn \ магнитометр $ устройство \ MAG1 $ устройство \ MAG1
$ bus \ BuiltIn_0_51_0Drivers \ BuiltIn \ btavctp $ device \ AVC0 $ device \ AVC0
$ bus \ BuiltIn_0_52_0Drivers \ BuiltIn \ btavdtp $ device \ AVD0 $ устройство \ AVD0
$ bus \ BuiltIn_0_31_0Drivers \ BuiltIn \ устройство $ Compass1 $ device \ CMP device
$ CM \ устройство BuiltIn_0_30_0Drivers \ BuiltIn \ SensorFusion $ DEVICE \ FUS1 $ DEVICE \ FUS1
$ автобус \ BuiltIn_0_50_0Drivers \ BuiltIn \ btavrcp $ устройства \ AVR0 $ DEVICE \ AVR0
$ шину \ BuiltIn_0_53_0Drivers \ BuiltIn \ BtA2dpSnd $ устройства \ WAV8 $ DEVICE \ WAV8
Drivers \ BuiltIn \ ALS $ автобус \ BuiltIn_0_28_0 $ устройство \ ALS1 $ устройство \ ALS1
$ шины \ BuiltIn_0_27_0Drivers \ BuiltIn \ Proximity $ DEVICE \ Prx1 $ устройство \ Prx1
$ автобус \ BuiltIn_0_0_0Drivers \ BuiltIn \ Backlight $ устройство \ BKL1 $ устройство \ BKL1
$ шины \ BuiltIn_0_11_0Drivers \ BuiltIn \ VencDriverNewpm $ устройство \ Vpm2 $ устройство \ Vpm2
$ шина Устройство \ BuiltIn_0_12_0Drivers \ BuiltIn \ Ven_Driver $ device \ Ven1 $ device \ Ven1
$ bus \ BuiltIn_0_13_0Drivers \ BuiltIn \ Ven_DriverNew $ device \ Ven2 $ device \ Ven2
$ bus \ BuiltIn_0_10_0Drivers \ BuiltIn \ VencDriverPm $ устройство \ V0 $ 0_pm
$ 0 Устройство \ BuiltIn \ gpsdriver $ device \ Устройство GPS0 $ \ шина GPS0
$ \ BuiltIn_0_4_0Drivers \ BuiltIn \ QisdaModemBridge $ устройство \ Устройство QAT1 $ \ шина QAT1
$ \ BuiltIn_0_74_0 Драйверы \ Встроенное устройство \ ModemBridge $ \ устройство MBG1
$ \ Встраиваемое устройство \ MBG1 $ 73 \ RemoteAtcop $ устройства \ Rat1 $ устройство \ Rat1
Устройство $ bus \ BuiltIn_0_35_0Drivers \ BuiltIn \ BrcmHCI $ device \ BBF1 $ device \ BBF1
$ bus \ BuiltIn_0_34_0Drivers \ BuiltIn \ BrcmTest $ device \ BTT1 $ устройство \ Шина BTT1
$ \ BuiltIn_0_63_0Drivers \ BuiltIn \ EAP3S $ $ устройство ETS0 $ $ ETS \
$ ETS \ BuiltIn_0_85_0Drivers \ BuiltIn \ NSIPROXY $ устройство \ NSI1 $ DEVICE \ NSI1
$ автобус \ BuiltIn_0_93_0Drivers \ BuiltIn \ AudioTuner $ устройство \ TNR1 $ устройство \ TNR1
$ шины \ BuiltIn_0_84_0Drivers \ BuiltIn \ NSISVC $ устройство \ NSI0 $ устройство \ NSI0
$ автобус \ BuiltIn_0_62_0Drivers \ BuiltIn \ EAPSVC $ device \ EHS0 $ device \ EHS0
$ bus \ BuiltIn_0_71_0Drivers \ BuiltIn \ CmService $ device \ CMS0 $ device \ CMS0
$ bus \ BuiltIn_0_78_0Drivers \ BuiltIn \ TSKSCHRDF $ устройство \ встроенное устройство \ RDF1
$ bus \ RDIn0 $ 48 \ СЮКО $ устройства \ LSS0 $ устройство \ LSS0
$ шины \ BuiltIn_0_61_0Drivers \ BuiltIn \ WISPrService $ устройство \ WCS0 $ DEVICE \ WCS0
$ автобус \ BuiltIn_0_80_0Drivers \ BuiltIn \ IKEEXT $ устройство \ IKE0 $ DEVICE \ IKE0
$ шины \ BuiltIn_0_67_0Drivers \ BuiltIn \ CameraDriver $ устройство \ CAM1 $ устройство \ CAM1
$ автобус \ BuiltIn_0_55_0Drivers \ BuiltIn \ MSDVFS $ device \ MCD2 $ device \
Драйверы MCD2 \ Touch $ bus \ TCH1 $ bus \ TCH1 $ device \ TCH1
$ device \ AEF0 $ bus \ services_0_40_0 $ bus \ services_0_40_0 $ устройство \
Службы AEF0 \ LPCD $ device \ LPC1 $ bus \ services_0_45_0 $ device \ LPC1
Services \ SioUsbConn $ device \ SIO1 $ bus \ services_0_48_0 $ device \ SIO1
Services \ BNSS $ device \ BNS1 $ bus \ services_0_12_0 $ device \ BNS1
Services \ DCOMSSD $ device \ DCM1 $ bus \ services_0_44_0 $ device \ DCM1
Services \ BATSVC $ device \ BAT0 $ bus \ services_0_35_0 $ device \ BAT0
Сервисы \ BTAGSVC $ device \ BAG0 $ bus \ services_0_10_0 $ device \ BAG0
Сервисы \ TWS $ device \ TWS0 $ bus \ services_0_17_0 $ device \ TWS0
Сервисы \ GPSID $ device \ GPD0 $ bus \ services_0_37_0 $ device \ GPD0
$ bus \ GPD9SYSTEM \ CurrentControlSet \ Промежуточный драйвер GPS \ Мультиплексор \ ActiveDevice $ device \ GPD9 $ device \ GPD9
Services \ CRSVC $ device \ CRS0 $ bus \ services_0_15_0 $ device \ CRS0
Services \ OBEX $ device \ OBX0 $ bus \ services_0_36_0 $ device \ OBX0
Services \ LFSVC $ device \ LOC0 $ bus \ services_0_41_0 $ device \ LOC0
Services \ WLIDSVC $ device \ WLI1 $ bus \ services_0_27_0 $ device \ WLI1
Services \ SNService $ device \ SNS0 $ bus \ services_0_42_0 $ device \ SNS0
Services \ GpsHelper $ device \ GPH0 $ bus \ services_0_33_0 $ device \ GPH0
Services \ SqmUpload $ device \ SQM0 $ bus \ services_0_20_0 $ device \ SQM0
Services \ DSTSVC $ device \ DST0 $ bus \ services_0_28_0 $ device \ DST0
Services \ A2DPNotify $ device \ ROU1 $ bus \ services_0_47_0 $ device \ ROU1
Services \ TIPC $ устройство \ TIP0 $ bus \ services_0_13_0 $ устройство \
Сервисы TIP0 \ MTFServer $ device \ MTF0 $ bus \ services_0_16_0 $ device \ MTF0
$ bus \ services_0_4_0Services \ SmsTransport $ device \ SMT0 $ device \ SMT0
Services \ Прокси $ device \ PXY0 $ bus \ services_0_23_0 $ device \ PXY0
$ device \ TSH0 $ bus \ services_0_18_0 $ services_0_18_0 $ device \ TSH0
Services \ CfmService $ device \ CFM0 $ bus \ services_0_21_0 $ device \ CFM0
Services \ DuaSvc $ device \ DUA0 $ bus \ services_0_46_0 $ устройство \ DUA0
Services \ ZConfig $ bus \ services_0_8_0 $ устройство \ ZCO0 устройство \ ZCO0
Услуги \ ZMedia $ автобус \ services_0_9_0 $ устройство \ ZME0 $ устройство \ ZME0
$ device \ MIT0 $ bus \ services_0_25_0 $ bus \ services_0_25_0 $ device \ MIT0
Services \ PUSH $ device \ PSH1 $ bus \ services_0_11_0 $ device \ PSH1
Services \ Znet $ устройство \ ZNE0 $ bus \ services_0_24_0 $ устройство \ ZNE0
Services \ MtpSvc $ device \ MTP0 $ bus \ services_0_26_0 $ device \ MTP0
Services \ Hotspot $ device \ HPT0 $ bus \ services_0_22_0 $ device \ HPT0
$ bus \ services_0_7_0Services \ MPNSClientManager $ device \ PNM0 $ устройство \ PNM0
Services \ ICS $ устройство \ ICS0 $ bus services_0_14_0 $ устройство \ ICS0
$ автобус \ services_0_1_0Services \ PimIndexMaintenance $ устройства \ PIM1 $ DEVICE \ PIM1
$ автобус \ services_0_2_0Services \ ContactsTokenService $ устройства \ CTS1 $ устройство \ CTS1
$ устройство \ MPI0 $ автобус \ services_0_31_0 $ автобус \ services_0_31_0 $ устройство \ MPI0
$ шина \ services_0_5_0Services \ MsgNotificationService $ устройство \ MNS0 $ устройство \ MNS0
$ bus \ services_0_3_0Services \ MsgMaintenance $ device \ MSG0 $ device \ MSG0
Services \ AgeOut $ device \ UAO0 $ bus \ services_0_30_0 $ device \ UAO0
$ device \ LMU0 $ bus \ services_0_32_0 $ bus \ services_0_32_0 $ device \ LMU0
Services \ LIM $ bus \ services_0_6_0 $ device \ LIM1 $ device \ LIM1
Services \ Device \ CommSync $ device \ CSS0 $ bus \ services_0_39_0 $ device \ CSS0
Services \ SNApi $ device \ SNA0 $ bus \ services_0_29_0 $ устройство \ SNA0
$ bus \ WAP1Comm \ Cellular \ WAP \ Driver $ device \ WAP1 $ device \ WAP1
$ bus \ PIN1Software \ Microsoft \ DirectX \ DirectShow \ Capture \ PIN1 $ device \ PIN1 $ device \ PIN1
$ bus \ services_1_1_0services \ DelayLoad \ FBAuthService $ device \ FBA0 $ device \ FBA0
$ bus \ KIS0Comm \ Безопасность \ Криптография \ Keyiso $ device \ KIS0 $ device \ KIS0
$ device \ MYP0 $ bus \ services_1_208_0 $ bus \ services_1_208_0 $ device \ MYP0
$ bus \ BTS0Software \ Microsoft \ BtServ $ bus \ BTS0 $ device \ BTS0
$ bus \ ZMF0Software \ Microsoft \ Zune \ ZMFService $ device \ ZMF0 $ device \ ZMF0