标签:c win32 超长文件名 createfilew
The GetShortPathName function retrieves the short path form of a specified input path.
DWORD GetShortPathName(
LPCTSTR lpszLongPath, // null-terminated path string
LPTSTR lpszShortPath, // short form buffer
DWORD cchBuffer // size of short form buffer
);
Windows NT/2000/XP: In the ANSI version of this function, the name is limited to MAX_PATH characters. To extend this limit to nearly 32,000 wide characters, call the Unicode version of the function and prepend "\\?\" to the path. For more information, see File Name Conventions.
Windows 95/98/Me: This string must not exceed MAX_PATH characters.
If the function succeeds, the return value is the length, in TCHARs, of the string copied to lpszShortPath, not including the terminating null character.
If the lpszShortPath buffer is too small to contain the path, the return value is the size of the buffer, in TCHARs, required to hold the path. Therefore, if the return value is greater than cchBuffer, call the function again with a buffer that is large enough to hold the path.
If the function fails for any other reason, the return value is zero. To get extended error information, call GetLastError.
从lpszLongPath参数的说明可以看出,GetShortPathNameW函数,可以对目录或文件名进行缩短,但有个前提是目录或文件名必须存在。即
Function | Description |
---|---|
AreFileApisANSI | Determines whether the file I/O functions are using the ANSI or OEM character set code page. |
CancelIo | Cancels all pending I/O operations that were issued by the calling thread for the specified file handle. |
CloseHandle | Closes an open object handle. |
CopyFile | Copies an existing file to a new file. |
CopyFileEx | Copies an existing file to a new file. |
CopyProgressRoutine | An application-defined callback function used with CopyFileEx and MoveFileWithProgress. |
CreateDirectory | Creates a new directory. |
CreateDirectoryEx | Creates a new directory with the attributes of a specified template directory. |
CreateFile | Creates or opens a file object. |
CreateIoCompletionPort | Creates and I/O completion port or associates an instance of an opened file with a newly created or an existing I/O completion port. |
DefineDosDevice | Defines, redefines, or deletes MS-DOS device names. |
DeleteFile | Deletes an existing file. |
FileIOCompletionRoutine | An application-defined callback function used with ReadFileEx and WriteFileEx. |
FindClose | Closes the specified search handle. |
FindCloseChangeNotification | Stops change notification handle monitoring. |
FindFirstChangeNotification | Creates a change notification handle. |
FindFirstFile | Searches a directory for a file whose name matches the specified file name. |
FindFirstFileEx | Searches a directory for a file whose name and attributes match those specified. |
FindNextChangeNotification | Requests that the operating system signal a change notification handle the next time it detects an appropriate change. |
FindNextFile | Continues a file search. |
FlushFileBuffers | Clears the buffers for the specified file and causes all buffered data to be written to the file. |
GetBinaryType | Determines whether a file is executable. |
GetCurrentDirectory | Retrieves the current directory for the current process. |
GetDiskFreeSpace | Retrieves information about the specified disk, including the amount of free space on the disk. |
GetDiskFreeSpaceEx | Retrieves information about the specified disk, including the amount of free space on the disk. |
GetDriveType | Determines whether a disk drive is a removable, fixed, CD-ROM, RAM disk, or network drive. |
GetFileAttributes | Retrieves attributes for a specified file or directory. |
GetFileAttributesEx | Retrieves attributes for a specified file or directory. |
GetFileInformationByHandle | Retrieves file information for a specified file. |
GetFileSize | Retrieves the size of a specified file. |
GetFileSizeEx | Retrieves the size of a specified file. |
GetFileType | Retrieves the file type of the specified file. |
GetFullPathName | Retrieves the full path and file name of a specified file. |
GetLogicalDrives | Returns a bitmask representing the currently available disk drives. |
GetLogicalDriveStrings | Fills a buffer with strings that specify valid drives in the system. |
GetLongPathName | Converts the specified path to its long form. |
GetQueuedCompletionStatus | Attempts to dequeue an I/O completion packet from a specified I/O completion port. |
GetShortPathName | Retrieves the short path form of a specified input path. |
GetTempFileName | Creates a name for a temporary file. |
GetTempPath | Retrieves the path of the directory designated for temporary files. |
LockFile | Locks a region in an open file. |
LockFileEx | Locks a region in an open file for shared or exclusive access. |
MoveFile | Moves an existing file or a directory. |
MoveFileEx | Moves an existing file or a directory. |
MoveFileWithProgress | Moves a file or directory. |
PostQueuedCompletionStatus | Posts an I/O completion packet to an I/O completion port. |
QueryDosDevice | Retrieves information about MS-DOS device names. |
ReadDirectoryChangesW | Retrieves information describing the changes occurring within a directory. |
ReadFile | Reads data from a file, starting at the specified position. |
ReadFileEx | Reads data from a file asynchronously. |
ReadFileScatter | Reads data from a file and stores the data into a set of buffers. |
RemoveDirectory | Deletes an existing empty directory. |
ReplaceFile | Replaces one file with another file. |
SearchPath | Searches for the specified file. |
SetCurrentDirectory | Changes the current directory for the current process. |
SetEndOfFile | Moves the end-of-file position for the specified file. |
SetFileApisToANSI | Causes the file I/O functions to use the ANSI character set code page. |
SetFileApisToOEM | Causes the file I/O functions to use the OEM character set code page. |
SetFileAttributes | Sets a file‘s attributes. |
SetFilePointer | Moves the file pointer of an open file. |
SetFilePointerEx | Moves the file pointer of an open file. |
SetFileSecurity | Sets the security of a file or directory object. |
SetFileShortName | Sets the valid data length of the specified file. |
SetFileValidData | Sets the valid data length of the specified file. |
SetVolumeLabel | Sets the label of a file system volume. |
UnlockFile | Unlocks a previously locked region in an open file. |
UnlockFileEx | Unlocks a previously locked region in an open file. |
WriteFile | Writes data to a file. |
WriteFileEx | Writes data to a file asynchronously. |
WriteFileGather | Gathers data from a set of buffers and writes the data to a file. |
<span style="font-size:14px;">HANDLE T_FileOpen_Win32(const char *filename, int oflag, int mode) { int ret = 0; HANDLE Handle = INVALID_HANDLE_VALUE; WCHAR tFileName[WTP_FULL_FILENAME_LEN+1]={0}; char apiFileName[WTP_FULL_FILENAME_LEN+1]={0}; strcat(apiFileName,"\\\\\?\\"); strcat(apiFileName,filename); ret = MultiByteToWideChar (CP_ACP, 0, apiFileName, strlen (apiFileName) + 1, tFileName, sizeof(tFileName)/sizeof(tFileName[0])) ; Handle = CreateFileW(tFileName, mode,FILE_SHARE_READ,NULL,oflag,FILE_ATTRIBUTE_NORMAL,NULL); ret = GetLastError(); return Handle; }</span>
※喜欢编程开发的朋友,可以加入到“StudyRoad“QQ群(238798556)来交流,认识新朋友,开阔视野,共同提高哦!※
标签:c win32 超长文件名 createfilew
原文地址:http://blog.csdn.net/pony12/article/details/38562243