Pergunta

Descrição do Sistema

Um componente plotagem que usos OOXML para gerar um documento.

Traçando componente consiste em várias partes. Todas as peças são escritos em C ++ como exe + dll, com exceção da interface com o documento OOXML. Este último componente é um componente que foi criado em C # /. NET. A principal razão para isto é que o .NET framework contém System.IO.Packaging . Esta é uma muito útil built-in facilidade para lidar com documentos OOXML.

Nós criar um documento a partir de um modelo de documento OOXML onde certos pedaços e peças são substituídas pelo seu conteúdo real.

Um desses bits é um componente OLE Server. Basicamente, este é um segmento binário dentro do arquivo OOXML. Para escrever este segmento de binário, o componente de embalagem, aparentemente, usa armazenamento isolado.

Problema

Escrevendo um segmento> 8MB resulta em uma exceção sendo lançada "Não foi possível determinar a identidade do domínio".

o C ++ lado esta excepção contém o erro ISS_E_ISOSTORE (0x80131450).

Analisamos este e, tanto quanto nós podemos dizer, este é um recurso de segurança que impede componente de terceiros semi-não confiável de arruinar completamente o seu HD escrevendo arquivos imensos.

Temos então tentei um monte de coisas no .NET / COM componente (AppDomains personalizados criando, Definição de atributos para máxima permissividade, criando nossas próprias Streams e passando-os na sua componente de embalagem), mas cada vez que resultou na mesma exceção sendo lançada.

O que poderíamos fazer para fazer este trabalho?

Pode ser que quando o componente .NET é instanciado como um componente COM, o AppDomain é sempre não confiável?

Foi útil?

Solução

Você pode tentar descompactar o pacote de si mesmo (em vez de usar o .NET pacote API), escreva diretamente para o arquivo que representa o segmento de binário e fechá-lo novamente.

Outras dicas

Você deve alterar o título da questão desde o seu problema não é OOXML relacionados.

Outro que isso: que sistema você está trabalhando nisso pedaços 8MB de dados resultar no risco de totalizando seu disco rígido

?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top