Функция(метод) GrdPI_GetTimeLimit возвращает оставшееся время работы алгоритма или защищенной ячейки.

int GrdPI_GetTimeLimit(
  HANDLE hGrd,				
  DWORD	dwItemNum,			
  TGrdSystemTime *pGrdSystemTime,
  void *pReserved
);

hGrd

хэндл, через который будет выполнена данная операция

dwItemNum

числовое имя аппаратного алгоритма/защищенной ячейки

pGrdSystemTime

указатель на структуру TGrdSystemTime:

typedef struct {
    WORD wYear; // The year (2000 - 2099)
    WORD wMonth; // The month (January = 1, February = 2, ...)
    WORD wDayOfWeek; // The day of the week (Sunday = 0, Monday = 1, ...)
    WORD wDay; // The day of the month (1-31)
    WORD wHour; // The hour (0-23)
    WORD wMinute; // The minute (0-59)
    WORD wSecond; // The second (0-59)
    WORD wMilliseconds; // The millisecond (0-999) 
} TGrdSystemTime;
 

pReserved

зарезервировано, должно быть равно NULL

GrdE_OK

нет ошибок

GrdE_NeedInitialization

требуется инициализация API (вызов GrdStartup)

GrdE_InvalidHandle

недействительный хэндл

GrdE_NoService

для алгоритма/ячейки сервис не предусмотрен

GrdE_InvalidArg

недопустимый параметр при вызове функции

Функция GrdPI_GetTimeLimit возвращает оставшееся время работы алгоритма или защищённой ячейки. Числовое имя алгоритма или защищённой ячейки задается параметром dwItemNum. Для работы требуется предварительно установить Private Read Code при помощи функции GrdSetAccessCodes. Если время работы алгоритма неограниченно, возвращается ошибка GrdE_NoService.

При использовании механизма DeadTime (а также и для LifeTime, т. к. после активации алгоритма логика работы механизма времени полностью идентична DeadTime) с Time-ключами, оставшееся число дней до активации будет отображаться для обратного порядка месяцев (при этом общее время до деактивации будет рассчитано корректно).

К примеру:

При задании

  • времени ключа: 1 января 2008, 00-00-00,
  • времени деактивации ключа: 1 марта 2008, 00-00-03 (либо время жизни 2 месяца 3 секунды):
  1.  Если используется DeadTime-механизм, то после первого вызова GrdPI_GetTimeLimit вернется 2 месяца 2 секунды, после вызова GrdPI_GetTimeLimit через 3 секунды вернется 1 месяц, 28 дней, 23 часа, 59 минут, 59 секунд. Т. о. произошел "размен" февраля, а не текущего месяца. 
  2.  Если используется LifeTime-механизм, то в зависимости поля state структуры LifeTime:

- 1 (алгоритм активирован): все как в п.1.

- 0 (алгоритм не активирован): до первого вызова GrdTransform будет возвращаться 2 месяца, 3 секунды, после него - как в п.1.

Примечательно, что пересчет структуры времени происходит в момент активации алгоритма (при первом вызове GrdTransform). К примеру, при использовании механизма LifeTime, состояния "0"(не активирован), результатом задания времени жизни, к примеру 255 секунд, до активации алгоритма функция GrdPI_GetTimeLimit будет возвращать 255 секунд, после активации - произойдет пересчет в минуты и секунды.

Т. о. при проектировании ПО рекомендуется опираться на совокупность значений оставшегося до деактивации времени, нежели на отдельное число дней.

При указании нулевого времени жизни алгоритма (механизм LifeTime) после первого вызова GrdTransform алгоритм деактивируется не моментально, а через ~секунду.

public static GrdE GrdPI_GetTimeLimit(Handle grdHandle, GrdAlgNum algNum, out GrdSystemTime systemTime)

grdHandle [in] 

Тип: Handle

Нэндл, через который будет выполнена данная операция.

algNum [in] 

Тип: GrdAlgNum

Числовое имя аппаратного алгоритма/защищенной ячейки.

systemTime [out]

Тип: GrdSystemTime

Указатель на структуру GrdSystemTime

GrdE.OK

нет ошибок

GrdE.NeedInitialization

требуется инициализация API (вызов GrdStartup)

GrdE.InvalidHandle

недействительный хэндл

GrdE.NoService

для алгоритма/ячейки сервис не предусмотрен

GrdE.InvalidArg

недопустимый параметр при вызове функции

Метод GrdPI_GetTimeLimit возвращает оставшееся время работы алгоритма или защищённой ячейки. Числовое имя алгоритма или защищённой ячейки задается параметром algNum. Для работы требуется предварительно установить Private Read Code при помощи метода GrdSetAccessCodes. Если время работы алгоритма неограниченно, возвращается ошибка GrdE.NoService.

