Files
WorkIndicator/Delcom/FileIODeclarations.cs
2014-05-01 09:35:06 -04:00

54 lines
2.3 KiB
C#

using System;
using System.Runtime.InteropServices;
using Microsoft.Win32.SafeHandles;
namespace WorkIndicator.Delcom
{
internal sealed class FileIODeclarations
{
internal const Int32 FileFlagOverlapped = 0x40000000;
internal const Int32 FileShareRead = 1;
internal const Int32 FileShareWrite = 2;
internal const UInt32 GenericRead = 0x80000000;
internal const UInt32 GenericWrite = 0x40000000;
internal const Int32 InvalidHandleValue = -1;
internal const Int32 OpenExisting = 3;
internal const Int32 WaitTimeout = 0x102;
internal const Int32 WaitObject0 = 0;
[StructLayout(LayoutKind.Sequential)]
internal class SecurityAttributes
{
internal Int32 nLength;
internal Int32 lpSecurityDescriptor;
internal Int32 bInheritHandle;
}
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Int32 CancelIo(SafeFileHandle hFile);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern IntPtr CreateEvent(IntPtr securityAttributes, Boolean bManualReset, Boolean bInitialState, String lpName);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern SafeFileHandle CreateFile(String lpFileName, UInt32 dwDesiredAccess, Int32 dwShareMode, IntPtr lpSecurityAttributes, Int32 dwCreationDisposition, Int32 dwFlagsAndAttributes, Int32 hTemplateFile);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
internal static extern Boolean GetOverlappedResult(SafeFileHandle hFile, IntPtr lpOverlapped, ref Int32 lpNumberOfBytesTransferred, Boolean bWait);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Boolean ReadFile(SafeFileHandle hFile, IntPtr lpBuffer, Int32 nNumberOfBytesToRead, ref Int32 lpNumberOfBytesRead, IntPtr lpOverlapped);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Int32 WaitForSingleObject(IntPtr hHandle, Int32 dwMilliseconds);
[DllImport("kernel32.dll", SetLastError = true)]
internal static extern Boolean WriteFile(SafeFileHandle hFile, Byte[] lpBuffer, Int32 nNumberOfBytesToWrite, ref Int32 lpNumberOfBytesWritten, IntPtr lpOverlapped);
}
}