|
|
#include "NWCOMPAT.hxx"
#pragma hdrstop
const BSTR bstrAddressTypeString = L"IPX"; const BSTR bstrComputerOperatingSystem = L"NW3Compat"; const BSTR bstrFileShareDescription = L"Disk"; const BSTR bstrNWFileServiceName = L"NetWareFileServer"; const BSTR bstrProviderName = L"NWCOMPAT";
CRITICAL_SECTION BindCacheCritSect;
#define MAX_LONG (0x7FFFFFFF)
#define MIN_LONG (0x80000000)
#define MAX_BOOLEAN 1
#define MAX_STRLEN 256
#define MAX_UCHAR 255
#define MAX_USHORT 65535
PROPERTYINFO ComputerClass[] = { { TEXT("OperatingSystem"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, COMP_OPERATINGSYSTEM_ID, NT_SYNTAX_ID_LPTSTR}, { TEXT("OperatingSystemVersion"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, COMP_OPERATINGSYSTEMVERSION_ID, NT_SYNTAX_ID_LPTSTR} };
DWORD gdwComputerTableSize = sizeof(ComputerClass)/sizeof(PROPERTYINFO);
PROPERTYINFO UserClass[] = { { TEXT("FullName"), TEXT(""), TEXT("String"), NW_DATA_SIZE, 0, FALSE, // max 128 bytes
PROPERTY_RW, USER_FULLNAME_ID, NT_SYNTAX_ID_LPTSTR }, { TEXT("AccountDisabled"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ACCOUNTDISABLED_ID, NT_SYNTAX_ID_BOOL }, { TEXT("AccountExpirationDate"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, USER_ACCOUNTEXPIRATIONDATE_ID, NT_SYNTAX_ID_NW312DATE }, { TEXT("AccountCanExpire"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_CANACCOUNTEXPIRE_ID, NT_SYNTAX_ID_BOOL }, { TEXT("GraceLoginsAllowed"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_GRACELOGINSALLOWED_ID, NT_SYNTAX_ID_DWORD }, { TEXT("GraceLoginsRemaining"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_GRACELOGINSREMAINING_ID, NT_SYNTAX_ID_DWORD }, { TEXT("IsAccountLocked"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ISACCOUNTLOCKED_ID, NT_SYNTAX_ID_BOOL}, { TEXT("IsAdmin"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ISADMIN_ID, NT_SYNTAX_ID_BOOL}, { TEXT("MaxLogins"), TEXT(""), TEXT("Integer"), MAX_USHORT, 0, FALSE, PROPERTY_RW, USER_MAXLOGINS_ID, NT_SYNTAX_ID_DWORD}, { TEXT("PasswordExpirationDate"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, USER_PASSWORDEXPIRATIONDATE_ID, NT_SYNTAX_ID_NW312DATE}, { TEXT("PasswordCanExpire"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_CANPASSWORDEXPIRE_ID, NT_SYNTAX_ID_BOOL }, { TEXT("PasswordMinimumLength"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_PASSWORDMINIMUMLENGTH_ID, NT_SYNTAX_ID_DWORD}, { TEXT("PasswordRequired"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_PASSWORDREQUIRED_ID, NT_SYNTAX_ID_BOOL}, { TEXT("RequireUniquePassword"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_REQUIREUNIQUEPASSWORD_ID, NT_SYNTAX_ID_BOOL}, { TEXT("BadLoginAddress"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, USER_BADLOGINADDRESS_ID, NT_SYNTAX_ID_LPTSTR}, { TEXT("LastLogin"), // ro
TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_READABLE, USER_LASTLOGIN_ID, NT_SYNTAX_ID_NW312DATE}, { TEXT("LoginHours"), TEXT(""), TEXT("OctetString"), 0, 0, FALSE, PROPERTY_RW, USER_LOGINHOURS_ID, NT_SYNTAX_ID_OCTETSTRING} };
DWORD gdwUserTableSize = sizeof(UserClass)/sizeof(PROPERTYINFO);
PROPERTYINFO GroupClass[] = { { TEXT("Description"), // FSGroupGeneralInfo
TEXT(""), TEXT("String"), NW_DATA_SIZE, 0, FALSE, // max 128 bytes
PROPERTY_RW, GROUP_DESCRIPTION_ID, NT_SYNTAX_ID_LPTSTR } };
DWORD gdwGroupTableSize = sizeof(GroupClass)/sizeof(PROPERTYINFO);
PROPERTYINFO FileServiceClass[] = { { TEXT("HostComputer"), // FSServiceConfiguration
TEXT(""), TEXT("ADsPath"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("MaxUserCount"), TEXT(""), TEXT("Integer"), MAX_USHORT, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD } };
DWORD gdwFileServiceTableSize = sizeof(FileServiceClass)/sizeof(PROPERTYINFO);
PROPERTYINFO FileShareClass[] = { { TEXT("Description"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("HostComputer"), TEXT(""), TEXT("ADsPath"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("MaxUserCount"), TEXT(""), TEXT("Integer"), MAX_USHORT, 0, FALSE, PROPERTY_RW, 1, NT_SYNTAX_ID_DWORD } };
DWORD gdwFileShareTableSize = sizeof(FileShareClass)/sizeof(PROPERTYINFO);
PROPERTYINFO PrintQueueClass[] = { { TEXT("PrinterPath"), // FSPrintQueueGeneralInfo
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("Model"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("Datatype"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("PrintProcessor"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("Description"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("Location"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("StartTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("UntilTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("DefaultJobPriority"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD }, { TEXT("Priority"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD }, { TEXT("BannerPage"), TEXT(""), TEXT("Path"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("PrintDevices"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, TRUE, PROPERTY_RW, 2, NT_SYNTAX_ID_DelimitedString } };
DWORD gdwPrinterTableSize = sizeof(PrintQueueClass)/sizeof(PROPERTYINFO);
PROPERTYINFO PrintJobClass[] = { { TEXT("HostPrintQueue"), // ro, FSPrintJobGeneralInfo
TEXT(""), TEXT("ADsPath"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("User"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("TimeSubmitted"), // ro
TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_SYSTEMTIME }, { TEXT("TotalPages"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_DWORD }, { TEXT("Size"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, { TEXT("Description"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("Priority"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 1, NT_SYNTAX_ID_DWORD }, { TEXT("StartTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("UntilTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("Notify"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("TimeElapsed"), // ro
TEXT(""), TEXT("Interval"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, { TEXT("PagesPrinted"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, { TEXT("Position"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD } };
DWORD gdwJobTableSize = sizeof(PrintJobClass)/sizeof(PROPERTYINFO);
CLASSINFO g_aNWCOMPATClasses[] = {
//
// Computer Class
//
{ COMPUTER_SCHEMA_NAME, &CLSID_NWCOMPATComputer, &IID_IADsComputer, TEXT(""), FALSE,
NULL,
TEXT("OperatingSystemVersion"),
NULL, TEXT("User,Group,FileService,PrintQueue"), TRUE, TEXT(""), 0, ComputerClass, sizeof(ComputerClass)/sizeof(PROPERTYINFO) },
{ USER_SCHEMA_NAME, &CLSID_NWCOMPATUser, &IID_IADsUser, TEXT(""), FALSE,
NULL,
TEXT("FullName,AccountDisabled,AccountExpirationDate,") TEXT("AccountCanExpire,GraceLoginsAllowed,GraceLoginsRemaining,") TEXT("IsAccountLocked,IsAdmin,MaxLogins,PasswordExpirationDate,") TEXT("PasswordCanExpire,PasswordMinimumLength,PasswordRequired,") TEXT("RequireUniquePassword,BadLoginAddress,LastLogin"),
TEXT("Computer"), NULL, FALSE, TEXT(""), 0, UserClass, sizeof(UserClass)/sizeof(PROPERTYINFO) },
{ GROUP_SCHEMA_NAME, &CLSID_NWCOMPATGroup, &IID_IADsGroup, TEXT(""), FALSE,
NULL,
TEXT("Description"),
TEXT("Computer"), NULL, FALSE, TEXT(""), 0, GroupClass, sizeof(GroupClass)/sizeof(PROPERTYINFO) },
{ FILESERVICE_SCHEMA_NAME, &CLSID_NWCOMPATFileService, &IID_IADsFileService, TEXT(""), FALSE,
NULL,
TEXT("HostComputer,MaxUserCount,"),
TEXT("Computer"), TEXT("FileShare"), TRUE, TEXT(""), 0, FileServiceClass, sizeof(FileServiceClass)/sizeof(PROPERTYINFO) },
{ FILESHARE_SCHEMA_NAME, &CLSID_NWCOMPATFileShare, &IID_IADsFileShare, TEXT(""), FALSE,
NULL,
TEXT("Description,HostComputer,MaxUserCount"),
TEXT("FileService"), NULL, FALSE, TEXT(""), 0, FileShareClass, sizeof(FileShareClass)/sizeof(PROPERTYINFO) },
{ PRINTER_SCHEMA_NAME, &CLSID_NWCOMPATPrintQueue, &IID_IADsPrintQueue, TEXT(""), FALSE,
NULL,
TEXT("PrinterPath,Model,Datatype,PrintProcessor,") TEXT("Description,Location,StartTime,UntilTime,DefaultJobPriority,") TEXT("Priority,BannerPage,PrintDevices"),
TEXT("Computer"), NULL, FALSE, TEXT(""), 0, PrintQueueClass, sizeof(PrintQueueClass)/sizeof(PROPERTYINFO) },
{ PRINTJOB_SCHEMA_NAME, &CLSID_NWCOMPATPrintJob, &IID_IADsPrintJob, TEXT(""), FALSE,
NULL,
TEXT("HostPrintQueue,User,TimeSubmitted,TotalPages,") TEXT("Size,Priority,StartTime,UntilTime,Notify,TimeElapsed,") TEXT("PagesPrinted,Position"),
NULL, NULL, FALSE, TEXT(""), 0, PrintJobClass, sizeof(PrintJobClass)/sizeof(PROPERTYINFO) }
};
SYNTAXINFO g_aNWCOMPATSyntax[] = { { TEXT("Boolean"), VT_BOOL }, { TEXT("Counter"), VT_I4 }, { TEXT("ADsPath"), VT_BSTR }, { TEXT("EmailAddress"), VT_BSTR }, { TEXT("FaxNumber"), VT_BSTR }, { TEXT("Integer"), VT_I4 }, { TEXT("Interval"), VT_I4 }, { TEXT("List"), VT_VARIANT }, // VT_BSTR | VT_ARRAY
{ TEXT("NetAddress"), VT_BSTR }, { TEXT("OctetString"), VT_VARIANT }, // VT_UI1| VT_ARRAY
{ TEXT("Path"), VT_BSTR }, { TEXT("PhoneNumber"), VT_BSTR }, { TEXT("PostalAddress"), VT_BSTR }, { TEXT("SmallInterval"), VT_I4 }, { TEXT("String"), VT_BSTR }, { TEXT("Time"), VT_DATE } };
DWORD g_cNWCOMPATClasses = (sizeof(g_aNWCOMPATClasses)/sizeof(g_aNWCOMPATClasses[0])); DWORD g_cNWCOMPATSyntax = (sizeof(g_aNWCOMPATSyntax)/sizeof(g_aNWCOMPATSyntax[0]));
PROPERTYINFO g_aNWCOMPATProperties[] = { { TEXT("OperatingSystem"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, COMP_OPERATINGSYSTEM_ID, NT_SYNTAX_ID_LPTSTR}, { TEXT("OperatingSystemVersion"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, COMP_OPERATINGSYSTEMVERSION_ID, NT_SYNTAX_ID_LPTSTR},
// User Properties
{ TEXT("FullName"), TEXT(""), TEXT("String"), NW_DATA_SIZE, 0, FALSE, // max 128 bytes
PROPERTY_RW, USER_FULLNAME_ID, NT_SYNTAX_ID_LPTSTR }, { TEXT("AccountDisabled"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ACCOUNTDISABLED_ID, NT_SYNTAX_ID_BOOL }, { TEXT("AccountExpirationDate"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, USER_ACCOUNTEXPIRATIONDATE_ID, NT_SYNTAX_ID_NW312DATE }, { TEXT("AccountCanExpire"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_CANACCOUNTEXPIRE_ID, NT_SYNTAX_ID_BOOL }, { TEXT("GraceLoginsAllowed"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_GRACELOGINSALLOWED_ID, NT_SYNTAX_ID_DWORD }, { TEXT("GraceLoginsRemaining"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_GRACELOGINSREMAINING_ID, NT_SYNTAX_ID_DWORD }, { TEXT("IsAccountLocked"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ISACCOUNTLOCKED_ID, NT_SYNTAX_ID_BOOL}, { TEXT("IsAdmin"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_ISADMIN_ID, NT_SYNTAX_ID_BOOL}, { TEXT("MaxLogins"), TEXT(""), TEXT("Integer"), MAX_USHORT, 0, FALSE, PROPERTY_RW, USER_MAXLOGINS_ID, NT_SYNTAX_ID_DWORD}, { TEXT("PasswordExpirationDate"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, USER_PASSWORDEXPIRATIONDATE_ID, NT_SYNTAX_ID_NW312DATE}, { TEXT("PasswordCanExpire"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_CANPASSWORDEXPIRE_ID, NT_SYNTAX_ID_BOOL }, { TEXT("PasswordMinimumLength"), TEXT(""), TEXT("Integer"), MAX_UCHAR, 0, FALSE, PROPERTY_RW, USER_PASSWORDMINIMUMLENGTH_ID, NT_SYNTAX_ID_DWORD}, { TEXT("PasswordRequired"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_PASSWORDREQUIRED_ID, NT_SYNTAX_ID_BOOL}, { TEXT("RequireUniquePassword"), TEXT(""), TEXT("Boolean"), MAX_BOOLEAN, 0, FALSE, PROPERTY_RW, USER_REQUIREUNIQUEPASSWORD_ID, NT_SYNTAX_ID_BOOL}, { TEXT("BadLoginAddress"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, USER_BADLOGINADDRESS_ID, NT_SYNTAX_ID_LPTSTR}, { TEXT("LastLogin"), // ro
TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_READABLE, USER_LASTLOGIN_ID, NT_SYNTAX_ID_NW312DATE},
// Group Properties
{ TEXT("Description"), // FSGroupGeneralInfo
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, // max 128 bytes
PROPERTY_RW, GROUP_DESCRIPTION_ID, NT_SYNTAX_ID_LPTSTR },
// FileService Properties
{ TEXT("HostComputer"), // FSServiceConfiguration
TEXT(""), TEXT("ADsPath"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("MaxUserCount"), TEXT(""), TEXT("Integer"), MAX_USHORT, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD },
// FileShare Properties
//
// Description (Group)
//
// HostComputer (FileService)
//
// MaxUserCount(FileService)
//
// PrintQueue Properties
//
// HostComputer (FileService)
//
{ TEXT("Model"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("Datatype"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("PrintProcessor"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, //
// Description (Group)
//
{ TEXT("Location"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("StartTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("UntilTime"), TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DATE }, { TEXT("DefaultJobPriority"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD }, { TEXT("Priority"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD }, { TEXT("BannerPage"), TEXT(""), TEXT("Path"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("PrintDevices"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, TRUE, PROPERTY_RW, 2, NT_SYNTAX_ID_DelimitedString },
// PrintJob Properties
{ TEXT("HostPrintQueue"), // ro, FSPrintJobGeneralInfo
TEXT(""), TEXT("ADsPath"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("User"), // ro
TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_LPTSTR }, { TEXT("TimeSubmitted"), // ro
TEXT(""), TEXT("Time"), 0, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_SYSTEMTIME }, { TEXT("TotalPages"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 1, NT_SYNTAX_ID_DWORD }, { TEXT("Size"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, //
// Description (Group)
//
// Priority (PrintQueue)
//
//
// StartTime (PrintQueue)
//
// UntilTime(PrintQueue)
//
{ TEXT("Notify"), TEXT(""), TEXT("String"), MAX_STRLEN, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_LPTSTR }, { TEXT("TimeElapsed"), // ro
TEXT(""), TEXT("Interval"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, { TEXT("PagesPrinted"), // ro
TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_READABLE, 2, NT_SYNTAX_ID_DWORD }, { TEXT("Position"), TEXT(""), TEXT("Integer"), MAX_LONG, 0, FALSE, PROPERTY_RW, 2, NT_SYNTAX_ID_DWORD }
};
DWORD g_cNWCOMPATProperties = (sizeof(g_aNWCOMPATProperties)/sizeof(g_aNWCOMPATProperties[0]));
|