Включение и определение режима HID

Здравствуйте.

Наш продукт использует ключи Guardant Sign, которые умеют работать в режиме HID.
Для предпродажной подготовки ключей используется собственный софт для прошивки памяти ключа.

С переводом в режим HID я разобрался, надо вызывать GrdProtect с параметром dwGlobalFlags=GrdGF_HID.

Не понятно, как и когда использовать функцию GrdSetDriverMode.
У меня всегда выдает ошибку 1 GrdE_DongleNotFound.
В примерах из SDK нигде не вызывается.
Проблема в том, что ключ Sign, а не Code? Хотелось бы пояснений на этот счет.

Второй вопрос по определению текущего режима ключа Guardant driver/HID.
Утилита grddiag.exe показывает "Глобальные флаги HID".
Как мне программно считать глобальные флаги?
В адресах GrdSAM_... или GrdUAM_... для GrdRead ничего похожего не нашел.

Если я руками в grdutil.exe переключаю Driver/HID в панели инструментов, то вижу, что в .nsd-файле меняется 4 байта со смещением 4 в Data. Как мне в runtime поймать это отличие в памяти ключа?