| /* | 
 |  * MPR Network Provider Services functions | 
 |  * | 
 |  * Copyright 1999 Ulrich Weigand | 
 |  * Copyright 2004 Mike McCormack for CodeWeavers Inc. | 
 |  * | 
 |  * 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
 |  */ | 
 |  | 
 | #include "config.h" | 
 |  | 
 | #include <stdarg.h> | 
 |  | 
 | #include "windef.h" | 
 | #include "winbase.h" | 
 | #include "winuser.h" | 
 | #include "netspi.h" | 
 | #include "wine/debug.h" | 
 | #include "winerror.h" | 
 |  | 
 | WINE_DEFAULT_DEBUG_CHANNEL(mpr); | 
 |  | 
 | #include "wine/unicode.h" | 
 |  | 
 | #include "mprres.h" | 
 |  | 
 | /*********************************************************************** | 
 |  *         NPS_ProxyPasswordDialog | 
 |  */ | 
 | static INT_PTR WINAPI NPS_ProxyPasswordDialog( | 
 |     HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) | 
 | { | 
 |     HWND hitem; | 
 |     LPAUTHDLGSTRUCTA lpAuthDlgStruct; | 
 |  | 
 |     if( uMsg == WM_INITDIALOG ) | 
 |     { | 
 |         TRACE("WM_INITDIALOG (%08lx)\n", lParam); | 
 |  | 
 |         /* save the parameter list */ | 
 |         lpAuthDlgStruct = (LPAUTHDLGSTRUCTA) lParam; | 
 |         SetWindowLongPtrW( hdlg, GWLP_USERDATA, lParam ); | 
 |  | 
 |         if( lpAuthDlgStruct->lpExplainText ) | 
 |         { | 
 |             hitem = GetDlgItem( hdlg, IDC_EXPLAIN ); | 
 |             SetWindowTextA( hitem, lpAuthDlgStruct->lpExplainText ); | 
 |         } | 
 |  | 
 |         /* extract the Realm from the proxy response and show it */ | 
 |         if( lpAuthDlgStruct->lpResource ) | 
 |         { | 
 |             hitem = GetDlgItem( hdlg, IDC_REALM ); | 
 |             SetWindowTextA( hitem, lpAuthDlgStruct->lpResource ); | 
 |         } | 
 |  | 
 |         return TRUE; | 
 |     } | 
 |  | 
 |     lpAuthDlgStruct = (LPAUTHDLGSTRUCTA) GetWindowLongPtrW( hdlg, GWLP_USERDATA ); | 
 |  | 
 |     switch( uMsg ) | 
 |     { | 
 |     case WM_COMMAND: | 
 |         if( wParam == IDOK ) | 
 |         { | 
 |             hitem = GetDlgItem( hdlg, IDC_USERNAME ); | 
 |             if( hitem ) | 
 |                 GetWindowTextA( hitem, lpAuthDlgStruct->lpUsername, lpAuthDlgStruct->cbUsername ); | 
 |  | 
 |             hitem = GetDlgItem( hdlg, IDC_PASSWORD ); | 
 |             if( hitem ) | 
 |                 GetWindowTextA( hitem, lpAuthDlgStruct->lpPassword, lpAuthDlgStruct->cbPassword ); | 
 |  | 
 |             EndDialog( hdlg, WN_SUCCESS ); | 
 |             return TRUE; | 
 |         } | 
 |         if( wParam == IDCANCEL ) | 
 |         { | 
 |             EndDialog( hdlg, WN_CANCEL ); | 
 |             return TRUE; | 
 |         } | 
 |         break; | 
 |     } | 
 |     return FALSE; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSAuthenticationDialogA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSAuthenticationDialogA( LPAUTHDLGSTRUCTA lpAuthDlgStruct ) | 
 | { | 
 |     HMODULE hwininet = GetModuleHandleA( "mpr.dll" ); | 
 |  | 
 |     TRACE("%p\n", lpAuthDlgStruct); | 
 |  | 
 |     if( !lpAuthDlgStruct ) | 
 |         return WN_BAD_POINTER; | 
 |     if( lpAuthDlgStruct->cbStructure < sizeof *lpAuthDlgStruct ) | 
 |         return WN_BAD_POINTER; | 
 |  | 
 |     TRACE("%s %s %s\n",lpAuthDlgStruct->lpResource, | 
 |           lpAuthDlgStruct->lpOUTitle, lpAuthDlgStruct->lpExplainText); | 
 |  | 
 |     return DialogBoxParamW( hwininet, MAKEINTRESOURCEW( IDD_PROXYDLG ), | 
 |              lpAuthDlgStruct->hwndOwner, NPS_ProxyPasswordDialog,  | 
 |              (LPARAM) lpAuthDlgStruct ); | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSGetProviderHandleA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSGetProviderHandleA( PHPROVIDER phProvider ) | 
 | { | 
 |     FIXME( "(%p): stub\n", phProvider ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSGetProviderNameA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSGetProviderNameA( HPROVIDER hProvider, LPCSTR *lpszProviderName ) | 
 | { | 
 |     FIXME( "(%p, %p): stub\n", hProvider, lpszProviderName ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSGetSectionNameA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSGetSectionNameA( HPROVIDER hProvider, LPCSTR *lpszSectionName ) | 
 | { | 
 |     FIXME( "(%p, %p): stub\n", hProvider, lpszSectionName ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSSetExtendedErrorA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSSetExtendedErrorA( DWORD NetSpecificError, LPSTR lpExtendedErrorText ) | 
 | { | 
 |     FIXME( "(%08x, %s): stub\n", NetSpecificError, debugstr_a(lpExtendedErrorText) ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSSetCustomTextA [MPR.@] | 
 |  */ | 
 | VOID WINAPI NPSSetCustomTextA( LPSTR lpCustomErrorText ) | 
 | { | 
 |     FIXME( "(%s): stub\n", debugstr_a(lpCustomErrorText) ); | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSCopyStringA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSCopyStringA( LPCSTR lpString, LPVOID lpBuffer, LPDWORD lpdwBufferSize ) | 
 | { | 
 |     FIXME( "(%s, %p, %p): stub\n", debugstr_a(lpString), lpBuffer, lpdwBufferSize ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSDeviceGetNumberA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSDeviceGetNumberA( LPSTR lpLocalName, LPDWORD lpdwNumber, LPDWORD lpdwType ) | 
 | { | 
 |     FIXME( "(%s, %p, %p): stub\n", debugstr_a(lpLocalName), lpdwNumber, lpdwType ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSDeviceGetStringA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSDeviceGetStringA( DWORD dwNumber, DWORD dwType, LPSTR lpLocalName, LPDWORD lpdwBufferSize ) | 
 | { | 
 |     FIXME( "(%d, %d, %p, %p): stub\n", dwNumber, dwType, lpLocalName, lpdwBufferSize ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSNotifyRegisterA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI NPSNotifyRegisterA( enum NOTIFYTYPE NotifyType, NOTIFYCALLBACK pfNotifyCallBack ) | 
 | { | 
 |     FIXME( "(%d, %p): stub\n", NotifyType, pfNotifyCallBack ); | 
 |     return WN_NOT_SUPPORTED; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  NPSNotifyGetContextA [MPR.@] | 
 |  */ | 
 | LPVOID WINAPI NPSNotifyGetContextA( NOTIFYCALLBACK pfNotifyCallBack ) | 
 | { | 
 |     FIXME( "(%p): stub\n", pfNotifyCallBack ); | 
 |     return NULL; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdGetPasswordStatusA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdGetPasswordStatusA( LPCSTR lpProvider, DWORD dwIndex, LPDWORD status ) | 
 | { | 
 |     FIXME("%s %d %p\n", debugstr_a(lpProvider), dwIndex, status ); | 
 |     *status = 0; | 
 |     return WN_SUCCESS; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdGetPasswordStatusA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdGetPasswordStatusW( LPCWSTR lpProvider, DWORD dwIndex, LPDWORD status ) | 
 | { | 
 |     FIXME("%s %d %p\n", debugstr_w(lpProvider), dwIndex, status ); | 
 |     *status = 0; | 
 |     return WN_SUCCESS; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdSetPasswordStatusA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdSetPasswordStatusA( LPCSTR lpProvider, DWORD dwIndex, DWORD status ) | 
 | { | 
 |     FIXME("%s %d %d\n", debugstr_a(lpProvider), dwIndex, status ); | 
 |     return WN_SUCCESS; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdSetPasswordStatusW [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdSetPasswordStatusW( LPCWSTR lpProvider, DWORD dwIndex, DWORD status ) | 
 | { | 
 |     FIXME("%s %d %d\n", debugstr_w(lpProvider), dwIndex, status ); | 
 |     return WN_SUCCESS; | 
 | } | 
 |  | 
 | typedef struct _CHANGEPWDINFOA { | 
 |     LPSTR lpUsername; | 
 |     LPSTR lpPassword; | 
 |     DWORD cbPassword; | 
 | } CHANGEPWDINFOA, *LPCHANGEPWDINFOA; | 
 |  | 
 | typedef struct _CHANGEPWDINFOW { | 
 |     LPWSTR lpUsername; | 
 |     LPWSTR lpPassword; | 
 |     DWORD cbPassword; | 
 | } CHANGEPWDINFOW, *LPCHANGEPWDINFOW; | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdChangePasswordA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdChangePasswordA( LPCSTR lpProvider, HWND hWnd, DWORD flags, LPCHANGEPWDINFOA info ) | 
 | { | 
 |     FIXME("%s %p %x %p\n", debugstr_a(lpProvider), hWnd, flags, info ); | 
 |     return WN_SUCCESS; | 
 | } | 
 |  | 
 | /***************************************************************** | 
 |  *  PwdChangePasswordA [MPR.@] | 
 |  */ | 
 | DWORD WINAPI PwdChangePasswordW( LPCWSTR lpProvider, HWND hWnd, DWORD flags, LPCHANGEPWDINFOW info ) | 
 | { | 
 |     FIXME("%s %p %x %p\n", debugstr_w(lpProvider), hWnd, flags, info ); | 
 |     return WN_SUCCESS; | 
 | } |