Funzione StgCreateStorageEx (coml2api.h)
La funzione stgCreateStorageEx
Le applicazioni scritte per Windows 2000, Windows Server 2003 e Windows XP devono usare StgCreateStorageEx anziché StgCreateDocfile per sfruttare le funzionalità avanzate di archiviazione strutturata di Windows 2000 e Windows XP.
Sintassi
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
);
Parametri
[in] pwcsName
Puntatore al percorso del file da creare. Viene passato al file system non interpretato. Può trattarsi di un nome relativo o NULL. Se NULL, viene allocato un file temporaneo con un nome univoco. Se nonNULL, le dimensioni della stringa non devono superare MAX_PATH caratteri.
[in] grfMode
Valore che specifica la modalità di accesso da utilizzare quando si apre il nuovo oggetto di archiviazione. Per altre informazioni, vedere costanti STGM. Se il chiamante specifica la modalità transazionata insieme a STGM_CREATE o STGM_CONVERT, la sovrascrittura o la conversione avviene quando viene chiamata l'operazione di commit per l'archiviazione radice. Se IStorage::Commit non viene chiamato per l'oggetto di archiviazione radice, verrà ripristinato il contenuto precedente del file. STGM_CREATE e STGM_CONVERT non possono essere combinati con il flag STGM_NOSNAPSHOT, perché è necessaria una copia snapshot quando un file viene sovrascritto o convertito in modalità transazionata.
[in] stgfmt
Valore che specifica il formato di file di archiviazione. Per altre informazioni, vedere l'enumerazione STGFMT
[in] grfAttrs
Valore che dipende dal valore del parametro
Valori dei parametri | Significato |
---|---|
|
0 o FILE_FLAG_NO_BUFFERING. Per altre informazioni, vedere CreateFile. Se le dimensioni del settore del file, specificate in pStgOptions, non è un multiplo intero delle dimensioni del settore fisico del disco sottostante, questa operazione avrà esito negativo. |
|
Deve essere 0. |
[in] pStgOptions
Il parametro pStgOptions
[in] pSecurityDescriptor
Consente di impostare gli ACL al momento della creazione del file. Se non NULL, deve essere un puntatore alla struttura SECURITY_ATTRIBUTES. Per informazioni su come impostare elenchi di controllo di accesso nei file, vedere CreateFile.
Windows Server 2003, Windows 2000 Server, Windows XP e Windows 2000 Professional: Valore deve essere NULL.
[in] riid
Valore che specifica l'identificatore di interfaccia (IID) del puntatore a interfaccia da restituire. Questo IID può essere per l'interfaccia IStorage
[out] ppObjectOpen
Puntatore a una variabile del puntatore di interfaccia che riceve un puntatore per un'interfaccia sul nuovo oggetto di archiviazione; contiene NULL se l'operazione non è riuscita.
Valore restituito
Questa funzione può anche restituire eventuali errori del file system o errori di sistema di cui è stato eseguito il wrapping in un HRESULT. Per altre informazioni, vedere strategie di gestione degli errori e gestione degli errori sconosciuti.
Osservazioni
Quando un'applicazione modifica il file, in genere crea una copia dell'originale. La funzione StgCreateStorageEx è un modo per creare una copia. Questa funzione funziona indirettamente con l'API di duplicazione EFS (Encrypting File System). Quando si usa questa funzione, è necessario impostare le opzioni per l'archiviazione file nella struttura stgOPTIONS
StgCreateStorageEx è un superset della funzione StgCreateDocfile e deve essere usata dal nuovo codice. I miglioramenti futuri all'archiviazione strutturata verranno esposti tramite la funzione stgCreateStorageEx
La funzione stgCreateStorageEx
'implementazione di file composti IStorage, un'implementazione di file composti IPropertySetStorageo per ottenere un 'implementazione IPropertySetStorage NTFS.
Quando viene creato un nuovo file, l'implementazione di archiviazione usata dipende dal flag specificato e dal tipo di unità in cui è archiviato il file. Per altre informazioni, vedere l'enumerazione STGFMT
StgCreateStorageEx crea il file se non esiste. Se esiste, l'uso dei flag STGM_CREATE, STGM_CONVERT e STGM_FAILIFTHERE nel parametro grfMode indica come procedere. Per altre informazioni su questi valori, vedere costanti STGM. Non è valido, in modalità diretta, specificare la modalità STGM_READ nel parametro grfMode (la modalità diretta è indicata non specificando il flag STGM_TRANSACTED). Questa funzione non può essere utilizzata per aprire un file esistente; usare invece la funzione stgOpenStorageEx
È possibile usare la funzione
Quando viene creato un file con questa funzione per accedere all'implementazione del set di proprietà NTFS, si applicano regole di condivisione speciali. Per altre informazioni, vedere IPropertySetStorage-NTFS Implementazione.
Se viene creato un file composto in modalità transacted (specificando STGM_TRANSACTED) e la modalità di sola lettura (specificando STGM_READ), è possibile apportare modifiche all'oggetto di archiviazione restituito. Ad esempio, è possibile chiamare IStorage::CreateStream. Non è tuttavia possibile eseguire il commit di tali modifiche chiamando IStorage::Commit. Pertanto, tali modifiche andranno perse.
L'impostazione di STGM_SIMPLE offre un'implementazione molto più rapida di un oggetto file composto in un caso limitato, ma usato di frequente che coinvolge applicazioni che richiedono un'implementazione di file composta con più flussi e nessuna risorsa di archiviazione. Per altre informazioni, vedere costanti STGM. Non è valido specificare che STGM_TRANSACTED se viene specificato STGM_SIMPLE.
La modalità semplice non supporta tutti i metodi in IStorage. In particolare, in modalità semplice, i metodi di IStorage supportati
Se il parametro grfMode specifica STGM_TRANSACTED e non esiste ancora alcun file con il nome specificato dal parametro pwcsName, il file viene creato immediatamente. In un file system controllato dall'accesso, il chiamante deve disporre delle autorizzazioni di scrittura per la directory del file system in cui viene creato il file composto. Se non viene specificato STGM_TRANSACTED e STGM_CREATE viene specificato, un file esistente con lo stesso nome viene eliminato definitivamente prima di creare il nuovo file.
È anche possibile usare
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 Professional [app desktop | App UWP] |
server minimo supportato | Windows 2000 Server [app desktop | App UWP] |
piattaforma di destinazione | Finestre |
intestazione |
coml2api.h (include Objbase.h) |
libreria |
Ole32.lib |
dll | Ole32.dll |