You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
220 lines
6.3 KiB
220 lines
6.3 KiB
#ifndef _OPENFILES_DEF_H
|
|
#define _OPENFILES_DEF_H
|
|
|
|
#include <windows.h>
|
|
#include <winperf.h>
|
|
#include <lmcons.h>
|
|
#include <lmerr.h>
|
|
#include <dbghelp.h>
|
|
#include <psapi.h>
|
|
#include <tchar.h>
|
|
#include <Winbase.h>
|
|
#include <lm.h>
|
|
#include <Lmserver.h>
|
|
#include <winerror.h>
|
|
#include <time.h>
|
|
#include <tchar.h>
|
|
#include <stdio.h>
|
|
#include <crtdbg.h>
|
|
#include <atlbase.h>
|
|
|
|
|
|
#define MAX_ACES 64
|
|
#define ALLOWED_ACE 0
|
|
#define DENIED_ACE 1
|
|
|
|
#define ACCESS_READ_PERM 0x1200A9
|
|
#define ACCESS_CHANGE_PERM 0x1301BF
|
|
#define ACCESS_FULL_PERM 0x1F01FF
|
|
#define ACCESS_UNKNOWN_PERM 0x0
|
|
|
|
#define STR_READ _TEXT("R")
|
|
#define STR_CHANGE _TEXT("C")
|
|
#define STR_FULL _TEXT("F")
|
|
|
|
// To handle all exceptions
|
|
#define ONFAILTHROWERROR(hr) \
|
|
{ \
|
|
if (FAILED(hr)) \
|
|
throw _com_issue_error(hr); \
|
|
}
|
|
|
|
#define FPNWCLNTDLL _TEXT("FPNWCLNT.DLL")
|
|
|
|
|
|
inline DWORD GetAccessMask(LPWSTR lpAccessStr)
|
|
{
|
|
if(!lstrcmpi(lpAccessStr, STR_READ))
|
|
return ACCESS_READ_PERM;
|
|
else if(!lstrcmpi(lpAccessStr, STR_CHANGE))
|
|
return ACCESS_CHANGE_PERM;
|
|
else if(!lstrcmpi(lpAccessStr, STR_FULL))
|
|
return ACCESS_FULL_PERM;
|
|
else
|
|
return ACCESS_UNKNOWN_PERM;
|
|
}
|
|
/**************** structures and prototypes for nw shares ************/
|
|
|
|
#define FPNWVOL_TYPE_DISKTREE 0
|
|
#define NERR_Success 0
|
|
|
|
#define FPNWFILE_PERM_READ 0x01
|
|
#define FPNWFILE_PERM_WRITE 0x02
|
|
#define FPNWFILE_PERM_CREATE 0x04
|
|
#define FILE_INFO_3 0x03
|
|
|
|
/*
|
|
DWORD
|
|
FpnwFileEnum(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN DWORD dwLevel,
|
|
IN LPWSTR pPathName OPTIONAL,
|
|
OUT LPBYTE *ppFileInfo,
|
|
OUT PDWORD pEntriesRead,
|
|
IN OUT PDWORD resumeHandle OPTIONAL
|
|
);
|
|
*/
|
|
|
|
/*
|
|
DWORD
|
|
FpnwVolumeEnum(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN DWORD dwLevel,
|
|
OUT LPBYTE *ppVolumeInfo,
|
|
OUT PDWORD pEntriesRead,
|
|
IN OUT PDWORD resumeHandle OPTIONAL
|
|
);
|
|
*/
|
|
|
|
/*
|
|
DWORD
|
|
FpnwVolumeGetInfo(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN LPWSTR pVolumeName,
|
|
IN DWORD dwLevel,
|
|
OUT LPBYTE *ppVolumeInfo
|
|
);*/
|
|
|
|
/*
|
|
DWORD
|
|
FpnwVolumeSetInfo(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN LPWSTR pVolumeName,
|
|
IN DWORD dwLevel,
|
|
IN LPBYTE pVolumeInfo
|
|
);
|
|
*/
|
|
|
|
/*DWORD
|
|
FpnwVolumeAdd(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN DWORD dwLevel,
|
|
IN LPBYTE pVolumeInfo
|
|
)*/
|
|
|
|
/*
|
|
DWORD
|
|
FpnwVolumeDel(
|
|
IN LPWSTR pServerName OPTIONAL,
|
|
IN LPWSTR pVolumeName
|
|
);
|
|
*/
|
|
|
|
typedef DWORD (WINAPI *FILEENUMPROC) (LPWSTR,DWORD,LPWSTR,PBYTE*,PDWORD,PDWORD);
|
|
typedef DWORD (WINAPI *VOLUMEENUMPROC) (LPWSTR,DWORD,LPBYTE*,PDWORD,PDWORD);
|
|
typedef DWORD (WINAPI *VOLUMEGETINFOPROC) (LPWSTR,LPWSTR,DWORD,LPBYTE*);
|
|
typedef DWORD (WINAPI *VOLUMESETINFOPROC) (LPWSTR,LPWSTR,DWORD,LPBYTE);
|
|
typedef DWORD (WINAPI *VOLUMEADDPROC) (LPWSTR,DWORD,LPBYTE);
|
|
typedef DWORD (WINAPI *VOLUMEDELPROC) (LPTSTR,LPTSTR);
|
|
|
|
typedef enum _FPNW_API_INDEX
|
|
{
|
|
FPNW_VOLUME_ENUM = 0,
|
|
FPNW_FILE_ENUM,
|
|
FPNW_API_BUFFER_FREE,
|
|
FPNW_VOLUME_DEL,
|
|
FPNW_VOLUME_ADD,
|
|
FPNW_FILE_CLOSE,
|
|
FPNW_VOLUME_GET_INFO,
|
|
FPNW_VOLUME_SET_INFO
|
|
}FPNW_API_INDEX;
|
|
|
|
//
|
|
// This is the level 1 structure for FpnwVolumeAdd, FpnwVolumeDel, FpnwVolumeEnum,
|
|
// FpnwVolumeGetInfo, & FpnwVolumeSetInfo.
|
|
//
|
|
|
|
typedef struct _FPNWVolumeInfo
|
|
{
|
|
LPWSTR lpVolumeName; // Name of the volume
|
|
DWORD dwType; // Specifics of the volume. FPNWVOL_TYPE_???
|
|
DWORD dwMaxUses; // Maximum number of connections that are
|
|
// allowed to the volume
|
|
DWORD dwCurrentUses; // Current number of connections to the volume
|
|
LPWSTR lpPath; // Path of the volume
|
|
|
|
} FPNWVOLUMEINFO, *PFPNWVOLUMEINFO;
|
|
|
|
|
|
//
|
|
// This is the level 2 structure for FpnwVolumeAdd, FpnwVolumeDel, FpnwVolumeEnum,
|
|
// FpnwVolumeGetInfo, & FpnwVolumeSetInfo.
|
|
// Note that this is not supported on the FPNW beta.
|
|
//
|
|
|
|
typedef struct _FPNWVolumeInfo_2
|
|
{
|
|
LPWSTR lpVolumeName; // Name of the volume
|
|
DWORD dwType; // Specifics of the volume. FPNWVOL_TYPE_???
|
|
DWORD dwMaxUses; // Maximum number of connections that are
|
|
// allowed to the volume
|
|
DWORD dwCurrentUses; // Current number of connections to the volume
|
|
LPWSTR lpPath; // Path of the volume
|
|
|
|
DWORD dwFileSecurityDescriptorLength; // reserved, this is calculated
|
|
PSECURITY_DESCRIPTOR FileSecurityDescriptor;
|
|
|
|
} FPNWVOLUMEINFO_2, *PFPNWVOLUMEINFO_2;
|
|
|
|
// fpnwapi.h
|
|
typedef struct _FPNWFileInfo
|
|
{
|
|
DWORD dwFileId; // File identification number
|
|
LPWSTR lpPathName; // Full path name of this file
|
|
LPWSTR lpVolumeName; // Volume name this file is on
|
|
DWORD dwPermissions; // Permission mask: FPNWFILE_PERM_READ,
|
|
// FPNWFILE_PERM_WRITE,
|
|
// FPNWFILE_PERM_CREATE...
|
|
DWORD dwLocks; // Number of locks on this file
|
|
LPWSTR lpUserName; // The name of the user that established the
|
|
// connection and opened the file
|
|
BYTE WkstaAddress[12]; // The workstation address which opened the file
|
|
DWORD dwAddressType; // Address type: IP, IPX
|
|
|
|
} FPNWFILEINFO, *PFPNWFILEINFO;
|
|
|
|
/****************** end structures and prototypes for nw shares ********************/
|
|
|
|
/****************** structures and prototypes for apple talk ***********************/
|
|
|
|
typedef DWORD (WINAPI *CONNECTPROC) (LPWSTR,DWORD*);
|
|
typedef DWORD (WINAPI *FILEENUMPROCMAC) (DWORD,PBYTE*,DWORD,LPDWORD,LPDWORD,LPDWORD);
|
|
|
|
typedef struct _AFP_FILE_INFO
|
|
{
|
|
DWORD afpfile_id; // Id of the open file fork
|
|
DWORD afpfile_open_mode; // Mode in which file is opened
|
|
DWORD afpfile_num_locks; // Number of locks on the file
|
|
DWORD afpfile_fork_type; // Fork type
|
|
LPWSTR afpfile_username; // File opened by this user. max UNLEN
|
|
LPWSTR afpfile_path; // Absolute canonical path to the file
|
|
|
|
} AFP_FILE_INFO, *PAFP_FILE_INFO;
|
|
|
|
// Used as RPC binding handle to server
|
|
typedef DWORD AFP_SERVER_HANDLE;
|
|
typedef DWORD *PAFP_SERVER_HANDLE;
|
|
|
|
/****************** end structures and prototypes for apple talk ***********************/
|
|
|
|
#endif
|