BK>>>>>Есть достаточно большой (порядка 30 Мбайт) EXE-файл. На некоторых машинах под управлением Windows 7 x32 попытка его запуска с сетевого диска вызывает сообщение "Недостаточно ресурсов для завершения операции". При ближайшем рассмотрении выяснилось, что это код возврата системной функции CreateProcess.
BK>>>>>Вопрос: каких ресурсов может не хватать CreateProcess для запуска? Программа даже не начинает выполняться...
O>>>>Во-первых в заголовке PE файла может быть проставлена опция swaprun from network, в результате чем винда будет целиком вычитывать содержимое файла в память прежде чем его запустить.
BK>>>Спасибо большое — дело было именно в этом. После убирания этого флага всё начало заводиться.
O>>Без этой опции будет работать стандартный механизм подгрузки страниц по мере необходимости. При этом если сетевая операция подчитывания страницы зафэйлится — возникнет исключение по типу access violation при исполнении страницы которая не смогла прочитаться.
BK>Ну он, наверное, и так работает — только страницы грузятся из своп-файла, а не из оригинального образа. И чисто теоретически, если диск, на котором расположен своп-файл, начинает сыпаться, то и здесь вылезет access violation...
Да, но с swaprun from network в случае рандомных сетевых проблем (вероятность которых много выше рандомных лисковых проблем) процесс просто не запуститься, т.к. не сможет вычитаться файл целиком, а без этой опции — крэшнется гденить в неожиданном виде в неожиданный момент, и всем придется долго чесать репу.