The information in this article applies to:
SYMPTOMSUsing the rename() function to change a subdirectory name may fail if the directory name you want to change is the current working directory for that drive. In addition, some versions of MS-DOS may return a success value, but the directory name apparently has not changed. CAUSEAn access violation occurs attempting to rename the current directory. RESOLUTION
To work around this problem, use the chdir() function to set the current
directory of the specified drive to be the root directory on the drive.
However, in Windows NT, this procedure does not guarantee success
because an error occurs if another process uses the target directory.
MORE INFORMATIONIn MS-DOS versions 3.x when SHARE.EXE is not installed, the sample program shown below produces the following results:
NOTE: errno code 13 indicates an access violation.
This behavior does not indicate a problem with the rename() function. It simply maps to an Interrupt 21h, Function 56h (Rename File) call in MS-DOS. The problem occurs because the operating system maintains a list of the current working directory (CWD) for each drive in its drive table in memory. In the MS-DOS 3.x example, the program successfully changed the directory name. However, because MS-DOS does not recognize the change, it does not update the CWD in the drive table. When the program ends, MS-DOS displays an invalid prompt that reflects the old directory name. If you type "CD \NEWDIR" at the MS-DOS prompt, the drive table is updated. In the second example, MS-DOS 3.3 with SHARE.EXE installed, MS-DOS versions 4.x and later, and MS-DOS running in OS/2 cannot determine if another process is using the directory and an access violation error occurs. In Windows NT, if any process is active in the target directory, the system does not change the directory name. When this happens, the function returns an error code 13 that indicates an access violation. Sample Code
Additional query words:
Keywords : kbCRT kbVC100 kbVC150 kbVC200 kbVC400 kbVC500 kbVC600 |
Last Reviewed: July 1, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |