Я какое-то время просматривал документацию по WinAPI, но, похоже, мне не удалось найти ответ. Я пытаюсь дать программе имя файла, которое она может открыть, и работать с ним так, как если бы это был обычный файл на диске. Но я хочу, чтобы этот объект был в памяти.
Я пытался использовать именованные каналы, и они работают в некоторых ситуациях, но не всегда. Я создаю именованный канал и передаю его дочернему процессу как обычный файл. Когда процесс существует, я собираю данные из канала.
program.exe \\.\pipe\input_pipe
Столкнулся с некоторыми ограничениями, хотя. Одним из них является то, что они не ищут. Второе ограничение заключается в том, что они должны быть открыты с правильными разрешениями. И третий, который я обнаружил, заключается в том, что вы не можете предварительно поместить какие-либо данные в дуплексный канал, пока они не были открыты на другом конце. Есть ли способ преодолеть эти ограничения именованных каналов?
Или, может быть, есть какой-то другой объект, который можно открыть с помощью CreateFile
, а затем получить доступ с помощью ReadFile
и WriteFile
. Пока единственное решение, которое я вижу, - это создать драйвер файловой системы и реализовать все функции самостоятельно.
Просто чтобы прояснить, я хотел указать, что я не могу изменить дочернюю программу, которую я запускаю. Основная идея состоит в том, чтобы дать этой программе что-то, что она считает нормальным файлом.
ОБНОВЛЕНИЕ: я не ищу решение, которое включает установку какого-либо внешнего программного обеспечения.