Reactos
at master 209 lines 7.3 kB view raw
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 59typedef DWORD (APIENTRY *PF_NPGetCaps)(DWORD ndex); 60 61/* get user */ 62typedef DWORD (APIENTRY *PF_NPGetUser)(LPWSTR lpName, LPWSTR lpUserName, 63 LPDWORD lpnBufferLen); 64 65/* enumeration-related */ 66typedef DWORD (APIENTRY *PF_NPOpenEnum)(DWORD dwScope, DWORD dwType, DWORD dwUsage, 67 LPNETRESOURCEW lpNetResource, LPHANDLE lphEnum); 68typedef DWORD (APIENTRY *PF_NPEnumResource)(HANDLE hEnum, LPDWORD lpcCount, 69 LPVOID lpBuffer, LPDWORD lpBufferSize); 70typedef DWORD (APIENTRY *PF_NPCloseEnum)(HANDLE hEnum); 71typedef DWORD (APIENTRY *PF_NPGetResourceInformation)(LPNETRESOURCEW lpNetResource, 72 LPVOID lpBuffer, LPDWORD lpcbBuffer, LPWSTR* lplpSystem); 73 74/* connection-related */ 75typedef DWORD (APIENTRY *PF_NPAddConnection)(LPNETRESOURCEW lpNetResource, 76 LPWSTR lpPassword, LPWSTR lpUserName); 77typedef DWORD (APIENTRY *PF_NPAddConnection3)(HWND hwndOwner, 78 LPNETRESOURCEW lpNetResource, LPWSTR lpPassword, LPWSTR lpUserName, 79 DWORD dwFlags); 80typedef DWORD (APIENTRY *PF_NPCancelConnection)(LPWSTR lpName, BOOL fForce); 81typedef DWORD (APIENTRY *PF_NPGetConnection)(LPWSTR lpLocalName, 82 LPWSTR lpRemoteName, LPDWORD lpnBufferLen); 83 84/* network name manipulation */ 85typedef DWORD (APIENTRY *PF_NPGetUniversalName)(LPWSTR lpLocalPath, 86 DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpnBufferSize); 87typedef DWORD (APIENTRY *PF_NPFormatNetworkName)(LPWSTR lpRemoteName, 88 LPWSTR lpFormattedName, LPDWORD lpnLength, DWORD dwFlags, 89 DWORD dwAveCharPerLine); 90 91/* dialogs */ 92typedef DWORD (APIENTRY *PF_NPDeviceMode)(HWND hParent); 93 94/* search dialog */ 95#define WNSRCH_REFRESH_FIRST_LEVEL 0x00000001 96 97typedef 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 112typedef DWORD (APIENTRY *PF_NPGetPropertyText)(DWORD iButton, DWORD nPropSel, 113 LPWSTR lpName, LPWSTR lpButtonName, DWORD nButtonNameLen, DWORD nType); 114 115typedef 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 126typedef DWORD (APIENTRY *PF_NPGetDirectoryType)(LPWSTR lpName, LPINT lpType, 127 BOOL bFlushCache); 128typedef 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 136typedef 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 142typedef DWORD (APIENTRY *PF_NPFMXEditPerm)(LPWSTR lpDriveName, HWND hwndFMX, 143 DWORD nDialogType); 144 145typedef DWORD (APIENTRY *PF_NPFMXGetPermHelp)(LPWSTR lpDriveName, 146 DWORD nDialogType, BOOL fDirectory, LPVOID lpFileNameBuffer, 147 LPDWORD lpBufferSize, LPDWORD lpnHelpContext); 148 149VOID WINAPI WNetSetLastErrorA(DWORD err, LPSTR lpError, LPSTR lpProviders); 150VOID 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 */ 163typedef DWORD (APIENTRY *PF_NPLogonNotify)(PLUID lpLogonId, 164 LPCWSTR lpAuthentInfoType, LPVOID lpAuthentInfo, 165 LPCWSTR lpPreviousAuthentInfoType, LPVOID lpPreviousAuthentInfo, 166 LPWSTR lpStationName, LPVOID StationHandle, LPWSTR *lpLogonScript); 167typedef 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 175typedef 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 */ 186typedef 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 */ 196typedef struct _NOTIFYCANCEL 197{ 198 LPWSTR lpName; 199 LPWSTR lpProvider; 200 DWORD dwFlags; 201 BOOL fForce; 202} NOTIFYCANCEL, *LPNOTIFYCANCEL; 203 204typedef DWORD (APIENTRY *PF_AddConnectNotify)(LPNOTIFYINFO lpNotifyInfo, 205 LPNOTIFYADD lpAddInfo); 206typedef DWORD (APIENTRY *PF_CancelConnectNotify)(LPNOTIFYINFO lpNotifyInfo, 207 LPNOTIFYADD lpAddInfo); 208 209#endif /* ndef __WINE_NPAPI_H__ */