sane.ds: Implement Wow64 entry points in the Unix library.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
7693fb8091
commit
7ec312902b
|
@ -57,8 +57,6 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
|||
|
||||
static TW_UINT16 SANE_OpenDS( pTW_IDENTITY pOrigin, pTW_IDENTITY self)
|
||||
{
|
||||
struct open_ds_params params = { self };
|
||||
|
||||
if (SANE_dsmentry == NULL)
|
||||
{
|
||||
HMODULE moddsm = GetModuleHandleW(L"twain_32");
|
||||
|
@ -73,7 +71,7 @@ static TW_UINT16 SANE_OpenDS( pTW_IDENTITY pOrigin, pTW_IDENTITY self)
|
|||
}
|
||||
}
|
||||
|
||||
if (SANE_CALL( open_ds, ¶ms )) return TWRC_FAILURE;
|
||||
if (SANE_CALL( open_ds, self )) return TWRC_FAILURE;
|
||||
|
||||
activeDS.twCC = SANE_SaneSetDefaults();
|
||||
if (activeDS.twCC == TWCC_SUCCESS)
|
||||
|
@ -110,8 +108,7 @@ static TW_UINT16 SANE_SourceControlHandler (
|
|||
break;
|
||||
case MSG_GET:
|
||||
{
|
||||
struct get_identity_params params = { pData };
|
||||
if (SANE_CALL( get_identity, ¶ms ))
|
||||
if (SANE_CALL( get_identity, pData ))
|
||||
{
|
||||
activeDS.twCC = TWCC_CAPUNSUPPORTED;
|
||||
twRC = TWRC_FAILURE;
|
||||
|
|
|
@ -208,8 +208,7 @@ static NTSTATUS process_detach( void *args )
|
|||
|
||||
static NTSTATUS get_identity( void *args )
|
||||
{
|
||||
struct get_identity_params *params = args;
|
||||
TW_IDENTITY *id = params->id;
|
||||
TW_IDENTITY *id = args;
|
||||
static int cur_dev;
|
||||
|
||||
detect_sane_devices();
|
||||
|
@ -232,8 +231,7 @@ static NTSTATUS get_identity( void *args )
|
|||
|
||||
static NTSTATUS open_ds( void *args )
|
||||
{
|
||||
struct open_ds_params *params = args;
|
||||
TW_IDENTITY *id = params->id;
|
||||
TW_IDENTITY *id = args;
|
||||
SANE_Status status;
|
||||
int i;
|
||||
|
||||
|
@ -303,7 +301,7 @@ static NTSTATUS cancel_device( void *args )
|
|||
|
||||
static NTSTATUS read_data( void *args )
|
||||
{
|
||||
struct read_data_params *params = args;
|
||||
const struct read_data_params *params = args;
|
||||
unsigned char *buffer = params->buffer;
|
||||
int read_len, remaining = params->len;
|
||||
SANE_Status status;
|
||||
|
@ -351,14 +349,14 @@ static NTSTATUS get_params( void *args )
|
|||
|
||||
static NTSTATUS option_get_value( void *args )
|
||||
{
|
||||
struct option_get_value_params *params = args;
|
||||
const struct option_get_value_params *params = args;
|
||||
return sane_status_to_twcc( sane_control_option( device_handle, params->optno,
|
||||
SANE_ACTION_GET_VALUE, params->val, NULL ));
|
||||
}
|
||||
|
||||
static NTSTATUS option_set_value( void *args )
|
||||
{
|
||||
struct option_set_value_params *params = args;
|
||||
const struct option_set_value_params *params = args;
|
||||
int status = 0;
|
||||
TW_UINT16 rc = sane_status_to_twcc( sane_control_option( device_handle, params->optno,
|
||||
SANE_ACTION_SET_VALUE, params->val, &status ));
|
||||
|
@ -379,7 +377,7 @@ static NTSTATUS option_get_descriptor( void *args )
|
|||
|
||||
static NTSTATUS option_find_descriptor( void *args )
|
||||
{
|
||||
struct option_find_descriptor_params *params = args;
|
||||
const struct option_find_descriptor_params *params = args;
|
||||
struct option_descriptor *descr = params->descr;
|
||||
const SANE_Option_Descriptor *opt;
|
||||
int i;
|
||||
|
@ -395,7 +393,7 @@ static NTSTATUS option_find_descriptor( void *args )
|
|||
return STATUS_NO_MORE_ENTRIES;
|
||||
}
|
||||
|
||||
unixlib_entry_t __wine_unix_call_funcs[] =
|
||||
const unixlib_entry_t __wine_unix_call_funcs[] =
|
||||
{
|
||||
process_attach,
|
||||
process_detach,
|
||||
|
@ -411,3 +409,101 @@ unixlib_entry_t __wine_unix_call_funcs[] =
|
|||
option_get_descriptor,
|
||||
option_find_descriptor,
|
||||
};
|
||||
|
||||
#ifdef _WIN64
|
||||
|
||||
typedef ULONG PTR32;
|
||||
|
||||
static NTSTATUS wow64_read_data( void *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
PTR32 buffer;
|
||||
int len;
|
||||
PTR32 retlen;
|
||||
} const *params32 = args;
|
||||
|
||||
struct read_data_params params =
|
||||
{
|
||||
ULongToPtr(params32->buffer),
|
||||
params32->len,
|
||||
ULongToPtr(params32->retlen)
|
||||
};
|
||||
|
||||
return read_data( ¶ms );
|
||||
}
|
||||
|
||||
static NTSTATUS wow64_option_get_value( void *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
int optno;
|
||||
PTR32 val;
|
||||
} const *params32 = args;
|
||||
|
||||
struct option_get_value_params params =
|
||||
{
|
||||
params32->optno,
|
||||
ULongToPtr(params32->val)
|
||||
};
|
||||
|
||||
return option_get_value( ¶ms );
|
||||
}
|
||||
|
||||
static NTSTATUS wow64_option_set_value( void *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
int optno;
|
||||
PTR32 val;
|
||||
PTR32 reload;
|
||||
} const *params32 = args;
|
||||
|
||||
struct option_set_value_params params =
|
||||
{
|
||||
params32->optno,
|
||||
ULongToPtr(params32->val),
|
||||
ULongToPtr(params32->reload)
|
||||
};
|
||||
|
||||
return option_set_value( ¶ms );
|
||||
}
|
||||
|
||||
|
||||
static NTSTATUS wow64_option_find_descriptor( void *args )
|
||||
{
|
||||
struct
|
||||
{
|
||||
PTR32 name;
|
||||
int type;
|
||||
PTR32 descr;
|
||||
} const *params32 = args;
|
||||
|
||||
struct option_find_descriptor_params params =
|
||||
{
|
||||
ULongToPtr(params32->name),
|
||||
params32->type,
|
||||
ULongToPtr(params32->descr)
|
||||
};
|
||||
|
||||
return option_find_descriptor( ¶ms );
|
||||
}
|
||||
|
||||
const unixlib_entry_t __wine_unix_call_wow64_funcs[] =
|
||||
{
|
||||
process_attach,
|
||||
process_detach,
|
||||
get_identity,
|
||||
open_ds,
|
||||
close_ds,
|
||||
start_device,
|
||||
cancel_device,
|
||||
wow64_read_data,
|
||||
get_params,
|
||||
wow64_option_get_value,
|
||||
wow64_option_set_value,
|
||||
option_get_descriptor,
|
||||
wow64_option_find_descriptor,
|
||||
};
|
||||
|
||||
#endif /* _WIN64 */
|
||||
|
|
|
@ -53,16 +53,6 @@ struct option_descriptor
|
|||
} constraint;
|
||||
};
|
||||
|
||||
struct get_identity_params
|
||||
{
|
||||
TW_IDENTITY *id;
|
||||
};
|
||||
|
||||
struct open_ds_params
|
||||
{
|
||||
TW_IDENTITY *id;
|
||||
};
|
||||
|
||||
struct read_data_params
|
||||
{
|
||||
void *buffer;
|
||||
|
|
Loading…
Reference in New Issue