Re[2]: Бинарник драйвера в ресурсах проекта
От: BTFil Россия  
Дата: 23.10.05 10:09
Оценка:
Здравствуйте, gear nuke, Вы писали:

GN>Здравствуйте, BTFil, Вы писали:


BTF>>Возможно ли записать в ресурсы проекта на VC6 или VC7 бинарник драйвера? Если это возможно то помогите примером или хотя бы советом где порыться.


GN>Не обязательно в ресурсы, ИМХО проще в переменую.


GN>Скрипт на пёрле (который я не знаю, поэтому не пинать сильно) для генерации исходника (имя бинарника передаём параметром. Или на С перепишите):
GN>$columns = 8;

GN>foreach $argnum (0 .. $#ARGV)
GN>{
GN>    $file = $ARGV[$argnum];
GN>    print "\nProcessing file `$file'\n";
GN>    open(IN, $file) or die "Can't open file: $!";
GN>    binmode(IN);
GN>    open(OUT, ">$file.cpp") or die "Can't open output file: $!";
GN>    print OUT "unsigned char  data [] =\n{\n";
GN>    $column = 0;
GN>    while( ! eof(IN) )
GN>    {
GN>        ! $column++ and print OUT '    '; 
GN>        printf OUT "0x%02X", ord(getc(IN));
GN>        if( $column >= $columns or eof(IN) )
GN>        {
GN>            if( ! eof(IN) ) {  print OUT ","; }
GN>            print OUT "\n";
GN>            $column = 0;
GN>        }
GN>        else { print OUT ", "; } 
GN>    }
GN>    print OUT "};\n";
GN>    close(OUT);
GN>    close(IN);
GN>}

GN>Формируем файл как обычно:
GN>
GN>    HANDLE kmd = CreateFile("driver.sys", FILE_ALL_ACCESS, 0, 0, CREATE_ALWAYS, 0, 0);
GN>    if ( kmd != INVALID_HANDLE_VALUE )
GN>    {
GN>        unsigned long w;
GN>        WriteFile(kmd_file, data /* сгенерированный скриптом массив */, sizeof(data), &w, 0);
GN>    }
GN>


GN>А если в ресурсы, то идея та же, только вместо использования data получаем адрес данных файла (добавить в ресурсы как RT_RCDATA) посредством FindResource+LoadResource (LockResource вызывать по желанию) и размер SizeofResource. Слишком много телодвижений .


Значит теперь, с помощью CreateService мы можем этот "driver.sys" установить? Или для загрузки этого драйвера нужно использовать другой способ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.