Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Задачка по мапированию в Оперативную память  (Прочитано 13798 раз)
0 Пользователей и 6 Гостей смотрят эту тему.
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« : 26-09-2004 14:59 » 

Задачка такая:

1. Есть некоторый метод запаковки всей структуры дирректории в некий VFS.

2. Надо запускать игру с этого VFS который будет позволять игре работать БЕЗ переделки самого кода игры.

3. Есть решение, что надо создать виртуальный диск Z:\ в памяти - потом туда разжать игру и запустить.

4. После окончания процесса демепировать диск.

ramdisk делает это через свой драйвер.
subst делает похожее, т.е. мапирует в новый диск не файл а просто путь и все папки от корня...
Т.е. вывод все это можно сделать, т.е. можно сделать некий пустой диск - который под собой будет иметь пространство не винчестера, а пространство Оперативной Памяти.

Какие функции могут к этому относится - куда копать, может кто сталкивался.
Записан

А птичку нашу прошу не обижать!!!
s_n
Постоялец

ru
Offline Offline

« Ответ #1 : 26-09-2004 20:36 » 

Не совсем понятна суть.
Если ты создаеш виртуальный диск в памяти, распаковываеш туда свою софтину и запускаеш ее она вполне прекрасно может писать в этот виртуальный диск.

Я так понял ты хочеш, чтобы она не могла изменить свой код на физическом диске?
Если так - зачем делать виртуальный диск в памяти, просто скопируй ее в другую директорию и запускай от туда, эффект - тотже. Если нужен именно диск с игрой - делай на эту директорию вышеупомянутый тобой subst на новый драйв, а после того как поиграл subst /d и удаляй папку с копией игры.
Если будеш делать subst програмно - копай в сторону int 21h, ax=071AAh.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 26-09-2004 23:06 » 

s_n,
Цитата

Я так понял ты хочеш, чтобы она не могла изменить свой код на физическом диске?

Нет - это делает другое программное обеспечение.

Цитата

Если так - зачем делать виртуальный диск в памяти, просто скопируй ее в другую директорию и запускай от туда, эффект - тотже.


Задача поставлена, поставлять 1 файл в виде базы данных для всей игры распечатывая его только перед запуском самой игры.
Распечатать не на физический носитель, что бы любой мог это в момент работы игры скопировать, а только в вирт. память в визуально не заметный диск.
Записан

А птичку нашу прошу не обижать!!!
Serega
Гость
« Ответ #3 : 27-09-2004 04:59 » 

Может глянуть как это сделано у ID Software или пообщаться с RAD Game Tools ?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #4 : 27-09-2004 07:35 » 

Serega, а ссылочку на ID Software где на это можно глянуть можно ?  Ага
Записан

А птичку нашу прошу не обижать!!!
Серж
Гость
« Ответ #5 : 27-09-2004 09:08 » 

Гром,  у меня есть старинный микрософтовский Ramdisk, я его использовал в проекте под WinNT (давно). Если нужно, вышлю по почте.
Вот к нему описание:
RAM Disk Driver
---------------

This sample demonstrates a software only Windows NT Device Driver.  This driver
is provided for educational purposes only.  Generally the Windows NT cache
manager does a much better job of optimizing memory usage than using a RAM disk.


Installing
----------

    3)  Copy RAMDISK.SYS to %WINDIR%\SYSTEM32\DRIVERS.

    4)  Edit RAMDISK.INI, change parameters to match your preferences.

    5)  Run REGINI.EXE with RAMDISK.INI as an argument.

    6)  Reboot and enjoy.


Configuring the RAM disk
------------------------

The RAM disk can be configured using the registry.  The RAMDISK.INI file
contains the default values for all the configurable parameters.  A brief
description of each parameter follows:

Name                Type        Default Value
====                ====        =============

BreakOnEntry        REG_DWORD   0

    Boolean value which determines whether a break point will be generated
    during the DriverEntry routine.  It has no effect in a free build of the
    driver.

