Funzione PathCchCanonicalizeEx (pathcch.h)
Semplifica un percorso rimuovendo gli elementi di spostamento, ad esempio "." e ".." per produrre un percorso diretto e ben formato.
Questa funzione differisce da PathCchCanonicalize in quanto consente di costruire un percorso finale più lungo.
Questa funzione differisce da PathAllocCanonicalize in cui il chiamante deve dichiarare le dimensioni della stringa restituita, archiviata nello stack.
Questa funzione differisce da PathCanonicalize in quanto accetta percorsi con "\", "\?" e "\?\UNC".
Sintassi
WINPATHCCHAPI HRESULT PathCchCanonicalizeEx(
[out] PWSTR pszPathOut,
[in] size_t cchPathOut,
[in] PCWSTR pszPathIn,
[in] ULONG dwFlags
);
Parametri
[out] pszPathOut
Puntatore a un buffer che, quando questa funzione restituisce correttamente, riceve la stringa di percorso modificata.
[in] cchPathOut
Dimensioni del buffer a cui punta pszPathOut, in caratteri.
[in] pszPathIn
Puntatore alla stringa di percorso originale. Se questo valore è NULL, punta a una stringa vuota o genera una stringa vuota dopo la rimozione degli elementi "." e ".". Viene copiata una singola barra rovesciata nel buffer a cui fa riferimento pszPathOut.
[in] dwFlags
Uno o più dei flag seguenti:
Valore restituito
Se questa funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice HRESULT , incluso ma non limitato ai seguenti.
Codice restituito | Descrizione |
---|---|
|
Il valore cchPathOut è maggiore di PATHCCH_MAX_CCH. |
|
Un segmento di percorso ha più di PATHCCH_MAX_CCH caratteri oppure, se il flag di PATHCCH_ALLOW_LONG_PATHS non è impostato, supera il limite di lunghezza del segmento di percorso standard di 256 caratteri. |
|
Impossibile allocare un buffer delle dimensioni necessarie. |
Commenti
Questa funzione risponde alle stringhe "." e ".." incorporate in un percorso. La stringa ".." indica la rimozione del segmento di percorso precedente immediatamente. La stringa "." indica di ignorare il segmento di percorso successivo. Si noti che il segmento radice del percorso non può essere rimosso. Se sono presenti più stringhe ".." di quanto siano presenti segmenti di percorso, la funzione restituisce S_OK e il buffer a cui punta pszPathOut contiene una singola barra rovesciata, "\".
Tutti i periodi finali vengono rimossi dal percorso, tranne se preceduti dal carattere jolly "". In tal caso, un singolo periodo viene mantenuto dopo il carattere '', ma tutti gli altri periodi finali vengono rimossi.
Se il percorso risultante è un'unità radice ("x:"), viene aggiunta una barra rovesciata ("x:\").
Questa funzione non converte le barre in barra rovesciata (/) in barre indietro (\). Con l'input non attendibile, questa funzione non può essere usata per convertire i percorsi in una maschera che può essere confrontata con altri percorsi per il percorso secondario o l'identità. I chiamanti che necessitano di tale capacità devono convertire in avanti le barre indietro prima di usare questa funzione.
Gli esempi seguenti mostrano l'effetto di queste stringhe.
Stringa originale | Stringa canonica |
---|---|
C:\name_1\.\name_2\.. \name_3 | C:\name_1\name_3 |
C:\name_1\.. \name_2\.\name_3 | C:\name_2\name_3 |
C:\name_1\name_2\.\name_3\.. \name_4 | C:\name_1\name_2\name_4 |
C:\name_1\.\name_2\.\name_3\.. \name_4\.. | C:\name_1\name_2 |
C:\name_1\*... | C:\name_1\*. |
C:\.. | C:\ |
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 8 [app desktop | App UWP] |
Server minimo supportato | Windows Server 2012 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | pathcch.h |
Libreria | Pathcch.lib |