При изменении Device ID и сбросе ключа, изменяется это поле структуры, однако при повторном выполнении S4Enum получаются старые значения, пока не переткнуть ключ. Между тем, программа DevTest из комплекта разработчика нормально читает новое значение без перетыкания ключа.
- Код: Выделить всё
OpenDir_Info.dwS4OpenInfoSize := SizeOf(S4OPENINFO);
OpenDir_Info.dwShareMode := S4_SHARE_MODE;
Result := ( S4OpenEx(pKey, @OpenDir_Info) = S4_SUCCESS );
...
- Код: Выделить всё
var
p: PSENSE4_CONTEXT;
dwRet, dwLen: Cardinal;
dInfo: S4CreateDirInfo;
...
dwRet := S4VerifyPin(p, PansiChar(pin), 24, S4_DEV_PIN);
if ( dwRet = S4_SUCCESS ) then
begin
// change Device ID
dwRet := S4Control(p, S4_SET_DEVICE_ID, @dInfo.szAtr[0], l, nil, 0, dwLen);
if ( dwRet = S4_SUCCESS ) then
S4Control(p, S4_RESET_DEVICE, nil, 0, nil, 0, dwLen);
end;
...
Как нужно правильно читать?
P.S. Delphi 7