перенаправление файла в память

Тема в разделе "WASM.BEGINNERS", создана пользователем ltshck, 24 янв 2008.

  1. ltshck

    ltshck New Member

    Публикаций:
    0
    в приложении есть функция.
    она работает с файлом.

    Myfunction.read("C:\\file.txt");

    как, изменив имя файла направить ее в файл?
    т.е. чтобы при обращении на открытие файла (CreateFile само собой винда вызывает при открытии этого файла)
    функция реально работала с памятью?

    т.е. есть

    usingned char[] memory_file = {0x12, 0x13, 0x14, 0x15};
    Myfunction.read( Memory_file_buf (memory_file) );

    как перехватить обращение к этому файлу и подсунуть туда память?

    надеюсь ясно излагаю.

    memory_file сохранить в файл с именем C:\\file.txt не вариант.

    Язык : C++
     
  2. reverser

    reverser New Member

    Публикаций:
    0
    Перехватить CreateFile/ReadFile.
     
  3. censored

    censored New Member

    Публикаций:
    0
    ltshck
    Написать класс, производный от какого нибудь интерфейса IFile?
    Код (Text):
    1. class cMemoryFile : public IFile {
    2. ...
    3. };
     
  4. ltshck

    ltshck New Member

    Публикаций:
    0
    вот перехватить CreateFile уже ближе...

    но незачем.

    Myfunction.read(...)

    лежит в myfunction.lib

    есть ее header файл а исходов нет...

    а нельзя ли завести какойнибудь Алиас для памяти?

    например \\?\\....\\31652684
    чтобы при обращении к этому имени как к файлу
    шло обращение к памяти по адресу 31652684 , само собой в адресном пространстве этого exe.
     
  5. ltshck

    ltshck New Member

    Публикаций:
    0
    было бы красиво... и вообще кайф :)
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    ltshck
    Ну можете попробовать создать именованый пайп и подсунуть вместо имени файла.
    Подробности в MSDN.
     
  7. ltshck

    ltshck New Member

    Публикаций:
    0
    попробую.

    а есть аналог //dev/mem ?

    может чтото такое?
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    ltshck
    Device\PhisicalMemory

    А не проще создать ramdrive? Плюс можно подмаунтить его в любой пустой каталог, то есть, ни патчить, не перехватывать ничего не надо.

    Можно, но возиться дольше надо.