DebugLevel          REG_DWORD   0

    This value specifies the level of diagnostic messages produced.  Larger
    values result in more verbose messages.  It has no effect in a free build
    of the driver.

DiskSize            REG_DWORD   0x100000 (1,048,576 1Mb)

    The size of the RAM disk in bytes.

DriveLetter         REG_SZ      Z:

    The drive letter associated with the RAM disk.

RootDirEntries      REG_DWORD   512

    The number of entries in the root directory.

SectorsPerCluster   REG_DWORD   2

    The granularity of the allocation.


Copyright (c) 1993  Microsoft Corporation
Записан
Anonymous
Гость
« Ответ #6 : 27-09-2004 09:13 » 

(s_n с чужого компа)
Ага, я так понимаю что код игры расчитан на работу именно с диском и именно эту часть ты не хочеш переделывать, но если ты делаеш виртуальный диск IMHO он будет виден как игре так и прочему софту и как следствие всю информацию с него можно прочесть.
Или у тебя FS не FAT совместимая?
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #7 : 27-09-2004 09:44 » 

Серж, ну я вроде по русски писал, что мне нужно программно, т.е. в окде программы это сдлеать...
А РамДиск пользуется свои драйвером...

FS - у меня вообще моя не совместимая. ТЫ прав именно так, я не хочу переделаывать ф-ии загрузки звука и билиотек.

В общем задачка сводится к тому, что создавая вирт диск я могу записать туда нужную инфу в стандартном формате, и перед запуском игры сделать его невидимым попросту снаружи, оставить только внутренний доступ и созранив у себя программный доступ админа. Что б потом стереть.
Так никто ничего не скопирует - получит акцесс денаед...
Записан

А птичку нашу прошу не обижать!!!
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 27-09-2004 11:48 » 

А что помешает заморозить процесс перед запуском игры и спокойно выкачать данные пока диск еще открыт?
Записан

Да да нет нет все остальное от лукавого.
Diletant
Помогающий

de
Offline Offline

« Ответ #9 : 27-09-2004 12:46 » 

А почему нужно непременно создавать виртуальное устройство, а не ограничиться  Shared Memory файлом?. Преимущества на лице: Файл не ограничен физическим размером памяти и не виден во всяких эксплорерах. И вообще его ничем не увидишь кроме просмотрщика объектов  ядра.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #10 : 27-09-2004 22:34 » 

PSD, это уже не имеет значения, так как в этом случае не идет разговор о защите, я всего лишь делаю некий процессик. Один из, который просто усложняет получение исходника и дает возможность нам сказать, что мы вот это поставляли вот в таком виде, покажите его в интернете.
Т.е задача придумать некий форматик из которого можно запустить только с помощью нас, ничего в этом нет от секюрити , так маленький секретик Улыбаюсь

Но сделать надо....

Diletant, программа (игра) обращается к fopen и не только - если бы только fopen я бы даже не волновался бы.
А так получается, что мне придется мапировать каждый файл и перегружать каждую функцию типа LoadLibrary так как сидеть и переписывать код от игры это долго....

Отсюда и вирт драйв... А в память - для скорости распаковки туда. Хард медленный все же....
Записан

А птичку нашу прошу не обижать!!!
lapulya
Молодой специалист

ru
Offline Offline

« Ответ #11 : 28-09-2004 06:26 » 

Ничего дельного предложить не могу (не занимался я этим...), но когда пишутся такие серьезные вещи, а игры одни из самых серьезных, нужно конечно с диском общаться через своего (обертка написанная лично, я имею ввиду контору) менеджера и никогда таких проблем не будет!!! А вообще говоря все что не относится к логике (тут уж сами думайте про архитектуру) должно обязательно оборачиваться... т.е. все сервисные службы
Записан

С уважением Lapulya
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #12 : 28-09-2004 07:42 » new

lapulya, игра - опен соурс Жаль мы ее не писали Жаль
Записан

А птичку нашу прошу не обижать!!!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines