npapi.h 6.83 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
/*
 * Copyright (C) 2004 Juan Lang
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
#ifndef __WINE_NPAPI_H__
#define __WINE_NPAPI_H__

/* capabilities */
#define WNNC_SPEC_VERSION          0x00000001
#define WNNC_SPEC_VERSION51        0x00050001
#define WNNC_NET_TYPE              0x00000002
#define WNNC_NET_NONE              0x00000000

#define WNNC_DRIVER_VERSION        0x00000003

#define WNNC_USER                  0x00000004
#define WNNC_USR_GETUSER           0x00000001

#define WNNC_CONNECTION            0x00000006
#define WNNC_CON_ADDCONNECTION     0x00000001
#define WNNC_CON_CANCELCONNECTION  0x00000002
#define WNNC_CON_GETCONNECTIONS    0x00000004
#define WNNC_CON_ADDCONNECTION3    0x00000008

#define WNNC_DIALOG                0x00000008
#define WNNC_DLG_DEVICEMODE        0x00000001
#define WNNC_DLG_PROPERTYDIALOG    0x00000020
#define WNNC_DLG_SEARCHDIALOG      0x00000040
#define WNNC_DLG_FORMATNETWORKNAME 0x00000080

#define WNNC_ADMIN                 0x00000009
#define WNNC_ADM_GETDIRECTORYTYPE  0x00000001
#define WNNC_ADM_DIRECTORYNOTIFY   0x00000002

#define WNNC_ENUMERATION           0x0000000b
#define WNNC_ENUM_GLOBAL           0x00000001
#define WNNC_ENUM_LOCAL            0x00000002

#define WNNC_START                 0x0000000c
#define WNNC_WAIT_FOR_START        0x00000001

55
typedef DWORD (APIENTRY *PF_NPGetCaps)(DWORD ndex);
56 57

/* get user */
58
typedef DWORD (APIENTRY *PF_NPGetUser)(LPWSTR lpName, LPWSTR lpUserName,
59 60 61
 LPDWORD lpnBufferLen);

/* enumeration-related */
62
typedef DWORD (APIENTRY *PF_NPOpenEnum)(DWORD dwScope, DWORD dwType, DWORD dwUsage,
63
 LPNETRESOURCEW lpNetResource, LPHANDLE lphEnum);
64
typedef DWORD (APIENTRY *PF_NPEnumResource)(HANDLE hEnum, LPDWORD lpcCount,
65
 LPVOID lpBuffer, LPDWORD lpBufferSize);
66
typedef DWORD (APIENTRY *PF_NPCloseEnum)(HANDLE hEnum);
67 68

/* connection-related */
69
typedef DWORD (APIENTRY *PF_NPAddConnection)(LPNETRESOURCEW lpNetResource,
70
 LPWSTR lpPassword, LPWSTR lpUserName);
71
typedef DWORD (APIENTRY *PF_NPAddConnection3)(HWND hwndOwner,
72 73
 LPNETRESOURCEW lpNetResource, LPWSTR lpPassword, LPWSTR lpUserName,
 DWORD dwFlags);
74 75
typedef DWORD (APIENTRY *PF_NPCancelConnection)(LPWSTR lpName, BOOL fForce);
typedef DWORD (APIENTRY *PF_NPGetConnection)(LPWSTR lpLocalName,
76 77 78
 LPWSTR lpRemoteName, LPDWORD lpnBufferLen);

/* network name manipulation */
79
typedef DWORD (APIENTRY *PF_NPGetUniversalName)(LPWSTR lpLocalPath,
80
 DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpnBufferSize);
81
typedef DWORD (APIENTRY *PF_NPFormatNetworkName)(LPWSTR lpRemoteName,
82 83 84 85
 LPWSTR lpFormattedName, LPDWORD lpnLength, DWORD dwFlags,
 DWORD dwAveCharPerLine);

/* dialogs */
86
typedef DWORD (APIENTRY *PF_NPDeviceMode)(HWND hParent);
87 88 89 90

/* search dialog */
#define WNSRCH_REFRESH_FIRST_LEVEL 0x00000001

91
typedef DWORD (APIENTRY *PF_NPSearchDialog)(HWND hwndParent,
92 93 94 95 96 97 98 99 100 101 102 103 104 105
 LPNETRESOURCEW lpNetResource, LPVOID lpBuffer, DWORD cbBuffer,
 LPDWORD lpnFlags);

/* property dialog */

#define WNTYPE_DRIVE   1
#define WNTYPE_FILE    2
#define WNTYPE_PRINTER 3
#define WNTYPE_COMM    4

#define WNPS_FILE 0
#define WNPS_DIR  1
#define WNPS_MULT 2

106
typedef DWORD (APIENTRY *PF_NPGetPropertyText)(DWORD iButton, DWORD nPropSel,
107 108
 LPWSTR lpName, LPWSTR lpButtonName, DWORD nButtonNameLen, DWORD nType);

