![]() | ![]() | ![]() |
| ||
|
PathCanonicalize
BOOL PathCanonicalize( LPTSTR lpszDst, LPCTSTR lpszSrc );Canonicalizes a path.
- Returns TRUE if successful, or FALSE otherwise.
- lpszDst
- Address of a string that receives the canonicalized path. This buffer should be at least as large as the buffer at lpszSrc.
- lpszSrc
- Address of the path to be canonicalized.
This function allows the user to specify what to remove from a path by inserting special character sequences into the path. The ".." sequence indicates to remove the path part from the current position to the previous path part. The "." sequence indicates to skip over the next path part to the following path part. The root part of the path cannot be removed.
Example:
#include <windows.h> #include <iostream.h> #include "Shlwapi.h" void main( void ) { // Path_1 destination buffer. char buffer_1[] = "JustABufferToHoldTheCanonicalizedPathForAnExample"; char *lpStr1; lpStr1 = buffer_1; // Path_2 to be Canonicalized. char buffer_2[] = "A:\\name_1\\.\\name_2\\..\\name_3"; char *lpStr2; lpStr2 = buffer_2; // Path_3 to be Canonicalized. char buffer_3[] = "A:\\name_1\\..\\name_2\\.\\name_3"; char *lpStr3; lpStr3 = buffer_3; // Path_4 to be Canonicalized. char buffer_4[] = "A:\\name_1\\name_2\\.\\name_3\\..\\name_4"; char *lpStr4; lpStr4 = buffer_4; // Path_5 to be Canonicalized. char buffer_5[] = "A:\\name_1\\.\\name_2\\.\\name_3\\..\\name_4\\.."; char *lpStr5; lpStr5 = buffer_5; // Path_6 to be Canonicalized. char buffer_6[] = "C:\\.."; char *lpStr6; lpStr6 = buffer_6; cout << "The un-canonicalized path 2 is : " << lpStr2 << "\nThe return value is : " << PathCanonicalize(lpStr1,lpStr2) << "\nThe canonicalized path 1 is : " << lpStr1 << endl; cout << "\nThe un-canonicalized path 3 is : " << lpStr3 << "\nThe return value is : " << PathCanonicalize(lpStr1,lpStr3) << "\nThe canonicalized path 1 is : " << lpStr1 << endl; cout << "\nThe un-canonicalized path 4 is : " << lpStr4 << "\nThe return value is : " << PathCanonicalize(lpStr1,lpStr4) << "\nThe canonicalized path 1 is : " << lpStr1 << endl; cout << "\nThe un-canonicalized path 5 is : " << lpStr5 << "\nThe return value is : " << PathCanonicalize(lpStr1,lpStr5) << "\nThe canonicalized path 1 is : " << lpStr1 << endl; cout << "\nThe un-canonicalized path 6 is : " << lpStr6 << "\nThe return value is : " << PathCanonicalize(lpStr1,lpStr6) << "\nThe canonicalized path 1 is : " << lpStr1 << endl; } OUTPUT: --------- The un-canonicalized path 2 is : A:\name_1\.\name_2\..\name_3 The return value is : 1 The canonicalized path 1 is : A:\name_1\name_3 The un-canonicalized path 3 is : A:\name_1\..\name_2\.\name_3 The return value is : 1 The canonicalized path 1 is : A:\name_2\name_3 The un-canonicalized path 4 is : A:\name_1\name_2\.\name_3\..\name_4 The return value is : 1 The canonicalized path 1 is : A:\name_1\name_2\name_4 The un-canonicalized path 5 is : A:\name_1\.\name_2\.\name_3\..\name_4\.. The return value is : 1 The canonicalized path 1 is : A:\name_1\name_2 The un-canonicalized path 6 is : C:\.. The return value is : 1 The canonicalized path 1 is : C:\
Top of Page
© 1997 Microsoft Corporation. All rights reserved. Terms of Use.