mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
5.0 KiB
62 lines
5.0 KiB
using System;
|
|
using System.Diagnostics.CodeAnalysis;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
|
|
namespace Alphaleonis.Win32.Filesystem
|
|
{
|
|
partial class NativeMethods
|
|
{
|
|
/// <summary>Opens an encrypted file in order to backup (export) or restore (import) the file.</summary>
|
|
/// <returns>If the function succeeds, it returns ERROR_SUCCESS.</returns>
|
|
/// <returns>If the function fails, it returns a nonzero error code defined in WinError.h. You can use FormatMessage with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic text description of the error.</returns>
|
|
/// <remarks>Minimum supported client: Windows XP Professional [desktop apps only]</remarks>
|
|
/// <remarks>Minimum supported server: Windows Server 2003 [desktop apps only]</remarks>
|
|
/// <param name="lpFileName">The name of the file to be opened.</param>
|
|
/// <param name="ulFlags">The operation to be performed.</param>
|
|
/// <param name="pvContext">[out] The address of a context block that must be presented in subsequent calls to
|
|
/// ReadEncryptedFileRaw, WriteEncryptedFileRaw, or CloseEncryptedFileRaw.</param>
|
|
[SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule")]
|
|
[DllImport("Advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode, EntryPoint = "OpenEncryptedFileRawW"), SuppressUnmanagedCodeSecurity]
|
|
[return: MarshalAs(UnmanagedType.U4)]
|
|
internal static extern uint OpenEncryptedFileRaw([MarshalAs(UnmanagedType.LPWStr)] string lpFileName, EncryptedFileRawMode ulFlags, out SafeEncryptedFileRawHandle pvContext);
|
|
|
|
|
|
/// <summary>Closes an encrypted file after a backup or restore operation, and frees associated system resources.</summary>
|
|
/// <remarks>Minimum supported client: Windows XP Professional [desktop apps only]</remarks>
|
|
/// <remarks>Minimum supported server: Windows Server 2003 [desktop apps only]</remarks>
|
|
/// <param name="pvContext">A pointer to a system-defined context block. The OpenEncryptedFileRaw function returns the context block.</param>
|
|
[SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule")]
|
|
[DllImport("Advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
|
|
internal static extern void CloseEncryptedFileRaw(IntPtr pvContext);
|
|
|
|
|
|
/// <summary>Backs up (export) encrypted files. This is one of a group of Encrypted File System (EFS) functions that is intended to implement backup and restore functionality, while maintaining files in their encrypted state.</summary>
|
|
/// <returns>If the function succeeds, it returns ERROR_SUCCESS.</returns>
|
|
/// <returns>If the function fails, it returns a nonzero error code defined in WinError.h. You can use FormatMessage with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic text description of the error.</returns>
|
|
/// <remarks>Minimum supported client: Windows XP Professional [desktop apps only]</remarks>
|
|
/// <remarks>Minimum supported server: Windows Server 2003 [desktop apps only]</remarks>
|
|
[SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule"), SuppressUnmanagedCodeSecurity]
|
|
[DllImport("Advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
|
|
[return: MarshalAs(UnmanagedType.U4)]
|
|
internal static extern uint ReadEncryptedFileRaw([MarshalAs(UnmanagedType.FunctionPtr)] EncryptedFileRawExportCallback pfExportCallback, IntPtr pvCallbackContext, SafeEncryptedFileRawHandle pvContext);
|
|
|
|
|
|
/// <summary>Restores (import) encrypted files. This is one of a group of Encrypted File System (EFS) functions that is intended to implement backup and restore functionality, while maintaining files in their encrypted state.</summary>
|
|
/// <returns>If the function succeeds, it returns ERROR_SUCCESS.</returns>
|
|
/// <returns>If the function fails, it returns a nonzero error code defined in WinError.h. You can use FormatMessage with the FORMAT_MESSAGE_FROM_SYSTEM flag to get a generic text description of the error.</returns>
|
|
/// <remarks>Minimum supported client: Windows XP Professional [desktop apps only]</remarks>
|
|
/// <remarks>Minimum supported server: Windows Server 2003 [desktop apps only]</remarks>
|
|
[SuppressMessage("Microsoft.Security", "CA5122:PInvokesShouldNotBeSafeCriticalFxCopRule")]
|
|
[DllImport("Advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode), SuppressUnmanagedCodeSecurity]
|
|
[return: MarshalAs(UnmanagedType.U4)]
|
|
internal static extern uint WriteEncryptedFileRaw([MarshalAs(UnmanagedType.FunctionPtr)] EncryptedFileRawImportCallback pfExportCallback, IntPtr pvCallbackContext, SafeEncryptedFileRawHandle pvContext);
|
|
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
internal delegate int EncryptedFileRawExportCallback(IntPtr pbData, IntPtr pvCallbackContext, uint ulLength);
|
|
|
|
[SuppressUnmanagedCodeSecurity]
|
|
internal delegate int EncryptedFileRawImportCallback(IntPtr pbData, IntPtr pvCallbackContext, ref uint ulLength);
|
|
}
|
|
}
|
|
|