109
typedef DWORD (APIENTRY *PF_NPPropertyDialog)(HWND hwndParent, DWORD iButtonDlg,
110 111 112 113 114 115 116 117 118 119
 DWORD nPropSel, LPWSTR lpFileName, DWORD nType);

/* admin */
#define WNDT_NORMAL  0
#define WNDT_NETWORK 1

#define WNDN_MKDIR 1
#define WNDN_RMDIR 2
#define WNDN_MVDIR 3

120
typedef DWORD (APIENTRY *PF_NPGetDirectoryType)(LPWSTR lpName, LPINT lpType,
121
 BOOL bFlushCache);
122
typedef DWORD (APIENTRY *PF_NPDirectoryNotify)(HWND hwnd, LPWSTR lpDir,
123 124 125 126 127 128 129
 DWORD dwOper);

/* permission editor dialogs */
#define WNPERMC_PERM  0x00000001
#define WNPERMC_AUDIT 0x00000002
#define WNPERMC_OWNER 0x00000004

130
typedef DWORD (APIENTRY *PF_NPFMXGetPermCaps)(LPWSTR lpDriveName);
131 132 133 134 135

#define WNPERM_DLG_PERM  0
#define WNPERM_DLG_AUDIT 1
#define WNPERM_DLG_OWNER 2

136
typedef DWORD (APIENTRY *PF_NPFMXEditPerm)(LPWSTR lpDriveName, HWND hwndFMX,
137 138
 DWORD nDialogType);

139
typedef DWORD (APIENTRY *PF_NPFMXGetPermHelp)(LPWSTR lpDriveName,
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156
 DWORD nDialogType, BOOL fDirectory, LPVOID lpFileNameBuffer,
 LPDWORD lpBufferSize, LPDWORD lpnHelpContext);

VOID WINAPI WNetSetLastErrorA(DWORD err, LPSTR lpError, LPSTR lpProviders);
VOID WINAPI WNetSetLastErrorW(DWORD err, LPWSTR lpError, LPWSTR lpProviders);
#define WNetSetLastError WINELIB_NAME_AW(WNetSetLastError)

/* provider classes */
#define WN_NETWORK_CLASS         0x00000001
#define WN_CREDENTIAL_CLASS      0x00000002
#define WN_PRIMARY_AUTHENT_CLASS 0x00000004
#define WN_SERVICE_CLASS         0x00000008

#define WN_VALID_LOGON_ACCOUNT   0x00000001
#define WN_NT_PASSWORD_CHANGED   0x00000002

/* notifications */
157
typedef DWORD (APIENTRY *PF_NPLogonNotify)(PLUID lpLogonId,
158 159 160
 LPCWSTR lpAuthentInfoType, LPVOID lpAuthentInfo,
 LPCWSTR lpPreviousAuthentInfoType, LPVOID lpPreviousAuthentInfo,
 LPWSTR lpStationName, LPVOID StationHandle, LPWSTR *lpLogonScript);
161
typedef DWORD (APIENTRY *PF_NPPasswordChangeNotify)(LPCWSTR lpAuthentInfoType,
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197
 LPVOID lpAuthentInfo, LPCWSTR lpPreviousAuthentInfoType,
 LPVOID lpPreviousAuthentInfo, LPWSTR lpStationName, LPVOID StationHandle,
 DWORD dwChangeInfo);

#define NOTIFY_PRE  0x00000001
#define NOTIFY_POST 0x00000002

typedef struct _NOTIFYINFO
{
    DWORD  dwNotifyStatus;
    DWORD  dwOperationStatus;
    LPVOID lpContext;
} NOTIFYINFO, *LPNOTIFYINFO;

/* FIXME: NetResource is declared as a NETRESOURCE in psdk, not a NETRESOURCEW,
 * but how can the type change in a service provider?  Defaulting to wide-char
 * for consistency with the rest of the api.
 */
typedef struct _NOTIFYADD
{
    HWND         hwndOwner;
    NETRESOURCEW NetResource;
    DWORD        dwAddFlags;
} NOTIFYADD, *LPNOTIFYADD;

/* FIXME: lpName and lpProvider are declared as LPTSTRs in psdk, but again
 * for consistency with rest of api defaulting to LPWSTRs.
 */
typedef struct _NOTIFYCANCEL
{
    LPWSTR lpName;
    LPWSTR lpProvider;
    DWORD  dwFlags;
    BOOL   fForce;
} NOTIFYCANCEL, *LPNOTIFYCANCEL;

198
typedef DWORD (APIENTRY *PF_AddConnectNotify)(LPNOTIFYINFO lpNotifyInfo,
199
 LPNOTIFYADD lpAddInfo);
200
typedef DWORD (APIENTRY *PF_CancelConnectNotify)(LPNOTIFYINFO lpNotifyInfo,
201 202 203
 LPNOTIFYADD lpAddInfo);

#endif /* ndef __WINE_NPAPI_H__ */