Если вы хотите использовать вызовы Win32, вам сначала нужно будет использовать DllImport для импорта ядра, синтаксис примерно такой, и вы должны делать это для каждого метода, который вы хотите использовать (это все не проверенное код, который описывает только концепцию), пример кода преобразует ваши пути в пути UNC, чтобы вы могли иметь длинные пути к файлам:
using Microsoft.Win32.SafeHandles;
...
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
static extern SafeHandleMinusOneIsInvalid FindFirstFileW(string lpFileName, IntPtr lpFindFileData);
...
public String FindFirstFile(string filepath)
{
// If file path is disk file path then prepend it with \\?\
// if file path is UNC prepend it with \\?\UNC\ and remove \\ prefix in unc path.
if (filepath.StartsWith(@"\\"))
filepath = @"\\?\UNC\" + filepath.Substring(2, filepath.Length - 2);
else
filepath = @"\\?\" + filepath;
...
SafeHandleMinusOneIsInvalid ret = FindFirstFileW(filepath, lpFindFileData);
...
}
После вызова FindFirstFile необходимо вызвать FindNextFile для следующего файла в каталоге, а затем, наконец, FindClose; полный пример того, как вывести список файлов в каталоге, используя ядро Win32, смотрите здесь