Windows: conditionally set tray icon state
[openafs.git] / src / WINNT / client_config / drivemap.h
1 /*
2  * Copyright 2000, International Business Machines Corporation and others.
3  * All Rights Reserved.
4  *
5  * This software has been released under the terms of the IBM Public
6  * License.  For details, see the LICENSE file in the top-level source
7  * directory or online at http://www.openafs.org/dl/license10.html
8  */
9
10 #ifndef DRIVEMAP_H
11 #define DRIVEMAP_H
12
13
14 /*
15  * DEFINITIONS ________________________________________________________________
16  *
17  */
18
19 #define chDRIVE_A   TEXT('A')
20 #define chDRIVE_B   TEXT('B')
21 #define chDRIVE_C   TEXT('C')
22 #define chDRIVE_D   TEXT('D')
23 #define chDRIVE_E   TEXT('E')
24 #define chDRIVE_F   TEXT('F')
25 #define chDRIVE_G   TEXT('G')
26 #define chDRIVE_H   TEXT('H')
27 #define chDRIVE_I   TEXT('I')
28 #define chDRIVE_J   TEXT('J')
29 #define chDRIVE_K   TEXT('K')
30 #define chDRIVE_L   TEXT('L')
31 #define chDRIVE_M   TEXT('M')
32 #define chDRIVE_N   TEXT('N')
33 #define chDRIVE_O   TEXT('O')
34 #define chDRIVE_P   TEXT('P')
35 #define chDRIVE_Q   TEXT('Q')
36 #define chDRIVE_R   TEXT('R')
37 #define chDRIVE_S   TEXT('S')
38 #define chDRIVE_T   TEXT('T')
39 #define chDRIVE_U   TEXT('U')
40 #define chDRIVE_V   TEXT('V')
41 #define chDRIVE_W   TEXT('W')
42 #define chDRIVE_X   TEXT('X')
43 #define chDRIVE_Y   TEXT('Y')
44 #define chDRIVE_Z   TEXT('Z')
45
46 typedef struct
47    {
48    TCHAR chDrive;       // chDRIVE_A through chDRIVE_Z
49    TCHAR szMapping[ MAX_PATH ];
50    TCHAR szSubmount[ MAX_PATH ];
51    BOOL fPersistent;
52    BOOL fActive;
53    } DRIVEMAP, *PDRIVEMAP;
54
55 typedef struct
56    {
57    TCHAR szSubmount[ MAX_PATH ];
58    TCHAR szMapping[ MAX_PATH ];
59    BOOL fInUse;
60    } SUBMOUNT, *PSUBMOUNT;
61
62 typedef struct
63    {
64    DRIVEMAP aDriveMap[26];      // Drive[0]=A, Drive[1]=B, etc
65    PSUBMOUNT aSubmounts;
66    size_t cSubmounts;
67    } DRIVEMAPLIST, *PDRIVEMAPLIST;
68
69
70 /*
71  * PROTOTYPES _________________________________________________________________
72  *
73  */
74
75 BOOL IsValidSubmountName (LPTSTR pszSubmount);
76 void QueryDriveMapList (PDRIVEMAPLIST pList);
77 void WriteDriveMappings (PDRIVEMAPLIST pList);
78 void FreeDriveMapList (PDRIVEMAPLIST pList);
79 BOOL ActivateDriveMap (TCHAR chDrive, LPTSTR pszMapping, LPTSTR pszSubmountReq, BOOL fPersistent, DWORD *pdwStatus = NULL);
80 BOOL InactivateDriveMap (TCHAR chDrive, DWORD *pdwStatus = NULL);
81 void AddSubMount (LPTSTR pszSubmount, LPTSTR pszMapping);
82 void RemoveSubMount (LPTSTR pszSubmount);
83 void AdjustAfsPath (LPTSTR pszTarget, LPCTSTR pszSource, BOOL fWantAFS, BOOL fWantForwardSlashes);
84 BOOL GetDriveSubmount (TCHAR chDrive, LPTSTR pszSubmountNow);
85 BOOL SubmountToPath (PDRIVEMAPLIST pList, LPTSTR pszPath, LPTSTR pszSubmount, BOOL fMarkInUse);
86 BOOL PathToSubmount (LPTSTR pszSubmount, LPTSTR pszMapping, LPTSTR pszSubmountReq, ULONG *pStatus);
87
88 BOOL TestAndDoMapShare(DWORD);
89 BOOL DoMapShare();
90 void MapShareName(char *);
91 void DoUnMapShare(BOOL);
92 BOOL DoMapShareChange(BOOL removeUnknown=TRUE);
93 DWORD RWLogonOption(BOOL read,DWORD value);
94 BOOL GlobalMountDrive();
95 DWORD MountDOSDrive(char chDrive,const char *szSubmount,BOOL bPresistant=TRUE,const char *puser=NULL);
96 DWORD DisMountDOSDrive(const char *szSubmount,BOOL bForce=TRUE);
97 DWORD DisMountDOSDrive(char chDrive,BOOL bForce=TRUE);
98 DWORD DisMountDOSDriveFull(const char *pPath,BOOL bForce=TRUE);
99
100 void  WriteActiveMap(TCHAR chDrive, BOOL bOn);
101 BOOL  ForceMapActive(TCHAR chDrive);
102
103 #ifndef DRIVEMAP_DEF_H
104 extern void TestAndDoUnMapShare();
105 extern TCHAR pUserName[];
106 extern BOOL fUserName;
107 extern DWORD RWLogonOption(BOOL read,DWORD value);
108 extern void SetBitLogonOption(BOOL set,DWORD value);
109 extern BOOL TestAndDoMapShare(DWORD);
110 #endif
111 #endif
112