我需要从COM服务器返回一个日期信息。我看到IDL中的DATE类型在C/c++中被映射为双类型。当我返回日期时,我会在内部将SYSTEMTIME转换为double,以便匹配所需的输出类型,如下所示:
... comIFaceMethod(DATE* result)
{
SYSTEMTIME computed;
::SystemTimeToVariantTime(&computed, result);
}
这是通过COM传递日期信息的正确方法吗?我问这个问题是因为这种方法有效,但我有时也会看到一些奇怪的结果,不知道原因。我的最后一个选择是在COM中定义我自己的SYSTEMTIME结构体来传输结果,但我更喜欢更好的解决方案…
在上面的例子中,我在其他地方计算了"computed",我还验证了SystemTimeToVariantTime转换的结果
代码示例展示了通过COM传递日期信息的正确方法。"我问这个是因为这种方法有效,但有时我也会看到一些奇怪的结果"-它现在有效。