public void Dispose() { if (UnionChoice == UnionChoice.File) { using (var info = new WintrustFileInfo()) { Marshal.PtrToStructure(InfoStruct, info); } Marshal.DestroyStructure(InfoStruct, typeof(WintrustFileInfo)); } Marshal.FreeHGlobal(InfoStruct); }
private static uint WinVerifyTrust(string fileName) { var actionGenericVerifyV2 = new Guid("{00AAC56B-CD44-11d0-8CC2-00C04FC295EE}"); using (var fileInfo = new WintrustFileInfo(fileName, Guid.Empty)) using (var guidPtr = new UnmanagedPointer(Marshal.AllocHGlobal(Marshal.SizeOf(typeof(Guid))), AllocMethod.HGlobal)) using (var dataPtr = new UnmanagedPointer(Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WintrustData))), AllocMethod.HGlobal)) { var data = new WintrustData(fileInfo); IntPtr pGuid = guidPtr, pData = dataPtr; Marshal.StructureToPtr(actionGenericVerifyV2, pGuid, true); Marshal.StructureToPtr(data, pData, true); return(WinVerifyTrust(IntPtr.Zero, pGuid, pData)); } }
public WintrustData(WintrustFileInfo fileInfo) { CbStruct = (uint)Marshal.SizeOf(typeof(WintrustData)); InfoStruct = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(WintrustFileInfo))); Marshal.StructureToPtr(fileInfo, InfoStruct, false); UnionChoice = UnionChoice.File; PolicyCallbackData = IntPtr.Zero; SipCallbackData = IntPtr.Zero; UiChoice = UiChoice.NoUi; RevocationChecks = RevocationCheckFlags.None; StateAction = StateAction.Ignore; StateData = IntPtr.Zero; UrlReference = IntPtr.Zero; ProviderFlags = TrustProviderFlags.Safer; UiContext = UiContext.Execute; }