Program Information File (*.pif) — небольшой файл, показывающий, как запустить DOS-программу в многозадачной операционной системе. В Windows 95 и выше эти файлы служат ярлыками на DOS-программы.

Program Information File
Расширение .pif
MIME-тип application/x-msdos-program
Разработчик IBM, Quarterdeck, Microsoft
Опубликован ≈1984
Тип формата Ярлык DOS-программы

DOS-программа рассчитывает, что она полностью управляет доступной ей памятью и аппаратным обеспечением. В многозадачных ОС это не так: в одной памяти сосуществуют много разных программ, часть аппаратного обеспечения эмулируется средствами ОС, важная клавиша DOS-программы может совпадать с таковой у Windows. Потому приходится командовать многозадачной системе, как эмулировать DOS.

PIF-файлы появились в IBM TopView, потом — в проектах Digital Research вроде Concurrent DOS (причём у них можно было как держать файл информации в том же каталоге, так и внедрять информацию прямо в EXE-файл). У них файлы переняли Quarterdeck DESQview и Microsoft Windows.

В Microsoft Windows

править

В Windows до 3.11 настройкой PIF занималась особая программа, редактор PIF[1]. Начиная с 95 это делает Проводник[2].

Сейчас PIF-файлы используются крайне редко из-за устаревания DOS. Тем не менее, 32-битные версии Windows всё ещё запускают DOS-программы — а значит, используют PIF-файлы. Ярлык рабочего стола для DOS-программы — это именно PIF-файл (как *.lnk для Windows-программы и *.url для веб-страницы).

Windows считает PIF-файлы «псевдоисполняемыми» (как *.bat или *.lnk). Они не ассоциированы ни с какой программой, функция Проводника ShellExecute[3] («запустить по ассоциации»[4]) опознаёт формат и, если это PIF, запускает нужную программу с нужными настройками, если Portable Executable — запускает напрямую и т. д.[5] Из-за такой архитектуры через PIF можно распространять компьютерные вирусы[6][3][7].

Изначально PIF был двоичным файлом собственного формата. В Windows 3.0[8] поступили так: первые 369 байт[8] были от DESQView, после них — заголовок и простой блочный формат; Windows читала только те блоки, которые ей нужны. Таким образом, PIF’ы стали расширяемыми и понятными как DESQView, так и Windows. Блочный формат позволил разным версиям Windows редактировать PIF’ы и не трогать настройки других версий[9]. Windows 3.1 может работать с PIF’ами появившейся много лет спустя Windows 2000 и не терять её настроек.

Настройки, существующие в PIF

править

Настройки PIF’а как ярлыка программы[8].

  • Командная строка программы.
  • Текущий каталог программы.
  • Горячая клавиша запуска.
  • Название и значок программы (они же будут заголовком и значком окна).

Настройки, связанные с тем, что однозадачная программа запускается в многозадачной среде[8].

  • Сколько дать программе простой памяти, XMS, EMS и DPMI (минимум и рекомендуемое количество).
  • Нужно ли приостанавливать работу всех остальных программ, когда работает данная.
  • Приоритет исполнения в фоне и на переднем плане.
  • Должны ли действовать клавиши Alt+Tab ↹, Alt+Esc и другие.
  • Собранные специально для этой программы CONFIG.SYS и AUTOEXEC.BAT.
  • Нужно ли давать программе прямой доступ к определённому аппаратному обеспечению (видеоплате, клавиатуре, COM-портам).
  • Принципы эмуляции таймера.
  • Нужно ли выгружать Windows и переходить в настоящую DOS.

Кроме того, Windows умеет запускать DOS-программы в окнах, поэтому есть и настройки, связанные с оконной оболочкой[8].

  • Что делать, если пользователь попытался закрыть окно программы: закрыть сразу или спросить пользователя.
  • Методика вставки информации из буфера обмена в программу.
  • Принципы эмуляции видеопамяти, дра́йвера мыши.
  • Настройки окна вроде положения и установленного шрифта.

Настройки, связанные с переходным периодом, когда DOS-программы разрабатывают с учётом Windows[8].

  • Обеспечить предельно похожую на DOS среду исполнения, чтобы программа не подозревала, что она под Windows.

Часть из этих настроек существует только в отдельных версиях Windows. Не все из них редактируются Проводником.

Примечания

править
  1. 10.11. Как создавать pif-файлы. Дата обращения: 18 ноября 2017. Архивировано 6 ноября 2017 года.
  2. Архивированная копия (англ.). Дата обращения: 3 декабря 2018. Архивировано из оригинала 24 декабря 2017 года.
  3. 1 2 PIF File Extension - What is a .pif file and how do I open it? (англ.). Дата обращения: 11 января 2018. Архивировано 12 января 2018 года.
  4. Документация по ShellExecute (англ.). Дата обращения: 3 февраля 2018. Архивировано 10 января 2018 года.
  5. Можно проверить и собственноручно: переименовать любой .exe в .pif. На Windows 10 x64 19H2 запустилось — при том, что DOS-программ она не запускает.
  6. Формат файла (расширение) PIF. Чем открыть PIF? Дата обращения: 11 января 2018. Архивировано 11 января 2018 года.
  7. Архивированная копия. Дата обращения: 11 января 2018. Архивировано 12 января 2018 года.
  8. 1 2 3 4 5 6 The PIF file format in various Windows versions (англ.). Дата обращения: 18 ноября 2017. Архивировано 8 ноября 2017 года.
  9. Undocumented Corner | Dr Dobb's (англ.). Дата обращения: 18 ноября 2017. Архивировано 1 декабря 2017 года.