using System.Runtime.InteropServices; using System.Runtime.InteropServices.ComTypes; using System.Text; namespace Vanara.PInvoke { public static partial class ShlwApi { /// Searches for a file. /// /// Type: LPTSTR /// /// A pointer to a null-terminated string of length MAX_PATH that contains the file name for which to search. If the search is successful, this parameter /// is used to return the fully qualified path name. /// /// /// /// Type: LPCTSTR* /// An optional, null-terminated array of directories to be searched first. This value can be NULL. /// /// /// Type: BOOL /// Returns TRUE if successful, or FALSE otherwise. /// // BOOL PathFindOnPath( _Inout_ LPTSTR pszFile, _In_opt_ LPCTSTR *ppszOtherDirs); // https://msdn.microsoft.com/en-us/library/windows/desktop/bb773594(v=vs.85).aspx [PInvokeData("Shlwapi.h", MSDNShortId = "bb773594")] [DllImport(Lib.Shlwapi, CharSet = CharSet.Auto, SetLastError = false)] public static extern bool PathFindOnPath(StringBuilder pszFile, [In] string[] ppszOtherDirs); /// Opens or creates a file and retrieves a stream to read or write to that file. /// A pointer to a null-terminated string that specifies the file name. /// One or more STGM values that are used to specify the file access mode and how the object that exposes the stream is created and deleted. /// One or more flag values that specify file attributes in the case that a new file is created. For a complete list of possible values, see the dwFlagsAndAttributes parameter of the CreateFile function. /// A BOOL value that helps specify, in conjunction with grfMode, how existing files should be treated when creating the stream. See Remarks for details. /// Reserved. /// Receives an IStream interface pointer for the stream associated with the file. /// If this function succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. [DllImport(Lib.Shlwapi, CharSet = CharSet.Unicode, ExactSpelling = true)] [PInvokeData("Shlwapi.h", MSDNShortId = "bb759866")] public static extern HRESULT SHCreateStreamOnFileEx(string pszFile, STGM grfMode, FileFlagsAndAttributes dwAttributes, [MarshalAs(UnmanagedType.Bool)] bool fCreate, [Optional] IStream pstmTemplate, out IStream ppstm); } }