1 /* 2 * Copyright (C) 2004 Juan Lang 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 17 */ 18 #ifndef __WINE_NPAPI_H__ 19 #define __WINE_NPAPI_H__ 20 21 /* capabilities */ 22 #define WNNC_SPEC_VERSION 0x00000001 23 #define WNNC_SPEC_VERSION51 0x00050001 24 #define WNNC_NET_TYPE 0x00000002 25 #define WNNC_NET_NONE 0x00000000 26 27 #define WNNC_DRIVER_VERSION 0x00000003 28 29 #define WNNC_USER 0x00000004 30 #define WNNC_USR_GETUSER 0x00000001 31 32 #define WNNC_CONNECTION 0x00000006 33 #define WNNC_CON_ADDCONNECTION 0x00000001 34 #define WNNC_CON_CANCELCONNECTION 0x00000002 35 #define WNNC_CON_GETCONNECTIONS 0x00000004 36 #define WNNC_CON_ADDCONNECTION3 0x00000008 37 38 #define WNNC_DIALOG 0x00000008 39 #define WNNC_DLG_DEVICEMODE 0x00000001 40 #define WNNC_DLG_PROPERTYDIALOG 0x00000020 41 #define WNNC_DLG_SEARCHDIALOG 0x00000040 42 #define WNNC_DLG_FORMATNETWORKNAME 0x00000080 43 #define WNNC_DLG_PERMISSIONEDITOR 0x00000100 44 #define WNNC_DLG_GETRESOURCEPARENT 0x00000200 45 #define WNNC_DLG_GETRESOURCEINFORMATION 0x00000800 46 47 #define WNNC_ADMIN 0x00000009 48 #define WNNC_ADM_GETDIRECTORYTYPE 0x00000001 49 #define WNNC_ADM_DIRECTORYNOTIFY 0x00000002 50 51 #define WNNC_ENUMERATION 0x0000000b 52 #define WNNC_ENUM_GLOBAL 0x00000001 53 #define WNNC_ENUM_LOCAL 0x00000002 54 #define WNNC_ENUM_CONTEXT 0x00000004 55 56 #define WNNC_START 0x0000000c 57 #define WNNC_WAIT_FOR_START 0x00000001 58 59 typedef DWORD (APIENTRY *PF_NPGetCaps)(DWORD ndex); 60 61 /* get user */ 62 typedef DWORD (APIENTRY *PF_NPGetUser)(LPWSTR lpName, LPWSTR lpUserName, 63 LPDWORD lpnBufferLen); 64 65 /* enumeration-related */ 66 typedef DWORD (APIENTRY *PF_NPOpenEnum)(DWORD dwScope, DWORD dwType, DWORD dwUsage, 67 LPNETRESOURCEW lpNetResource, LPHANDLE lphEnum); 68 typedef DWORD (APIENTRY *PF_NPEnumResource)(HANDLE hEnum, LPDWORD lpcCount, 69 LPVOID lpBuffer, LPDWORD lpBufferSize); 70 typedef DWORD (APIENTRY *PF_NPCloseEnum)(HANDLE hEnum); 71 typedef DWORD (APIENTRY *PF_NPGetResourceInformation)(LPNETRESOURCEW lpNetResource, 72 LPVOID lpBuffer, LPDWORD lpcbBuffer, LPWSTR* lplpSystem); 73 74 /* connection-related */ 75 typedef DWORD (APIENTRY *PF_NPAddConnection)(LPNETRESOURCEW lpNetResource, 76 LPWSTR lpPassword, LPWSTR lpUserName); 77 typedef DWORD (APIENTRY *PF_NPAddConnection3)(HWND hwndOwner, 78 LPNETRESOURCEW lpNetResource, LPWSTR lpPassword, LPWSTR lpUserName, 79 DWORD dwFlags); 80 typedef DWORD (APIENTRY *PF_NPCancelConnection)(LPWSTR lpName, BOOL fForce); 81 typedef DWORD (APIENTRY *PF_NPGetConnection)(LPWSTR lpLocalName, 82 LPWSTR lpRemoteName, LPDWORD lpnBufferLen); 83 84 /* network name manipulation */ 85 typedef DWORD (APIENTRY *PF_NPGetUniversalName)(LPWSTR lpLocalPath, 86 DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpnBufferSize); 87 typedef DWORD (APIENTRY *PF_NPFormatNetworkName)(LPWSTR lpRemoteName, 88 LPWSTR lpFormattedName, LPDWORD lpnLength, DWORD dwFlags, 89 DWORD dwAveCharPerLine); 90 91 /* dialogs */ 92 typedef DWORD (APIENTRY *PF_NPDeviceMode)(HWND hParent); 93 94 /* search dialog */ 95 #define WNSRCH_REFRESH_FIRST_LEVEL 0x00000001 96 97 typedef DWORD (APIENTRY *PF_NPSearchDialog)(HWND hwndParent, 98 LPNETRESOURCEW lpNetResource, LPVOID lpBuffer, DWORD cbBuffer, 99 LPDWORD lpnFlags); 100 101 /* property dialog */ 102 103 #define WNTYPE_DRIVE 1 104 #define WNTYPE_FILE 2 105 #define WNTYPE_PRINTER 3 106 #define WNTYPE_COMM 4 107 108 #define WNPS_FILE 0 109 #define WNPS_DIR 1 110 #define WNPS_MULT 2 111 112 typedef DWORD (APIENTRY *PF_NPGetPropertyText)(DWORD iButton, DWORD nPropSel, 113 LPWSTR lpName, LPWSTR lpButtonName, DWORD nButtonNameLen, DWORD nType); 114 115 typedef DWORD (APIENTRY *PF_NPPropertyDialog)(HWND hwndParent, DWORD iButtonDlg, 116 DWORD nPropSel, LPWSTR lpFileName, DWORD nType); 117 118 /* admin */ 119 #define WNDT_NORMAL 0 120 #define WNDT_NETWORK 1 121 122 #define WNDN_MKDIR 1 123 #define WNDN_RMDIR 2 124 #define WNDN_MVDIR 3 125 126 typedef DWORD (APIENTRY *PF_NPGetDirectoryType)(LPWSTR lpName, LPINT lpType, 127 BOOL bFlushCache); 128 typedef DWORD (APIENTRY *PF_NPDirectoryNotify)(HWND hwnd, LPWSTR lpDir, 129 DWORD dwOper); 130 131 /* permission editor dialogs */ 132 #define WNPERMC_PERM 0x00000001 133 #define WNPERMC_AUDIT 0x00000002 134 #define WNPERMC_OWNER 0x00000004 135 136 typedef DWORD (APIENTRY *PF_NPFMXGetPermCaps)(LPWSTR lpDriveName); 137 138 #define WNPERM_DLG_PERM 0 139 #define WNPERM_DLG_AUDIT 1 140 #define WNPERM_DLG_OWNER 2 141 142 typedef DWORD (APIENTRY *PF_NPFMXEditPerm)(LPWSTR lpDriveName, HWND hwndFMX, 143 DWORD nDialogType); 144 145 typedef DWORD (APIENTRY *PF_NPFMXGetPermHelp)(LPWSTR lpDriveName, 146 DWORD nDialogType, BOOL fDirectory, LPVOID lpFileNameBuffer, 147 LPDWORD lpBufferSize, LPDWORD lpnHelpContext); 148 149 VOID WINAPI WNetSetLastErrorA(DWORD err, LPSTR lpError, LPSTR lpProviders); 150 VOID WINAPI WNetSetLastErrorW(DWORD err, LPWSTR lpError, LPWSTR lpProviders); 151 #define WNetSetLastError WINELIB_NAME_AW(WNetSetLastError) 152 153 /* provider classes */ 154 #define WN_NETWORK_CLASS 0x00000001 155 #define WN_CREDENTIAL_CLASS 0x00000002 156 #define WN_PRIMARY_AUTHENT_CLASS 0x00000004 157 #define WN_SERVICE_CLASS 0x00000008 158 159 #define WN_VALID_LOGON_ACCOUNT 0x00000001 160 #define WN_NT_PASSWORD_CHANGED 0x00000002 161 162 /* notifications */ 163 typedef DWORD (APIENTRY *PF_NPLogonNotify)(PLUID lpLogonId, 164 LPCWSTR lpAuthentInfoType, LPVOID lpAuthentInfo, 165 LPCWSTR lpPreviousAuthentInfoType, LPVOID lpPreviousAuthentInfo, 166 LPWSTR lpStationName, LPVOID StationHandle, LPWSTR *lpLogonScript); 167 typedef DWORD (APIENTRY *PF_NPPasswordChangeNotify)(LPCWSTR lpAuthentInfoType, 168 LPVOID lpAuthentInfo, LPCWSTR lpPreviousAuthentInfoType, 169 LPVOID lpPreviousAuthentInfo, LPWSTR lpStationName, LPVOID StationHandle, 170 DWORD dwChangeInfo); 171 172 #define NOTIFY_PRE 0x00000001 173 #define NOTIFY_POST 0x00000002 174 175 typedef struct _NOTIFYINFO 176 { 177 DWORD dwNotifyStatus; 178 DWORD dwOperationStatus; 179 LPVOID lpContext; 180 } NOTIFYINFO, *LPNOTIFYINFO; 181 182 /* FIXME: NetResource is declared as a NETRESOURCE in psdk, not a NETRESOURCEW, 183 * but how can the type change in a service provider? Defaulting to wide-char 184 * for consistency with the rest of the api. 185 */ 186 typedef struct _NOTIFYADD 187 { 188 HWND hwndOwner; 189 NETRESOURCEW NetResource; 190 DWORD dwAddFlags; 191 } NOTIFYADD, *LPNOTIFYADD; 192 193 /* FIXME: lpName and lpProvider are declared as LPTSTRs in psdk, but again 194 * for consistency with rest of api defaulting to LPWSTRs. 195 */ 196 typedef struct _NOTIFYCANCEL 197 { 198 LPWSTR lpName; 199 LPWSTR lpProvider; 200 DWORD dwFlags; 201 BOOL fForce; 202 } NOTIFYCANCEL, *LPNOTIFYCANCEL; 203 204 typedef DWORD (APIENTRY *PF_AddConnectNotify)(LPNOTIFYINFO lpNotifyInfo, 205 LPNOTIFYADD lpAddInfo); 206 typedef DWORD (APIENTRY *PF_CancelConnectNotify)(LPNOTIFYINFO lpNotifyInfo, 207 LPNOTIFYADD lpAddInfo); 208 209 #endif /* ndef __WINE_NPAPI_H__ */ 210