我正在尝试确定在我的C ++(Win32)应用上使用的正确类型,该应用正在接收返回C#DateTime.ToUniversalTime()
值的API调用。
所以我的问题是: 我应该使用U64来存储来自c#函数的返回值。或者使用正确的C ++类型。
客户端C ++环境正在使用
使用COM的Win32 + DirectX
没有CLR,没有WinRT,没有CLI
答案 0 :(得分:1)
有问题的API究竟返回了什么? ToUniversalTime
方法返回另一个DateTime
对象。如果要将其与Win32 API一起使用,则需要将其转换为FILETIME
结构,如下所示:
ULARGE_INTEGER uli;
uli.QuadPart = DateTime->ToFileTime();
FILETIME ft;
ft.dwLowDateTime = uli.LowPart;
ft.dwHighDateTime = uli.HighPart;
然后,您可以照常将FILETIME
转换为SYSTEMTIME
:
SYSTEMTIME st;
FileTimeToSystemTime(&ft, &st);
如果API方法返回long long
或类似内容,您可以将其复制到上面显示的uli.QuadPart
字段中。