在Windows内核里 如何判断 多文件复制完成?
应该看哪个IRP 或者用什么内核API的话可以知道呢?
比如: 1. 选择10个文件复制到E盘 2. 当最后一个文件复制完成时有没有特别是标识或者特殊的IRP告诉这一套操作完成了? 3. Windows的用户层不是有那个滚动条吗, 那个条结束时靠什么来识别的呢?
Shell Extension
CopyFileEx The CopyFileEx function copies an existing file to a new file. This function preserves extended attributes, OLE structured storage, NTFS alternate data streams, and file attributes. Security attributes for the existing file are not copied to the new file.
BOOL CopyFileEx( LPCWSTR lpExistingFileName, // pointer to name of an existing file LPCWSTR lpNewFileName, // pointer to filename to copy to LPPROGRESS_ROUTINE lpProgressRoutine, // pointer to the callback function LPVOID lpData, // to be passed to the callback function LPBOOL pbCancel, // flag that can be used to cancel the operation DWORD dwCopyFlags // flags that specify how the file is copied ); Parameters lpExistingFileName Pointer to a null-terminated string that specifies the name of an existing file. lpNewFileName Pointer to a null-terminated string that specifies the name of the new file. lpProgressRoutine Specifies the address of a callback function of type LPPROGRESS_ROUTINE that is called each time another portion of the file has been copied. This parameter can be NULL. For more information on the progress callback function, see CopyProgressRoutine. lpData Specifies an argument to be passed to the callback function. This parameter can be NULL. pbCancel Pointer to a Boolean variable that can be used to cancel the operation. If this flag is set to TRUE during the copy operation, the operation is canceled. dwCopyFlags Specifies how the file is to be copied. This parameter can be a combination of the following values: Value Meaning COPY_FILE_FAIL_IF_EXISTS The copy operation fails immediately if the target file already exists. COPY_FILE_RESTARTABLE Progress of the copy is tracked in the target file in case the copy fails. The failed copy can be restarted at a later time by specifying the same values for lpExistingFileName and lpNewFileName as those used in the call that failed.
Return Values If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information call GetLastError.
Remarks For information, see CopyFile.
QuickInfo Windows NT: Requires version 4.0 or later. Windows: Unsupported. Windows CE: Unsupported. Header: Declared in winbase.h. Import Library: Use kernel32.lib. Unicode: Implemented as Unicode and ANSI versions on Windows NT.
See Also File I/O Overview, File Functions, CreateFile, CopyFile, CopyProgressRoutine, MoveFile
|