The protection key information record.
    typedef struct {
        UInt32            keySerialNumber;
        UInt32            protMode;
        UInt32            numberOfLicenses;
        UInt16            keyBoxMask;
        GSTime            expirationTime;
        GS::UniString     partnerID;
    } API_ProtectionInfo;
    
Members
- keySerialNumber
 - The unique serial number of the hardware key.
 - protMode
 - The protection mode.
 - numberOfLicenses 

 - The number of licenses programmed into the key.
 - keyBoxMask 

 - Box mask of the unique serial number of the hardware key.
 - expirationTime 

 - Expiration time of an ARCHICAD LIVE! subscription.
 - partnerID 

 - When ARCHICAD runs on an SSA license (see 
APIPROT_SSA_MASK) this field contains the internal identifier of the reseller. 
Remarks
The keySerialNumber gives the unique serial number of the hardware key.
The protMode field specifies the protection mode. You can use the following predefined masks to retrieve information about the protection type.
- APIPROT_SITE_MASK: More license (full version)
 - APIPROT_NFR_MASK: Not For Resale version (full version)
 - APIPROT_SCHOOL_MASK: School version (full version)
 - APIPROT_PPU_MASK: PPU version (full version)
 - APIPROT_NET_MASK: Network licensing (full version)
 - APIPROT_TW_MASK: TeamWork functionality is on
 - APIPROT_PROTEDU_MASK: Education version
 - APIPROT_START_MASK 
: Start edition - APIPROT_SSA_MASK 
: Software Service Agreement (SSA) 
Usable masks in case of no hardware key :
- APIPROT_EDU_MASK: Education version
 - APIPROT_DEMO_MASK: Demo version
 - APIPROT_TRIAL_MASK: Trial version
 - APIPROT_BTC_MASK 
: BIM Cloud Team Client version 
(Use bitwise-AND operator to find out your hardware key parameters.)
Call the ACAPI_Environment function with the APIEnv_ProtectionDataID function code to get this data.
From API 21 you shouldn’t call BNZeroMemory or memset on this structure.
Requirements
- Version: API 2.1 or later
 - Header: APIdefs_Environment.h