2014-10-29 5 views
0

Я пытаюсь определить правильный тип для использования в моем приложении C++ (Win32), которое получает возврат вызова API, возвращающего значение C# DateTime.ToUniversalTime().C# DateTime.ToUniversalTime() в C++ Win32

Так что мой вопрос: Должен ли я использовать U64 для хранения возвращаемого значения из функции C# ... или того, что будет правильным типом C++ для использования.

среде клиент C++ использует
Win32 + DirectX с использованием COM

Нет CLR, No WinRT, No CLI

+0

Пользовательский хост CLR? COM? C++/CLI? WinRT? Существует несколько способов взаимодействия с управляемым кодом, вы должны быть явным. Опубликовать фрагмент. –

+0

Win32. DirectX, использующий COM - NO CLR, NO WinRT !! –

ответ

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, указанное выше.

+0

FileTime не является DateTime. Мне нужно вернуть DateTime .... мои клиенты не являются приложениями JUST C++. Что мне не хватает? –

+0

@SDDeveloper, если API возвращает объект .NET DateTime, тогда у вас нет выбора, кроме как использовать этот объект. Этот ответ просто дает вам варианты того, что с ним делать, как только вы его получите. –

+0

@SDDeveloper: ваш вопрос подразумевал, что вы получаете объект DateTime в своем приложении Win32 и хотите знать, как его обрабатывать. Если это не вопрос, который вы задаете, вам нужно предоставить более подробную информацию. –