oktava-studio.ru

Новые функции в Native Shell



Обновление функций 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







Copyright © 2016- Программирование Native API и расширенные возможности NTFS
По вопросам сотрудничества и другим вопросам по работе сайта пишите на cleogroup[собака]yandex.ru