Versions Compared

Key

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

...

Deck of Cards
id001
Card
defaulttrue
labelC
Code Block
languagecpp
int GRD_API GrdPI_Read(	
  HANDLE hGrd,
  DWORD dwItemNum,
  DWORD dwAddr,
  DWORD dwLng,
  void *pData,
  DWORD dwReadPsw,
  void *pReserved
);	
Expand
titleПараметры функции

hGrd

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

dwItemNum

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

dwAddr

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

dwLng

длина блока данных, которые должны быть прочитаны

pData

указатель на буфер для прочитанных данных

dwReadPsw

пароль для чтения. Если пароль не используется, параметр должен быть равен 0

pReserved

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

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

pData

буфер, содержащий прочитанные данные

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

GrdE_AccessDenied

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

GrdE_StatusUnchangeable

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

GrdE_NoService

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

GrdE_InactiveItem

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

GrdE_Overbound

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

 

Стандартный набор ошибок

Card
labelC#
Code Block
languagec#
public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, byte[] data)
public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, byte[] data, uint readPsw)
public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, int lng, out byte[] data)
public static GrdE GrdPI_Read(Handle grdHandle,GrdAlgNum algNum, uint addr, int lng, out byte[] data, uint readPsw)

Wiki Markup
{dojo-tabs:theme=tundra|id=1}
{dojo-tab:title=C|selected=true}
*C*
int GRD_API GrdPI_Read(	
  HANDLE hGrd,
  DWORD dwItemNum,
  DWORD dwAddr,
  DWORD dwLng,
  void *pData,
  DWORD dwReadPsw,
  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

указатель на буфер для прочитанных данных

dwReadPsw

пароль для чтения. Если пароль не используется, параметр должен быть равен 0

pReserved

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

 

Expand
titleВозвращаемое значение метода

 

Card
labelJava
Code Block
languagejava
 
Expand
titleПараметры метода

 

Expand
titleВозвращаемое значение метода

 

Expand
titleВыходные параметры

pData

буфер, содержащий прочитанные данные

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

GrdE_AccessDenied

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

GrdE_StatusUnchangeable

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

GrdE_NoService

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

GrdE_InactiveItem

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

GrdE_Overbound

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

 

Expand
titleОписание

Функция GrdPI_Read позволяет читать определитель аппаратного алгоритма или данные защищенной ячейки (rs_K[]).

Чтение из ячейки можно производить в том случае, когда она находится в активном состоянии. Для чтения можно потребовать указать пароль dwReadPsw, который задается при создании ячейки или алгоритма. При создании ячейки в GRDUTIL пароль требуется по умолчанию.

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

Функции GrdPI_Read, GrdPI_Update в случае ключей Guardant Sign/Time не имеют ранее существовавшего ограничения в 255 байт на длину считываемого/перезаписываемого определителя алгоритма/защищенной ячейки. Это связано с отсутствием в указанных ключах ограничения на размер определителя.

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

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

Если при попытке чтения активной ячейки был указан неверный пароль dwReadPsw, функция GrdPI_Read возвращает ошибку GrdE_AccessDenied. При этом автоматически в ключе уменьшается счетчик ошибок доступа к ячейке, который задается при создании ячейки. Когда значение счетчика ошибок доходит до 0, статус ячейки становится неизменяемым, то есть ячейку больше невозможно активировать/деактивировать/читать/менять ее значение. Однако если алгоритм находился в состоянии Active, функция GrdTransform будет нормально работать.

Expand
titleПример

Пример для используемого средства разработки см. в директории:

"\%Program Files%\Guardant\Guardant 6\%PublicCode%\Samples\x86\Win32\General Guardant API\"
или
"\%Program Files%\Guardant\Guardant 6\%Public Code%\Samples\x64\Win64\General Guardant API\"