strongly refer: http://www.pinvoke.net/default.aspx/kernel32.GetSystemInfo
DllImport("kernel32.dll", EntryPoint = "CreateFile")]static extern IntPtr CreateFile(string filename,MarshalAs(UnmanagedType.U4)]FileAccess fileaccess,MarshalAs(UnmanagedType.U4)]FileShare fileshare,int securityattributes,MarshalAs(UnmanagedType.U4)]FileMode creationdisposition,int flags,IntPtr template);
//[DllImport("kernel32.dll", EntryPoint = "CreateFile")]
//private static extern IntPtr CreateFile(string lpFileName, System.Int32 dwDesiredAccess, // System.Int32 dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, // System.Int32 dwCreationDisposition, System.Int32 dwFlagsAndAttributes, // IntPtr hTemplateFile); DllImport("kernel32.dll", EntryPoint = "SetFilePointer")]private static extern uint SetFilePointer(IntPtr hFile, int lDistanceToMove,IntPtr lpDistanceToMoveHigh, uint dwMoveMethod);
//[DllImport("kernel32.dll", EntryPoint = "SetFilePointer")] //private static extern System.Int32 SetFilePointer( // IntPtr hFile,
//[DllImport("kernel32.dll", EntryPoint = "WriteFile")] //private static extern bool WriteFile(
//public void SetStamp(string strFile, System.Int32 i32Stamp) //{
// byte[] buffer = { (byte)(i32Stamp << 16 >> 24), // (byte)(i32Stamp << 24 >> 24), // (byte)(i32Stamp >> 24), // (byte)(i32Stamp << 8 >> 24) }; // uint uiWrittenLen;
// System.Threading.NativeOverlapped lpOverlapped = new NativeOverlapped(); // IntPtr filePtr = CreateFile(strFile, FileAccess.ReadWrite, FileShare.ReadWrite, // 0, FileMode.Open, 0, IntPtr.Zero); // SetFilePointer(filePtr, 8, IntPtr.Zero, 0); //why does it not work? // WriteFile(filePtr, buffer, (uint)(buffer.Length), out uiWrittenLen, ref lpOverlapped); // CloseHandle(filePtr); //} // IntPtr hFile, // LPCVOID lpBuffer, // System.Int32 nNumberOfBytesToWrite, // LPDWORD lpNumberOfBytesWritten, // LPOVERLAPPED lpOverlapped); DllImport("kernel32.dll", EntryPoint = "CloseHandle", SetLastError = true)]return: MarshalAs(UnmanagedType.Bool)]public static extern bool CloseHandle(IntPtr hObject); // LONG lDistanceToMove, // PLONG lpDistanceToMoveHigh, // System.Int32 dwMoveMethod); DllImport ( "kernel32.dll" , EntryPoint = "WriteFile" )] private static extern bool WriteFile( IntPtr hFile, byte [] lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, In ] ref System.Threading. NativeOverlapped lpOverlapped);