COM,返回日期信息

COM,返回日期信息,com,Com,我需要从COM服务器返回日期信息。我在IDL中看到了日期类型,在C/C++中它被映射为双精度类型。当我返回日期时,我会在内部将SYSTEMTIME转换为double,以匹配所需的输出类型,如下所示: ... comIFaceMethod(DATE* result) { SYSTEMTIME computed; ::SystemTimeToVariantTime(&computed, result); } 这是通过COM传输日期信息的正确方式吗?我问这个是因为这种方法很有效,但有时我也

我需要从COM服务器返回日期信息。我在IDL中看到了日期类型,在C/C++中它被映射为双精度类型。当我返回日期时,我会在内部将SYSTEMTIME转换为double,以匹配所需的输出类型,如下所示:

... comIFaceMethod(DATE* result)

{
SYSTEMTIME computed;
::SystemTimeToVariantTime(&computed, result);
}
这是通过COM传输日期信息的正确方式吗?我问这个是因为这种方法很有效,但有时我也会看到一些奇怪的结果,我不知道原因。我的最后一个选择是在COM中定义我自己的SYSTEMTIME结构来传输结果,但我更喜欢一个更好的解决方案


在上面的示例中,我计算了其他一些地方,并且还验证了SystemTimeToVariantTime转换的结果。代码示例显示了通过COM传输日期信息的正确方法。
我问这个问题是因为这种方法可行,但有时我也会看到一些奇怪的结果——它现在起作用了。

假设你真的给了计算变量一个合适的值,是的,这是正确的。不检查返回值当然是不正确的。@Hans,你的意思是不检查SystemTimeToVariantTime转换是否正常,是的,你是对的