Notice:This is preliminary documentation for technology that will be supported in future releases of Microsoft Windows.
The LS_CHALLENGE structure is used for both the challenge and the response of the LSRequest and LSUpdate license service functions. It is the main structure in the challenge/response mechanism, and it is supported by all challenge/response protocols.
typedef struct _LS_CHALLENGE { LS_ULONG Protocol; LS_ULONG Size; LS_CHALLDATA ChallengeData; } LS_CHALLENGE;
Use the LS_CHALLDATA structure to pass the challenge to the license system. The license system also returns the challenge response in the LS_CHALLDATA structure. Therefore, the number of bytes specified in the Size member on entry must be large enough to accommodate the challenge response. If the structure is not large enough to accommodate it, the error LS_BUFFER_TOO_SMALL is returned.
Because the LS_CHALLDATA structure can vary depending on the protocol specified in the Protocol member, this structure must be a single contiguous entity in memory, and must not exceed the number of bytes specified in the Size member. It cannot contain any pointers.
LSAPI passes the Protocol, the Size of the LS_CHALLDATA structure, and the actual data contained in the structure to the license system. The license system, in turn, casts the byte sequence into the appropriate structure based on the Protocol specified.
The constant value LS_BASIC_PROTOCOL specifies a standard basic challenge protocol that is supported by all LSAPI-compliant license systems. When the Protocol specified is LS_OUT_OF_BAND_PROTOCOL, there is no challenge and no response.