Windows 7 тепер всі пристрої доступні в два клацання

Тепер всі пристрої зібрані в одному місці і доступні в два клацання: "Пуск" -> "Пристрої та принтери". Пристрої відображаються фотореалістичними іконками, так що нам навіть не треба знати, як вони називаються. Подвійне клацання по іконці відкриє сторінку Device Stage, на якій представлені основні функції і параметри пристрою. Відзначимо, що папка "Пристрої та принтери" і Device Stage - це саме дві (а не одна) можливості, що доповнюють один одного. Майже все обладнання відображається в "Пристрої та принтери", але не в кожного є сторінка Device Stage.

Для знайомства з нововведеннями будемо використовувати звичайну флешку. За чотири кроки, поступово ускладнюючи приклад, ми створимо повноцінну сторінку Device Stage. Кожен крок - це готове до використання, реально працююче рішення. До статті додаються чотири папки, по одній на крок.

Як це працює

Звідки Windows бере інформацію про пристрій

devicemetadata-ms-файли автоматично завантажуються з сервера Microsoft, але їх можна покласти в папку% PROGRAMDATA% \ Microsoft \ Windows \ DeviceMetadataStore і вручну.

Файли опису створюються розробниками пристроїв і передаються Microsoft. Перед розміщенням на сервері Microsoft перевіряє, позначає і підписує отримані файли.

Зверніть увагу, Microsoft позначає і підписує файли опису. Пізніше ми до цього повернемося.

Як Windows зіставляє файл опису і пристрій

Який саме файл відповідає Цей пристрій, система визначає за допомогою:

Hardware ID

Будь-яке обладнання, сумісне з Windows, при підключенні повідомляє системі один або кілька ідентифікаторів Hardware ID. За допомогою цих ідентифікаторів Windows визначає, який драйвер потрібно використовувати для пристрою. Тепер Hardware ID застосовується і для пошуку відповідного devicemetadata-ms-файлу.

Model ID - це новий спосіб ідентифікації пристроїв, що з'явився в Windows 7. Model ID не використовується для пошуку драйверів, а значить, не служить заміною Hardware ID. Пристрою можна призначити тільки один Model ID. Звичайно, старі пристрої не мають Model ID і не повідомляють його при підключенні, але в нові моделі виробники можуть додати цю можливість.

Ще один приклад того, наскільки сильно Windows 7 відрізняється від попередників. Нова система ідентифікації пристроїв, яка зачіпає виробників - це не жарти.

Залежно від вибору розробника, в файлі опису вказується або список Model ID, або список Hardware ID тих пристроїв, до яких відноситься файл.

Крок 0: Підготовчі роботи

Підіб'ємо проміжний підсумок і накидаємо короткий план дій. Зараз наша флешка відображається в папці "Пристрої та принтери" іконкою за замовчуванням, ніякої специфічної інформації про будову не виводиться (рисунок 1).

Windows 7 тепер всі пристрої доступні в два клацання

Малюнок 1. Відображення флешки в папці "Пристрої та принтери" за замовчуванням

Щоб Windows могла показати більш повні дані про флешці, потрібно:

  1. дізнатися Hardware ID (або Model ID) флешки;
  2. підготувати файл опису;
  3. скопіювати файл опису в папку DeviceMetadataStore.

Дізнаємося Hardware ID флешки

У нашому випадку вибір між Hardware ID або Model ID абсолютно непринциповий. Візьмемо Hardware ID, так як у будь-якої флешки він точно є.

Щоб дізнатися Hardware ID, потрібно: в папці "Пристрої та принтери" натиснути правою кнопкою миші по іконці флешки -> Властивості -> вкладка Обладнання -> тип Дискові пристрої -> кнопка Властивості -> в новому вікні вкладка Відомості -> в випадаючому списку Властивість . ВД обладнання (рисунок 2).

Windows 7 тепер всі пристрої доступні в два клацання

Малюнок 2. Список Hardware ID

Вгорі знаходиться ідентифікатор, найточніше визначає пристрій, далі йдуть більш загальні ідентифікатори. Для наших цілей краще взяти самий верхній.

Як вже говорилося, файл .devicemetadata-ms - це насправді архів. Цей архів містить тільки XML-файли і картинки, розкладені по підпапках. Все описується за допомогою XML, так що нам доведеться багато з ним працювати. Залишимо метушню з різними видами блокнотів школярам і любителям "альтернативних рішень". Ми-то знаємо, що нічого кращого Visual Studio не придумали - залишається тільки додати потрібні XSD схеми в папку. \ Visual Studio \ Xml \ Schemas

Що б отримати XSD-схеми, потрібно встановити "Microsoft Device Experience Development Kit" (див. Посилання в кінці статті). Схеми знаходяться в каталозі. \ Microsoft Device Experience Development Kit 7R2 \ General \ XML Schemas \

CABARC.EXE

Для створення файлів .devicemetadata-ms потрібна утиліта CABARC.EXE. Окремо її скачати можна, вона йде в комплекті з "Device Stage Visual Editor Tool". Так, так, для виготовлення сторінок Device Stage є GUI-додаток. Але його ми використовувати не будемо. І не тому, що нам чужий комфорт, або ми зневажаємо все, чим можуть користуватися необізнані непрограмістів (як це часто роблять затяті войовничі прихильники не-Windows-систем). Просто робота "вручну" дасть нам більше гнучкості і краще розуміння процесу.

Крок 1: Міняємо іконку в папці "Пристрої та принтери"

У першому кроці ми створимо найпростіший файл опису, який не використовує можливості Device Stage. Немає ніякої необхідності приводити в тексті статті повні листинги XML-файлів - файли для першого кроку можна знайти в папці "example1", що додається до статті. Тому в лістингах будуть показані тільки ті частини, на які потрібно звернути увагу, найголовніше виділено.

Структура архіву .devicemetadata-ms

На малюнку 3 представлена ​​структура архіву .devicemetadata-ms. Як назва архіву повинен використовуватися глобальний унікальний ідентифікатор (GUID). Наприклад: 0055f9a7-ffef-4017-be40-e1e118fa4e86.devicemetadata-ms.

Windows 7 тепер всі пристрої доступні в два клацання

Малюнок 3. Структура архіву .devicemetadata-ms, який не підтримує Device Stage

З малюнка 3 видно, що потрібно створити три XML-файла (PackageInfo.xml, DeviceInfo.xml, WindowsInfo.xml) і одну іконку.

PackageInfo.xml

Як і випливає з назви, цей файл використовується для опису .devicemetadata-ms-пакета (файлу опису). У ньому вказується така інформація, як час створення пакету, використовувані XML-схеми, локалізація за замовчуванням. Але найголовніше - там вказується список Hardware ID (або список Model ID), c якими пов'язаний пакет.

Зверніть увагу на приставку "DOID", яку потрібно вказати перед Hardware ID. Є ще приставка "SFDOID" (Single Function Device), але вона зараз не використовується і зарезервована для майбутніх версій Windows. Ці приставки вказують на те, скільки функцій виконує пристрій - одну або кілька. Наприклад, часто зустрічаються багатофункціональні пристрої, що поєднують в собі принтер, факс і сканер. Трохи пізніше ми ще раз поговоримо про функції пристрою.

WindowsInfo.xml

Тут описуються правила відображення іконки і сторінки Device Stage.

ShowDeviceInDisconnectedState - показувати пристрій в папці "Пристрої та принтери", коли пристрій не підключений. Іконка непідключеного пристрою буде більш блідою (див. Малюнок 1). До речі, задати свою окрему іконку для відключеного стану обладнання не можна.

LaunchDeviceStageOnDeviceConnect - відкривати сторінку Device Stage автоматично при підключенні пристрою.

LaunchDeviceStageFromExplorer - відкривати Device Stage за подвійним клацанням по іконці.

DeviceInfo.xml

Краще один раз побачити, ніж сто разів почути (рисунок 4).

Windows 7 тепер всі пристрої доступні в два клацання

Малюнок 4. Опис DeviceInfo.xml

Створення архіву .devicemetadata-ms

Тепер у нас є всі необхідні файли (опустимо процес отримання іконки). Створимо наступну структуру директорій (лістинг 3):

Перераховувати можливі типи команд (атрибут type вузла command) ми не будемо - адже у нас є Visual Studio з підключеними XSD-схемами, яка виводить підказки. Начебто додаткових пояснень лістинг 12 не вимагає.

Все готово, залишається тільки додати завдання в behavior.xml. З лістингу 13 видно, що саморобна завдання додається точно так же, як вбудована в Windows.

Що далі

Це дійсно дуже сумно. Чому у нас немає можливості використовувати свої сторінки Device Stage? Зрозуміло, що причина цього є. Але, напевно, можна знайти і компроміс. Якщо ви знаєте, як повідомити Microsoft таку пропозицію, зв'яжіться зі мною.

За найскромнішими прикидками, за бортом залишилися:

  • Створення контекстних завдань, що відкриваються по кліку правої кнопки миші по іконці пристрою в папці "Пристрої та принтери", а також створення своїх сторінок з властивостями. Дані питання розглянуті в "Devices and Printers - Extensibility Guide".
  • Питання локалізації.
  • Створення своїх саморобних статусів пристрою. Почати вивчення можна з документа "Microsoft Device Experience Development Kit 7R2 \ Portable Devices \ Documentation \ Windows 7 Device Stage Portable Device Class Development Guide.docx"
  • Найцікавіша тема: взаємодія з пристроєм з web-сайту через Device Stage (див. Той же документ, що і пунктом вище).

Не можна не відзначити високу якість навчальних матеріалів Microsoft. Опис дуже повне, добре структуроване і написано зрозумілою мовою.