Función StgCreateStorageEx (coml2api.h)
La función stgCreateStorageEx
Las aplicaciones escritas para Windows 2000, Windows Server 2003 y Windows XP deben usar StgCreateStorageEx en lugar de StgCreateDocfile para aprovechar las características mejoradas de Almacenamiento estructurado de Windows 2000 y Windows XP.
Sintaxis
HRESULT StgCreateStorageEx(
[in] const WCHAR *pwcsName,
[in] DWORD grfMode,
[in] DWORD stgfmt,
[in] DWORD grfAttrs,
[in] STGOPTIONS *pStgOptions,
[in] PSECURITY_DESCRIPTOR pSecurityDescriptor,
[in] REFIID riid,
[out] void **ppObjectOpen
);
Parámetros
[in] pwcsName
Puntero a la ruta de acceso del archivo que se va a crear. Se pasa sin interpretación al sistema de archivos. Puede ser un nombre relativo o NULL. Si null, se asigna un archivo temporal con un nombre único. Si noNULL, el tamaño de cadena no debe superar MAX_PATH caracteres.
[in] grfMode
Valor que especifica el modo de acceso que se va a usar al abrir el nuevo objeto de almacenamiento. Para obtener más información, vea constantes STGM. Si el autor de la llamada especifica el modo de transacción junto con STGM_CREATE o STGM_CONVERT, se produce la sobrescritura o conversión cuando se llama a la operación de confirmación para el almacenamiento raíz. Si no se llama a IStorage::Commit para el objeto de almacenamiento raíz, se restaurará el contenido anterior del archivo. STGM_CREATE y STGM_CONVERT no se pueden combinar con la marca STGM_NOSNAPSHOT, ya que se requiere una copia de instantánea cuando se sobrescribe o se convierte un archivo en el modo transaccionado.
[in] stgfmt
Valor que especifica el formato de archivo de almacenamiento. Para obtener más información, consulte la enumeración
[in] grfAttrs
Valor que depende del valor del parámetro stgfmt
Valores de parámetro | Significado |
---|---|
|
0 o FILE_FLAG_NO_BUFFERING. Para obtener más información, vea CreateFile. Si el tamaño del sector del archivo, especificado en pStgOptions, no es un entero múltiplo del tamaño del sector físico del disco subyacente, se producirá un error en esta operación. |
|
Debe ser 0. |
[in] pStgOptions
El parámetro
[in] pSecurityDescriptor
Permite establecer las ACL cuando se crea el archivo. Si no NULL, debe ser un puntero a la estructura SECURITY_ATTRIBUTES. Consulte CreateFile para obtener información sobre cómo establecer ACL en archivos.
Windows Server 2003, Windows 2000 Server, Windows XP y Windows 2000 Professional: Value debe ser NULL.
[in] riid
Valor que especifica el identificador de interfaz (IID) del puntero de interfaz que se va a devolver. Este IID puede ser para la interfaz de
[out] ppObjectOpen
Puntero a una variable de puntero de interfaz que recibe un puntero para una interfaz en el nuevo objeto de almacenamiento; contiene NULL si se produjo un error en la operación.
Valor devuelto
Esta función también puede devolver cualquier error del sistema de archivos o errores del sistema ajustados en un HRESULT. Para obtener más información, vea estrategias de control de errores y control de errores desconocidos.
Observaciones
Cuando una aplicación modifica su archivo, normalmente crea una copia del original. La función
La función stgCreateStorageEx
implementación de archivos compuestos de IStorage, una implementación de archivo compuesto IPropertySetStorage, o para obtener una implementación DE NTFS IPropertySetStorage.
Cuando se crea un nuevo archivo, la implementación de almacenamiento usada depende de la marca que especifique y del tipo de unidad en la que se almacena el archivo. Para obtener más información, consulte la enumeración
StgCreateStorageEx crea el archivo si no existe. Si existe, el uso de las marcas STGM_CREATE, STGM_CONVERT y STGM_FAILIFTHERE en el parámetro grfMode indican cómo continuar. Para obtener más información sobre estos valores, vea constantes STGM. No es válido, en modo directo, especificar el modo STGM_READ en el parámetro grfMode (el modo directo se indica sin especificar la marca STGM_TRANSACTED). Esta función no se puede usar para abrir un archivo existente; Use la función
Puede usar la función StgCreateStorageEx para obtener acceso al almacenamiento raíz de un documento de almacenamiento estructurado o al almacenamiento del conjunto de propiedades de cualquier archivo que admita conjuntos de propiedades. Consulte la documentación de stGFMT de
Cuando se crea un archivo con esta función para acceder a la implementación del conjunto de propiedades NTFS, se aplican reglas de uso compartido especiales. Para obtener más información, vea IPropertySetStorage-NTFS Implementación.
Si se crea un archivo compuesto en modo de transacción (especificando STGM_TRANSACTED) y modo de solo lectura (especificando STGM_READ), es posible realizar cambios en el objeto de almacenamiento devuelto. Por ejemplo, es posible llamar a IStorage::CreateStream. Sin embargo, no es posible confirmar esos cambios llamando a IStorage::Commit. Por lo tanto, estos cambios se perderán.
Especificar STGM_SIMPLE proporciona una implementación mucho más rápida de un objeto de archivo compuesto en un caso limitado, pero frecuentemente usado que implica aplicaciones que requieren una implementación de archivo compuesta con varios flujos y sin almacenamientos. Para obtener más información, vea constantes STGM. No es válido especificar que STGM_TRANSACTED si se especifica STGM_SIMPLE.
El modo simple no admite todos los métodos de IStorage. En concreto, en modo simple, los métodos de IStorage admitidos
Si el parámetro
También puede usar StgCreateStorageEx para crear un archivo compuesto temporal pasando un valor de NULL para el parámetro pwcsName. Sin embargo, estos archivos solo son temporales en el sentido de que tienen un nombre único proporcionado por el sistema, uno que probablemente no tenga sentido para el usuario. El autor de la llamada es responsable de eliminar el archivo temporal cuando termine con él, a menos que se haya especificado STGM_DELETEONRELEASE para el parámetro grfMode. Para obtener más información sobre estas marcas, vea constantes STGM.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP] |
servidor mínimo admitido | Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP] |
de la plataforma de destino de |
Windows |
encabezado de |
coml2api.h (include Objbase.h) |
biblioteca de |
Ole32.lib |
DLL de |
Ole32.dll |