Hans Leidekker : winscard: Implement SCardIsValidContext().
Module: wine Branch: master Commit: 9d40ac4635989f76b16384f15f01220fdec4d51a URL: https://gitlab.winehq.org/wine/wine/-/commit/9d40ac4635989f76b16384f15f01220... Author: Hans Leidekker <hans(a)codeweavers.com> Date: Thu Feb 16 10:27:22 2023 +0100 winscard: Implement SCardIsValidContext(). --- dlls/winscard/unixlib.c | 8 ++++++++ dlls/winscard/unixlib.h | 6 ++++++ dlls/winscard/winscard.c | 17 +++++++++++++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/dlls/winscard/unixlib.c b/dlls/winscard/unixlib.c index 76f2d5cd60b..032b148af8f 100644 --- a/dlls/winscard/unixlib.c +++ b/dlls/winscard/unixlib.c @@ -33,6 +33,7 @@ LONG SCardEstablishContext( UINT64, const void *, const void *, UINT64 * ); LONG SCardReleaseContext( UINT64 ); +LONG SCardIsValidContext( UINT64 ); static NTSTATUS scard_establish_context( void *args ) { @@ -46,8 +47,15 @@ static NTSTATUS scard_release_context( void *args ) return SCardReleaseContext( params->handle ); } +static NTSTATUS scard_is_valid_context( void *args ) +{ + struct scard_is_valid_context_params *params = args; + return SCardIsValidContext( params->handle ); +} + const unixlib_entry_t __wine_unix_call_funcs[] = { scard_establish_context, scard_release_context, + scard_is_valid_context, }; diff --git a/dlls/winscard/unixlib.h b/dlls/winscard/unixlib.h index 08b907f76fe..b8ba940f5b2 100644 --- a/dlls/winscard/unixlib.h +++ b/dlls/winscard/unixlib.h @@ -30,8 +30,14 @@ struct scard_release_context_params UINT64 handle; }; +struct scard_is_valid_context_params +{ + UINT64 handle; +}; + enum winscard_funcs { unix_scard_establish_context, unix_scard_release_context, + unix_scard_is_valid_context, }; diff --git a/dlls/winscard/winscard.c b/dlls/winscard/winscard.c index 0f7edb56c91..4f4cbcfed2f 100644 --- a/dlls/winscard/winscard.c +++ b/dlls/winscard/winscard.c @@ -94,11 +94,20 @@ LONG WINAPI SCardEstablishContext( DWORD scope, const void *reserved1, const voi return ret; } -LONG WINAPI SCardIsValidContext(SCARDCONTEXT context) +LONG WINAPI SCardIsValidContext( SCARDCONTEXT context ) { - FIXME("(%Ix) stub\n", context); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return SCARD_F_INTERNAL_ERROR; + struct handle *handle = (struct handle *)context; + struct scard_is_valid_context_params params; + LONG ret; + + TRACE( "%Ix\n", context ); + + if (!handle || handle->magic != CONTEXT_MAGIC) return ERROR_INVALID_HANDLE; + + params.handle = handle->unix_handle; + ret = UNIX_CALL( scard_is_valid_context, ¶ms ); + TRACE( "returning %#lx\n", ret ); + return ret; } LONG WINAPI SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr, LPCGUID rgguidInterfaces, DWORD cguidInterfaceCount, LPSTR mszCards, LPDWORD pcchCards)
participants (1)
-
Alexandre Julliard