El código no está mal pero ... si miras el código interno de IO.Directory.GetFiles verás que hace uso de la siguiente clase, y de las mismas API
<Serializable, StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto), BestFitMapping(False)> _
Friend Class WIN32_FIND_DATA
Friend dwFileAttributes As Integer
Friend ftCreationTime_dwLowDateTime As UInt32
Friend ftCreationTime_dwHighDateTime As UInt32
Friend ftLastAccessTime_dwLowDateTime As UInt32
Friend ftLastAccessTime_dwHighDateTime As UInt32
Friend ftLastWriteTime_dwLowDateTime As UInt32
Friend ftLastWriteTime_dwHighDateTime As UInt32
Friend nFileSizeHigh As Integer
Friend nFileSizeLow As Integer
Friend dwReserved0 As Integer
Friend dwReserved1 As Integer
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _
Friend cFileName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=14)> _
Friend cAlternateFileName As String
<TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")> _
Public Sub New()
End Class
Saludos