winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
February 2023
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
1 participants
599 discussions
Start a n
N
ew thread
Francois Gouget : vbscript/tests: Fix the testChrError() tests.
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 15b176b4f4945d7abfb4adbddc7f140ba1765855 URL:
https://gitlab.winehq.org/wine/wine/-/commit/15b176b4f4945d7abfb4adbddc7f14…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Tue Feb 21 20:08:29 2023 +0100 vbscript/tests: Fix the testChrError() tests. Chr() depends on the thread's ANSI code page which in some cases is different from the Windows ANSI code page (e.g. hi-IN). Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=54003
--- dlls/vbscript/tests/run.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dlls/vbscript/tests/run.c b/dlls/vbscript/tests/run.c index 4158aa28197..294b635ea41 100644 --- a/dlls/vbscript/tests/run.c +++ b/dlls/vbscript/tests/run.c @@ -239,7 +239,7 @@ static void detect_locale(void) PRIMARYLANGID(GetUserDefaultUILanguage()) == LANG_ENGLISH && PRIMARYLANGID(GetUserDefaultLangID()) == LANG_ENGLISH); - GetCPInfoExA( CP_ACP, 0, &cpinfo ); + GetCPInfoExA( CP_THREAD_ACP, 0, &cpinfo ); MaxCharSize = cpinfo.MaxCharSize; GetLocaleInfoA(LOCALE_USER_DEFAULT, LOCALE_IFIRSTDAYOFWEEK | LOCALE_RETURN_NUMBER,
1
0
0
0
Hans Leidekker : winscard/tests: Initial tests.
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 77fdfdb8ef09153bf0adbfa6226b6477b4dd0702 URL:
https://gitlab.winehq.org/wine/wine/-/commit/77fdfdb8ef09153bf0adbfa6226b64…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:44:26 2023 +0100 winscard/tests: Initial tests. --- configure | 1 + configure.ac | 1 + dlls/winscard/tests/Makefile.in | 5 + dlls/winscard/tests/winscard.c | 237 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 244 insertions(+)
1
0
0
0
Hans Leidekker : winscard: Add wow64 thunks.
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 190a31d1abf99661d17d839c90305ece0c3ee3f1 URL:
https://gitlab.winehq.org/wine/wine/-/commit/190a31d1abf99661d17d839c90305e…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:36:55 2023 +0100 winscard: Add wow64 thunks. --- dlls/winscard/unixlib.c | 353 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 353 insertions(+) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index 4fb17b8ad6f..cd55e6352a8 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -176,3 +176,356 @@ const unixlib_entry_t __wine_unix_call_funcs[] = scard_get_attrib, scard_set_attrib, }; + +#ifdef _WIN64 + +typedef ULONG PTR32; + +static NTSTATUS wow64_scard_establish_context( void *args ) +{ + struct + { + UINT64 scope; + PTR32 handle; + } const *params32 = args; + + struct scard_establish_context_params params = + { + params32->scope, + ULongToPtr(params32->handle) + }; + return scard_establish_context( ¶ms ); +} + +static NTSTATUS wow64_scard_release_context( void *args ) +{ + struct + { + UINT64 handle; + } const *params32 = args; + + struct scard_release_context_params params = + { + params32->handle + }; + return scard_release_context( ¶ms ); +} + +static NTSTATUS wow64_scard_is_valid_context( void *args ) +{ + struct + { + UINT64 handle; + } const *params32 = args; + + struct scard_is_valid_context_params params = + { + params32->handle + }; + return scard_is_valid_context( ¶ms ); +} + +static NTSTATUS wow64_scard_get_status_change( void *args ) +{ + struct + { + UINT64 handle; + UINT64 timeout; + PTR32 states; + UINT64 count; + } const *params32 = args; + + struct scard_get_status_change_params params = + { + params32->handle, + params32->timeout, + ULongToPtr(params32->states), + params32->count, + }; + return scard_get_status_change( ¶ms ); +} + +static NTSTATUS wow64_scard_cancel( void *args ) +{ + struct + { + UINT64 handle; + } const *params32 = args; + + struct scard_cancel_params params = + { + params32->handle + }; + return scard_cancel( ¶ms ); +} + +static NTSTATUS wow64_scard_list_readers( void *args ) +{ + struct + { + UINT64 handle; + PTR32 groups; + PTR32 readers; + PTR32 readers_len; + } *params32 = args; + + struct scard_list_readers_params params = + { + params32->handle, + ULongToPtr(params32->groups), + ULongToPtr(params32->readers), + ULongToPtr(params32->readers_len) + }; + return scard_list_readers( ¶ms ); +}; + +static NTSTATUS wow64_scard_list_reader_groups( void *args ) +{ + struct + { + UINT64 handle; + PTR32 groups; + PTR32 groups_len; + } *params32 = args; + + struct scard_list_reader_groups_params params = + { + params32->handle, + ULongToPtr(params32->groups), + ULongToPtr(params32->groups_len) + }; + return scard_list_reader_groups( ¶ms ); +} + +static NTSTATUS wow64_scard_connect( void *args ) +{ + struct + { + UINT64 context_handle; + PTR32 reader; + UINT64 share_mode; + UINT64 preferred_protocols; + PTR32 connect_handle; + PTR32 protocol; + } *params32 = args; + + struct scard_connect_params params = + { + params32->context_handle, + ULongToPtr(params32->reader), + params32->share_mode, + params32->preferred_protocols, + ULongToPtr(params32->connect_handle), + ULongToPtr(params32->protocol) + }; + return scard_connect( ¶ms ); +} + +static NTSTATUS wow64_scard_status( void *args ) +{ + struct + { + UINT64 handle; + PTR32 names; + PTR32 names_len; + PTR32 state; + PTR32 protocol; + PTR32 atr; + PTR32 atr_len; + } *params32 = args; + + struct scard_status_params params = + { + params32->handle, + ULongToPtr(params32->names), + ULongToPtr(params32->names_len), + ULongToPtr(params32->state), + ULongToPtr(params32->protocol), + ULongToPtr(params32->atr), + ULongToPtr(params32->atr_len) + }; + return scard_status( ¶ms ); +}; + +static NTSTATUS wow64_scard_reconnect( void *args ) +{ + struct + { + UINT64 handle; + UINT64 share_mode; + UINT64 preferred_protocols; + UINT64 initialization; + PTR32 protocol; + } *params32 = args; + + struct scard_reconnect_params params = + { + params32->handle, + params32->share_mode, + params32->preferred_protocols, + params32->initialization, + ULongToPtr(params32->protocol) + }; + return scard_reconnect( ¶ms ); +} + +static NTSTATUS wow64_scard_disconnect( void *args ) +{ + struct + { + UINT64 handle; + UINT64 disposition; + } *params32 = args; + + struct scard_disconnect_params params = + { + params32->handle, + params32->disposition + }; + return scard_disconnect( ¶ms ); +} + +static NTSTATUS wow64_scard_begin_transaction( void *args ) +{ + struct + { + UINT64 handle; + } *params32 = args; + + struct scard_begin_transaction_params params = + { + params32->handle + }; + return scard_begin_transaction( ¶ms ); +} + +static NTSTATUS wow64_scard_end_transaction( void *args ) +{ + struct + { + UINT64 handle; + UINT64 disposition; + } *params32 = args; + + struct scard_end_transaction_params params = + { + params32->handle, + params32->disposition + }; + return scard_end_transaction( ¶ms ); +} + +static NTSTATUS wow64_scard_transmit( void *args ) +{ + struct + { + UINT64 handle; + PTR32 send; + PTR32 send_buf; + UINT64 send_buflen; + PTR32 recv; + PTR32 recv_buf; + PTR32 recv_buflen; + } *params32 = args; + + struct scard_transmit_params params = + { + params32->handle, + ULongToPtr(params32->send), + ULongToPtr(params32->send_buf), + params32->send_buflen, + ULongToPtr(params32->recv), + ULongToPtr(params32->recv_buf), + ULongToPtr(params32->recv_buflen) + }; + return scard_transmit( ¶ms ); +}; + +static NTSTATUS wow64_scard_control( void *args ) +{ + struct + { + UINT64 handle; + UINT64 code; + PTR32 in_buf; + UINT64 in_buflen; + PTR32 out_buf; + UINT64 out_buflen; + PTR32 ret_len; + } *params32 = args; + + struct scard_control_params params = + { + params32->handle, + params32->code, + ULongToPtr(params32->in_buf), + params32->in_buflen, + ULongToPtr(params32->out_buf), + params32->out_buflen, + ULongToPtr(params32->ret_len) + }; + return scard_control( ¶ms ); +}; + +static NTSTATUS wow64_scard_get_attrib( void *args ) +{ + struct + { + UINT64 handle; + UINT64 id; + PTR32 attr; + PTR32 attr_len; + } *params32 = args; + + struct scard_get_attrib_params params = + { + params32->handle, + params32->id, + ULongToPtr(params32->attr), + ULongToPtr(params32->attr_len) + }; + return scard_get_attrib( ¶ms ); +} + +static NTSTATUS wow64_scard_set_attrib( void *args ) +{ + struct + { + UINT64 handle; + UINT64 id; + PTR32 attr; + UINT64 attr_len; + } *params32 = args; + + struct scard_set_attrib_params params = + { + params32->handle, + params32->id, + ULongToPtr(params32->attr), + params32->attr_len + }; + return scard_set_attrib( ¶ms ); +} + +const unixlib_entry_t __wine_unix_call_wow64_funcs[] = +{ + wow64_scard_establish_context, + wow64_scard_release_context, + wow64_scard_is_valid_context, + wow64_scard_get_status_change, + wow64_scard_cancel, + wow64_scard_list_readers, + wow64_scard_list_reader_groups, + wow64_scard_connect, + wow64_scard_status, + wow64_scard_reconnect, + wow64_scard_disconnect, + wow64_scard_begin_transaction, + wow64_scard_end_transaction, + wow64_scard_transmit, + wow64_scard_control, + wow64_scard_get_attrib, + wow64_scard_set_attrib, +}; + +#endif /* _WIN64 */
1
0
0
0
Hans Leidekker : winscard: Improve traces.
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 21b4de5444435bda7b832c7cfb71c99290bd08fe URL:
https://gitlab.winehq.org/wine/wine/-/commit/21b4de5444435bda7b832c7cfb71c9…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:33:49 2023 +0100 winscard: Improve traces. --- dlls/winscard/winscard.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index b2dd7d5f8e9..c7954faa400 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -112,6 +112,7 @@ static inline char *utf8_to_ansi( const char *src ) HANDLE WINAPI SCardAccessStartedEvent(void) { + FIXME( "stub\n" ); return g_startedEvent; } @@ -185,9 +186,10 @@ LONG WINAPI SCardIsValidContext( SCARDCONTEXT context ) return ret; } -LONG WINAPI SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr, LPCGUID rgguidInterfaces, DWORD cguidInterfaceCount, LPSTR mszCards, LPDWORD pcchCards) +LONG WINAPI SCardListCardsA( SCARDCONTEXT context, const BYTE *atr, const GUID *interfaces, DWORD interface_count, + char *cards, DWORD *cards_len ) { - FIXME(": stub\n"); + FIXME( "%Ix, %p, %p, %lu, %p, %p stub\n", context, atr, interfaces, interface_count, cards, cards_len ); SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return SCARD_F_INTERNAL_ERROR; } @@ -343,7 +345,7 @@ LONG WINAPI SCardStatusW( SCARDHANDLE connect, WCHAR *names, DWORD *names_len, D void WINAPI SCardReleaseStartedEvent(void) { - FIXME("stub\n"); + FIXME( "stub\n" ); } LONG WINAPI SCardListReadersA( SCARDCONTEXT context, const char *groups, char *readers, DWORD *readers_len )
1
0
0
0
Hans Leidekker : winscard: Use string conversion helpers in SCardAddReaderToGroupA().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 40c013206aaaac64985d8c74bedaa0af69fb335d URL:
https://gitlab.winehq.org/wine/wine/-/commit/40c013206aaaac64985d8c74bedaa0…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:32:45 2023 +0100 winscard: Use string conversion helpers in SCardAddReaderToGroupA(). --- dlls/winscard/winscard.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index f4d924be549..b2dd7d5f8e9 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -115,27 +115,28 @@ HANDLE WINAPI SCardAccessStartedEvent(void) return g_startedEvent; } -LONG WINAPI SCardAddReaderToGroupA(SCARDCONTEXT context, LPCSTR reader, LPCSTR group) +LONG WINAPI SCardAddReaderToGroupA( SCARDCONTEXT context, const char *reader, const char *group ) { - LONG retval; - UNICODE_STRING readerW, groupW; - - if(reader) RtlCreateUnicodeStringFromAsciiz(&readerW,reader); - else readerW.Buffer = NULL; - if(group) RtlCreateUnicodeStringFromAsciiz(&groupW,group); - else groupW.Buffer = NULL; - - retval = SCardAddReaderToGroupW(context, readerW.Buffer, groupW.Buffer); + WCHAR *readerW = NULL, *groupW = NULL; + LONG ret; - RtlFreeUnicodeString(&readerW); - RtlFreeUnicodeString(&groupW); + TRACE( "%Ix, %s, %s\n", context, debugstr_a(reader), debugstr_a(group) ); - return retval; + if (reader && !(readerW = ansi_to_utf16( reader ))) return SCARD_E_NO_MEMORY; + if (group && !(groupW = ansi_to_utf16( group ))) + { + free( readerW ); + return SCARD_E_NO_MEMORY; + } + ret = SCardAddReaderToGroupW( context, readerW, groupW ); + free( readerW ); + free( groupW ); + return ret; } -LONG WINAPI SCardAddReaderToGroupW(SCARDCONTEXT context, LPCWSTR reader, LPCWSTR group) +LONG WINAPI SCardAddReaderToGroupW( SCARDCONTEXT context, const WCHAR *reader, const WCHAR *group ) { - FIXME("%x %s %s\n", (unsigned int) context, debugstr_w(reader), debugstr_w(group)); + FIXME( "%Ix, %s, %s\n", context, debugstr_w(reader), debugstr_w(group) ); return SCARD_S_SUCCESS; }
1
0
0
0
Hans Leidekker : winscard: Implement SCardFreeMemory().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 906977f59a7ed6677ab7ad4c69fb7d847bc30cff URL:
https://gitlab.winehq.org/wine/wine/-/commit/906977f59a7ed6677ab7ad4c69fb7d…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:28:01 2023 +0100 winscard: Implement SCardFreeMemory(). --- dlls/winscard/winscard.c | 8 ++++++++ dlls/winscard/winscard.spec | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index dd588992a44..f4d924be549 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -888,6 +888,14 @@ LONG WINAPI SCardSetAttrib( SCARDHANDLE connect, DWORD id, const BYTE *attr, DWO return ret; } +LONG WINAPI SCardFreeMemory( SCARDCONTEXT context, const void *mem ) +{ + TRACE( "%Ix, %p\n", context, mem ); + + free( (void *)mem ); + return SCARD_S_SUCCESS; +} + BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, void *reserved ) { switch (reason) diff --git a/dlls/winscard/winscard.spec b/dlls/winscard/winscard.spec index e9b6fbb9d41..34bf1c67950 100644 --- a/dlls/winscard/winscard.spec +++ b/dlls/winscard/winscard.spec @@ -19,7 +19,7 @@ @ stub SCardForgetReaderGroupA @ stub SCardForgetReaderGroupW @ stub SCardForgetReaderW -@ stub SCardFreeMemory +@ stdcall SCardFreeMemory(long ptr) @ stdcall SCardGetAttrib(long long ptr ptr) @ stub SCardGetCardTypeProviderNameA @ stub SCardGetCardTypeProviderNameW
1
0
0
0
Hans Leidekker : winscard: Implement SCardGet/SetAttrib().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 7de85fc6fa1dc6fd4205ccd4f826f7f074be8dcb URL:
https://gitlab.winehq.org/wine/wine/-/commit/7de85fc6fa1dc6fd4205ccd4f826f7…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:17:40 2023 +0100 winscard: Implement SCardGet/SetAttrib(). --- dlls/winscard/unixlib.c | 16 ++++++++++++++++ dlls/winscard/unixlib.h | 18 ++++++++++++++++++ dlls/winscard/winscard.c | 41 +++++++++++++++++++++++++++++++++++++++++ dlls/winscard/winscard.spec | 4 ++-- 4 files changed, 77 insertions(+), 2 deletions(-) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index b9ca68e40b9..4fb17b8ad6f 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -46,6 +46,8 @@ LONG SCardBeginTransaction( UINT64 ); LONG SCardEndTransaction( UINT64, UINT64 ); LONG SCardTransmit( UINT64, const struct io_request *, const BYTE *, UINT64, struct io_request *, BYTE *, UINT64 * ); LONG SCardControl( UINT64, UINT64, const void *, UINT64, void *, UINT64, UINT64 * ); +LONG SCardGetAttrib( UINT64, UINT64, BYTE *, UINT64 * ); +LONG SCardSetAttrib( UINT64, UINT64, const BYTE *, UINT64 ); static NTSTATUS scard_establish_context( void *args ) { @@ -142,6 +144,18 @@ static NTSTATUS scard_control( void *args ) params->out_buflen, params->ret_len ); } +static NTSTATUS scard_get_attrib( void *args ) +{ + struct scard_get_attrib_params *params = args; + return SCardGetAttrib( params->handle, params->id, params->attr, params->attr_len ); +} + +static NTSTATUS scard_set_attrib( void *args ) +{ + struct scard_set_attrib_params *params = args; + return SCardSetAttrib( params->handle, params->id, params->attr, params->attr_len ); +} + const unixlib_entry_t __wine_unix_call_funcs[] = { scard_establish_context, @@ -159,4 +173,6 @@ const unixlib_entry_t __wine_unix_call_funcs[] = scard_end_transaction, scard_transmit, scard_control, + scard_get_attrib, + scard_set_attrib, }; diff --git a/dlls/winscard/unixlib.h b/dlls/winscard/unixlib.h index cdc7efe1b05..ecb1b40ef68 100644 --- a/dlls/winscard/unixlib.h +++ b/dlls/winscard/unixlib.h @@ -149,6 +149,22 @@ struct scard_control_params UINT64 *ret_len; }; +struct scard_get_attrib_params +{ + UINT64 handle; + UINT64 id; + void *attr; + UINT64 *attr_len; +}; + +struct scard_set_attrib_params +{ + UINT64 handle; + UINT64 id; + const void *attr; + UINT64 attr_len; +}; + enum winscard_funcs { unix_scard_establish_context, @@ -166,4 +182,6 @@ enum winscard_funcs unix_scard_end_transaction, unix_scard_transmit, unix_scard_control, + unix_scard_get_attrib, + unix_scard_set_attrib, }; diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index 09b5734c802..dd588992a44 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -847,6 +847,47 @@ LONG WINAPI SCardControl( SCARDHANDLE connect, DWORD code, const void *in_buf, D return ret; } +LONG WINAPI SCardGetAttrib( SCARDHANDLE connect, DWORD id, BYTE *attr, DWORD *attr_len ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_get_attrib_params params; + UINT64 attr_len64; + LONG ret; + + TRACE( "%Ix, %#lx, %p, %p\n", connect, id, attr, attr_len ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + if (!attr_len) return SCARD_E_INVALID_PARAMETER; + + params.handle = handle->unix_handle; + params.id = id; + params.attr = attr; + attr_len64 = *attr_len; + params.attr_len = &attr_len64; + if (!(ret = UNIX_CALL( scard_get_attrib, ¶ms ))) *attr_len = attr_len64; + TRACE( "returning %#lx\n", ret ); + return ret; +} + +LONG WINAPI SCardSetAttrib( SCARDHANDLE connect, DWORD id, const BYTE *attr, DWORD attr_len ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_set_attrib_params params; + LONG ret; + + TRACE( "%Ix, %#lx, %p, %lu\n", connect, id, attr, attr_len ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + + params.handle = handle->unix_handle; + params.id = id; + params.attr = attr; + params.attr_len = attr_len; + ret = UNIX_CALL( scard_set_attrib, ¶ms ); + TRACE( "returning %#lx\n", ret ); + return ret; +} + BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, void *reserved ) { switch (reason) diff --git a/dlls/winscard/winscard.spec b/dlls/winscard/winscard.spec index bc9b0fd40da..e9b6fbb9d41 100644 --- a/dlls/winscard/winscard.spec +++ b/dlls/winscard/winscard.spec @@ -20,7 +20,7 @@ @ stub SCardForgetReaderGroupW @ stub SCardForgetReaderW @ stub SCardFreeMemory -@ stub SCardGetAttrib +@ stdcall SCardGetAttrib(long long ptr ptr) @ stub SCardGetCardTypeProviderNameA @ stub SCardGetCardTypeProviderNameW @ stub SCardGetProviderIdA @@ -51,7 +51,7 @@ @ stdcall SCardReleaseStartedEvent() @ stub SCardRemoveReaderFromGroupA @ stub SCardRemoveReaderFromGroupW -@ stub SCardSetAttrib +@ stdcall SCardSetAttrib(long long ptr long) @ stub SCardSetCardTypeProviderNameA @ stub SCardSetCardTypeProviderNameW @ stub SCardState
1
0
0
0
Hans Leidekker : winscard: Implement SCardControl().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: c53a2044e0bc0d8833b33351fb4b1f4a4175b4c7 URL:
https://gitlab.winehq.org/wine/wine/-/commit/c53a2044e0bc0d8833b33351fb4b1f…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:07:41 2023 +0100 winscard: Implement SCardControl(). --- dlls/winscard/unixlib.c | 9 +++++++++ dlls/winscard/unixlib.h | 12 ++++++++++++ dlls/winscard/winscard.c | 25 +++++++++++++++++++++++++ dlls/winscard/winscard.spec | 2 +- 4 files changed, 47 insertions(+), 1 deletion(-) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index 50f6e348e97..b9ca68e40b9 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -45,6 +45,7 @@ LONG SCardReconnect( UINT64, UINT64, UINT64, UINT64, UINT64 * ); LONG SCardBeginTransaction( UINT64 ); LONG SCardEndTransaction( UINT64, UINT64 ); LONG SCardTransmit( UINT64, const struct io_request *, const BYTE *, UINT64, struct io_request *, BYTE *, UINT64 * ); +LONG SCardControl( UINT64, UINT64, const void *, UINT64, void *, UINT64, UINT64 * ); static NTSTATUS scard_establish_context( void *args ) { @@ -134,6 +135,13 @@ static NTSTATUS scard_transmit( void *args ) params->recv_buf, params->recv_buflen ); } +static NTSTATUS scard_control( void *args ) +{ + struct scard_control_params *params = args; + return SCardControl( params->handle, params->code, params->in_buf, params->in_buflen, params->out_buf, + params->out_buflen, params->ret_len ); +} + const unixlib_entry_t __wine_unix_call_funcs[] = { scard_establish_context, @@ -150,4 +158,5 @@ const unixlib_entry_t __wine_unix_call_funcs[] = scard_begin_transaction, scard_end_transaction, scard_transmit, + scard_control, }; diff --git a/dlls/winscard/unixlib.h b/dlls/winscard/unixlib.h index 33b1d295509..cdc7efe1b05 100644 --- a/dlls/winscard/unixlib.h +++ b/dlls/winscard/unixlib.h @@ -138,6 +138,17 @@ struct scard_transmit_params UINT64 *recv_buflen; }; +struct scard_control_params +{ + UINT64 handle; + UINT64 code; + const void *in_buf; + UINT64 in_buflen; + void *out_buf; + UINT64 out_buflen; + UINT64 *ret_len; +}; + enum winscard_funcs { unix_scard_establish_context, @@ -154,4 +165,5 @@ enum winscard_funcs unix_scard_begin_transaction, unix_scard_end_transaction, unix_scard_transmit, + unix_scard_control, }; diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index 7ef0a3fc9ba..09b5734c802 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -822,6 +822,31 @@ LONG WINAPI SCardTransmit( SCARDHANDLE connect, const SCARD_IO_REQUEST *send, co return ret; } +LONG WINAPI SCardControl( SCARDHANDLE connect, DWORD code, const void *in_buf, DWORD in_buflen, void *out_buf, + DWORD out_buflen, DWORD *ret_len ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_control_params params; + UINT64 ret_len64; + LONG ret; + + TRACE( "%Ix, %#lx, %p, %lu, %p, %lu, %p\n", connect, code, in_buf, in_buflen, out_buf, out_buflen, ret_len ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + if (!ret_len) return SCARD_E_INVALID_PARAMETER; + + params.handle = handle->unix_handle; + params.code = code; + params.in_buf = in_buf; + params.in_buflen = in_buflen; + params.out_buf = out_buf; + params.out_buflen = out_buflen; + params.ret_len = &ret_len64; + if (!(ret = UNIX_CALL( scard_control, ¶ms ))) *ret_len = ret_len64; + TRACE( "returning %#lx\n", ret ); + return ret; +} + BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, void *reserved ) { switch (reason) diff --git a/dlls/winscard/winscard.spec b/dlls/winscard/winscard.spec index 6de6c9036dd..bc9b0fd40da 100644 --- a/dlls/winscard/winscard.spec +++ b/dlls/winscard/winscard.spec @@ -9,7 +9,7 @@ @ stdcall SCardCancel(long) @ stdcall SCardConnectA(long str long long ptr ptr) @ stdcall SCardConnectW(long wstr long long ptr ptr) -@ stub SCardControl +@ stdcall SCardControl(long long ptr long ptr long ptr) @ stdcall SCardDisconnect(long long) @ stdcall SCardEndTransaction(long long) @ stdcall SCardEstablishContext(long ptr ptr ptr)
1
0
0
0
Hans Leidekker : winscard: Implement SCardTransmit().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 26c72e911e2b6fadf6d0e0d34cc331f294e57569 URL:
https://gitlab.winehq.org/wine/wine/-/commit/26c72e911e2b6fadf6d0e0d34cc331…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 13:03:01 2023 +0100 winscard: Implement SCardTransmit(). --- dlls/winscard/unixlib.c | 9 +++++++++ dlls/winscard/unixlib.h | 18 ++++++++++++++++++ dlls/winscard/winscard.c | 36 ++++++++++++++++++++++++++++++++++++ dlls/winscard/winscard.spec | 2 +- 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index e1cdf673c92..50f6e348e97 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -44,6 +44,7 @@ LONG SCardDisconnect( UINT64, UINT64 ); LONG SCardReconnect( UINT64, UINT64, UINT64, UINT64, UINT64 * ); LONG SCardBeginTransaction( UINT64 ); LONG SCardEndTransaction( UINT64, UINT64 ); +LONG SCardTransmit( UINT64, const struct io_request *, const BYTE *, UINT64, struct io_request *, BYTE *, UINT64 * ); static NTSTATUS scard_establish_context( void *args ) { @@ -126,6 +127,13 @@ static NTSTATUS scard_end_transaction( void *args ) return SCardEndTransaction( params->handle, params->disposition ); } +static NTSTATUS scard_transmit( void *args ) +{ + struct scard_transmit_params *params = args; + return SCardTransmit( params->handle, params->send, params->send_buf, params->send_buflen, params->recv, + params->recv_buf, params->recv_buflen ); +} + const unixlib_entry_t __wine_unix_call_funcs[] = { scard_establish_context, @@ -141,4 +149,5 @@ const unixlib_entry_t __wine_unix_call_funcs[] = scard_disconnect, scard_begin_transaction, scard_end_transaction, + scard_transmit, }; diff --git a/dlls/winscard/unixlib.h b/dlls/winscard/unixlib.h index 6c7576220f9..33b1d295509 100644 --- a/dlls/winscard/unixlib.h +++ b/dlls/winscard/unixlib.h @@ -121,6 +121,23 @@ struct scard_end_transaction_params UINT64 disposition; }; +struct io_request +{ + UINT64 protocol; + UINT64 pci_len; +}; + +struct scard_transmit_params +{ + UINT64 handle; + const struct io_request *send; + const BYTE *send_buf; + UINT64 send_buflen; + struct io_request *recv; + BYTE *recv_buf; + UINT64 *recv_buflen; +}; + enum winscard_funcs { unix_scard_establish_context, @@ -136,4 +153,5 @@ enum winscard_funcs unix_scard_disconnect, unix_scard_begin_transaction, unix_scard_end_transaction, + unix_scard_transmit, }; diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index a5b9cc75af5..7ef0a3fc9ba 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -786,6 +786,42 @@ LONG WINAPI SCardEndTransaction( SCARDHANDLE connect, DWORD disposition ) return ret; } +LONG WINAPI SCardTransmit( SCARDHANDLE connect, const SCARD_IO_REQUEST *send, const BYTE *send_buf, + DWORD send_buflen, SCARD_IO_REQUEST *recv, BYTE *recv_buf, DWORD *recv_buflen ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_transmit_params params; + struct io_request send64 = { send->dwProtocol, send->cbPciLength }, recv64; + UINT64 recv_buflen64; + LONG ret; + + TRACE( "%Ix, %p, %p, %lu, %p, %p, %p\n", connect, send, send_buf, send_buflen, recv, recv_buf, recv_buflen ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + if (!recv_buflen) return SCARD_E_INVALID_PARAMETER; + + params.handle = handle->unix_handle; + params.send = &send64; + params.send_buf = send_buf; + params.send_buflen = send_buflen; + params.recv = &recv64; + params.recv_buf = recv_buf; + recv_buflen64 = *recv_buflen; + params.recv_buflen = &recv_buflen64; + if (!(ret = UNIX_CALL( scard_transmit, ¶ms ))) + { + if (recv) + { + recv->dwProtocol = recv64.protocol; + recv->cbPciLength = recv64.pci_len; + } + *recv_buflen = recv_buflen64; + } + + TRACE( "returning %#lx\n", ret ); + return ret; +} + BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, void *reserved ) { switch (reason) diff --git a/dlls/winscard/winscard.spec b/dlls/winscard/winscard.spec index 828df2416c9..6de6c9036dd 100644 --- a/dlls/winscard/winscard.spec +++ b/dlls/winscard/winscard.spec @@ -57,7 +57,7 @@ @ stub SCardState @ stdcall SCardStatusA(long str ptr ptr ptr ptr ptr) @ stdcall SCardStatusW(long wstr ptr ptr ptr ptr ptr) -@ stub SCardTransmit +@ stdcall SCardTransmit(long ptr ptr long ptr ptr ptr) @ extern g_rgSCardRawPci @ extern g_rgSCardT0Pci @ extern g_rgSCardT1Pci
1
0
0
0
Hans Leidekker : winscard: Implement SCardBegin/EndTransaction().
by Alexandre Julliard
22 Feb '23
22 Feb '23
Module: wine Branch: master Commit: 094161f33f6bc8d6fcb33f4c67da9cc822f01973 URL:
https://gitlab.winehq.org/wine/wine/-/commit/094161f33f6bc8d6fcb33f4c67da9c…
Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 12:54:22 2023 +0100 winscard: Implement SCardBegin/EndTransaction(). --- dlls/winscard/unixlib.c | 16 ++++++++++++++++ dlls/winscard/unixlib.h | 13 +++++++++++++ dlls/winscard/winscard.c | 33 +++++++++++++++++++++++++++++++++ dlls/winscard/winscard.spec | 4 ++-- 4 files changed, 64 insertions(+), 2 deletions(-) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index c9afe13d796..e1cdf673c92 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -42,6 +42,8 @@ LONG SCardConnect( UINT64, const char *, UINT64, UINT64, UINT64 *, UINT64 * ); LONG SCardStatus( UINT64, char *, UINT64 *, UINT64 *, UINT64 *, BYTE *, UINT64 * ); LONG SCardDisconnect( UINT64, UINT64 ); LONG SCardReconnect( UINT64, UINT64, UINT64, UINT64, UINT64 * ); +LONG SCardBeginTransaction( UINT64 ); +LONG SCardEndTransaction( UINT64, UINT64 ); static NTSTATUS scard_establish_context( void *args ) { @@ -112,6 +114,18 @@ static NTSTATUS scard_disconnect( void *args ) return SCardDisconnect( params->handle, params->disposition ); } +static NTSTATUS scard_begin_transaction( void *args ) +{ + struct scard_begin_transaction_params *params = args; + return SCardBeginTransaction( params->handle ); +} + +static NTSTATUS scard_end_transaction( void *args ) +{ + struct scard_end_transaction_params *params = args; + return SCardEndTransaction( params->handle, params->disposition ); +} + const unixlib_entry_t __wine_unix_call_funcs[] = { scard_establish_context, @@ -125,4 +139,6 @@ const unixlib_entry_t __wine_unix_call_funcs[] = scard_status, scard_reconnect, scard_disconnect, + scard_begin_transaction, + scard_end_transaction, }; diff --git a/dlls/winscard/unixlib.h b/dlls/winscard/unixlib.h index 2c7007a1f12..6c7576220f9 100644 --- a/dlls/winscard/unixlib.h +++ b/dlls/winscard/unixlib.h @@ -110,6 +110,17 @@ struct scard_disconnect_params UINT64 disposition; }; +struct scard_begin_transaction_params +{ + UINT64 handle; +}; + +struct scard_end_transaction_params +{ + UINT64 handle; + UINT64 disposition; +}; + enum winscard_funcs { unix_scard_establish_context, @@ -123,4 +134,6 @@ enum winscard_funcs unix_scard_status, unix_scard_reconnect, unix_scard_disconnect, + unix_scard_begin_transaction, + unix_scard_end_transaction, }; diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index d6bf81ecbc0..a5b9cc75af5 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -753,6 +753,39 @@ LONG WINAPI SCardDisconnect( SCARDHANDLE connect, DWORD disposition ) return ret; } +LONG WINAPI SCardBeginTransaction( SCARDHANDLE connect ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_begin_transaction_params params; + LONG ret; + + TRACE( "%Ix\n", connect ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + + params.handle = handle->unix_handle; + ret = UNIX_CALL( scard_begin_transaction, ¶ms ); + TRACE( "returning %#lx\n", ret ); + return ret; +} + +LONG WINAPI SCardEndTransaction( SCARDHANDLE connect, DWORD disposition ) +{ + struct handle *handle = (struct handle *)connect; + struct scard_end_transaction_params params; + LONG ret; + + TRACE( "%Ix, %#lx\n", connect, disposition ); + + if (!handle || handle->magic != CONNECT_MAGIC) return ERROR_INVALID_HANDLE; + + params.handle = handle->unix_handle; + params.disposition = disposition; + ret = UNIX_CALL( scard_end_transaction, ¶ms ); + TRACE( "returning %#lx\n", ret ); + return ret; +} + BOOL WINAPI DllMain( HINSTANCE hinst, DWORD reason, void *reserved ) { switch (reason) diff --git a/dlls/winscard/winscard.spec b/dlls/winscard/winscard.spec index c9f903ed483..828df2416c9 100644 --- a/dlls/winscard/winscard.spec +++ b/dlls/winscard/winscard.spec @@ -5,13 +5,13 @@ @ stdcall SCardAccessStartedEvent() @ stdcall SCardAddReaderToGroupA(long str str) @ stdcall SCardAddReaderToGroupW(long wstr wstr) -@ stub SCardBeginTransaction +@ stdcall SCardBeginTransaction(long) @ stdcall SCardCancel(long) @ stdcall SCardConnectA(long str long long ptr ptr) @ stdcall SCardConnectW(long wstr long long ptr ptr) @ stub SCardControl @ stdcall SCardDisconnect(long long) -@ stub SCardEndTransaction +@ stdcall SCardEndTransaction(long long) @ stdcall SCardEstablishContext(long ptr ptr ptr) @ stub SCardForgetCardTypeA @ stub SCardForgetCardTypeW
1
0
0
0
← Newer
1
...
9
10
11
12
13
14
15
...
60
Older →
Jump to page:
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
55
56
57
58
59
60
Results per page:
10
25
50
100
200