|
|
/*++ BUILD Version: 0001 // Increment this if a change has global effects
Copyright (c) 1991-1999 Microsoft Corporation
Module Name:
lmrpl.h
Abstract:
This file contains structures, function prototypes, and definitions for the Remote (Initial) Program Load service.
Environment:
User Mode - Win32 Portable to any flat, 32-bit environment. (Uses Win32 typedefs.) Requires ANSI C extensions: slash-slash comments, long external names.
Revision History:
27-July-1993 Created from NT RPL API spec which was influenced by LM2.1 RPL product, header files and specs. --*/
#if _MSC_VER > 1000
#pragma once
#endif
#ifdef __cplusplus
extern "C" { #endif
#define RPL_MAX_WKSTA_NAME_LENGTH MAX_COMPUTERNAME_LENGTH
#define RPL_MAX_PROFILE_NAME_LENGTH 16
#define RPL_MAX_CONFIG_NAME_LENGTH RPL_MAX_PROFILE_NAME_LENGTH
#define RPL_MAX_BOOT_NAME_LENGTH 12
#define RPL_ADAPTER_NAME_LENGTH 12 // count of hex digits in network id
#define RPL_VENDOR_NAME_LENGTH 6 // leading digits of network id
#define RPL_MAX_STRING_LENGTH 126 // driven by jet < 255 byte limit
//
// Data Structures
//
//
// NetRplGetInfo & NetRplSetInfo
//
//
// Pass these flags in AdapterPolicy to cause these special actions
// to occur. This will not change the adapter policy.
//
#define RPL_REPLACE_RPLDISK 0x80000000
#define RPL_CHECK_SECURITY 0x40000000
#define RPL_CHECK_CONFIGS 0x20000000
#define RPL_CREATE_PROFILES 0x10000000
#define RPL_BACKUP_DATABASE 0x08000000
#define RPL_SPECIAL_ACTIONS \
( RPL_REPLACE_RPLDISK | \ RPL_CHECK_SECURITY | \ RPL_CHECK_CONFIGS | \ RPL_CREATE_PROFILES | \ RPL_BACKUP_DATABASE )
typedef struct _RPL_INFO_0 { DWORD Flags; } RPL_INFO_0, *PRPL_INFO_0, *LPRPL_INFO_0;
//
// NetRplBootEnum & NetRplBootAdd
//
typedef struct _RPL_BOOT_INFO_0 { LPTSTR BootName; LPTSTR BootComment; } RPL_BOOT_INFO_0, *PRPL_BOOT_INFO_0, *LPRPL_BOOT_INFO_0;
//
//
// BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_* describe whether acknowledgment of the
// last remote boot frame will be requested from the client.
//
#define BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_TRUE ((DWORD)0x00000001)
#define BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_FALSE ((DWORD)0x00000002)
#define BOOT_FLAGS_MASK_FINAL_ACKNOWLEDGMENT \
( BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_TRUE | \ BOOT_FLAGS_FINAL_ACKNOWLEDGMENT_FALSE )
typedef struct _RPL_BOOT_INFO_1 { LPTSTR BootName; LPTSTR BootComment; DWORD Flags; LPTSTR VendorName; } RPL_BOOT_INFO_1, *PRPL_BOOT_INFO_1, *LPRPL_BOOT_INFO_1;
typedef struct _RPL_BOOT_INFO_2 { LPTSTR BootName; LPTSTR BootComment; DWORD Flags; LPTSTR VendorName; LPTSTR BbcFile; DWORD WindowSize; } RPL_BOOT_INFO_2, *PRPL_BOOT_INFO_2, *LPRPL_BOOT_INFO_2;
//
// NetRplConfigEnum & NetRplConfigAdd
//
typedef struct _RPL_CONFIG_INFO_0 { LPTSTR ConfigName; LPTSTR ConfigComment; } RPL_CONFIG_INFO_0, *PRPL_CONFIG_INFO_0, *LPRPL_CONFIG_INFO_0;
//
// CONFIG_FLAGS_ENABLED_* describe whether configuration is enabled (admin
// has copied all the necessary files to use such configuration) or disabled
//
#define CONFIG_FLAGS_ENABLED_TRUE ((DWORD)0x00000001) // enabled
#define CONFIG_FLAGS_ENABLED_FALSE ((DWORD)0x00000002) // disabled
#define CONFIG_FLAGS_MASK_ENABLED \
( CONFIG_FLAGS_ENABLED_TRUE | \ CONFIG_FLAGS_ENABLED_FALSE )
typedef struct _RPL_CONFIG_INFO_1 { LPTSTR ConfigName; LPTSTR ConfigComment; DWORD Flags; } RPL_CONFIG_INFO_1, *PRPL_CONFIG_INFO_1, *LPRPL_CONFIG_INFO_1;
typedef struct _RPL_CONFIG_INFO_2 { LPTSTR ConfigName; LPTSTR ConfigComment; DWORD Flags; LPTSTR BootName; LPTSTR DirName; LPTSTR DirName2; LPTSTR DirName3; LPTSTR DirName4; LPTSTR FitShared; LPTSTR FitPersonal; } RPL_CONFIG_INFO_2, *PRPL_CONFIG_INFO_2, *LPRPL_CONFIG_INFO_2;
//
// NetRplProfileEnum, NetRplProfileGetInfo, NetRplProfileSetInfo &
// NetRplProfileAdd
//
typedef struct _RPL_PROFILE_INFO_0 { LPTSTR ProfileName; LPTSTR ProfileComment; } RPL_PROFILE_INFO_0, *PRPL_PROFILE_INFO_0, *LPRPL_PROFILE_INFO_0;
typedef struct _RPL_PROFILE_INFO_1 { LPTSTR ProfileName; LPTSTR ProfileComment; DWORD Flags; } RPL_PROFILE_INFO_1, *PRPL_PROFILE_INFO_1, *LPRPL_PROFILE_INFO_1;
typedef struct _RPL_PROFILE_INFO_2 { LPTSTR ProfileName; LPTSTR ProfileComment; DWORD Flags; LPTSTR ConfigName; LPTSTR BootName; LPTSTR FitShared; LPTSTR FitPersonal; } RPL_PROFILE_INFO_2, *PRPL_PROFILE_INFO_2, *LPRPL_PROFILE_INFO_2;
//
// NetRplVendorEnum
//
typedef struct _RPL_VENDOR_INFO_0 { LPTSTR VendorName; LPTSTR VendorComment; } RPL_VENDOR_INFO_0, *PRPL_VENDOR_INFO_0, *LPRPL_VENDOR_INFO_0;
typedef struct _RPL_VENDOR_INFO_1 { LPTSTR VendorName; LPTSTR VendorComment; DWORD Flags; } RPL_VENDOR_INFO_1, *PRPL_VENDOR_INFO_1, *LPRPL_VENDOR_INFO_1;
//
// NetRplAdapterEnum
//
typedef struct _RPL_ADAPTER_INFO_0 { LPTSTR AdapterName; LPTSTR AdapterComment; } RPL_ADAPTER_INFO_0, *PRPL_ADAPTER_INFO_0, *LPRPL_ADAPTER_INFO_0;
typedef struct _RPL_ADAPTER_INFO_1 { LPTSTR AdapterName; LPTSTR AdapterComment; DWORD Flags; } RPL_ADAPTER_INFO_1, *PRPL_ADAPTER_INFO_1, *LPRPL_ADAPTER_INFO_1;
//
// NetRplWkstaEnum, NetRplWkstaGetInfo, NetRplWkstaSetInfo &
// NetRplWkstaAdd
//
// WKSTA_FLAGS_LOGON_INPUT_* describe username/password policy during rpl logon
// on the client side. Depending on the value of this field, user input for
// username/password during RPL logon will be:
//
#define WKSTA_FLAGS_LOGON_INPUT_REQUIRED ((DWORD)0x00000001) // L'P', user input is required
#define WKSTA_FLAGS_LOGON_INPUT_OPTIONAL ((DWORD)0x00000002) // L'N', user input is optional
#define WKSTA_FLAGS_LOGON_INPUT_IMPOSSIBLE ((DWORD)0x00000004) // L'D', user input is not solicited
#define WKSTA_FLAGS_MASK_LOGON_INPUT \
( WKSTA_FLAGS_LOGON_INPUT_REQUIRED | \ WKSTA_FLAGS_LOGON_INPUT_OPTIONAL | \ WKSTA_FLAGS_LOGON_INPUT_IMPOSSIBLE ) //
// WKSTA_FLAGS_SHARING_* describe whether workstation shares or does not share its
// remote boot disk (i.e. "does it have shared or personal profile").
//
#define WKSTA_FLAGS_SHARING_TRUE ((DWORD)0x00000008) // L'S', shares remote boot disk
#define WKSTA_FLAGS_SHARING_FALSE ((DWORD)0x00000010) // L'P', does not share remote boot disk
#define WKSTA_FLAGS_MASK_SHARING \
( WKSTA_FLAGS_SHARING_TRUE | \ WKSTA_FLAGS_SHARING_FALSE )
//
// WKSTA_FLAGS_DHCP_* describe whether workstation uses DHCP or not. Note
// that these flags are relevant only if TCP/IP itself is enabled (i.e. changes
// to boot block configuration file, config.sys & autoexec.bat have been made).
//
#define WKSTA_FLAGS_DHCP_TRUE ((DWORD)0x00000020) // use DHCP
#define WKSTA_FLAGS_DHCP_FALSE ((DWORD)0x00000040) // do not use DHCP
#define WKSTA_FLAGS_MASK_DHCP \
( WKSTA_FLAGS_DHCP_TRUE | \ WKSTA_FLAGS_DHCP_FALSE )
//
// WKSTA_FLAGS_DELETE_ACCOUNT_* describes whether the corresponding user
// account was created by Remoteboot Manager, and thus, should be deleted
// when the workstation is deleted. This flag is actually used by
// Remoteboot Manager rather than RPL Service.
//
#define WKSTA_FLAGS_DELETE_TRUE ((DWORD)0x00000080) // delete user acct
#define WKSTA_FLAGS_DELETE_FALSE ((DWORD)0x00000100) // do not delete
#define WKSTA_FLAGS_MASK_DELETE \
( WKSTA_FLAGS_DELETE_TRUE | \ WKSTA_FLAGS_DELETE_FALSE )
#define WKSTA_FLAGS_MASK \
( WKSTA_FLAGS_MASK_LOGON_INPUT | \ WKSTA_FLAGS_MASK_SHARING | \ WKSTA_FLAGS_MASK_DHCP | \ WKSTA_FLAGS_MASK_DELETE )
typedef struct _RPL_WKSTA_INFO_0 { LPTSTR WkstaName; LPTSTR WkstaComment; } RPL_WKSTA_INFO_0, *PRPL_WKSTA_INFO_0, *LPRPL_WKSTA_INFO_0;
typedef struct _RPL_WKSTA_INFO_1 { LPTSTR WkstaName; LPTSTR WkstaComment; DWORD Flags; LPTSTR ProfileName; } RPL_WKSTA_INFO_1, *PRPL_WKSTA_INFO_1, *LPRPL_WKSTA_INFO_1;
typedef struct _RPL_WKSTA_INFO_2 { LPTSTR WkstaName; LPTSTR WkstaComment; DWORD Flags; LPTSTR ProfileName; LPTSTR BootName; LPTSTR FitFile; LPTSTR AdapterName; DWORD TcpIpAddress; DWORD TcpIpSubnet; DWORD TcpIpGateway; } RPL_WKSTA_INFO_2, *PRPL_WKSTA_INFO_2, *LPRPL_WKSTA_INFO_2;
//
// RPL RPC Context Handle (Opaque form).
//
typedef HANDLE RPL_HANDLE; typedef RPL_HANDLE * PRPL_HANDLE; typedef PRPL_HANDLE LPRPL_HANDLE;
//
// Function Prototypes
//
//
// Service apis
//
NET_API_STATUS NET_API_FUNCTION NetRplClose( IN RPL_HANDLE ServerHandle ); NET_API_STATUS NET_API_FUNCTION NetRplGetInfo( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer ); NET_API_STATUS NET_API_FUNCTION NetRplOpen( IN LPTSTR ServerName, OUT LPRPL_HANDLE ServerHandle ); NET_API_STATUS NET_API_FUNCTION NetRplSetInfo( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL );
//
// ADAPTER apis
//
NET_API_STATUS NET_API_FUNCTION NetRplAdapterAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); //
// NetRplAdapterDel: if AdapterName is NULL then all adapters will be deleted.
//
NET_API_STATUS NET_API_FUNCTION NetRplAdapterDel( IN RPL_HANDLE ServerHandle, IN LPTSTR AdapterName OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplAdapterEnum( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle );
//
// BOOT block apis
//
NET_API_STATUS NET_API_FUNCTION NetRplBootAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplBootDel( IN RPL_HANDLE ServerHandle, IN LPTSTR BootName, IN LPTSTR VendorName ); NET_API_STATUS NET_API_FUNCTION NetRplBootEnum( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle );
//
// CONFIG apis
//
NET_API_STATUS NET_API_FUNCTION NetRplConfigAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplConfigDel( IN RPL_HANDLE ServerHandle, IN LPTSTR ConfigName ); NET_API_STATUS NET_API_FUNCTION NetRplConfigEnum( IN RPL_HANDLE ServerHandle, IN LPTSTR AdapterName, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle );
//
// PROFILE apis
//
NET_API_STATUS NET_API_FUNCTION NetRplProfileAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplProfileClone( IN RPL_HANDLE ServerHandle, IN LPTSTR SourceProfileName, IN LPTSTR TargetProfileName, IN LPTSTR TargetProfileComment OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplProfileDel( IN RPL_HANDLE ServerHandle, IN LPTSTR ProfileName ); NET_API_STATUS NET_API_FUNCTION NetRplProfileEnum( IN RPL_HANDLE ServerHandle, IN LPTSTR AdapterName, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle ); NET_API_STATUS NET_API_FUNCTION NetRplProfileGetInfo( IN RPL_HANDLE ServerHandle, IN LPTSTR ProfileName, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer ); NET_API_STATUS NET_API_FUNCTION NetRplProfileSetInfo( IN RPL_HANDLE ServerHandle, IN LPTSTR ProfileName, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL );
//
// VENDOR apis
//
NET_API_STATUS NET_API_FUNCTION NetRplVendorAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplVendorDel( IN RPL_HANDLE ServerHandle, IN LPTSTR VendorName ); NET_API_STATUS NET_API_FUNCTION NetRplVendorEnum( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle );
//
// WKSTA apis
//
NET_API_STATUS NET_API_FUNCTION NetRplWkstaAdd( IN RPL_HANDLE ServerHandle, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL ); NET_API_STATUS NET_API_FUNCTION NetRplWkstaClone( IN RPL_HANDLE ServerHandle, IN LPTSTR SourceWkstaName, IN LPTSTR TargetWkstaName, IN LPTSTR TargetWkstaComment OPTIONAL, IN LPTSTR TargetAdapterName, IN DWORD TargetWkstaIpAddress ); NET_API_STATUS NET_API_FUNCTION NetRplWkstaDel( IN RPL_HANDLE ServerHandle, IN LPTSTR WkstaName ); NET_API_STATUS NET_API_FUNCTION NetRplWkstaEnum( IN RPL_HANDLE ServerHandle, IN LPTSTR ProfileName, IN DWORD InfoLevel, OUT LPBYTE * PointerToBuffer, IN DWORD PrefMaxLength, OUT LPDWORD EntriesRead, OUT LPDWORD TotalEntries, OUT LPDWORD ResumeHandle ); NET_API_STATUS NET_API_FUNCTION NetRplWkstaGetInfo( IN RPL_HANDLE ServerHandle, IN LPTSTR WkstaName, IN DWORD InfoLevel, OUT LPBYTE * Buffer ); NET_API_STATUS NET_API_FUNCTION NetRplWkstaSetInfo( IN RPL_HANDLE ServerHandle, IN LPTSTR WkstaName, IN DWORD InfoLevel, IN LPBYTE Buffer, OUT LPDWORD ErrorParameter OPTIONAL );
//
// SECURITY api
//
NET_API_STATUS NET_API_FUNCTION NetRplSetSecurity( IN RPL_HANDLE ServerHandle, IN LPTSTR WkstaName OPTIONAL, IN DWORD WkstaRid, IN DWORD RplUserRid );
#ifdef __cplusplus
} #endif
|