1562 lines
35 KiB
C
1562 lines
35 KiB
C
/*++
|
|
|
|
Copyright (c) 1994-95 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
llsapi.h
|
|
|
|
Abstract:
|
|
|
|
License logging server's RPC API's.
|
|
|
|
Author:
|
|
|
|
Arthur Hanson (arth) 21-Mar-1995
|
|
|
|
Environment:
|
|
|
|
User Mode - Win32
|
|
|
|
Revision History:
|
|
|
|
Jeff Parham (jeffparh) 04-Dec-1995
|
|
o Added type definitions, macros, and prototypes for extended RPC APIs
|
|
and license certificate APIs (available only post-3.51).
|
|
o Corrected prototypes for LlsServerEnumW(), LlsServerEnumA(),
|
|
LlsLocalProductInfoGetW(), and LlsLocalProductInfoGetA().
|
|
|
|
--*/
|
|
|
|
#ifndef _LLSAPI_H
|
|
#define _LLSAPI_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#define LLS_FLAG_LICENSED 0x0001
|
|
#define LLS_FLAG_UPDATE 0x0002
|
|
#define LLS_FLAG_SUITE_USE 0x0004
|
|
#define LLS_FLAG_SUITE_AUTO 0x0008
|
|
|
|
#define LLS_FLAG_PRODUCT_PERSEAT 0x0010
|
|
#define LLS_FLAG_PRODUCT_SWITCH 0x0020
|
|
|
|
#define LLS_FLAG_DELETED 0x1000
|
|
|
|
|
|
typedef PVOID LLS_HANDLE, *PLLS_HANDLE;
|
|
typedef PVOID LLS_REPL_HANDLE, *PLLS_REPL_HANDLE;
|
|
|
|
#define LLS_INVALID_LICENSE_HANDLE ( 0xFFFFFFFF )
|
|
|
|
#define LLS_NUM_SECRETS ( 4 )
|
|
|
|
typedef struct _LLS_LICENSE_INFO_0 {
|
|
LPTSTR Product;
|
|
LONG Quantity;
|
|
DWORD Date;
|
|
LPTSTR Admin;
|
|
LPTSTR Comment;
|
|
} LLS_LICENSE_INFO_0, *PLLS_LICENSE_INFO_0;
|
|
|
|
typedef struct _LLS_LICENSE_INFO_1 {
|
|
LPTSTR Product;
|
|
LPTSTR Vendor;
|
|
LONG Quantity;
|
|
DWORD MaxQuantity;
|
|
DWORD Date;
|
|
LPTSTR Admin;
|
|
LPTSTR Comment;
|
|
DWORD AllowedModes;
|
|
DWORD CertificateID;
|
|
LPTSTR Source;
|
|
DWORD ExpirationDate;
|
|
DWORD Secrets[ LLS_NUM_SECRETS ];
|
|
} LLS_LICENSE_INFO_1, *PLLS_LICENSE_INFO_1;
|
|
|
|
typedef struct _LLS_PRODUCT_INFO_0 {
|
|
LPTSTR Product;
|
|
} LLS_PRODUCT_INFO_0, *PLLS_PRODUCT_INFO_0;
|
|
|
|
typedef struct _LLS_PRODUCT_INFO_1 {
|
|
LPTSTR Product;
|
|
ULONG Purchased;
|
|
ULONG InUse;
|
|
ULONG ConcurrentTotal;
|
|
ULONG HighMark;
|
|
} LLS_PRODUCT_INFO_1, *PLLS_PRODUCT_INFO_1;
|
|
|
|
typedef struct _LLS_PRODUCT_USER_INFO_0 {
|
|
LPTSTR User;
|
|
} LLS_PRODUCT_USER_INFO_0, *PLLS_PRODUCT_USER_INFO_0;
|
|
|
|
typedef struct _LLS_PRODUCT_USER_INFO_1 {
|
|
LPTSTR User;
|
|
DWORD Flags;
|
|
DWORD LastUsed;
|
|
ULONG UsageCount;
|
|
} LLS_PRODUCT_USER_INFO_1, *PLLS_PRODUCT_USER_INFO_1;
|
|
|
|
|
|
typedef struct _LLS_PRODUCT_LICENSE_INFO_0 {
|
|
LONG Quantity;
|
|
DWORD Date;
|
|
LPTSTR Admin;
|
|
LPTSTR Comment;
|
|
} LLS_PRODUCT_LICENSE_INFO_0, *PLLS_PRODUCT_LICENSE_INFO_0;
|
|
|
|
typedef struct _LLS_PRODUCT_LICENSE_INFO_1 {
|
|
LONG Quantity;
|
|
DWORD MaxQuantity;
|
|
DWORD Date;
|
|
LPTSTR Admin;
|
|
LPTSTR Comment;
|
|
DWORD AllowedModes;
|
|
DWORD CertificateID;
|
|
LPTSTR Source;
|
|
DWORD ExpirationDate;
|
|
DWORD Secrets[ LLS_NUM_SECRETS ];
|
|
} LLS_PRODUCT_LICENSE_INFO_1, *PLLS_PRODUCT_LICENSE_INFO_1;
|
|
|
|
typedef struct _LLS_USER_INFO_0 {
|
|
LPTSTR Name;
|
|
} LLS_USER_INFO_0, *PLLS_USER_INFO_0;
|
|
|
|
typedef struct _LLS_USER_INFO_1 {
|
|
LPTSTR Name;
|
|
DWORD Flags;
|
|
LPTSTR Group;
|
|
ULONG Licensed;
|
|
ULONG UnLicensed;
|
|
} LLS_USER_INFO_1, *PLLS_USER_INFO_1;
|
|
|
|
typedef struct _LLS_USER_INFO_2 {
|
|
LPTSTR Name;
|
|
DWORD Flags;
|
|
LPTSTR Group;
|
|
ULONG Licensed;
|
|
ULONG UnLicensed;
|
|
LPTSTR Products;
|
|
} LLS_USER_INFO_2, *PLLS_USER_INFO_2;
|
|
|
|
typedef struct _LLS_USER_PRODUCT_INFO_0 {
|
|
LPTSTR Product;
|
|
} LLS_USER_PRODUCT_INFO_0, *PLLS_USER_PRODUCT_INFO_0;
|
|
|
|
typedef struct _LLS_USER_PRODUCT_INFO_1 {
|
|
LPTSTR Product;
|
|
DWORD Flags;
|
|
DWORD LastUsed;
|
|
ULONG UsageCount;
|
|
} LLS_USER_PRODUCT_INFO_1, *PLLS_USER_PRODUCT_INFO_1;
|
|
|
|
typedef struct _LLS_GROUP_INFO_0 {
|
|
LPTSTR Name;
|
|
} LLS_GROUP_INFO_0, *PLLS_GROUP_INFO_0;
|
|
|
|
typedef struct _LLS_GROUP_INFO_1 {
|
|
LPTSTR Name;
|
|
LPTSTR Comment;
|
|
ULONG Licenses;
|
|
} LLS_GROUP_INFO_1, *PLLS_GROUP_INFO_1;
|
|
|
|
|
|
#define LLS_REPLICATION_TYPE_DELTA 0
|
|
#define LLS_REPLICATION_TYPE_TIME 1
|
|
|
|
#define LLS_MODE_LICENSE_SERVER 0
|
|
#define LLS_MODE_PDC 1
|
|
#define LLS_MODE_ENTERPRISE_SERVER 2
|
|
|
|
typedef struct _LLS_SERVICE_INFO_0 {
|
|
DWORD Version;
|
|
DWORD TimeStarted;
|
|
DWORD Mode;
|
|
LPTSTR ReplicateTo;
|
|
LPTSTR EnterpriseServer;
|
|
DWORD ReplicationType;
|
|
DWORD ReplicationTime;
|
|
DWORD UseEnterprise;
|
|
DWORD LastReplicated;
|
|
} LLS_SERVICE_INFO_0, *PLLS_SERVICE_INFO_0;
|
|
|
|
typedef struct _LLS_CONNECT_INFO_0 {
|
|
LPTSTR Domain;
|
|
LPTSTR EnterpriseServer;
|
|
} LLS_CONNECT_INFO_0, *PLLS_CONNECT_INFO_0;
|
|
|
|
|
|
typedef struct _LLS_SERVER_PRODUCT_INFO_0 {
|
|
LPTSTR Name;
|
|
} LLS_SERVER_PRODUCT_INFO_0, *PLLS_SERVER_PRODUCT_INFO_0;
|
|
|
|
typedef struct _LLS_SERVER_PRODUCT_INFO_1 {
|
|
LPTSTR Name;
|
|
DWORD Flags;
|
|
ULONG MaxUses;
|
|
ULONG MaxSetUses;
|
|
ULONG HighMark;
|
|
} LLS_SERVER_PRODUCT_INFO_1, *PLLS_SERVER_PRODUCT_INFO_1;
|
|
|
|
|
|
typedef struct _LLS_SERVER_INFO_0 {
|
|
LPTSTR Name;
|
|
} LLS_SERVER_INFO_0, *PLLS_SERVER_INFO_0;
|
|
|
|
typedef struct _LLS_CERTIFICATE_CLAIM_INFO_0
|
|
{
|
|
TCHAR ServerName[ 1 + MAX_COMPUTERNAME_LENGTH ];
|
|
LONG Quantity;
|
|
} LLS_CERTIFICATE_CLAIM_INFO_0, *PLLS_CERTIFICATE_CLAIM_INFO_0;
|
|
|
|
typedef struct _LLS_LOCAL_SERVICE_INFO_0
|
|
{
|
|
LPTSTR KeyName;
|
|
LPTSTR DisplayName;
|
|
LPTSTR FamilyDisplayName;
|
|
DWORD Mode;
|
|
DWORD FlipAllow;
|
|
DWORD ConcurrentLimit;
|
|
DWORD HighMark;
|
|
} LLS_LOCAL_SERVICE_INFO_0, *PLLS_LOCAL_SERVICE_INFO_0;
|
|
|
|
#define LLS_LICENSE_MODE_PER_SEAT ( 0 )
|
|
#define LLS_LICENSE_MODE_PER_SERVER ( 1 )
|
|
|
|
#define LLS_LICENSE_MODE_ALLOW_PER_SEAT ( 1 )
|
|
#define LLS_LICENSE_MODE_ALLOW_PER_SERVER ( 2 )
|
|
|
|
#define LLS_LICENSE_FLIP_ALLOW_PER_SEAT ( 1 )
|
|
#define LLS_LICENSE_FLIP_ALLOW_PER_SERVER ( 2 )
|
|
|
|
|
|
// capability flags; query with LlsCapabilityIsSupported
|
|
#define LLS_CAPABILITY_SECURE_CERTIFICATES ( 0 )
|
|
#define LLS_CAPABILITY_REPLICATE_CERT_DB ( 1 )
|
|
#define LLS_CAPABILITY_REPLICATE_PRODUCT_SECURITY ( 2 )
|
|
#define LLS_CAPABILITY_REPLICATE_USERS_EX ( 3 )
|
|
#define LLS_CAPABILITY_SERVICE_INFO_GETW ( 4 )
|
|
#define LLS_CAPABILITY_LOCAL_SERVICE_API ( 5 )
|
|
#define LLS_CAPABILITY_MAX ( 32 )
|
|
|
|
|
|
//***************************************************
|
|
//* Nt LS API data constants
|
|
//* (for use with LlsLicenseRequest() API)
|
|
//***************************************************
|
|
|
|
#define NT_LS_USER_NAME ((ULONG) 0) // username only
|
|
#define NT_LS_USER_SID ((ULONG) 1) // SID only
|
|
|
|
|
|
#ifndef NO_LLS_APIS
|
|
//
|
|
// Connection control API's
|
|
//
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsConnectW(
|
|
IN LPWSTR Server,
|
|
OUT PLLS_HANDLE Handle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsConnectA(
|
|
IN LPSTR Server,
|
|
OUT PLLS_HANDLE Handle
|
|
);
|
|
#ifdef UNICODE
|
|
# define LlsConnect LlsConnectW
|
|
#else
|
|
# define LlsConnect LlsConnectA
|
|
#endif
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CONNECT_W)( LPWSTR, PLLS_HANDLE );
|
|
typedef NTSTATUS (NTAPI *PLLS_CONNECT_A)( LPSTR, PLLS_HANDLE );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsConnectEnterpriseW(
|
|
IN LPWSTR Focus,
|
|
OUT PLLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
OUT LPBYTE *bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsConnectEnterpriseA(
|
|
IN LPSTR Focus,
|
|
OUT PLLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
OUT LPBYTE *bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsConnectEnterprise LlsConnectEnterpriseW
|
|
#else
|
|
#define LlsConnectEnterprise LlsConnectEnterpriseA
|
|
#endif
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CONNECT_ENTERPRISE_W)( LPWSTR, PLLS_HANDLE, DWORD, LPBYTE * );
|
|
typedef NTSTATUS (NTAPI *PLLS_CONNECT_ENTERPRISE_A)( LPSTR, PLLS_HANDLE, DWORD, LPBYTE * );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsClose(
|
|
IN LLS_HANDLE Handle
|
|
);
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CLOSE)( LLS_HANDLE );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsFreeMemory(
|
|
IN PVOID bufptr
|
|
);
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_FREE_MEMORY)( PVOID );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsEnterpriseServerFindW(
|
|
IN LPWSTR Focus,
|
|
IN DWORD Level,
|
|
OUT LPBYTE *bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsEnterpriseServerFindA(
|
|
IN LPSTR Focus,
|
|
IN DWORD Level,
|
|
OUT LPBYTE *bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsEnterpriseServerFind LlsEnterpriseServerFindW
|
|
#else
|
|
#define LlsEnterpriseServerFind LlsEnterpriseServerFindA
|
|
#endif
|
|
|
|
//
|
|
// License control API's
|
|
//
|
|
|
|
// Enum purchase history of licenses for all products.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 0 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 0 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsLicenseEnum LlsLicenseEnumW
|
|
#else
|
|
#define LlsLicenseEnum LlsLicenseEnumA
|
|
#endif
|
|
|
|
// Add purchase of license for a product.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseAddW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 0 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseAddA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 0 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsLicenseAdd LlsLicenseAddW
|
|
#else
|
|
#define LlsLicenseAdd LlsLicenseAddA
|
|
#endif
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_LICENSE_ADD_W)( LLS_HANDLE, DWORD, LPBYTE );
|
|
typedef NTSTATUS (NTAPI *PLLS_LICENSE_ADD_A)( LLS_HANDLE, DWORD, LPBYTE );
|
|
|
|
//
|
|
// Product control API's
|
|
//
|
|
// Product is SQL, BackOffice, Exchange, Etc. (Even though BackOffice isn't
|
|
// a product - we count it like one to keep things simplistic.
|
|
//
|
|
|
|
// Enum all products with purchase and InUse info.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsProductEnum LlsProductEnumW
|
|
#else
|
|
#define LlsProductEnum LlsProductEnumA
|
|
#endif
|
|
|
|
// Add purchase of license for a product.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductAddW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR ProductFamily,
|
|
IN LPWSTR Product,
|
|
IN LPWSTR Version
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductAddA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR ProductFamily,
|
|
IN LPSTR Product,
|
|
IN LPSTR Version
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsProductAdd LlsProductAddW
|
|
#else
|
|
#define LlsProductAdd LlsProductAddA
|
|
#endif
|
|
|
|
// For a particular product enum all users.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductUserEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductUserEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsProductUserEnum LlsProductUserEnumW
|
|
#else
|
|
#define LlsProductUserEnum LlsProductUserEnumA
|
|
#endif
|
|
|
|
// For a particular product enum all license purchases.
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductLicenseEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
IN DWORD Level, // Level 0 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductLicenseEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
IN DWORD Level, // Level 0 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define LlsProductLicenseEnum LlsProductLicenseEnumW
|
|
#else
|
|
#define LlsProductLicenseEnum LlsProductLicenseEnumA
|
|
#endif
|
|
|
|
|
|
// For given product enum all servers with concurrent limits
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductServerEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductServerEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
|
|
#ifdef UNICODE
|
|
#define LlsProductServerEnum LlsProductServerEnumW
|
|
#else
|
|
#define LlsProductServerEnum LlsProductServerEnumA
|
|
#endif
|
|
|
|
//
|
|
// User control API's
|
|
// A user can be a mapped user or a normal user
|
|
//
|
|
|
|
// Enums all users
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserEnum LlsUserEnumW
|
|
#else
|
|
#define LlsUserEnum LlsUserEnumA
|
|
#endif
|
|
|
|
// Info is Group and whether to force back-office license
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserInfoGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR User,
|
|
IN DWORD Level, // Level 1 supported
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserInfoGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR User,
|
|
IN DWORD Level, // Level 1 supported
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserInfoGet LlsUserInfoGetW
|
|
#else
|
|
#define LlsUserInfoGet LlsUserInfoGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserInfoSetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR User,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr // Level 1 supported
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserInfoSetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR User,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr // Level 1 supported
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserInfoSet LlsUserInfoSetW
|
|
#else
|
|
#define LlsUserInfoSet LlsUserInfoSetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserDeleteW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR User
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserDeleteA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR User
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserDelete LlsUserDeleteW
|
|
#else
|
|
#define LlsUserDelete LlsUserDeleteA
|
|
#endif
|
|
|
|
// For a given user enums all license useages
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserProductEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR User,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserProductEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR User,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserProductEnum LlsUserProductEnumW
|
|
#else
|
|
#define LlsUserProductEnum LlsUserProductEnumA
|
|
#endif
|
|
|
|
// For a given user deletes a license useage
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserProductDeleteW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR User,
|
|
IN LPWSTR Product
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsUserProductDeleteA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR User,
|
|
IN LPSTR Product
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsUserProductDelete LlsUserProductDeleteW
|
|
#else
|
|
#define LlsUserProductDelete LlsUserProductDeleteA
|
|
#endif
|
|
|
|
//
|
|
// Group control API's
|
|
//
|
|
|
|
// Enums all user Groups
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupEnum LlsGroupEnumW
|
|
#else
|
|
#define LlsGroupEnum LlsGroupEnumA
|
|
#endif
|
|
|
|
// For given Group gets info, info is name, comment and # licenses used
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupInfoGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group,
|
|
IN DWORD Level, // Level 1 supported
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupInfoGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group,
|
|
IN DWORD Level, // Level 1 supported
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupInfoGet LlsGroupInfoGetW
|
|
#else
|
|
#define LlsGroupInfoGet LlsGroupInfoGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupInfoSetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group,
|
|
IN DWORD Level, // Level 1 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupInfoSetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group,
|
|
IN DWORD Level, // Level 1 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupInfoSet LlsGroupInfoSetW
|
|
#else
|
|
#define LlsGroupInfoSet LlsGroupInfoSetA
|
|
#endif
|
|
|
|
// For given Group enum all users
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupUserEnum LlsGroupUserEnumW
|
|
#else
|
|
#define LlsGroupUserEnum LlsGroupUserEnumA
|
|
#endif
|
|
|
|
// Add user to given Group
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserAddW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group,
|
|
IN LPWSTR User
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserAddA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group,
|
|
IN LPSTR User
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupUserAdd LlsGroupUserAddW
|
|
#else
|
|
#define LlsGroupUserAdd LlsGroupUserAddA
|
|
#endif
|
|
|
|
// Delete user from given Group
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserDeleteW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group,
|
|
IN LPWSTR User
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupUserDeleteA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group,
|
|
IN LPSTR User
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupUserDelete LlsGroupUserDeleteW
|
|
#else
|
|
#define LlsGroupUserDelete LlsGroupUserDeleteA
|
|
#endif
|
|
|
|
// Add a given Group
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupAddW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 1 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupAddA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Level 1 supported
|
|
IN LPBYTE bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupAdd LlsGroupAddW
|
|
#else
|
|
#define LlsGroupAdd LlsGroupAddA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupDeleteW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Group
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsGroupDeleteA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Group
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsGroupDelete LlsGroupDeleteW
|
|
#else
|
|
#define LlsGroupDelete LlsGroupDeleteA
|
|
#endif
|
|
|
|
|
|
//
|
|
// Service control API's
|
|
//
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServiceInfoGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServiceInfoGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsServiceInfoGet LlsServiceInfoGetW
|
|
#else
|
|
#define LlsServiceInfoGet LlsServiceInfoGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServiceInfoSetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServiceInfoSetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsServiceInfoSet LlsServiceInfoSetW
|
|
#else
|
|
#define LlsServiceInfoSet LlsServiceInfoSetA
|
|
#endif
|
|
|
|
|
|
//
|
|
// Server Table Stuff (Replicated Server / Product Tree)
|
|
//
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServerEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Server,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServerEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Server,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
#ifdef UNICODE
|
|
#define LlsServerEnum LlsServerEnumW
|
|
#else
|
|
#define LlsServerEnum LlsServerEnumA
|
|
#endif
|
|
|
|
|
|
#ifdef OBSOLETE
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServerProductEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Server,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsServerProductEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Server,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
#endif // OBSOLETE
|
|
|
|
#ifdef UNICODE
|
|
#define LlsServerUserEnum LlsServerUserEnumW
|
|
#else
|
|
#define LlsServerUserEnum LlsServerUserEnumA
|
|
#endif
|
|
|
|
|
|
#ifdef OBSOLETE
|
|
|
|
//
|
|
// Concurrent (Per-Server) mode API's (these will interact with the registry
|
|
// on the remote system).
|
|
//
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD Level, // Levels 0,1 supported
|
|
OUT LPBYTE* bufptr,
|
|
IN DWORD prefmaxlen,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPDWORD TotalEntries,
|
|
IN OUT LPDWORD ResumeHandle
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsLocalProductEnum LlsLocalProductEnumW
|
|
#else
|
|
#define LlsLocalProductEnum LlsLocalProductEnumA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductInfoGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
IN DWORD Level,
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductInfoGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
IN DWORD Level,
|
|
OUT LPBYTE* bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsLocalProductInfoGet LlsLocalProductInfoGetW
|
|
#else
|
|
#define LlsLocalProductInfoGet LlsLocalProductInfoGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductInfoSetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalProductInfoSetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
IN DWORD Level,
|
|
IN LPBYTE bufptr
|
|
);
|
|
#ifdef UNICODE
|
|
#define LlsLocalProductInfoSet LlsLocalProductInfoSetW
|
|
#else
|
|
#define LlsLocalProductInfoSet LlsLocalProductInfoSetA
|
|
#endif
|
|
|
|
#endif // OBSOLETE
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// LLS EXTENDED API //
|
|
////////////////////////
|
|
|
|
BOOL
|
|
NTAPI
|
|
LlsCapabilityIsSupported(
|
|
LLS_HANDLE Handle,
|
|
DWORD Capability );
|
|
|
|
typedef BOOL (NTAPI *PLLS_CAPABILITY_IS_SUPPORTED)( LLS_HANDLE, DWORD );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductSecurityGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product,
|
|
OUT LPBOOL pSecurity
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductSecurityGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product,
|
|
OUT LPBOOL pSecurity
|
|
);
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_SECURITY_GET_W)( LLS_HANDLE, LPWSTR, LPBOOL );
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_SECURITY_GET_A)( LLS_HANDLE, LPSTR, LPBOOL );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsProductSecurityGet LlsProductSecurityGetW
|
|
#else
|
|
# define LlsProductSecurityGet LlsProductSecurityGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductSecuritySetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR Product
|
|
);
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductSecuritySetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR Product
|
|
);
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_SECURITY_SET_W)( LLS_HANDLE, LPWSTR );
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_SECURITY_SET_A)( LLS_HANDLE, LPSTR );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsProductSecuritySet LlsProductSecuritySetW
|
|
#else
|
|
# define LlsProductSecuritySet LlsProductSecuritySetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductLicensesGetW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR DisplayName,
|
|
IN DWORD Mode,
|
|
OUT LPDWORD pQuantity );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsProductLicensesGetA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR DisplayName,
|
|
IN DWORD Mode,
|
|
OUT LPDWORD pQuantity );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_LICENSES_GET_W)( LLS_HANDLE, LPWSTR, DWORD, LPDWORD );
|
|
typedef NTSTATUS (NTAPI *PLLS_PRODUCT_LICENSES_GET_A)( LLS_HANDLE, LPSTR, DWORD, LPDWORD );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsProductLicensesGet LlsProductLicensesGetW
|
|
#else
|
|
# define LlsProductLicensesGet LlsProductLicensesGetA
|
|
#endif
|
|
|
|
#ifdef OBSOLETE
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimEnumW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo,
|
|
IN DWORD TargetLevel,
|
|
OUT LPBYTE * ppTargets,
|
|
OUT LPDWORD pNumTargets );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimEnumA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo,
|
|
IN DWORD TargetLevel,
|
|
OUT LPBYTE * ppTargets,
|
|
OUT LPDWORD pNumTargets );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ENUM_W)( LLS_HANDLE, DWORD, LPBYTE, DWORD, LPBYTE *, LPDWORD );
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ENUM_A)( LLS_HANDLE, DWORD, LPBYTE, DWORD, LPBYTE *, LPDWORD );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsCertificateClaimEnum LlsCertificateClaimEnumW
|
|
#else
|
|
# define LlsCertificateClaimEnum LlsCertificateClaimEnumA
|
|
#endif
|
|
|
|
#endif // OBSOLETE
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimAddCheckW(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo,
|
|
OUT LPBOOL pMayInstall );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimAddCheckA(
|
|
IN LLS_HANDLE Handle,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo,
|
|
OUT LPBOOL pMayInstall );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ADD_CHECK_W)( LLS_HANDLE, DWORD, LPBYTE, LPBOOL );
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ADD_CHECK_A)( LLS_HANDLE, DWORD, LPBYTE, LPBOOL );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsCertificateClaimAddCheck LlsCertificateClaimAddCheckW
|
|
#else
|
|
# define LlsCertificateClaimAddCheck LlsCertificateClaimAddCheckA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimAddW(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPWSTR ServerName,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsCertificateClaimAddA(
|
|
IN LLS_HANDLE Handle,
|
|
IN LPSTR ServerName,
|
|
IN DWORD LicenseLevel,
|
|
IN LPBYTE pLicenseInfo );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ADD_W)( LLS_HANDLE, LPWSTR, DWORD, LPBYTE );
|
|
typedef NTSTATUS (NTAPI *PLLS_CERTIFICATE_CLAIM_ADD_A)( LLS_HANDLE, LPSTR, DWORD, LPBYTE );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsCertificateClaimAdd LlsCertificateClaimAddW
|
|
#else
|
|
# define LlsCertificateClaimAdd LlsCertificateClaimAddA
|
|
#endif
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPL_CONNECT_W)( LPWSTR, LLS_REPL_HANDLE * );
|
|
typedef NTSTATUS (NTAPI *PLLS_REPL_CONNECT_A)( LPSTR, LLS_REPL_HANDLE * );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPL_CLOSE)( PLLS_REPL_HANDLE );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_FREE_MEMORY)( PVOID );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_REQUEST_W)( LLS_REPL_HANDLE, DWORD, LPVOID );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_SERVER_ADD_W)( LLS_REPL_HANDLE, ULONG, LPVOID );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_SERVER_SERVICE_ADD_W)( LLS_REPL_HANDLE, ULONG, LPVOID );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_SERVICE_ADD_W)( LLS_REPL_HANDLE, ULONG, LPVOID );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_USER_ADD_W)( LLS_REPL_HANDLE, ULONG, LPVOID );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsReplicationCertDbAddW(
|
|
LLS_REPL_HANDLE ReplHandle,
|
|
DWORD Level,
|
|
LPVOID Certificates );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_CERT_DB_ADD_W)( LLS_REPL_HANDLE, DWORD, LPVOID );
|
|
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsReplicationProductSecurityAddW(
|
|
LLS_REPL_HANDLE ReplHandle,
|
|
DWORD Level,
|
|
LPVOID SecureProducts );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_PRODUCT_SECURITY_ADD_W)( LLS_REPL_HANDLE, DWORD, LPVOID );
|
|
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsReplicationUserAddExW(
|
|
LLS_REPL_HANDLE ReplHandle,
|
|
DWORD Level,
|
|
LPVOID Users );
|
|
|
|
typedef NTSTATUS (NTAPI *PLLS_REPLICATION_USER_ADD_EX_W)( LLS_REPL_HANDLE, DWORD, LPVOID );
|
|
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceEnumW(
|
|
LLS_HANDLE Handle,
|
|
DWORD Level,
|
|
LPBYTE* bufptr,
|
|
DWORD PrefMaxLen,
|
|
LPDWORD EntriesRead,
|
|
LPDWORD TotalEntries,
|
|
LPDWORD ResumeHandle );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceEnumA(
|
|
LLS_HANDLE Handle,
|
|
DWORD Level,
|
|
LPBYTE* bufptr,
|
|
DWORD PrefMaxLen,
|
|
LPDWORD EntriesRead,
|
|
LPDWORD TotalEntries,
|
|
LPDWORD ResumeHandle );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLocalServiceEnum LlsLocalServiceEnumW
|
|
#else
|
|
# define LlsLocalServiceEnum LlsLocalServiceEnumA
|
|
#endif
|
|
|
|
#ifdef OBSOLETE
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceAddW(
|
|
LLS_HANDLE Handle,
|
|
DWORD Level,
|
|
LPBYTE bufptr );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceAddA(
|
|
LLS_HANDLE Handle,
|
|
DWORD Level,
|
|
LPBYTE bufptr );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLocalServiceAdd LlsLocalServiceAddW
|
|
#else
|
|
# define LlsLocalServiceAdd LlsLocalServiceAddA
|
|
#endif
|
|
|
|
#endif // OBSOLETE
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceInfoSetW(
|
|
LLS_HANDLE Handle,
|
|
LPWSTR KeyName,
|
|
DWORD Level,
|
|
LPBYTE bufptr );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceInfoSetA(
|
|
LLS_HANDLE Handle,
|
|
LPSTR KeyName,
|
|
DWORD Level,
|
|
LPBYTE bufptr );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLocalServiceInfoSet LlsLocalServiceInfoSetW
|
|
#else
|
|
# define LlsLocalServiceInfoSet LlsLocalServiceInfoSetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceInfoGetW(
|
|
LLS_HANDLE Handle,
|
|
LPWSTR KeyName,
|
|
DWORD Level,
|
|
LPBYTE * pbufptr );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLocalServiceInfoGetA(
|
|
LLS_HANDLE Handle,
|
|
DWORD Level,
|
|
LPSTR KeyName,
|
|
LPBYTE * pbufptr );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLocalServiceInfoGet LlsLocalServiceInfoGetW
|
|
#else
|
|
# define LlsLocalServiceInfoGet LlsLocalServiceInfoGetA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseRequestW(
|
|
LLS_HANDLE Handle,
|
|
LPWSTR Product,
|
|
ULONG VersionIndex,
|
|
BOOLEAN IsAdmin,
|
|
ULONG DataType,
|
|
ULONG DataSize,
|
|
PBYTE Data,
|
|
LPDWORD pLicenseHandle );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseRequestA(
|
|
LLS_HANDLE Handle,
|
|
LPSTR Product,
|
|
ULONG VersionIndex,
|
|
BOOLEAN IsAdmin,
|
|
ULONG DataType,
|
|
ULONG DataSize,
|
|
PBYTE Data,
|
|
LPDWORD pLicenseHandle );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLicenseRequest LlsLicenseRequestW
|
|
#else
|
|
# define LlsLicenseRequest LlsLicenseRequestA
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseFree(
|
|
LLS_HANDLE Handle,
|
|
DWORD LicenseHandle );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseRequest2W(
|
|
LLS_HANDLE Handle,
|
|
LPWSTR Product,
|
|
ULONG VersionIndex,
|
|
BOOLEAN IsAdmin,
|
|
ULONG DataType,
|
|
ULONG DataSize,
|
|
PBYTE Data,
|
|
PHANDLE pLicenseHandle );
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseRequest2A(
|
|
LLS_HANDLE Handle,
|
|
LPSTR Product,
|
|
ULONG VersionIndex,
|
|
BOOLEAN IsAdmin,
|
|
ULONG DataType,
|
|
ULONG DataSize,
|
|
PBYTE Data,
|
|
PHANDLE pLicenseHandle );
|
|
|
|
#ifdef UNICODE
|
|
# define LlsLicenseRequest2 LlsLicenseRequest2W
|
|
#else
|
|
# define LlsLicenseRequest2 LlsLicenseRequest2A
|
|
#endif
|
|
|
|
NTSTATUS
|
|
NTAPI
|
|
LlsLicenseFree2(
|
|
LLS_HANDLE Handle,
|
|
HANDLE LicenseHandle );
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// CCF API //
|
|
///////////////
|
|
|
|
#define CCF_ENTER_FLAG_PER_SEAT_ONLY ( 1 )
|
|
#define CCF_ENTER_FLAG_PER_SERVER_ONLY ( 2 )
|
|
#define CCF_ENTER_FLAG_SERVER_IS_ES ( 4 )
|
|
|
|
// prototype for certificate source enter API
|
|
typedef DWORD (APIENTRY *PCCF_ENTER_API)( HWND hWndParent,
|
|
LPCSTR pszServerName,
|
|
LPCSTR pszProductName,
|
|
LPCSTR pszVendor,
|
|
DWORD dwFlags );
|
|
|
|
DWORD APIENTRY CCFCertificateEnterUI( HWND hWndParent,
|
|
LPCSTR pszServerName,
|
|
LPCSTR pszProductName,
|
|
LPCSTR pszVendor,
|
|
DWORD dwFlags,
|
|
LPCSTR pszSourceToUse );
|
|
|
|
// prototype for certificate source remove API
|
|
typedef DWORD (APIENTRY *PCCF_REMOVE_API)( HWND hWndParent,
|
|
LPCSTR pszServerName,
|
|
DWORD dwFlags,
|
|
DWORD dwLicenseLevel,
|
|
LPVOID lpvLicenseInfo );
|
|
|
|
DWORD APIENTRY CCFCertificateRemoveUI( HWND hWndParent,
|
|
LPCSTR pszServerName,
|
|
LPCSTR pszProductName,
|
|
LPCSTR pszVendor,
|
|
DWORD dwFlags,
|
|
LPCSTR pszSourceToUse );
|
|
|
|
#endif
|
|
|
|
//
|
|
// Registry values
|
|
//
|
|
|
|
#define REG_KEY_LICENSE TEXT("SYSTEM\\CurrentControlSet\\Services\\LicenseInfo")
|
|
#define REG_KEY_CONFIG TEXT("SYSTEM\\CurrentControlSet\\Services\\LicenseService\\Parameters")
|
|
|
|
#define REG_VALUE_NAME TEXT("DisplayName")
|
|
#define REG_VALUE_FAMILY TEXT("FamilyDisplayName")
|
|
#define REG_VALUE_MODE TEXT("Mode")
|
|
#define REG_VALUE_FLIP TEXT("FlipAllow")
|
|
#define REG_VALUE_LIMIT TEXT("ConcurrentLimit")
|
|
#define REG_VALUE_HIGHMARK TEXT("LocalKey")
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|