| CODE |
DWORD LaunchTitle( LPCTSTR szPath, LPCTSTR szXbe ) { DWORD dwStatus; CUniString sSymbolicName; CStdString sLaunch; *(sSymbolicName.GetString()) = szPath; sLaunch.Format( _T("D:\\%s"), szXbe ); UNICODE_STRING DSymbolicLinkName = { strlen(DriveD), strlen(DriveD)+1, DriveD }; // UNICODE_STRING TitleDeviceName; // // TitleDeviceName.Length = strlen( pszPath ); // TitleDeviceName.MaximumLength = strlen( pszPath )+1; // TitleDeviceName.Buffer = pszPath; // dwStatus = IoDeleteSymbolicLink(&DSymbolicLinkName); if( dwStatus == 0 ) { dwStatus = IoCreateSymbolicLink(&DSymbolicLinkName, sSymbolicName.GetUnicodeString() ); if( dwStatus == 0 ) { dwStatus = XLaunchNewImage(sLaunch.c_str(), NULL); } else { dwStatus |= 0x04000000; } } else { dwStatus |= 0x08000000; } return dwStatus; } |