Здравствуйте, 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" установить? Или для загрузки этого драйвера нужно использовать другой способ?