From 30a5fa2d72a5652750c931421a15526fbc1ed214 Mon Sep 17 00:00:00 2001 From: dahall Date: Tue, 3 Aug 2021 09:34:29 -0600 Subject: [PATCH] Added USN type with correct mapping (long for LONGLONG instead of int) and corrected all references in structures and functions. #241 --- PInvoke/CldApi/cfapi.Funcs.cs | 11 ++++++----- PInvoke/CldApi/cfapi.cs | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/PInvoke/CldApi/cfapi.Funcs.cs b/PInvoke/CldApi/cfapi.Funcs.cs index 4ea6b1ff..23a4d72e 100644 --- a/PInvoke/CldApi/cfapi.Funcs.cs +++ b/PInvoke/CldApi/cfapi.Funcs.cs @@ -3,6 +3,7 @@ using System.Runtime.InteropServices; using System.Threading; using Vanara.InteropServices; using static Vanara.PInvoke.Kernel32; +using USN = System.Int64; namespace Vanara.PInvoke { @@ -115,7 +116,7 @@ namespace Vanara.PInvoke // Overlapped ); [DllImport(Lib.CldApi, SetLastError = false, ExactSpelling = true)] [PInvokeData("cfapi.h", MSDNShortId = "FDDE9CB0-E1A2-46D6-94E0-228495675271")] - public static extern HRESULT CfConvertToPlaceholder(HFILE FileHandle, [In, Optional] IntPtr FileIdentity, uint FileIdentityLength, CF_CONVERT_FLAGS ConvertFlags, out int ConvertUsn, [In, Out, Optional] IntPtr Overlapped); + public static extern HRESULT CfConvertToPlaceholder(HFILE FileHandle, [In, Optional] IntPtr FileIdentity, uint FileIdentityLength, CF_CONVERT_FLAGS ConvertFlags, out USN ConvertUsn, [In, Out, Optional] IntPtr Overlapped); /// Converts a normal file/directory to a placeholder file/directory. /// Handle to the file or directory to be converted. @@ -177,7 +178,7 @@ namespace Vanara.PInvoke [DllImport(Lib.CldApi, SetLastError = false, ExactSpelling = true)] [PInvokeData("cfapi.h", MSDNShortId = "FDDE9CB0-E1A2-46D6-94E0-228495675271")] public static unsafe extern HRESULT CfConvertToPlaceholder(HFILE FileHandle, [In, Optional] IntPtr FileIdentity, uint FileIdentityLength, CF_CONVERT_FLAGS ConvertFlags, - [Out, Optional] int* ConvertUsn, [In, Out, Optional] NativeOverlapped* Overlapped); + [Out, Optional] USN* ConvertUsn, [In, Out, Optional] NativeOverlapped* Overlapped); /// Creates one or more new placeholder files or directories under a sync root tree. /// Local directory path under which placeholders are created. @@ -869,7 +870,7 @@ namespace Vanara.PInvoke // CF_IN_SYNC_STATE InSyncState, CF_SET_IN_SYNC_FLAGS InSyncFlags, USN *InSyncUsn ); [DllImport(Lib.CldApi, SetLastError = false, ExactSpelling = true)] [PInvokeData("cfapi.h", MSDNShortId = "1CB7955D-E530-4F34-8D67-BC608F8B6AF1")] - public static extern HRESULT CfSetInSyncState(HFILE FileHandle, CF_IN_SYNC_STATE InSyncState, CF_SET_IN_SYNC_FLAGS InSyncFlags, ref int InSyncUsn); + public static extern HRESULT CfSetInSyncState(HFILE FileHandle, CF_IN_SYNC_STATE InSyncState, CF_SET_IN_SYNC_FLAGS InSyncFlags, ref USN InSyncUsn); /// /// This sets the pin state of a placeholder, used to represent a user’s intent. Any application (not just the sync provider) can @@ -1027,7 +1028,7 @@ namespace Vanara.PInvoke [PInvokeData("cfapi.h", MSDNShortId = "13F2BF9A-505F-4CFB-B008-7DDE85A3C581")] public static extern HRESULT CfUpdatePlaceholder(HFILE FileHandle, in CF_FS_METADATA FsMetadata, [In] IntPtr FileIdentity, uint FileIdentityLength, [In, Optional, MarshalAs(UnmanagedType.LPArray)] CF_FILE_RANGE[] DehydrateRangeArray, uint DehydrateRangeCount, CF_UPDATE_FLAGS UpdateFlags, - ref int UpdateUsn, [In, Out, Optional] IntPtr Overlapped); + ref USN UpdateUsn, [In, Out, Optional] IntPtr Overlapped); /// Updates characteristics of the placeholder file or directory. /// A handle to the file or directory whose metadata is to be updated. @@ -1097,7 +1098,7 @@ namespace Vanara.PInvoke [PInvokeData("cfapi.h", MSDNShortId = "13F2BF9A-505F-4CFB-B008-7DDE85A3C581")] public static unsafe extern HRESULT CfUpdatePlaceholder(HFILE FileHandle, in CF_FS_METADATA FsMetadata, [In] IntPtr FileIdentity, uint FileIdentityLength, [In, Optional, MarshalAs(UnmanagedType.LPArray)] CF_FILE_RANGE[] DehydrateRangeArray, uint DehydrateRangeCount, CF_UPDATE_FLAGS UpdateFlags, - ref int UpdateUsn, [In, Out] NativeOverlapped* Overlapped); + ref USN UpdateUsn, [In, Out] NativeOverlapped* Overlapped); /// Updates the current status of the sync provider. /// A connection key representing a communication channel with the sync filter. diff --git a/PInvoke/CldApi/cfapi.cs b/PInvoke/CldApi/cfapi.cs index 620912d5..e206c221 100644 --- a/PInvoke/CldApi/cfapi.cs +++ b/PInvoke/CldApi/cfapi.cs @@ -3,6 +3,7 @@ using System.Runtime.InteropServices; using Vanara.Extensions; using Vanara.InteropServices; using static Vanara.PInvoke.Kernel32; +using USN = System.Int64; namespace Vanara.PInvoke { @@ -1998,7 +1999,7 @@ namespace Vanara.PInvoke public HRESULT Result; /// The final USN value after create actions are performed. - public int CreateUsn; + public USN CreateUsn; /// /// Initializes a new instance of the struct with info from a file.