| 1 |
/***********************************************************************\ |
|---|
| 2 |
* lmshare.d * |
|---|
| 3 |
* * |
|---|
| 4 |
* Windows API header module * |
|---|
| 5 |
* * |
|---|
| 6 |
* Translated from MinGW Windows headers * |
|---|
| 7 |
* * |
|---|
| 8 |
* Placed into public domain * |
|---|
| 9 |
\***********************************************************************/ |
|---|
| 10 |
module win32.lmshare; |
|---|
| 11 |
|
|---|
| 12 |
import win32.lmcons; |
|---|
| 13 |
private import win32.w32api, win32.windef; |
|---|
| 14 |
|
|---|
| 15 |
static if (_WIN32_WINNT_ONLY) { |
|---|
| 16 |
pragma(lib, "netapi.lib"); |
|---|
| 17 |
} |
|---|
| 18 |
/* else { |
|---|
| 19 |
// only for WinME, 98, 95. |
|---|
| 20 |
pragma(lib, "svrapi.lib") |
|---|
| 21 |
} |
|---|
| 22 |
*/ |
|---|
| 23 |
|
|---|
| 24 |
const SHARE_NETNAME_PARMNUM = 1; |
|---|
| 25 |
const SHARE_TYPE_PARMNUM = 3; |
|---|
| 26 |
const SHARE_REMARK_PARMNUM = 4; |
|---|
| 27 |
const SHARE_PERMISSIONS_PARMNUM = 5; |
|---|
| 28 |
const SHARE_MAX_USES_PARMNUM = 6; |
|---|
| 29 |
const SHARE_CURRENT_USES_PARMNUM = 7; |
|---|
| 30 |
const SHARE_PATH_PARMNUM = 8; |
|---|
| 31 |
const SHARE_PASSWD_PARMNUM = 9; |
|---|
| 32 |
const SHARE_FILE_SD_PARMNUM = 501; |
|---|
| 33 |
const SHARE_REMARK_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_REMARK_PARMNUM; |
|---|
| 34 |
const SHARE_MAX_USES_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_MAX_USES_PARMNUM; |
|---|
| 35 |
const SHARE_FILE_SD_INFOLEVEL = PARMNUM_BASE_INFOLEVEL + SHARE_FILE_SD_PARMNUM; |
|---|
| 36 |
|
|---|
| 37 |
const SHI1_NUM_ELEMENTS = 4; |
|---|
| 38 |
const SHI2_NUM_ELEMENTS = 10; |
|---|
| 39 |
|
|---|
| 40 |
const STYPE_DISKTREE = 0; |
|---|
| 41 |
const STYPE_PRINTQ = 1; |
|---|
| 42 |
const STYPE_DEVICE = 2; |
|---|
| 43 |
const STYPE_IPC = 3; |
|---|
| 44 |
const STYPE_DFS = 100; |
|---|
| 45 |
const STYPE_SPECIAL = 0x80000000; |
|---|
| 46 |
|
|---|
| 47 |
const DWORD SHI_USES_UNLIMITED = -1; |
|---|
| 48 |
|
|---|
| 49 |
const SESS_GUEST = 1; |
|---|
| 50 |
const SESS_NOENCRYPTION = 2; |
|---|
| 51 |
const SESI1_NUM_ELEMENTS = 8; |
|---|
| 52 |
const SESI2_NUM_ELEMENTS = 9; |
|---|
| 53 |
|
|---|
| 54 |
const PERM_FILE_READ = 1; |
|---|
| 55 |
const PERM_FILE_WRITE = 2; |
|---|
| 56 |
const PERM_FILE_CREATE = 4; |
|---|
| 57 |
|
|---|
| 58 |
struct FILE_INFO_2 { |
|---|
| 59 |
DWORD fi2_id; |
|---|
| 60 |
} |
|---|
| 61 |
alias FILE_INFO_2* PFILE_INFO_2, LPFILE_INFO_2; |
|---|
| 62 |
|
|---|
| 63 |
struct FILE_INFO_3 { |
|---|
| 64 |
DWORD fi3_id; |
|---|
| 65 |
DWORD fi3_permissions; |
|---|
| 66 |
DWORD fi3_num_locks; |
|---|
| 67 |
LPTSTR fi3_pathname; |
|---|
| 68 |
LPTSTR fi3_username; |
|---|
| 69 |
} |
|---|
| 70 |
alias FILE_INFO_3* PFILE_INFO_3, LPFILE_INFO_3; |
|---|
| 71 |
|
|---|
| 72 |
struct SHARE_INFO_0 { |
|---|
| 73 |
LPTSTR shi0_netname; |
|---|
| 74 |
} |
|---|
| 75 |
alias SHARE_INFO_0* PSHARE_INFO_0, LPSHARE_INFO_0; |
|---|
| 76 |
|
|---|
| 77 |
struct SHARE_INFO_1 { |
|---|
| 78 |
LPTSTR shi1_netname; |
|---|
| 79 |
DWORD shi1_type; |
|---|
| 80 |
LPTSTR shi1_remark; |
|---|
| 81 |
} |
|---|
| 82 |
alias SHARE_INFO_1* PSHARE_INFO_1, LPSHARE_INFO_1; |
|---|
| 83 |
|
|---|
| 84 |
struct SHARE_INFO_2 { |
|---|
| 85 |
LPTSTR shi2_netname; |
|---|
| 86 |
DWORD shi2_type; |
|---|
| 87 |
LPTSTR shi2_remark; |
|---|
| 88 |
DWORD shi2_permissions; |
|---|
| 89 |
DWORD shi2_max_uses; |
|---|
| 90 |
DWORD shi2_current_uses; |
|---|
| 91 |
LPTSTR shi2_path; |
|---|
| 92 |
LPTSTR shi2_passwd; |
|---|
| 93 |
} |
|---|
| 94 |
alias SHARE_INFO_2* PSHARE_INFO_2, LPSHARE_INFO_2; |
|---|
| 95 |
|
|---|
| 96 |
struct SHARE_INFO_502 { |
|---|
| 97 |
LPTSTR shi502_netname; |
|---|
| 98 |
DWORD shi502_type; |
|---|
| 99 |
LPTSTR shi502_remark; |
|---|
| 100 |
DWORD shi502_permissions; |
|---|
| 101 |
DWORD shi502_max_uses; |
|---|
| 102 |
DWORD shi502_current_uses; |
|---|
| 103 |
LPTSTR shi502_path; |
|---|
| 104 |
LPTSTR shi502_passwd; |
|---|
| 105 |
DWORD shi502_reserved; |
|---|
| 106 |
PSECURITY_DESCRIPTOR shi502_security_descriptor; |
|---|
| 107 |
} |
|---|
| 108 |
alias SHARE_INFO_502* PSHARE_INFO_502, LPSHARE_INFO_502; |
|---|
| 109 |
|
|---|
| 110 |
struct SHARE_INFO_1004 { |
|---|
| 111 |
LPTSTR shi1004_remark; |
|---|
| 112 |
} |
|---|
| 113 |
alias SHARE_INFO_1004* PSHARE_INFO_1004, LPSHARE_INFO_1004; |
|---|
| 114 |
|
|---|
| 115 |
struct SHARE_INFO_1006 { |
|---|
| 116 |
DWORD shi1006_max_uses; |
|---|
| 117 |
} |
|---|
| 118 |
alias SHARE_INFO_1006* PSHARE_INFO_1006, LPSHARE_INFO_1006; |
|---|
| 119 |
|
|---|
| 120 |
struct SHARE_INFO_1501 { |
|---|
| 121 |
DWORD shi1501_reserved; |
|---|
| 122 |
PSECURITY_DESCRIPTOR shi1501_security_descriptor; |
|---|
| 123 |
} |
|---|
| 124 |
alias SHARE_INFO_1501* PSHARE_INFO_1501, LPSHARE_INFO_1501; |
|---|
| 125 |
|
|---|
| 126 |
struct SESSION_INFO_0 { |
|---|
| 127 |
LPWSTR sesi0_cname; |
|---|
| 128 |
} |
|---|
| 129 |
alias SESSION_INFO_0* PSESSION_INFO_0, LPSESSION_INFO_0; |
|---|
| 130 |
|
|---|
| 131 |
struct SESSION_INFO_1 { |
|---|
| 132 |
LPTSTR sesi1_cname; |
|---|
| 133 |
LPTSTR sesi1_username; |
|---|
| 134 |
DWORD sesi1_num_opens; |
|---|
| 135 |
DWORD sesi1_time; |
|---|
| 136 |
DWORD sesi1_idle_time; |
|---|
| 137 |
DWORD sesi1_user_flags; |
|---|
| 138 |
} |
|---|
| 139 |
alias SESSION_INFO_1* PSESSION_INFO_1, LPSESSION_INFO_1; |
|---|
| 140 |
|
|---|
| 141 |
struct SESSION_INFO_2 { |
|---|
| 142 |
LPTSTR sesi2_cname; |
|---|
| 143 |
LPTSTR sesi2_username; |
|---|
| 144 |
DWORD sesi2_num_opens; |
|---|
| 145 |
DWORD sesi2_time; |
|---|
| 146 |
DWORD sesi2_idle_time; |
|---|
| 147 |
DWORD sesi2_user_flags; |
|---|
| 148 |
LPWSTR sesi2_cltype_name; |
|---|
| 149 |
} |
|---|
| 150 |
alias SESSION_INFO_2* PSESSION_INFO_2, LPSESSION_INFO_2; |
|---|
| 151 |
|
|---|
| 152 |
struct SESSION_INFO_10 { |
|---|
| 153 |
LPWSTR sesi10_cname; |
|---|
| 154 |
LPWSTR sesi10_username; |
|---|
| 155 |
DWORD sesi10_time; |
|---|
| 156 |
DWORD sesi10_idle_time; |
|---|
| 157 |
} |
|---|
| 158 |
alias SESSION_INFO_10* PSESSION_INFO_10, LPSESSION_INFO_10; |
|---|
| 159 |
|
|---|
| 160 |
struct SESSION_INFO_502 { |
|---|
| 161 |
LPWSTR sesi502_cname; |
|---|
| 162 |
LPWSTR sesi502_username; |
|---|
| 163 |
DWORD sesi502_num_opens; |
|---|
| 164 |
DWORD sesi502_time; |
|---|
| 165 |
DWORD sesi502_idle_time; |
|---|
| 166 |
DWORD sesi502_user_flags; |
|---|
| 167 |
LPWSTR sesi502_cltype_name; |
|---|
| 168 |
LPWSTR sesi502_transport; |
|---|
| 169 |
} |
|---|
| 170 |
alias SESSION_INFO_502* PSESSION_INFO_502, LPSESSION_INFO_502; |
|---|
| 171 |
|
|---|
| 172 |
struct CONNECTION_INFO_0 { |
|---|
| 173 |
DWORD coni0_id; |
|---|
| 174 |
} |
|---|
| 175 |
alias CONNECTION_INFO_0* PCONNECTION_INFO_0, LPCONNECTION_INFO_0; |
|---|
| 176 |
|
|---|
| 177 |
struct CONNECTION_INFO_1 { |
|---|
| 178 |
DWORD coni1_id; |
|---|
| 179 |
DWORD coni1_type; |
|---|
| 180 |
DWORD coni1_num_opens; |
|---|
| 181 |
DWORD coni1_num_users; |
|---|
| 182 |
DWORD coni1_time; |
|---|
| 183 |
LPWSTR coni1_username; |
|---|
| 184 |
LPWSTR coni1_netname; |
|---|
| 185 |
} |
|---|
| 186 |
alias CONNECTION_INFO_1* PCONNECTION_INFO_1, LPCONNECTION_INFO_1; |
|---|
| 187 |
|
|---|
| 188 |
extern (Windows) { |
|---|
| 189 |
NET_API_STATUS NetShareAdd(LPWSTR,DWORD,PBYTE,PDWORD); |
|---|
| 190 |
NET_API_STATUS NetShareEnum(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); |
|---|
| 191 |
NET_API_STATUS NetShareEnumSticky(LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD resume_handle); |
|---|
| 192 |
NET_API_STATUS NetShareGetInfo(LPWSTR,LPWSTR,DWORD,PBYTE*); |
|---|
| 193 |
NET_API_STATUS NetShareSetInfo(LPWSTR,LPWSTR,DWORD,PBYTE,PDWORD); |
|---|
| 194 |
NET_API_STATUS NetShareDel(LPWSTR,LPWSTR,DWORD); |
|---|
| 195 |
NET_API_STATUS NetShareDelSticky(LPWSTR,LPWSTR,DWORD); |
|---|
| 196 |
NET_API_STATUS NetShareCheck(LPWSTR,LPWSTR,PDWORD); |
|---|
| 197 |
NET_API_STATUS NetSessionEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); |
|---|
| 198 |
NET_API_STATUS NetSessionDel(LPWSTR,LPWSTR,LPWSTR); |
|---|
| 199 |
NET_API_STATUS NetSessionGetInfo(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*); |
|---|
| 200 |
NET_API_STATUS NetConnectionEnum(LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); |
|---|
| 201 |
NET_API_STATUS NetFileClose(LPWSTR,DWORD); |
|---|
| 202 |
NET_API_STATUS NetFileEnum(LPWSTR,LPWSTR,LPWSTR,DWORD,PBYTE*,DWORD,PDWORD,PDWORD,PDWORD); |
|---|
| 203 |
NET_API_STATUS NetFileGetInfo(LPWSTR,DWORD,DWORD,PBYTE*); |
|---|
| 204 |
} |
|---|