NT4/public/sdk/inc/ntlsapi.h
2020-09-30 17:12:29 +02:00

195 lines
7.2 KiB
C

/*
* LSAPI.H
*
* NOTE: If you are using this header file on the Windows for DOS platform,
* then you are required to include "windows.h" prior to including
* this header file.
*/
#ifndef LSAPI_H
#define LSAPI_H
#if defined(WINVER) // Windows for NT or DOS
#if defined(WINAPIV)
#define LS_API_ENTRY WINAPIV
#else
#define LS_API_ENTRY WINAPI
#endif
#else
#define LS_API_ENTRY
#endif
typedef unsigned long LS_STATUS_CODE;
typedef unsigned long LS_HANDLE;
// **************************************************
// Standard LSAPI C status codes
//***************************************************
#define LS_SUCCESS ((LS_STATUS_CODE) 0x0)
#define LS_BAD_HANDLE ((LS_STATUS_CODE) 0xC0001001)
#define LS_INSUFFICIENT_UNITS ((LS_STATUS_CODE) 0xC0001002)
#define LS_SYSTEM_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001003)
#define LS_LICENSE_TERMINATED ((LS_STATUS_CODE) 0xC0001004)
#define LS_AUTHORIZATION_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001005)
#define LS_LICENSE_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001006)
#define LS_RESOURCES_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001007)
#define LS_NETWORK_UNAVAILABLE ((LS_STATUS_CODE) 0xC0001008)
#define LS_TEXT_UNAVAILABLE ((LS_STATUS_CODE) 0x80001009)
#define LS_UNKNOWN_STATUS ((LS_STATUS_CODE) 0xC000100A)
#define LS_BAD_INDEX ((LS_STATUS_CODE) 0xC000100B)
#define LS_LICENSE_EXPIRED ((LS_STATUS_CODE) 0x8000100C)
#define LS_BUFFER_TOO_SMALL ((LS_STATUS_CODE) 0xC000100D)
#define LS_BAD_ARG ((LS_STATUS_CODE) 0xC000100E)
//***************************************************
//* Nt LS API data structure and constant
//***************************************************
#define NT_LS_USER_NAME ((ULONG) 0) // username only
#define NT_LS_USER_SID ((ULONG) 1) // SID only
typedef struct {
ULONG DataType; // Type of the following data, ie. user name, sid...
VOID *Data; // Actual data. username, sid, etc...
// if call the unicode API character data
// must be in unicode as well
BOOL IsAdmin;
} NT_LS_DATA;
//
// Prototypes for License Request routines
//
typedef LS_STATUS_CODE
(LS_API_ENTRY * PNT_LICENSE_REQUEST_W)(
LPWSTR ProductName,
LPWSTR Version,
LS_HANDLE *LicenseHandle,
NT_LS_DATA *NtData);
typedef LS_STATUS_CODE
(LS_API_ENTRY * PNT_LS_FREE_HANDLE)(
LS_HANDLE LicenseHandle );
#ifdef UNICODE
#define NtLicenseRequest NtLicenseRequestW
#else
#define NtLicenseRequest NtLicenseRequestA
#endif // !UNICODE
LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestA(
LPSTR ProductName,
LPSTR Version,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLicenseRequestW(
LPWSTR ProductName,
LPWSTR Version,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLSFreeHandle(
LS_HANDLE LicenseHandle );
// *************************************************************************
// OLD API After this point - Don't use
// *************************************************************************
/***************************************************/
/* standard LS API c datatype definitions */
/***************************************************/
typedef char LS_STR;
typedef unsigned long LS_ULONG;
typedef long LS_LONG;
typedef void LS_VOID;
typedef struct {
LS_STR MessageDigest[16]; /* a 128-bit message digest */
} LS_MSG_DIGEST;
typedef struct {
LS_ULONG SecretIndex; /* index of secret, X */
LS_ULONG Random; /* a random 32-bit value, R */
LS_MSG_DIGEST MsgDigest; /* the message digest h(in,R,S,Sx) */
} LS_CHALLDATA;
typedef struct {
LS_ULONG Protocol; /* Specifies the protocol */
LS_ULONG Size; /* size of ChallengeData structure */
LS_CHALLDATA ChallengeData; /* challenge & response */
} LS_CHALLENGE;
/***************************************************/
/* Standard LSAPI C constant definitions */
/***************************************************/
#define LS_DEFAULT_UNITS ((LS_ULONG) 0xFFFFFFFF)
#define LS_ANY ((LS_STR FAR *) "")
#define LS_USE_LAST ((LS_ULONG) 0x0800FFFF)
#define LS_INFO_NONE ((LS_ULONG) 0)
#define LS_INFO_SYSTEM ((LS_ULONG) 1)
#define LS_INFO_DATA ((LS_ULONG) 2)
#define LS_UPDATE_PERIOD ((LS_ULONG) 3)
#define LS_LICENSE_CONTEXT ((LS_ULONG) 4)
#define LS_BASIC_PROTOCOL ((LS_ULONG) 0x00000001)
#define LS_SQRT_PROTOCOL ((LS_ULONG) 0x00000002)
#define LS_OUT_OF_BAND_PROTOCOL ((LS_ULONG) 0xFFFFFFFF)
#define LS_NULL ((LS_VOID FAR *) NULL)
/***************************************************/
/* Standard LSAPI C function definitions */
/***************************************************/
LS_STATUS_CODE LS_API_ENTRY NtLSRequest(
LS_STR FAR *LicenseSystem,
LS_STR FAR *PublisherName,
LS_STR FAR *ProductName,
LS_STR FAR *Version,
LS_ULONG TotUnitsReserved,
LS_STR FAR *LogComment,
LS_CHALLENGE FAR *Challenge,
LS_ULONG FAR *TotUnitsGranted,
LS_HANDLE FAR *LicenseHandle,
NT_LS_DATA FAR *NtData);
LS_STATUS_CODE LS_API_ENTRY NtLSRelease(
LS_HANDLE LicenseHandle,
LS_ULONG TotUnitsConsumed,
LS_STR FAR *LogComment);
LS_STATUS_CODE LS_API_ENTRY NtLSUpdate(
LS_HANDLE LicenseHandle,
LS_ULONG TotUnitsConsumed,
LS_ULONG TotUnitsReserved,
LS_STR FAR *LogComment,
LS_CHALLENGE FAR *Challenge,
LS_ULONG FAR *TotUnitsGranted);
LS_STATUS_CODE LS_API_ENTRY NtLSGetMessage(
LS_HANDLE LicenseHandle,
LS_STATUS_CODE Value,
LS_STR FAR *Buffer,
LS_ULONG BufferSize);
LS_STATUS_CODE LS_API_ENTRY NtLSQuery(
LS_HANDLE LicenseHandle,
LS_ULONG Information,
LS_VOID FAR *InfoBuffer,
LS_ULONG BufferSize,
LS_ULONG FAR *ActualBufferSize);
LS_STATUS_CODE LS_API_ENTRY NtLSEnumProviders(
LS_ULONG Index,
LS_STR FAR *Buffer);
#endif /* LSAPI_H */