Windows2000/private/windows/shell/security/rshx/rshx32.h
2020-09-30 17:12:32 +02:00

234 lines
6.4 KiB
C++

/*++
Copyright (c) 1995 Microsoft Corporation
Module Name:
rshx32.h
Abstract:
Remote administration shell extension.
Author:
Don Ryan (donryan) 23-May-1995
Environment:
User Mode - Win32
Revision History:
*/
#ifndef _RSHX32_H_
#define _RSHX32_H_
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
#define SIZEOF(x) sizeof(x)
#endif
// Avoid bringing in C runtime code for NO reason
static inline void * __cdecl operator new(unsigned int size) { return (void *)LocalAlloc(LPTR, size); }
static inline void __cdecl operator delete(void *ptr) { LocalFree(ptr); }
extern "C" inline __cdecl _purecall(void) {return 0;}
DEFINE_GUID(CLSID_RShellExt, 0x1f2e5c40, 0x9550,
0x11ce, 0x99, 0xd2, 0x00, 0xaa, 0x00, 0x6e, 0x08, 0x6c);
class CRShellExtCF : public IClassFactory
{
protected:
ULONG m_cRef;
public:
CRShellExtCF();
~CRShellExtCF();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IClassFactory methods
STDMETHODIMP CreateInstance(LPUNKNOWN, REFIID, LPVOID FAR *);
STDMETHODIMP LockServer(BOOL);
};
class CRShellExt : public IShellPropSheetExt, IShellExtInit
{
protected:
ULONG m_cRef;
LPDATAOBJECT m_lpdobj; // interface passed in by shell
public:
CRShellExt();
~CRShellExt();
// IUnknown methods
STDMETHODIMP QueryInterface(REFIID, LPVOID FAR *);
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
// IShellExtInit method
STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
// IShellPropSheetExt methods
STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM);
};
typedef CRShellExt* PRSHELLEXT;
#define CF_NETRESOURCE TEXT("Net Resource")
#define MAX_ONE_RESOURCE 1024
typedef struct _RPROPSHEETPAGE {
PROPSHEETPAGE psp;
HWND hDlg;
DWORD flags;
DWORD cItems;
LPDATAOBJECT lpdobj;
TCHAR szBuf[MAX_ONE_RESOURCE];
} RPROPSHEETPAGE, *PRPROPSHEETPAGE;
#define DOBJ_CF_HDROP 0x00000001L
#define DOBJ_CF_HNRES 0x00000002L
#define DOBJ_CF_MASK 0x0000000FL
#define IsFormatHDROP(dw) ((dw)&(DOBJ_CF_HDROP))
#define IsFormatHNRES(dw) ((dw)&(DOBJ_CF_HNRES))
#define DOBJ_FOC_LOCAL 0x00000010L
#define DOBJ_FOC_REMOTE 0x00000020L
#define DOBJ_FOC_MASK 0x000000F0L
#define IsFocusLocal(dw) ((dw)&(DOBJ_FOC_LOCAL))
#define IsFocusRemote(dw) ((dw)&(DOBJ_FOC_REMOTE))
#define DOBJ_SRV_NT 0x00000100L
#define DOBJ_SRV_OS2 0x00000200L
#define DOBJ_SRV_W95 0x00000400L
#define DOBJ_SRV_MASK 0x0000FF00L
#define IsServerNT(dw) ((dw)&(DOBJ_SRV_NT))
#define IsServerOS2(dw) ((dw)&(DOBJ_SRV_OS2))
#define IsServerW95(dw) ((dw)&(DOBJ_SRV_W95))
#define DOBJ_RES_DISK 0x00010000L
#define DOBJ_RES_PRINT 0x00020000L
#define DOBJ_RES_MASK 0x00FF0000L
#define IsResDisk(dw) ((dw)&(DOBJ_RES_DISK))
#define IsResPrintQ(dw) ((dw)&(DOBJ_RES_PRINT))
#define DOBJ_VOL_FAT 0x01000000L
#define DOBJ_VOL_HPFS 0x02000000L
#define DOBJ_VOL_NTACLS 0x04000000L // NTFS or OFS
#define DOBJ_VOL_MASK 0xFF000000L
#define IsVolumeFAT(dw) ((dw)&(DOBJ_VOL_FAT))
#define IsVolumeHPFS(dw) ((dw)&(DOBJ_VOL_HPFS))
#define IsVolumeNTACLS(dw)((dw)&(DOBJ_VOL_NTACLS))
#define DLL_SHELL32 TEXT("shell32.dll")
#define EXP_SHDRAGQUERYFILEA "DragQueryFileA"
#define EXP_SHDRAGQUERYFILEW "DragQueryFileW"
#define EXP_SHGETNETRESOURCE (LPSTR)MAKEINTRESOURCE(69)
typedef HANDLE HNRES;
typedef UINT (WINAPI *SHDRAGQUERYFILEA)(HDROP, UINT, LPSTR, UINT);
typedef UINT (WINAPI *SHDRAGQUERYFILEW)(HDROP, UINT, LPWSTR, UINT);
typedef UINT (WINAPI *SHGETNETRESOURCE)(HNRES, UINT, LPNETRESOURCE, UINT);
#define DLL_ACLEDIT TEXT("acledit.dll")
#define EXP_EDITPERMSINFO "EditPermissionInfo"
#define EXP_EDITAUDITINFO "EditAuditInfo"
#define EXP_EDITOWNERINFO "EditOwnerInfo"
#define EXP_EDITQACL "EditQACL"
typedef void (APIENTRY *ACLEDITPROC)(HWND);
typedef void (APIENTRY *EDITQACL)(HWND, LPTSTR, BOOL);
#define DLL_PRTQ32 TEXT("prtq32.dll")
#define EXP_EDITQACL2 "EditQACL2"
typedef void (APIENTRY *EDITQACL2)(HWND, LPTSTR, UINT);
#pragma pack(1)
#ifdef WINNT
#include <lm.h>
#define DLL_NET32 TEXT("netapi32.dll")
#define EXP_NETUSEGETINFO "NetUseGetInfo"
#define EXP_NETSERVERGETINFO "NetServerGetInfo"
#define EXP_NETAPIBUFFERFREE "NetApiBufferFree"
typedef NET_API_STATUS (NET_API_FUNCTION *NETUSEGETINFO)(LPTSTR, LPTSTR, DWORD, LPBYTE *);
typedef NET_API_STATUS (NET_API_FUNCTION *NETSERVERGETINFO)(LPTSTR, DWORD, LPBYTE *);
typedef NET_API_STATUS (NET_API_FUNCTION *NETAPIBUFFERFREE)(LPVOID);
#else
#define DLL_NET32 TEXT("msnet32.dll")
#define EXP_NETUSEGETINFO ((LPSTR)MAKEINTRESOURCE(46))
#define EXP_NETSERVERGETINFO ((LPSTR)MAKEINTRESOURCE(15))
typedef UINT (APIENTRY *NETUSEGETINFO)(LPSTR, LPSTR, SHORT, LPSTR, USHORT, USHORT*);
typedef UINT (APIENTRY *NETSERVERGETINFO)(LPSTR, SHORT, LPSTR, USHORT, USHORT*);
#define NERR_Success 0
#define NERR_UseNotFound 2250
#define NT_NOS_MAJOR_VER 3
#define MAJOR_VER_MASK 0x0F
#define CNLEN 15
#define DEVLEN 8
typedef struct _USE_INFO_1 {
CHAR ui1_local[DEVLEN+1];
CHAR ui1_pad;
LPSTR ui1_remote;
LPSTR ui1_password;
USHORT ui1_status;
SHORT ui1_asg_type;
USHORT ui1_refcount;
USHORT ui1_usecount;
} USE_INFO_1, *PUSE_INFO_1;
typedef struct _SERVER_INFO_1 {
CHAR sv1_name[CNLEN+1];
BYTE sv1_version_major;
BYTE sv1_version_minor;
DWORD sv1_type;
LPSTR sv1_comment;
} SERVER_INFO_1, *PSERVER_INFO_1;
#endif
#pragma pack()
#define IDD_SECURITY 100
#define IDI_PERMS 200
#define IDI_AUDIT 201
#define IDI_OWNER 202
#define IDC_PERMS 300 // must be first
#define IDC_AUDIT 301 // must be second
#define IDC_OWNER 302 // must be third
#define IDS_SECURITY 400
#define IDS_PERMS 401
#define IDS_AUDIT 402
#define IDS_OWNER 403
#define IDS_PERMS_DEFAULT 404
#define IDS_AUDIT_DEFAULT 405
#define IDS_OWNER_DEFAULT 406
#define IDC_STATIC -1
#define FMXCLASSNAME TEXT("RSHXFMXClass")
#endif // _RSHX32_H_