Обновление функций Native Shell, команды if, load, expand, mount.
На китайском форуме wuyou.com обнаружил тему, в которой китайские программисты модифицировали код моей программы Native Shell.
Почему-то программист не стал присылать мне патчи на GitHub моего проекта, вместо этого завёл свой репозиторий на Google Code: http://code.google.com/p/nativeshell/.
Изменения
Вот какие изменения были внесены ими в программу:
main.c:
#include "mspack.h" #include "laotou.h" L"if - Condition load X - Load a batch file\n" L"expand - expand a .cab file\n"
О том, что такое mspack и laotou написано ниже. Добавленные строки говорят о том, что добавились три новых команды: if, load и expand. Кроме того, добавилась ещё и команда mount.
Программист вволю поглумился над
RtlClipProcessMessage(PCHAR Command)
заменил все безопасные _strnicmp
на _stricmp
, заменил обращение
к переменной CommandBuf на обращение напрямую к глобальной переменной xargv. Зачем надо было это делать?
Исправил сообщение not recognized на unkonwn command (sic!).
В начале функции main
— код, позволяющий шеллу выполнять команды, прописанные ему в командной строке при вызове, или прописанные в
ключе реестра BootExecute. Выделяется память в буфер Command, и туда в цикле копируется всё, что у функции находится в argv,
с помощью strcat. Буфер Command затем отдаётся функции RtlClipProcessMessage()
, всё просто.
Новые функции, добавленные почему-то в main.c, а не вынесенные в отдельный модуль:
IfCondition()
LoadBatch()
CabinetExpand()
ntfile.c:
Незначительные изменения в NtFileOpenFile()
. Открытие файла с доступом на запись происходит только тогда, когда действительно нужна запись.
laotou.h:
Относится к команде mount. Эта команда позволяет монтировать образы в формате *.wim, а отвечает за реализацию этой команды функция
LaotouMountImage()
, файлы laotou.lib/laotou.h.
mspack.h:
За команду expand отвечает заголовочный mspack.h и несколько других файлов. Это libmspack — библиотека для работы с форматами сжатия Майкрософт.
Она поддерживает следующие форматы:
- SZDD файлы со сжатием LZSS
- KWAJ файлы со сжатием LZSS, LZSS+Huffman или deflate
- .HLP (MS Help) файлы со сжатием LZSS
- .CAB (MS Cabinet) файлы со сжатием deflate, LZX или Quantum
- .CHM (HTML Help) файлы со сжатием LZX
- .LIT (MS EBook) файлы со сжатием LZX и шифрованием DES
Скачать программу
Скачать программу можно по ссылкам в теме на форуме wuyou.com.
Автор: амдф
Дата: 28 апреля 2012
Избранное
Остальное
Лента atom