C#实现C++的SYSTEMTIME类型

做上位机开发免不了要调.dll库,最近有个要实现的库给过来,但是没有任何说明文档,只要下来一份C++的调用示例。按部就班,用到哪里写哪里,按照类型字长等,转成C#的类型。

碰到SYSTEMTIME,C#没有对应类型,这种情况下需要去到C++类型的定义里面。

typedef struct _SYSTEMTIME {
WORD wYear;
WORD wMonth;
WORD wDayOfWeek;
WORD wDay;
WORD wHour;
WORD wMinute;
WORD wSecond;
WORD wMilliseconds;
} SYSTEMTIME;

参考格式,在C#中封装好对应的结构体,C++中WORD对应C#中UInt16。

		[StructLayout(LayoutKind.Sequential)]
		public struct SYSTEMTIME
		{
			public UInt16 wYear;
			public UInt16 wMonth;
			public UInt16 wDayOfWeek;
			public UInt16 wDay;
			public UInt16 wHour;
			public UInt16 wMinute;
			public UInt16 wSecond;
			public UInt16 wMilliseconds;
		}

使用的时候再赋值就好了。

SYSTEMTIME sYSTEMTIME = new SYSTEMTIME();
                DateTime dateTime = DateTime.Now;
                sYSTEMTIME.wYear = (ushort)dateTime.Year;
                sYSTEMTIME.wMonth = (ushort)dateTime.Month;
                sYSTEMTIME.wDayOfWeek = (ushort)dateTime.DayOfWeek;
                sYSTEMTIME.wDay = (ushort)dateTime.Day;
                sYSTEMTIME.wHour = (ushort)dateTime.Hour;
                sYSTEMTIME.wMinute = (ushort)dateTime.Minute;
                sYSTEMTIME.wSecond = (ushort)dateTime.Second;
                sYSTEMTIME.wMilliseconds = (ushort)dateTime.Millisecond;