PIF

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

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

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.