Az aktuális könyvtár módosítása
Az aktív elérési út végén lévő könyvtárat az aktuális könyvtárnak nevezzük; ez az a könyvtár, amelyben az aktív alkalmazás elindult, kivéve, ha explicit módon módosult. Az alkalmazások a GetCurrentDirectory függvény meghívásával megállapíthatják, hogy melyik könyvtár van aktuális. Néha szükséges a GetFullPathName függvényt használni annak biztosítása érdekében, hogy a meghajtóbetűjel szerepeljen, ha az alkalmazás megköveteli.
Jegyzet
Bár minden folyamatnak csak egy aktuális könyvtára lehet, ha az alkalmazás a SetCurrentDirectory függvénnyel vált köteteket, a rendszer megjegyzi az egyes kötetek utolsó aktuális elérési útját (meghajtóbetűjel). Ez a viselkedés csak akkor jelenik meg, ha egy teljes elérési út nélküli meghajtóbetűjelet ad meg, amikor az aktuális könyvtárhivatkozási pontot egy másik kötetre módosítja. Ez a beolvasási vagy a beállítási műveletekre vonatkozik.
Az alkalmazások a SetCurrentDirectory függvény meghívásával módosíthatják az aktuális könyvtárat.
Az alábbi példa a GetCurrentDirectory és SetCurrentDirectoryhasználatát mutatja be.
#include <windows.h>
#include <stdio.h>
#include <tchar.h>
#define BUFSIZE MAX_PATH
void _tmain(int argc, TCHAR **argv)
{
TCHAR Buffer[BUFSIZE];
DWORD dwRet;
if(argc != 2)
{
_tprintf(TEXT("Usage: %s <dir>\n"), argv[0]);
return;
}
dwRet = GetCurrentDirectory(BUFSIZE, Buffer);
if( dwRet == 0 )
{
printf("GetCurrentDirectory failed (%d)\n", GetLastError());
return;
}
if(dwRet > BUFSIZE)
{
printf("Buffer too small; need %d characters\n", dwRet);
return;
}
if( !SetCurrentDirectory(argv[1]))
{
printf("SetCurrentDirectory failed (%d)\n", GetLastError());
return;
}
_tprintf(TEXT("Set current directory to %s\n"), argv[1]);
if( !SetCurrentDirectory(Buffer) )
{
printf("SetCurrentDirectory failed (%d)\n", GetLastError());
return;
}
_tprintf(TEXT("Restored previous directory (%s)\n"), Buffer);
}