Для початку думаю варто почати з термінів, знання яких помітно полегшить розуміння того, що буде описано в подальшому:
PNA / PND (ПНА) - (Personal Navigation Assistant або Personal Navigation Device) портативний навігаційний пристрій, він же автонавігатор. Мікропроцесорний пристрій з операційною системою, основна функціональність якого - супутникова навігації.
PPC (КПК) - персональний кишеньковий комп'ютер, він же кишеньковий ПК, як правило з сенсорним екраном, що працює під управлінням операційної системи Windows Mobile.
Чим же відрізняються КПК від ПНА?
Для того щоб дати відповіді на це питання, думаю варто задуматися, а чому автонавігатори стоять на порядок дешевше комунікаторів. Відповідь на це питання досить простий. Пам'ять, оперативна і незалежна, яку вбудовують в автонавігатори - дуже дорога. На ній як-раз і економлять виробники автонавігаторів. У зв'язку з цим, виробники комплектують ОС своїх пристроїв тільки бібліотеками, потрібними для запуску їх програм. І саме це призводить до того, що не всі програми, написані для Windows Mobile запускаються і працюють на автонавігатор. Це стосується і навігаційних програм. Для ПНА пишуться спеціальні програми. Основна відмінність цих програм - всі необхідні для запуску і роботи програми драйвери і бібліотеки упаковані в виконуваний файл.
Простіше кажучи, ПНА - це набагато дешевша (і як наслідок "урізана") платформа, відповідно - і операційна система в ній теж дешева - урізана до того мінімуму, який потрібен для роботи тільки закладених виробником програм.
Відмінність в роботі КПК і ПНА
КПК у своїй функціональності дуже схожий на звичайні, настільний ПК. Його операційна система завантажується з Flash-пам'яті пристрою [не плутати з флешками / картами пам'яті!] (Аналог HDD) в оперативну пам'ять. Дані, отримані в процесі роботи, записуються в оперативну пам'ять і потім, у міру необхідності, записуються на диск (Flash пам'ять пристрою).
В ПНА, в слідстві урізаності платформи, все спрощено до краю. Тут Flash-пам'ять пристрою працює тільки на читання. Як наслідок - дані зберігаються тільки в ОЗУ, і всі вони пропадають при виключенні живлення пристрою. Тому в автонавігатори часто виникає проблема збереження налаштувань і треків.
У ПНА немає робочого столу (експлорера). Замість нього, при включенні, завантажується елементарна "оболонка". Вона як правило не налаштовується і розрахована на запуск однієї або декількох програм, передбачених виробником пристрою. Ці програми повинні бути розміщені в певних папках і мати певні назви. Так як шляху до цих програм жорстко прописані в оболонці, і якщо по прописаному шляху нічого не буде, то тоді відповідно, нічого і не буде, коли ви натиснете на відповідну кнопку в оболонці. Положення ускладнюється тим, що певного стандарту на назву тих чи інших програм не існує, і кожен виробник називає все по-своєму. І як наслідок, навіть одна і та ж програма, у різних виробників пристроїв може мати абсолютно різні назви і розташовуватися в різних місцях. Це один з факторів того, що існує така кількість різних збірок Навітел Навігатор. під автонавігатори від різних виробників.
Але не дивлячись на всі ці труднощі, умільці навчилися обходити обмеження "урізаності" PNA-версій і запускати КПК програми на автонавігатор. У більшості випадків достатньо покласти в папку програми відсутні для роботи програми бібліотеки.
Програма шукає потрібні dll в наступному порядку:
1. Оперативна пам'ять
2. Папка програми
3. Windows
Як бачимо, якщо покласти бібліотеку в папку програми, то вона знайде її. Більш того, ця бібліотека буде мати пріоритет перед "рідний" бібліотекою Windows. Так само, цим часто користуються, коли Windows-бібліотеки не сумісні з програмою.
Але і тут є підводний камінь. У Windows CE "ваговій" одиницею є не бібліотека, а, так званий lib. Це частина бібліотеки описує окрему функцію. Економлять і тут. У бібліотеку Windows CE закладають тільки необхідні ліби. Це призводить до того, що для однієї і тієї ж операційної системи існує величезна кількість однойменних, але в той же час різних бібліотек. Наприклад, в інтернеті можна знайти близько двох десятків різновидів бібліотеки Augshell.dll. Вони все робітники і використовуються для одного і того ж, просто вони під різні версії PNA.