getcurrentdirectory (kernel32)
Last changed: -131.107.0.76

.
Summary

C# Signature:

[DllImport("kernel32.dll")]
static extern uint GetCurrentDirectory(uint nBufferLength,
   [Out] StringBuilder lpBuffer);

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

/*************************

I M P O R T A N T N O T E

* This sample uses: GetCurrentDirectoryW *

*************************/

//Declaration

public const uint MAX_DEEP_PATH = 32767;

[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]

static extern uint GetCurrentDirectoryW(uint nBufferLength, StringBuilder lpBuffer);

//Usage

StringBuilder nameBuffer = new StringBuilder((int)MAX_DEEP_PATH + 3);

    //I need 3 extra '\x0' chartacters at the end of the buffer
    //You need to be able to hold up to 32767 chars if you plan to recurse deep folder structures
    //when you use FindFirstFileW, FindNextFileW and DeleteFileW

uint folderNameLength = GetCurrentDirectory(MAX_DEEP_PATH, nameBuffer);

if (folderNameLength == 0)

{

   int lastError = Marshal.GetLastWin32Error();
   Console.WriteLine("Failed to get initial working directory; error = '{0}'", lastError);
   return;

}

if (folderNameLength > MAX_DEEP_PATH)

{

   Console.WriteLine("Failed to get initial working directory; allocated buffer is shorter than required: '{0}'<'{1}'", MAX_DEEP_PATH, folderNameLength);
   return;

}

Alternative Managed API:

Directory.GetCurrentDirectory

Documentation