@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The NetFileEnum function returns information about some or all open files on a server, depending on the parameters specified !!!!C# Signature: [DllImport("netapi32.dll", SetLastError=true, CharSet=CharSet.Unicode)] static extern int NetFileEnum( string servername, string basepath, string username, int level, ref IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, IntPtr resume_handle ); !!!!VB Signature: Declare Unicode Function NetFileEnum Lib "netapi32.dll" ( _ ByVal servername As String, _ ByVal basepath As String, _ ByVal username As String, _ ByVal level As Integer, _ ByRef bufptr As IntPtr, _ ByVal prefmaxlen As Integer, _ ByRef entriesread As Integer, _ ByRef totalentries As Integer, _ ByVal resume_handle As IntPtr) As Integer !!!!User-Defined Types: [FILE_INFO_3] !!!!Notes: Definition from the API 'NET_API_STATUS NetFileEnum( ' LPWSTR servername, ' LPWSTR basepath, ' LPWSTR username, ' DWORD level, ' LPBYTE* bufptr, ' DWORD prefmaxlen, ' LPDWORD entriesread, ' LPDWORD totalentries, ' PDWORD_PTR resume_handle '); !!!!Tips & Tricks: You must free the memory allocated to the bufptr with the NetApiBufferFree function !!!!C# Sample Code: const int MAX_PREFERRED_LENGTH = -1; int dwReadEntries; int dwTotalEntries; IntPtr pBuffer = IntPtr.Zero ; FILE_INFO_3 pCurrent = new FILE_INFO_3(); int dwStatus = NetFileEnum(null, null, null, 3, ref pBuffer, MAX_PREFERRED_LENGTH, out dwReadEntries, out dwTotalEntries, IntPtr.Zero ); if (dwStatus == 0) { for (int dwIndex=0; dwIndex < dwReadEntries; dwIndex++) { IntPtr iPtr = new IntPtr(pBuffer.ToInt32() + (dwIndex * Marshal.SizeOf(pCurrent))); pCurrent = (FILE_INFO_3) Marshal.PtrToStructure(iPtr, typeof(FILE_INFO_3)); Console.WriteLine("dwIndex={0}", dwIndex); Console.WriteLine(" id={0}", pCurrent.fi3_id ); Console.WriteLine(" num_locks={0}", pCurrent.fi3_num_locks ); Console.WriteLine(" pathname={0}", pCurrent.fi3_pathname ); Console.WriteLine(" permission={0}", pCurrent.fi3_permission ); Console.WriteLine(" username={0}", pCurrent.fi3_username ); } NetApiBufferFree(pBuffer); } !!!!VB.Net Sample Code: Const MAX_PREFERRED_LENGTH As Integer = -1 Dim dwIndex, dwStatus, dwReadEntries, dwTotalEntries As Integer Dim pCurrent As FILE_INFO_3 Dim iPtr, pBuffer As IntPtr dwStatus = NetFileEnum(TextBox1.Text, Nothing, Nothing, 3, pBuffer, MAX_PREFERRED_LENGTH, dwReadEntries, dwTotalEntries, IntPtr.Zero) if dwStatus = 0 then For dwIndex = 0 To dwReadEntries - 1 iPtr = New IntPtr(pBuffer.ToInt32 + (dwIndex * Marshal.SizeOf(pCurrent))) pCurrent = CType(Marshal.PtrToStructure(iPtr, GetType(FILE_INFO_3)), FILE_INFO_3) Debug.WriteLine("dwIndex=" & dwIndex) Debug.WriteLine(" id: " & pCurrent.fi3_id) Debug.WriteLine(" num_locks: " & pCurrent.fi3_num_locks) Debug.WriteLine(" pathname: " & pCurrent.fi3_pathname) Debug.WriteLine(" permission: " & pCurrent.fi3_permission) Debug.WriteLine(" username: " & pCurrent.fi3_username) Next end if !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: NetFileEnum@msdn on MSDN
Edit netapi32.NetFileEnum
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.