Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Composition Setup
 

Функция GcaPI_Update позволяет перезаписывать данные защищенной ячейки или определитель алгоритма. При этом определитель алгоритма можно перезаписать только целиком, а в защищенной ячейке можно перезаписывать любой участок данных.

 

Входные параметрыВыходные параметрыСм. директорию:
"%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\ARM\"
Deck of Cards
id001
Card
defaulttrue
labelC
Code Block
languagecpp
int 
Wiki Markup
{dojo-tabs:theme=tundra|id=1} {dojo-tab:title=C|selected=true} *C* int
GcaPI_Update(	
  HANDLE hGrd,
  DWORD dwItemNum,
  DWORD dwAddr,
  DWORD dwLng,
  void *pData,
  DWORD dwUpdatePsw,
  DWORD dwMethod,
  void *pReserved
);	
{dojo-tab} {dojo-tab:title=C#|selected=true} *C#* {dojo-tab} {dojo-tab:title=Visual Basic (Declaration)} *Visual Basic* {dojo-tab} {dojo-tab:title=Visual C++} *Visual C++* {dojo-tab} {dojo-tabs}
Expand
title
Параметры функции

hGrd

не используется

dwItemNum

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

dwAddr

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

dwLng

длина блока данных, которые будут обновлены

pData

указатель на буфер, содержащий данные для обновления

dwUpdatePsw

зарезервировано

dwMethod

метод обновления данных. Задается одной из констант GrdUM_XXX

GrdUM_MOV

Данные из буфера pData заменяют старые данные

GrdUM_XOR

Данные из буфера pData складываются со старыми данными по модулю 2

pReserved

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

Expand
title
Возвращаемое значение функции

 

Возможные ошибки

GrdE_NoService

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

GrdE_InactiveItem

ячейка в деактивированном состоянии, обновление выполнить невозможно

GrdE_Overbound

адрес для обновления выходит за пределы определителя

 
Стандартный набор
Expand
titleОписание

Функция GcaPI_Update позволяет менять определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]). При этом определитель аппаратного алгоритма можно менять только целиком. При попытке изменить часть определителя возвращается код ошибки GrdE_InvalidArg. В защищенной ячейке можно менять любой участок данных.

Обновление данных в дескрипторе ячейки можно производить в том случае, когда она находится в активном состоянии.

Если алгоритм или ячейка находятся в активном состоянии (Active), функция возвращает GrdE_OK и производится обновление данных, начиная со смещения в определителе ячейки dwAddr. При этом данные из буфера pData длиной dwLng в зависимости от метода обновления dwMethod либо замещают старые данные, либо складываются со старыми данными по модулю 2.

Если смещение dwAddr задано слишком большим, возвращается ошибка GrdE_Overbound.

Если сумма dwAddr+dwLng выходит за доступные для чтения пределы, данных записывается ровно столько, сколько можно записать. При этом функция возвращает GrdE_OK  и никаких других кодов ошибки не генерируется.

Функции GcaPI_Read и GcaPI_Update игнорируют пароль для доступа к ячейке и счетчик ошибок ввода пароля.

Expand
titleПример