//-------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1999 - 2000. // // // Microsoft state migration helper tool // // File: scansys.hxx // //-------------------------------------------------------------- #ifndef SCANSYS_HXX #define SCANSYS_HXX #include #include #include //--------------------------------------------------------------- // Constants. /* These flags are relevant for share-level security on VSERVER * When operating with user-level security, use SHI50F_FULL - the actual * access rights are determined by the NetAccess APIs. */ #define SHI50F_RDONLY 0x0001 #define SHI50F_FULL 0x0002 #define SHI50F_ACCESSMASK (SHI50F_RDONLY|SHI50F_FULL) /* The share is restored on system startup */ #define SHI50F_PERSIST 0x0100 /* The share is not normally visible */ #define SHI50F_SYSTEM 0x0200 // // Win9x migration net share flag, used to distinguish user-level security and // password-level security. When it is specified, user-level // security is enabled, and NetShares\\ACL\ exists. // #define SHI50F_ACLS 0x1000 // // Flags that help determine when custom access is enabled // #define READ_ACCESS_FLAGS 0x0081 #define READ_ACCESS_MASK 0x7fff #define FULL_ACCESS_FLAGS 0x00b7 #define FULL_ACCESS_MASK 0x7fff //--------------------------------------------------------------- // Types not defined by public headers // typedef NET_API_STATUS (* ScanNetShareEnumNT) ( LMSTR servername, DWORD level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle ); typedef NET_API_STATUS (* ScanNetShareEnum9x) ( const char * servername, short level, char * bufptr, unsigned short prefmaxlen, unsigned short * entriesread, unsigned short * totalentries); typedef NET_API_STATUS (* ScanNetApiBufferFreeNT) ( void *); typedef NET_API_STATUS (* ScanNetAccessEnum9x) ( const char * pszServer, char * pszBasePath, short fsRecursive, short sLevel, char * pbBuffer, unsigned short cbBuffer, unsigned short * pcEntriesRead, unsigned short * pcTotalAvail ); #pragma pack(push) #pragma pack(1) /* Assume byte packing throughout */ struct _share_info_50 { char shi50_netname[LM20_NNLEN+1]; unsigned char shi50_type; unsigned short shi50_flags; char * shi50_remark; char * shi50_path; char shi50_rw_password[SHPWLEN+1]; char shi50_ro_password[SHPWLEN+1]; }; struct access_list_2 { char * acl2_ugname; unsigned short acl2_access; }; /* access_list_2 */ struct access_info_2 { char * acc2_resource_name; short acc2_attr; short acc2_count; }; /* access_info_2 */ #pragma pack(pop) //--------------------------------------------------------------- // Routines implemented // DWORD ScanCheckVersion (); DWORD ScanEnumerateShares (HANDLE h); DWORD ScanEnumeratePrinters (HANDLE h); DWORD ScanEnumerateNetResources (HANDLE h, DWORD dwScope, NETRESOURCEA *lpnr); // RAS Data structures // // AddrEntry serves as a header for the entire block of data in the // blob. entries in it are offsets to the strings which follow it..in many cases // (i.e. all of the *Off* members...) // typedef struct _AddrEntry { DWORD dwVersion; DWORD dwCountryCode; UINT uOffArea; UINT uOffPhone; DWORD dwCountryID; UINT uOffSMMCfg; UINT uOffSMM; UINT uOffDI; } ADDRENTRY, *PADDRENTRY; typedef struct _SubConnEntry { DWORD dwSize; DWORD dwFlags; char szDeviceType[RAS_MaxDeviceType+1]; char szDeviceName[RAS_MaxDeviceName+1]; char szLocal[RAS_MaxPhoneNumber+1]; } SUBCONNENTRY, *PSUBCONNENTRY; typedef struct _IPData { DWORD dwSize; DWORD fdwTCPIP; DWORD dwIPAddr; DWORD dwDNSAddr; DWORD dwDNSAddrAlt; DWORD dwWINSAddr; DWORD dwWINSAddrAlt; } IPDATA, *PIPDATA; typedef struct _DEVICEINFO { DWORD dwVersion; UINT uSize; char szDeviceName[RAS_MaxDeviceName+1]; char szDeviceType[RAS_MaxDeviceType+1]; } DEVICEINFO, *PDEVICEINFO; typedef struct _SMMCFG { DWORD dwSize; DWORD fdwOptions; DWORD fdwProtocols; } SMMCFG, *PSMMCFG; #define PAESMMCFG(pAE) ((PSMMCFG)(((PBYTE)pAE)+(pAE->uOffSMMCfg))) #define PAESMM(pAE) ((PSTR)(((PBYTE)pAE)+(pAE->uOffSMM))) #define PAEDI(pAE) ((PDEVICEINFO)(((PBYTE)pAE)+(pAE->uOffDI ))) #define PAEAREA(pAE) ((PSTR)(((PBYTE)pAE)+(pAE->uOffArea))) #define PAEPHONE(pAE) ((PSTR)(((PBYTE)pAE)+(pAE->uOffPhone))) #define BASICS_ON 0x00000001 #define BASICS_AVAILABLE 0x00000002 #define BASICS_HOTKEYACTIVE 0x00000004 #define BASICS_CONFIRMHOTKEY 0x00000008 #define BASICS_HOTKEYSOUND 0x00000010 #define BASICS_INDICATOR 0x00000020 #define SPECIAL_INVERT_OPTION 0x80000000 typedef struct { LPCTSTR ValueName; DWORD FlagVal; } ACCESS_OPTION, *PACCESS_OPTION; #endif //SCANSYS_HXX