545 lines
16 KiB
C
545 lines
16 KiB
C
/*++ 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
|