StgCreateDocfileOnILockBytes
9/8/2008
Essa função cria e abre um novo objeto armazenamento arquivo composto em parte superior de um objeto matriz de bytes fornecido pelo chamador. O objeto armazenamento oferece suporte a implementação OLE - fornecido, compostos - arquivo para o IStorage interface.
Syntax
WINOLEAPI StgCreateDocfileOnILockBytes(
ILockBytes* plkbyt,
DWORD grfMode,
DWORD reserved,
IStorage** ppstgOpen
);
Parameters
- plkbyt
[no] Ponteiro para o ILockBytes interface sobre a subjacente objeto matriz de bytes no qual criar um arquivo composto.
- grfMode
[no] Especifica o modo de acesso para usar ao abrir o novo arquivo composto. Para obter mais informações, consulte o STGM enumeração.
- Reservado
[no] Reservado para uso futuro. Definido como zero.
- ppstgOpen
[out] Ponteiro para a localidade das IStorage ponteiro sobre o novo objeto armazenamento.
Return Value
Um dos valores descritos a seguinte tabela é retornada.
Valor | Descrição |
---|---|
S_OK |
Indica que o arquivo composto foi criado com êxito. |
STG_E_ACCESSDENIED |
Indica que acessar foi negado porque o chamador tem permissão insuficiente, ou outro chamador tem o arquivo aberto e bloqueado. |
STG_E_FILEALREADYEXISTS |
Indica que o arquivo composto já existe e o grfMode parâmetro está definido como STGM_FAILIFTHERE. |
STG_E_INSUFFICIENTMEMORY |
Indica que o objeto armazenamento não foi criado devido a uma falta de memória. |
STG_E_INVALIDPOINTER |
Indica um incorreto ponteiro estava na pLkbyt parâmetro ou o ppStgOpen parâmetro. |
STG_E_INVALIDFLAG |
Indica um incorreto combinação sinalizador estava na grfMode parâmetro. |
STG_E_TOOMANYOPENFILES |
Indica o objeto armazenamento não foi criado manipula uma falta de arquivo devido a. |
STG_E_LOCKVIOLATION |
Indica que acessar foi negado porque outro chamador tem o arquivo aberto e bloqueado. |
STG_E_SHAREVIOLATION |
Indica que acessar foi negado porque outro chamador tem o arquivo aberto e bloqueado. |
STG_S_CONVERTED |
Indica que o arquivo composto foi convertido com êxito. O original objeto matriz byte foi convertido com êxito IStorage formato. |
Essa função também pode retornar qualquer erros sistema de arquivos ou Win32 erros ajustada em um HRESULT, ou ILockBytes valores de retorno de erro interface.
Remarks
O StgCreateDocfileOnILockBytes e StgOpenStorageOnILockBytes funções não estiverem disponível para o non-Desktop compatível implementação by means of CESYSGEN.
O StgCreateDocfileOnILockBytes função cria um objeto armazenamento em parte superior de um objeto matriz byte usando a implementação arquivo COM - fornecido, compostos - da IStorage interface. StgCreateDocfileOnILockBytes Pode ser usado para armazenar um documento em um banco de dados relacional. A matriz byte que é indicado pela pLkbyt parâmetro, que aponta para o ILockBytes Sobre o objeto interface é usado para o subjacente armazenamento no local de um arquivo em disco.
Exceto para especificar um objeto matriz programador - fornecido byte -, StgCreateDocfileOnILockBytes é semelhante de StgCreateDocfile função.
O arquivo composto recém-criado será aberto de acordo com os modos acessar na grfMode parâmetro. Para fins conversão, o arquivo será sempre considerado já existem. Como resultado, ele não é útil usar o valor STGM_FAILIFTHERE, pois ele sempre causa um erro a ser retornado. No entanto, STGM_CREATE e STGM_CONVERT são ambos ainda útil.
A capacidade compilar um arquivo composto em parte superior de um objeto matriz byte é fornecido ao suporte tendo os dados, underneath um IStorage e IStream estrutura de árvore, morar em um espaço non-Persistent. Dada essa funcionalidade, não há nada impedindo que um documento que é armazenados em um arquivo de usar este instalações. De exemplo, um contêiner pode fazer isso para minimizar o impacto em seu formato arquivo causado pela adoção COM. No entanto, é recomendável que os documentos COM adotam o IStorage interface para seus próprios externa-nível armazenamento. Isso tem a seguinte vantagens:
- Estrutura de armazenamento do documento é o mesmo como sua estrutura armazenamento quando for um objeto incorporado. Isso reduz o número de casos o aplicativo precisa identificador.
- Um pode escrever ferramentas para acessar o embeddings OLE e Links o documento sem conhecimento especial do formato arquivo de documento. Um exemplo de tal uma ferramenta é um utilitário copiar que copia todos os documentos incluídos em um contêiner que contém objetos vinculados. Um utilitário copiar assim precisa acessar os links contidos para determinar a extensão de arquivos a serem copiados.
- O IStorage implementação resolve o problema de como a confirmação as alterações para o arquivo. Um aplicativo usando o ILockBytes interface deve identificador esses problemas próprio.
- Arquivo futuros sistemas serão provavelmente implementar o IStorage e IStream Interfaces como seus abstrações nativas, vez camada em parte superior de uma matriz byte como é feito nos arquivos compostos. Tais um sistema de arquivos poderia ser compilado para que documentos usando o IStorage interface como seu nível externo estrutura de confinamento seria get uma eficiência automática ganhar tendo a disposição simplificada quando arquivos são salvos em sistema de arquivos o novo.
Passando para esta função qualquer inválido e, em algumas circunstâncias, NULL ponteiros resulta em terminação inesperada do aplicativo.
Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.
Requirements
Header | objbase.h |
Library | ole32.lib |
Windows Embedded CE | Windows CE 2.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |