J'ai parcouru la documentation WinAPI pendant un moment, mais je ne semble pas pouvoir trouver de réponse. Ce que j'essaye de réaliser est de donner à un programme un nom de fichier qu'il peut ouvrir et travailler avec lui comme ce serait un fichier normal sur le disque. Mais je veux que cet objet soit dans la mémoire.Utilisation de canaux nommés (ou autre chose) en tant que fichiers en mémoire
J'ai essayé d'utiliser des tubes nommés et ils fonctionnent dans certaines situations, mais pas toujours. Je crée un tube nommé et le transmets au processus fils en tant que fichier standard. Quand le processus existe, je recueille les données du tuyau.
program.exe \\.\pipe\input_pipe
Face à certaines limites cependant. L'un d'eux est qu'ils ne sont pas rechercheables. La deuxième limitation est qu'ils devraient être ouverts avec exactement les bonnes permissions. Et le troisième que j'ai trouvé est que vous ne pouvez pas pré-mettre des données dans un tuyau duplex avant qu'il ait été ouvert à l'autre extrémité. Y a-t-il un moyen de surmonter ces limitations des tuyaux nommés?
Ou peut-être existe-t-il un autre type d'objet qui peut être ouvert avec CreateFile
, puis accédé avec ReadFile
et WriteFile
. Jusqu'à présent, la seule solution que je vois est de créer un pilote de système de fichiers et de mettre en œuvre toutes les fonctionnalités moi-même. Juste pour clarifier, je voulais souligner que je ne peux pas changer le programme enfant que je cours. L'idée principale est de donner à ce programme quelque chose qu'il pense être un fichier normal. MISE À JOUR: Je ne suis pas à la recherche d'une solution impliquant l'installation de logiciels externes.
Pourquoi voulez-vous qu'il soit en mémoire? –
@Len: Deux raisons. Je ne veux pas que quelqu'un puisse voir ce fichier et pour des raisons de performance. – detunized
La raison du perf est faux. Sous Windows, lorsque vous allouez de la mémoire, vous allouez le disque. Le fichier d'échange. Vous n'écrivez jamais sur le disque, vous écrivez en RAM. Et s'il est lu assez rapidement, il est également lu dans la RAM. Le cache du système de fichiers. Environ un gigaoctet sur la plupart des machines 32 bits, beaucoup plus sur les machines 64 bits. –