aboutsummaryrefslogtreecommitdiff
path: root/help/ru/manager/usage/api.htm
diff options
context:
space:
mode:
Diffstat (limited to 'help/ru/manager/usage/api.htm')
-rw-r--r--help/ru/manager/usage/api.htm312
1 files changed, 312 insertions, 0 deletions
diff --git a/help/ru/manager/usage/api.htm b/help/ru/manager/usage/api.htm
new file mode 100644
index 0000000..df533b4
--- /dev/null
+++ b/help/ru/manager/usage/api.htm
@@ -0,0 +1,312 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <link rel="Stylesheet" type="text/css" href=
+ "../../default.css" />
+ <meta http-equiv="Content-Type" content=
+ "text/html; charset=utf-8" />
+
+ <title>Описание функций API лицензирования</title>
+ <style type="text/css">
+/*<![CDATA[*/
+ th {text-align:left;}
+ table {border-collapse:collapse; margin-top: 4px;}
+ td,th {border: 1px solid #B0B0B0; padding-left:10;padding-right:10;}
+ /*]]>*/
+ </style>
+</head>
+
+<body>
+ <h1>Описание функций API лицензирования</h1>
+
+ <p>API системы лицензирования является продолжением API VMProtect
+ и входит в его SDK. API позволяет задать серийный номер и
+ получить информацию о нем: подходит он к программе или нет, истек
+ ли срок действия, на кого зарегистрирован продукт и т.п. Также API
+ позволяет получить идентификатор оборудования, на котором
+ выполняется программа.</p><strong id=
+ "VMProtectSetSerialNumber">VMProtectSetSerialNumber</strong>
+
+ <p>Функция предназначена для загрузки серийного номера в систему
+ лицензирования. Полный формат вызова представлен ниже:</p>
+ <pre class="code">int VMProtectSetSerialNumber(const char *SerialNumber);
+</pre>
+
+ <p>Входной параметр <strong>SerialNumber</strong> должен
+ содержать указатель на текстовую строку с серийным номером в
+ кодировке base-64 и завершаемую нулем ('\0'). Функция возвращает
+ битовую маску флагов состояния серийного номера, аналогичную той,
+ что возвращает <strong>VMProtectGetSerialNumberState()</strong>,
+ подробнее о флагах будет написано ниже. Серийный номер считается
+ "хорошим", если функция вернула значение 0.</p><br />
+ <strong id=
+ "VMProtectGetSerialNumberState">VMProtectGetSerialNumberState</strong>
+
+ <p>Функция возвращает флаги состояния серийного номера,
+ предварительно установленного вызовом
+ <strong>VMProtectSetSerialNumber()</strong>.</p>
+ <pre class="code">int VMProtectGetSerialNumberState();
+</pre>
+
+ <p>Наличие хотя бы одного установленного флага говорит о
+ проблемах с серийным номером: программа не должна работать, если
+ установлен хотя бы один бит. Подробные значениях флагов описаны в
+ таблице:</p>
+
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr>
+ <th>Флаг</th>
+
+ <th>Значение</th>
+
+ <th>Описание</th>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_CORRUPTED</td>
+
+ <td>0x00000001</td>
+
+ <td>Система лицензирования повреждена. Возможные причины:
+ некорректная настройка проекта защиты, попытка взлома
+ программы.</td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_INVALID</td>
+
+ <td>0x00000002</td>
+
+ <td>Серийный номер некорректен. Флаг выставляется, если
+ система лицензирования не может расшифровать серийный
+ номер.</td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_BLACKLISTED</td>
+
+ <td>0x00000004</td>
+
+ <td>Серийный номер подходит к продукту, однако занесен в
+ черный список в VMProtect.</td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_DATE_EXPIRED</td>
+
+ <td>0x00000008</td>
+
+ <td>Срок действия серийного номера истек. Подробную
+ информацию о сроке действия можно получить вызовом
+ <strong>VMProtectGetSerialNumberData()</strong></td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_RUNNING_TIME_OVER</td>
+
+ <td>0x00000010</td>
+
+ <td>Время работы программы истекло. Подробную информацию о
+ времени работы программы можно получить вызовом
+ <strong>VMProtectGetSerialNumberData()</strong></td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_BAD_HWID</td>
+
+ <td>0x00000020</td>
+
+ <td>Идентификатор оборудования не совпадает с тем, что
+ записан в серийном номере.</td>
+ </tr>
+
+ <tr>
+ <td>SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED</td>
+
+ <td>0x00000040</td>
+
+ <td>Серийный номер не предназначен для работы с этой версией
+ защищаемой программы. Максимальную дату сборки программы, к
+ которой подходит этот серийный номер, можно узнать вызовом
+ <strong>VMProtectGetSerialNumberData()</strong>.</td>
+ </tr>
+ </table><br /><br />
+ <strong id=
+ "VMProtectGetSerialNumberData">VMProtectGetSerialNumberData</strong>
+
+ <p>Функция предназначена для получения информации о содержимом
+ серийного номера, установленного вызовом
+ <strong>VMProtectSetSerialNumber()</strong>. Формат вызова
+ представлен ниже:</p>
+ <pre class="code">bool VMProtectGetSerialNumberData(VMProtectSerialNumberData *Data, int Size);
+</pre>
+
+ <p>Первый параметр - указатель на структуру
+ <strong>VMProtectSerialNumberData</strong>, в которую будет
+ записана вся необходимая информация. Второй параметр - размер
+ структуры, передаваемой в первом параметре - служит для контроля
+ формата структуры. Функция возвращает FALSE в случаях, если система
+ лицензирования повреждена (см. флаг состояния
+ SERIAL_STATE_FLAG_CORRUPTED), если на вход подан нулевой адрес
+ структуры или если переданный размер структуры некорректен. Во
+ всех остальных случаях функция возвращает TRUE и записывает всю
+ информацию о серийном номере по указанном адресу. Ниже
+ описываются все элементы структуры:</p>
+
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr>
+ <th>Элемент</th>
+
+ <th>Тип</th>
+
+ <th>Описание</th>
+ </tr>
+
+ <tr>
+ <td>nState</td>
+
+ <td>int</td>
+
+ <td>Битовая маска флагов проверки ключа. Аналогична той, что
+ возвращает
+ <strong>VMProtectGetSerialNumberState()</strong>.</td>
+ </tr>
+
+ <tr>
+ <td>wUserName</td>
+
+ <td>wchar_t[256]</td>
+
+ <td>Имя покупателя в кодировке UNICODE, завершаемое
+ нулем.</td>
+ </tr>
+
+ <tr>
+ <td>wEMail</td>
+
+ <td>wchar_t[256]</td>
+
+ <td>E-Mail покупателя в кодировке UNICODE, завершаемый
+ нулем.</td>
+ </tr>
+
+ <tr>
+ <td>dtExpire</td>
+
+ <td>VMProtectDate</td>
+
+ <td>Дата окончания срока действия ключа. Формат структуры
+ VMProtectDate описан ниже.</td>
+ </tr>
+
+ <tr>
+ <td>dtMaxBuild</td>
+
+ <td>VMProtectDate</td>
+
+ <td>Максимальная дата сборки продукта, с которой будет
+ работать этот ключ. Формат структуры VMProtectDate описан
+ ниже.</td>
+ </tr>
+
+ <tr>
+ <td>bRunningTime</td>
+
+ <td>int</td>
+
+ <td>Количество минут, которое программа будет работать
+ (максимальная длина сессии). Измеряется в минутах,
+ отсчитывается с момента запуска программы.</td>
+ </tr>
+
+ <tr>
+ <td>nUserDataLength</td>
+
+ <td>unsigned char</td>
+
+ <td>Длина пользовательских данных, размещенных в поле
+ <strong>bUserData</strong>.</td>
+ </tr>
+
+ <tr>
+ <td>bUserData</td>
+
+ <td>unsigned char[255]</td>
+
+ <td>Пользовательские данные, записанные в ключ. Количество
+ актуальных байт указано в поле
+ <strong>nUserDataLength</strong>.</td>
+ </tr>
+ </table><br />
+
+ <p>Структура <strong>VMProtectDate</strong> предназначена для
+ компактного хранения даты. Ее поля описаны в таблице:</p>
+
+ <table border="1" cellspacing="0" cellpadding="2">
+ <tr>
+ <th>Элемент</th>
+
+ <th>Тип</th>
+
+ <th>Описание</th>
+ </tr>
+
+ <tr>
+ <td>wYear</td>
+
+ <td>unsigned short</td>
+
+ <td>Год.</td>
+ </tr>
+
+ <tr>
+ <td>bMonth</td>
+
+ <td>unsigned char</td>
+
+ <td>Месяц, нумерация начинается с единицы.</td>
+ </tr>
+
+ <tr>
+ <td>bDay</td>
+
+ <td>unsigned char</td>
+
+ <td>День, нумерация начинается с единицы.</td>
+ </tr>
+ </table><br />
+ <br />
+ <strong id=
+ "VMProtectGetCurrentHWID">VMProtectGetCurrentHWID</strong>
+
+ <p>Функция предназначена для получения идентификатора
+ оборудования, на котором работает программа. Формат вызова
+ следующий:</p>
+ <pre class="code">int VMProtectGetCurrentHWID(char * HWID, int Size);
+</pre>
+
+ <p>Первый параметр - указатель на область памяти, куда будет
+ записан идентификатор. Второй параметр - размер области данных.
+ Функция возвращает количество записанных байт с учетом
+ завершающего нуля ('\0'). Если вместо первого параметра подать
+ NULL, то функция вернет необходимое количество байт для записи
+ номера. Наиболее правильный способ вызова функции следующий:</p>
+ <pre class="code"><strong>int</strong> nSize = <strong>VMProtectGetCurrentHWID</strong>(NULL, 0); // получим необходимый размер буфера
+<strong>char *</strong>pBuf = <strong>new char</strong>[nSize]; // выделим буфер
+<strong>VMProtectGetCurrentHWID</strong>(pBuf, nSize); // получим идентификатор
+// используем его
+<strong>delete</strong> [] pBuf; // освободим память
+</pre><br />
+ <br />
+ <br />
+ <br />
+ <br />
+ <hr noshade="noshade" size="1" />
+
+ <div align="center">
+ © 2006-2015 Copyright VMProtect Software
+ </div>
+</body>
+</html>