При использовании механизма DeadTime (а также и для LifeTime, т. к. после активации алгоритма логика работы механизма времени полностью идентична DeadTime) с Time-ключами, оставшееся число дней до активации будет отображаться для обратного порядка месяцев (при этом общее время до деактивации будет рассчитано корректно).

К примеру:

При задании

  • времени ключа: 1 января 2008, 00-00-00,
  • времени деактивации ключа: 1 марта 2008, 00-00-03 (либо время жизни 2 месяца 3 секунды):
  1.  Если используется DeadTime-механизм, то после первого вызова GrdPI_GetTimeLimit вернется 2 месяца 2 секунды, после вызова GrdPI_GetTimeLimit через 3 секунды вернется 1 месяц, 28 дней, 23 часа, 59 минут, 59 секунд. Т. о. произошел "размен" февраля, а не текущего месяца. 
  2.  Если используется LifeTime-механизм, то в зависимости поля state структуры LifeTime:

- 1 (алгоритм активирован): все как в п.1.

- 0 (алгоритм не активирован): до первого вызова GrdTransform будет возвращаться 2 месяца, 3 секунды, после него - как в п.1.

Примечательно, что пересчет структуры времени происходит в момент активации алгоритма (при первом вызове GrdTransform). К примеру, при использовании механизма LifeTime, состояния "0"(не активирован), результатом задания времени жизни, к примеру 255 секунд, до активации алгоритма метод GrdPI_GetTimeLimit будет возвращать 255 секунд, после активации - произойдет пересчет в минуты и секунды.

Т. о. при проектировании ПО рекомендуется опираться на совокупность значений оставшегося до деактивации времени, нежели на отдельное число дней.

При указании нулевого времени жизни алгоритма (механизм LifeTime) после первого вызова GrdTransform алгоритм деактивируется не моментально, а через ~секунду.

public static GrdE GrdPI_GetTimeLimit(Handle grdHandle, int itemNum, GrdSystemTime systemTime)

grdHandle [in] 

Тип: Handle

Нэндл, через который будет выполнена данная операция.

itemNum [in] 

Тип: int

Числовое имя аппаратного алгоритма/защищенной ячейки.

systemTime [out]

Тип: GrdSystemTime

Указатель на структуру GrdSystemTime

GrdE.OK

нет ошибок

GrdE.NeedInitialization

требуется инициализация API (вызов GrdStartup)

GrdE.InvalidHandle

недействительный хэндл

GrdE.NoService

для алгоритма/ячейки сервис не предусмотрен

GrdE.InvalidArg

недопустимый параметр при вызове функции

Метод GrdPI_GetTimeLimit возвращает оставшееся время работы алгоритма или защищённой ячейки. Числовое имя алгоритма или защищённой ячейки задается параметром itemNum. Для работы требуется предварительно установить Private Read Code при помощи метода GrdSetAccessCodes. Если время работы алгоритма неограниченно, возвращается ошибка GrdE.NoService.

При использовании механизма DeadTime (а также и для LifeTime, т. к. после активации алгоритма логика работы механизма времени полностью идентична DeadTime) с Time-ключами, оставшееся число дней до активации будет отображаться для обратного порядка месяцев (при этом общее время до деактивации будет рассчитано корректно).

К примеру:

При задании

  • времени ключа: 1 января 2008, 00-00-00,
  • времени деактивации ключа: 1 марта 2008, 00-00-03 (либо время жизни 2 месяца 3 секунды):
  1.  Если используется DeadTime-механизм, то после первого вызова GrdPI_GetTimeLimit вернется 2 месяца 2 секунды, после вызова GrdPI_GetTimeLimit через 3 секунды вернется 1 месяц, 28 дней, 23 часа, 59 минут, 59 секунд. Т. о. произошел "размен" февраля, а не текущего месяца. 
  2.  Если используется LifeTime-механизм, то в зависимости поля state структуры LifeTime:

- 1 (алгоритм активирован): все как в п.1.

- 0 (алгоритм не активирован): до первого вызова GrdTransform будет возвращаться 2 месяца, 3 секунды, после него - как в п.1.

Примечательно, что пересчет структуры времени происходит в момент активации алгоритма (при первом вызове GrdTransform). К примеру, при использовании механизма LifeTime, состояния "0"(не активирован), результатом задания времени жизни, к примеру 255 секунд, до активации алгоритма метод GrdPI_GetTimeLimit будет возвращать 255 секунд, после активации - произойдет пересчет в минуты и секунды.

Т. о. при проектировании ПО рекомендуется опираться на совокупность значений оставшегося до деактивации времени, нежели на отдельное число дней.

При указании нулевого времени жизни алгоритма (механизм LifeTime) после первого вызова GrdTransform алгоритм деактивируется не моментально, а через ~секунду.