Interface semelhante a arquivo sem gravar fisicamente no sistema de arquivos

1

No projeto em que estou trabalhando, tenho dois processos do Windows 7 interagindo entre si:

  • processo A - um serviço de terceiros, de código fechado, que carrega arquivos do disco rígido
  • processo B - um processo interno que cria esses arquivos e os grava no disco rígido

A configuração atual funciona conforme o esperado, mas quebra um dos requisitos de negócios - não podemos criar arquivos temporários durante o processamento dos dados.

No Linux eu poderia criar um "arquivo de pipe" TMP_FILE com o mkfifo e usá-lo como um buffer entre esses processos em vez de gravar no sistema de arquivos. Quando se trata de Windows - estou totalmente perdido.

Pergunta:

No Windows 7, como posso atender ao requisito de não criar arquivos temporários no disco, quando um processo que não posso modificar só pode ler de arquivos?

Informações adicionais:

  • o processo A recebe mensagens XML com nomes de arquivos para processar
  • o processo B é apenas um protótipo e pode ser modificado de qualquer forma necessária
  • os dados originais são enviados via SCP do servidor Linux e recebidos pelo processo B, o protocolo pode ser alterado se isso ajudar
por Reverent Lapwing 13.09.2017 / 14:07

1 resposta

1

O equivalente do Windows ao que você está pedindo parece ser chamado de Pipe Nomeado

Named pipes cannot be mounted within a normal filesystem, unlike in Unix. Also unlike their Unix counterparts, named pipes are volatile (removed after the last reference to them is closed). Every pipe is placed in the root directory of the named pipe filesystem (NPFS), mounted under the special path \.\pipe\ (that is, a pipe named "foo" would have a full path name of \.\pipe\foo). Anonymous pipes used in pipelining are actually named pipes with a random name.

A documentação dos pipes nomeados pode ser encontrada em MSDN

Como implementar realmente isso estaria fora do escopo do SuperUser, mas existem exemplos no Stack Overflow

Alternativamente, pelo meu comentário acima, se você quiser a velocidade da RAM, mas por qualquer motivo quer um "sistema de arquivos real", há também a opção de um usando um Ramdisk. Dependendo da quantidade e do tamanho dos arquivos, existe o Dataram Ramdisk ou o spinoff da AMD Radeon Ramdisk. Eu acredito que eles estão limitados a 2 GB nas versões gratuitas.

A Wikipédia tem uma lista razoavelmente abrangente de software Ramdisk

    
por 13.09.2017 / 14:29