Приложения
Приложение А. Функции, константы и структуры RDS
А.5. Сервисные функции и макросы RDS
А.5.2. Управление работой RDS и функции общего назначения
Описываются различные функции и макроопределения общего назначения, используемые для управления приложением RDS, переключения режимов, получения общесистемной информации и т.п.
А.5.2.1. Макросы RDS_DWORDVERDATE и RDS_DWORDVERDATESHORT – преобразование даты в беззнаковое целое для отображения вместе с версией
Макрос RDS_DWORDVERDATE предназначен для описания даты и времени создания DLL с моделью в формате беззнакового целого (DWORD). Этот формат используется в окне информации о схеме на вкладках «» и «». Дополнительно определен макрос RDS_DWORDVERDATESHORT, описывающий только дату без времени
RDS_DWORDVERDATE(
year, // Год
month, // Месяц
day, // День
hour, // Час
minute, // Минута
quarter // Четверть минуты (0-3)
)
RDS_DWORDVERDATESHORT(
year, // Год
month, // Месяц
day // День
)
Определения
#define RDS_DWORDVERDATE(year,month,day,hour,minute,quarter) ( \ (((((year)-2000))&0x3ff)<<22) | \ (((month)&0xf)<<18) | \ (((day)&0x1f)<<13) | \ (((hour)&0x1f)<<8) | \ (((minute)&0x3f)<<2) | \ ((quarter)&3) ) #define RDS_DWORDVERDATESHORT(year,month,day) ( \ (((((year)-2000))&0x3ff)<<22) | \ (((month)&0xf)<<18) | \ (((day)&0x1f)<<13) )
Параметры
- year (целое число)
- Год даты сборки. Нельзя указывать год раньше 2000.
- month (целое число)
- Месяц даты сборки.
- day (целое число)
- День месяца даты сборки.
- hour (целое число)
- Час времени сборки или 0.
- minute (целое число)
- Минута времени сборки или 0.
- quarter (целое число)
- Начинающийся с нуля номер четвертьминутного интервала времени сборки или 0.
Возвращаемое значение
Число типа DWORD, собранное из параметров макроса.
Примечания
Если параметры hour, minute и quarter макроса RDS_DWORDVERDATE имеют нулевые значения, время считается не указанным.
Макросы RDS_DWORDVERDATE и RDS_DWORDVERDATESHORT чаще всего встречаются в главной функции DLL, где они используются для сообщения RDS информации о версии загруженной DLL.
Пример
#include <windows.h> #include <RdsDef.h> // Подготовка описаний сервисных функций #define RDS_SERV_FUNC_BODY GetInterfaceFunctions #include <RdsFunc.h> // Значение-индикатор ошибки вычислений double DoubleErrorValue; // Главная функция DLL int WINAPI DllMain(HINSTANCE /*hinst*/, unsigned long reason, void* /*lpReserved*/) { if(reason==DLL_PROCESS_ATTACH) // Загрузка DLL { // Получение доступа к функциям if(GetInterfaceFunctions()) { rdsGetHugeDouble(&DoubleErrorValue); // Информация о версии rdsReportVersion(RDS_INTVERSION(2,0,11), // Версия 2.0.11 RDS_DWORDVERDATESHORT(2022,9,28)); // Сборка 28.09.2022 } else RDS_SERV_ERROR_MSGW // Сообщение: старая версия RDS } return 1; }
См. также