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
July 2021
----- 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
728 discussions
Start a n
N
ew thread
Steve Lhomme : include: Add AV1 support to dxva.h.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: 2f05dd0719e7dc51b48397cf441e139a0c9c0ec3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=2f05dd0719e7dc51b48397cf…
Author: Steve Lhomme <robux4(a)gmail.com> Date: Sat Jul 3 08:13:57 2021 +0200 include: Add AV1 support to dxva.h. Signed-off-by: Steve Lhomme <robux4(a)ycbcr.xyz> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/dxva.h | 269 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 269 insertions(+) diff --git a/include/dxva.h b/include/dxva.h index 4f18f2e60da..b8505630d0b 100644 --- a/include/dxva.h +++ b/include/dxva.h @@ -563,6 +563,275 @@ typedef struct _DXVA_Status_VPx USHORT wNumMbsAffected; } DXVA_Status_VPx, *LPDXVA_Status_VPx; + +#define _DIRECTX_AV1_VA_ + +/* AV1 decoder GUIDs */ +DEFINE_GUID(DXVA_ModeAV1_VLD_Profile0, 0xb8be4ccb, 0xcf53, 0x46ba, 0x8d, 0x59, 0xd6, 0xb8, 0xa6, 0xda, 0x5d, 0x2a); +DEFINE_GUID(DXVA_ModeAV1_VLD_Profile1, 0x6936ff0f, 0x45b1, 0x4163, 0x9c, 0xc1, 0x64, 0x6e, 0xf6, 0x94, 0x61, 0x08); +DEFINE_GUID(DXVA_ModeAV1_VLD_Profile2, 0x0c5f2aa1, 0xe541, 0x4089, 0xbb, 0x7b, 0x98, 0x11, 0x0a, 0x19, 0xd7, 0xc8); +DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2, 0x17127009, 0xa00f, 0x4ce1, 0x99, 0x4e, 0xbf, 0x40, 0x81, 0xf6, 0xf3, 0xf0); +DEFINE_GUID(DXVA_ModeAV1_VLD_12bit_Profile2_420, 0x2d80bed6, 0x9cac, 0x4835, 0x9e, 0x91, 0x32, 0x7b, 0xbc, 0x4f, 0x9e, 0xe8); + +/* AV1 picture entry data structure */ +typedef struct _DXVA_PicEntry_AV1 { + UINT width; + UINT height; + + INT wmmat[6]; + __C89_NAMELESS union { + __C89_NAMELESS struct { + UCHAR wminvalid : 1; + UCHAR wmtype : 2; + UCHAR Reserved : 5; + } __C89_NAMELESSSTRUCTNAME; + UCHAR GlobalMotionFlags; + } __C89_NAMELESSUNIONNAME; + UCHAR Index; + UINT16 Reserved16Bits; +} DXVA_PicEntry_AV1, *LPDXVA_PicEntry_AV1; + +/* AV1 picture parameters data structure */ +typedef struct _DXVA_PicParams_AV1 { + UINT width; + UINT height; + + UINT max_width; + UINT max_height; + + UCHAR CurrPicTextureIndex; + UCHAR superres_denom; + UCHAR bitdepth; + UCHAR seq_profile; + + struct { + UCHAR cols; + UCHAR rows; + USHORT context_update_id; + USHORT widths[64]; + USHORT heights[64]; + } tiles; + + union { + __C89_NAMELESS struct { + UINT use_128x128_superblock : 1; + UINT intra_edge_filter : 1; + UINT interintra_compound : 1; + UINT masked_compound : 1; + UINT warped_motion : 1; + UINT dual_filter : 1; + UINT jnt_comp : 1; + UINT screen_content_tools : 1; + UINT integer_mv : 1; + UINT cdef : 1; + UINT restoration : 1; + UINT film_grain : 1; + UINT intrabc : 1; + UINT high_precision_mv : 1; + UINT switchable_motion_mode : 1; + UINT filter_intra : 1; + UINT disable_frame_end_update_cdf : 1; + UINT disable_cdf_update : 1; + UINT reference_mode : 1; + UINT skip_mode : 1; + UINT reduced_tx_set : 1; + UINT superres : 1; + UINT tx_mode : 2; + UINT use_ref_frame_mvs : 1; + UINT enable_ref_frame_mvs : 1; + UINT reference_frame_update : 1; + UINT Reserved : 5; + } __C89_NAMELESSSTRUCTNAME; + UINT32 CodingParamToolFlags; + } coding; + + union { + __C89_NAMELESS struct { + UCHAR frame_type : 2; + UCHAR show_frame : 1; + UCHAR showable_frame : 1; + UCHAR subsampling_x : 1; + UCHAR subsampling_y : 1; + UCHAR mono_chrome : 1; + UCHAR Reserved : 1; + } __C89_NAMELESSSTRUCTNAME; + UCHAR FormatAndPictureInfoFlags; + } format; + + UCHAR primary_ref_frame; + UCHAR order_hint; + UCHAR order_hint_bits; + + DXVA_PicEntry_AV1 frame_refs[7]; + UCHAR RefFrameMapTextureIndex[8]; + + struct { + UCHAR filter_level[2]; + UCHAR filter_level_u; + UCHAR filter_level_v; + + UCHAR sharpness_level; + __C89_NAMELESS union { + __C89_NAMELESS struct { + UCHAR mode_ref_delta_enabled : 1; + UCHAR mode_ref_delta_update : 1; + UCHAR delta_lf_multi : 1; + UCHAR delta_lf_present : 1; + UCHAR Reserved : 4; + } __C89_NAMELESSSTRUCTNAME; + UCHAR ControlFlags; + } __C89_NAMELESSUNIONNAME; + CHAR ref_deltas[8]; + CHAR mode_deltas[2]; + UCHAR delta_lf_res; + UCHAR frame_restoration_type[3]; + USHORT log2_restoration_unit_size[3]; + UINT16 Reserved16Bits; + } loop_filter; + + struct { + __C89_NAMELESS union { + __C89_NAMELESS struct { + UCHAR delta_q_present : 1; + UCHAR delta_q_res : 2; + UCHAR Reserved : 5; + } __C89_NAMELESSSTRUCTNAME; + UCHAR ControlFlags; + } __C89_NAMELESSUNIONNAME; + + UCHAR base_qindex; + CHAR y_dc_delta_q; + CHAR u_dc_delta_q; + CHAR v_dc_delta_q; + CHAR u_ac_delta_q; + CHAR v_ac_delta_q; + UCHAR qm_y; + UCHAR qm_u; + UCHAR qm_v; + UINT16 Reserved16Bits; + } quantization; + + struct { + __C89_NAMELESS union { + __C89_NAMELESS struct { + UCHAR damping : 2; + UCHAR bits : 2; + UCHAR Reserved : 4; + } __C89_NAMELESSSTRUCTNAME; + UCHAR ControlFlags; + } __C89_NAMELESSUNIONNAME; + + union { + __C89_NAMELESS struct { + UCHAR primary : 6; + UCHAR secondary : 2; + } __C89_NAMELESSSTRUCTNAME; + UCHAR combined; + } y_strengths[8]; + + union { + __C89_NAMELESS struct { + UCHAR primary : 6; + UCHAR secondary : 2; + } __C89_NAMELESSSTRUCTNAME; + UCHAR combined; + } uv_strengths[8]; + + } cdef; + + UCHAR interp_filter; + + struct { + __C89_NAMELESS union { + __C89_NAMELESS struct { + UCHAR enabled : 1; + UCHAR update_map : 1; + UCHAR update_data : 1; + UCHAR temporal_update : 1; + UCHAR Reserved : 4; + } __C89_NAMELESSSTRUCTNAME; + UCHAR ControlFlags; + } __C89_NAMELESSUNIONNAME; + UCHAR Reserved24Bits[3]; + + union { + __C89_NAMELESS struct { + UCHAR alt_q : 1; + UCHAR alt_lf_y_v : 1; + UCHAR alt_lf_y_h : 1; + UCHAR alt_lf_u : 1; + UCHAR alt_lf_v : 1; + UCHAR ref_frame : 1; + UCHAR skip : 1; + UCHAR globalmv : 1; + } __C89_NAMELESSSTRUCTNAME; + UCHAR mask; + } feature_mask[8]; + + SHORT feature_data[8][8]; + + } segmentation; + + struct { + __C89_NAMELESS union { + __C89_NAMELESS struct { + USHORT apply_grain : 1; + USHORT scaling_shift_minus8 : 2; + USHORT chroma_scaling_from_luma : 1; + USHORT ar_coeff_lag : 2; + USHORT ar_coeff_shift_minus6 : 2; + USHORT grain_scale_shift : 2; + USHORT overlap_flag : 1; + USHORT clip_to_restricted_range : 1; + USHORT matrix_coeff_is_identity : 1; + USHORT Reserved : 3; + } __C89_NAMELESSSTRUCTNAME; + USHORT ControlFlags; + } __C89_NAMELESSUNIONNAME; + + USHORT grain_seed; + UCHAR scaling_points_y[14][2]; + UCHAR num_y_points; + UCHAR scaling_points_cb[10][2]; + UCHAR num_cb_points; + UCHAR scaling_points_cr[10][2]; + UCHAR num_cr_points; + UCHAR ar_coeffs_y[24]; + UCHAR ar_coeffs_cb[25]; + UCHAR ar_coeffs_cr[25]; + UCHAR cb_mult; + UCHAR cb_luma_mult; + UCHAR cr_mult; + UCHAR cr_luma_mult; + UCHAR Reserved8Bits; + SHORT cb_offset; + SHORT cr_offset; + } film_grain; + + UINT Reserved32Bits; + UINT StatusReportFeedbackNumber; +} DXVA_PicParams_AV1, *LPDXVA_PicParams_AV1; + +/* AV1 tile data structure */ +typedef struct _DXVA_Tile_AV1 { + UINT DataOffset; + UINT DataSize; + USHORT row; + USHORT column; + UINT16 Reserved16Bits; + UCHAR anchor_frame; + UCHAR Reserved8Bits; +} DXVA_Tile_AV1, *LPDXVA_Tile_AV1; + +typedef struct _DXVA_Status_AV1 { + UINT StatusReportFeedbackNumber; + DXVA_PicEntry_AV1 CurrPic; + UCHAR BufType; + UCHAR Status; + UCHAR Reserved8Bits; + USHORT NumMbsAffected; +} DXVA_Status_AV1, *LPDXVA_Status_AV1; + #include <poppack.h> typedef enum _DXVA_VideoChromaSubsampling
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Add some HidD_SetOutputReport tests.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: d5c9b26538b6e8a899dfcdf27891662e0b651fe4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d5c9b26538b6e8a899dfcdf2…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:56 2021 +0200 ntoskrnl.exe/tests: Add some HidD_SetOutputReport tests. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/driver_hid.c | 39 +++++++++++++++++++++++ dlls/ntoskrnl.exe/tests/ntoskrnl.c | 61 +++++++++++++++++++++++++++++++++--- 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c index 7c85e9a67db..049b4232753 100644 --- a/dlls/ntoskrnl.exe/tests/driver_hid.c +++ b/dlls/ntoskrnl.exe/tests/driver_hid.c @@ -290,6 +290,26 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) REPORT_SIZE(1, 1), FEATURE(1, Data|Var|Abs), END_COLLECTION, + + USAGE_PAGE(1, HID_USAGE_PAGE_LED), + USAGE(1, HID_USAGE_LED_GREEN), + COLLECTION(1, Report), + REPORT_ID_OR_USAGE_PAGE(1, report_id, 0), + USAGE_PAGE(1, HID_USAGE_PAGE_LED), + REPORT_COUNT(1, 8), + REPORT_SIZE(1, 1), + OUTPUT(1, Cnst|Var|Abs), + END_COLLECTION, + + USAGE_PAGE(1, HID_USAGE_PAGE_LED), + USAGE(1, HID_USAGE_LED_RED), + COLLECTION(1, Report), + REPORT_ID_OR_USAGE_PAGE(1, report_id, 1), + USAGE_PAGE(1, HID_USAGE_PAGE_LED), + REPORT_COUNT(1, 8), + REPORT_SIZE(1, 1), + OUTPUT(1, Cnst|Var|Abs), + END_COLLECTION, END_COLLECTION, }; #undef REPORT_ID_OR_USAGE_PAGE @@ -403,6 +423,25 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) break; } + case IOCTL_HID_SET_OUTPUT_REPORT: + { + HID_XFER_PACKET *packet = irp->UserBuffer; + ULONG expected_size = 2; + todo_wine ok(in_size == sizeof(*packet), "got input size %u\n", in_size); + todo_wine ok(!out_size, "got output size %u\n", out_size); + + todo_wine_if(packet->reportId != report_id) + ok(packet->reportId == report_id, "got packet report id %u\n", packet->reportId); + todo_wine_if(packet->reportBufferLen == 0 || packet->reportBufferLen == 1) + ok(packet->reportBufferLen >= expected_size, "got packet buffer len %u, expected %d or more\n", + packet->reportBufferLen, expected_size); + ok(!!packet->reportBuffer, "got packet buffer %p\n", packet->reportBuffer); + + irp->IoStatus.Information = 3; + ret = STATUS_SUCCESS; + break; + } + case IOCTL_HID_GET_FEATURE: { HID_XFER_PACKET *packet = irp->UserBuffer; diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index af30829da99..7e42c2e5cac 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -1685,8 +1685,9 @@ static void test_hidp(HANDLE file, int report_id) .Usage = HID_USAGE_GENERIC_JOYSTICK, .UsagePage = HID_USAGE_PAGE_GENERIC, .InputReportByteLength = 24, + .OutputReportByteLength = 3, .FeatureReportByteLength = 18, - .NumberLinkCollectionNodes = 8, + .NumberLinkCollectionNodes = 10, .NumberInputButtonCaps = 13, .NumberInputValueCaps = 7, .NumberInputDataIndices = 43, @@ -1699,8 +1700,9 @@ static void test_hidp(HANDLE file, int report_id) .Usage = HID_USAGE_GENERIC_JOYSTICK, .UsagePage = HID_USAGE_PAGE_GENERIC, .InputReportByteLength = 23, + .OutputReportByteLength = 2, .FeatureReportByteLength = 17, - .NumberLinkCollectionNodes = 8, + .NumberLinkCollectionNodes = 10, .NumberInputButtonCaps = 13, .NumberInputValueCaps = 7, .NumberInputDataIndices = 43, @@ -1842,8 +1844,8 @@ static void test_hidp(HANDLE file, int report_id) .LinkUsage = HID_USAGE_GENERIC_JOYSTICK, .LinkUsagePage = HID_USAGE_PAGE_GENERIC, .CollectionType = 1, - .NumberOfChildren = 5, - .FirstChild = 7, + .NumberOfChildren = 7, + .FirstChild = 9, }, { .LinkUsage = HID_USAGE_GENERIC_JOYSTICK, @@ -2580,6 +2582,57 @@ static void test_hidp(HANDLE file, int report_id) todo_wine ok(value == 3, "got length %u, expected 3\n", value); + memset(report, 0xcd, sizeof(report)); + status = HidP_InitializeReportForID(HidP_Output, report_id, preparsed_data, report, caps.OutputReportByteLength); + ok(status == HIDP_STATUS_REPORT_DOES_NOT_EXIST, "HidP_InitializeReportForID returned %#x\n", status); + memset(report, 0, caps.OutputReportByteLength); + report[0] = report_id; + + SetLastError(0xdeadbeef); + ret = HidD_SetOutputReport(file, report, 0); + todo_wine ok(!ret, "HidD_SetOutputReport succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_SetOutputReport returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = HidD_SetOutputReport(file, report, caps.OutputReportByteLength - 1); + todo_wine + ok(!ret, "HidD_SetOutputReport succeeded\n"); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_SetOutputReport returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + memset(buffer, 0x5a, sizeof(buffer)); + ret = HidD_SetOutputReport(file, buffer, caps.OutputReportByteLength); + if (report_id || broken(!ret)) + { + todo_wine + ok(!ret, "HidD_SetOutputReport succeeded, last error %u\n", GetLastError()); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_SetOutputReport returned error %u\n", GetLastError()); + } + else + { + ok(ret, "HidD_SetOutputReport failed, last error %u\n", GetLastError()); + } + + SetLastError(0xdeadbeef); + ret = HidD_SetOutputReport(file, report, caps.OutputReportByteLength); + ok(ret, "HidD_SetOutputReport failed, last error %u\n", GetLastError()); + + value = caps.OutputReportByteLength * 2; + SetLastError(0xdeadbeef); + ret = sync_ioctl(file, IOCTL_HID_SET_OUTPUT_REPORT, NULL, 0, report, &value); + todo_wine ok(!ret, "IOCTL_HID_SET_OUTPUT_REPORT succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "IOCTL_HID_SET_OUTPUT_REPORT returned error %u\n", GetLastError()); + value = 0; + SetLastError(0xdeadbeef); + ret = sync_ioctl(file, IOCTL_HID_SET_OUTPUT_REPORT, report, caps.OutputReportByteLength * 2, NULL, &value); + ok(ret, "IOCTL_HID_SET_OUTPUT_REPORT failed, last error %u\n", GetLastError()); + todo_wine ok(value == 3, "got length %u, expected 3\n", value); + + HidD_FreePreparsedData(preparsed_data); CloseHandle(file); }
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Add some HidD_SetFeature tests.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: d2ad6274a2dc0de8a96591c109374e4cadd64e30 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d2ad6274a2dc0de8a96591c1…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:55 2021 +0200 ntoskrnl.exe/tests: Add some HidD_SetFeature tests. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/driver_hid.c | 19 ++++++++++++++ dlls/ntoskrnl.exe/tests/ntoskrnl.c | 49 ++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c index ae039c061de..7c85e9a67db 100644 --- a/dlls/ntoskrnl.exe/tests/driver_hid.c +++ b/dlls/ntoskrnl.exe/tests/driver_hid.c @@ -424,6 +424,25 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) break; } + case IOCTL_HID_SET_FEATURE: + { + HID_XFER_PACKET *packet = irp->UserBuffer; + ULONG expected_size = 17; + todo_wine ok(in_size == sizeof(*packet), "got input size %u\n", in_size); + todo_wine ok(!out_size, "got output size %u\n", out_size); + + todo_wine_if(packet->reportId != report_id) + ok(packet->reportId == report_id, "got packet report id %u\n", packet->reportId); + todo_wine_if(packet->reportBufferLen == 0 || packet->reportBufferLen == 16) + ok(packet->reportBufferLen >= expected_size, "got packet buffer len %u, expected %d or more\n", + packet->reportBufferLen, expected_size); + ok(!!packet->reportBuffer, "got packet buffer %p\n", packet->reportBuffer); + + irp->IoStatus.Information = 3; + ret = STATUS_SUCCESS; + break; + } + case IOCTL_HID_GET_STRING: ok(!in_size, "got input size %u\n", in_size); ok(out_size == 128, "got output size %u\n", out_size); diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index 8539e2ee921..af30829da99 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -2531,6 +2531,55 @@ static void test_hidp(HANDLE file, int report_id) ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + memset(report, 0xcd, sizeof(report)); + status = HidP_InitializeReportForID(HidP_Feature, report_id, preparsed_data, report, caps.FeatureReportByteLength); + ok(status == HIDP_STATUS_SUCCESS, "HidP_InitializeReportForID returned %#x\n", status); + + SetLastError(0xdeadbeef); + ret = HidD_SetFeature(file, report, 0); + todo_wine ok(!ret, "HidD_SetFeature succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_SetFeature returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = HidD_SetFeature(file, report, caps.FeatureReportByteLength - 1); + todo_wine + ok(!ret, "HidD_SetFeature succeeded\n"); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_SetFeature returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + memset(buffer, 0x5a, sizeof(buffer)); + ret = HidD_SetFeature(file, buffer, caps.FeatureReportByteLength); + if (report_id || broken(!ret)) + { + todo_wine + ok(!ret, "HidD_SetFeature succeeded, last error %u\n", GetLastError()); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_SetFeature returned error %u\n", GetLastError()); + } + else + { + ok(ret, "HidD_SetFeature failed, last error %u\n", GetLastError()); + } + + SetLastError(0xdeadbeef); + ret = HidD_SetFeature(file, report, caps.FeatureReportByteLength); + ok(ret, "HidD_SetFeature failed, last error %u\n", GetLastError()); + + value = caps.FeatureReportByteLength * 2; + SetLastError(0xdeadbeef); + ret = sync_ioctl(file, IOCTL_HID_SET_FEATURE, NULL, 0, report, &value); + todo_wine ok(!ret, "IOCTL_HID_SET_FEATURE succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "IOCTL_HID_SET_FEATURE returned error %u\n", GetLastError()); + value = 0; + SetLastError(0xdeadbeef); + ret = sync_ioctl(file, IOCTL_HID_SET_FEATURE, report, caps.FeatureReportByteLength * 2, NULL, &value); + ok(ret, "IOCTL_HID_SET_FEATURE failed, last error %u\n", GetLastError()); + todo_wine ok(value == 3, "got length %u, expected 3\n", value); + + HidD_FreePreparsedData(preparsed_data); CloseHandle(file); }
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Add some HidD_GetFeature tests.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: 48b4b99f8fab558fb5a45eb73f3db6466553ace9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=48b4b99f8fab558fb5a45eb7…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:54 2021 +0200 ntoskrnl.exe/tests: Add some HidD_GetFeature tests. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/driver_hid.c | 21 ++++++++++++++++ dlls/ntoskrnl.exe/tests/ntoskrnl.c | 49 ++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c index 793b25f3189..ae039c061de 100644 --- a/dlls/ntoskrnl.exe/tests/driver_hid.c +++ b/dlls/ntoskrnl.exe/tests/driver_hid.c @@ -403,6 +403,27 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) break; } + case IOCTL_HID_GET_FEATURE: + { + HID_XFER_PACKET *packet = irp->UserBuffer; + ULONG expected_size = 17; + ok(!in_size, "got input size %u\n", in_size); + ok(out_size == sizeof(*packet), "got output size %u\n", out_size); + + todo_wine_if(packet->reportId == 0x5a || packet->reportId == 0xa5) + ok(packet->reportId == report_id, "got packet report id %u\n", packet->reportId); + todo_wine_if(packet->reportBufferLen == 16) + ok(packet->reportBufferLen >= expected_size, "got packet buffer len %u, expected %d or more\n", + packet->reportBufferLen, expected_size); + ok(!!packet->reportBuffer, "got packet buffer %p\n", packet->reportBuffer); + + memset(packet->reportBuffer, 0xa5, 3); + if (report_id) ((char *)packet->reportBuffer)[0] = report_id; + irp->IoStatus.Information = 3; + ret = STATUS_SUCCESS; + break; + } + case IOCTL_HID_GET_STRING: ok(!in_size, "got input size %u\n", in_size); ok(out_size == 128, "got output size %u\n", out_size); diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index 875aa62e6a1..8539e2ee921 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -2482,6 +2482,55 @@ static void test_hidp(HANDLE file, int report_id) ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + memset(report, 0xcd, sizeof(report)); + status = HidP_InitializeReportForID(HidP_Feature, report_id, preparsed_data, report, caps.FeatureReportByteLength); + ok(status == HIDP_STATUS_SUCCESS, "HidP_InitializeReportForID returned %#x\n", status); + + SetLastError(0xdeadbeef); + ret = HidD_GetFeature(file, report, 0); + ok(!ret, "HidD_GetFeature succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_GetFeature returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = HidD_GetFeature(file, report, caps.FeatureReportByteLength - 1); + todo_wine + ok(!ret, "HidD_GetFeature succeeded\n"); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_GetFeature returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + memset(buffer, 0x5a, sizeof(buffer)); + ret = HidD_GetFeature(file, buffer, caps.FeatureReportByteLength); + if (report_id || broken(!ret)) + { + todo_wine + ok(!ret, "HidD_GetFeature succeeded, last error %u\n", GetLastError()); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_GetFeature returned error %u\n", GetLastError()); + } + else + { + ok(ret, "HidD_GetFeature failed, last error %u\n", GetLastError()); + todo_wine ok(buffer[0] == 0x5a, "got buffer[0] %x, expected 0x5a\n", (BYTE)buffer[0]); + } + + SetLastError(0xdeadbeef); + ret = HidD_GetFeature(file, report, caps.FeatureReportByteLength); + ok(ret, "HidD_GetFeature failed, last error %u\n", GetLastError()); + todo_wine_if(!report_id) + ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + + value = caps.FeatureReportByteLength * 2; + SetLastError(0xdeadbeef); + ret = sync_ioctl(file, IOCTL_HID_GET_FEATURE, NULL, 0, report, &value); + ok(ret, "IOCTL_HID_GET_FEATURE failed, last error %u\n", GetLastError()); + todo_wine ok(value == 3, "got length %u, expected 3\n", value); + todo_wine_if(!report_id) + ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + + HidD_FreePreparsedData(preparsed_data); CloseHandle(file); }
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Add some HidD_GetInputReport tests.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: 8d63ccd1994ff1db60e1de939c2dbd0beec9bb51 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=8d63ccd1994ff1db60e1de93…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:53 2021 +0200 ntoskrnl.exe/tests: Add some HidD_GetInputReport tests. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/driver_hid.c | 21 ++++++++++++ dlls/ntoskrnl.exe/tests/ntoskrnl.c | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/dlls/ntoskrnl.exe/tests/driver_hid.c b/dlls/ntoskrnl.exe/tests/driver_hid.c index acb51d99816..793b25f3189 100644 --- a/dlls/ntoskrnl.exe/tests/driver_hid.c +++ b/dlls/ntoskrnl.exe/tests/driver_hid.c @@ -382,6 +382,27 @@ static NTSTATUS WINAPI driver_internal_ioctl(DEVICE_OBJECT *device, IRP *irp) break; } + case IOCTL_HID_GET_INPUT_REPORT: + { + HID_XFER_PACKET *packet = irp->UserBuffer; + ULONG expected_size = 23; + ok(!in_size, "got input size %u\n", in_size); + ok(out_size == sizeof(*packet), "got output size %u\n", out_size); + + todo_wine_if(packet->reportId == 0x5a) + ok(packet->reportId == report_id, "got packet report id %u\n", packet->reportId); + todo_wine_if(packet->reportBufferLen == 21 || packet->reportBufferLen == 22) + ok(packet->reportBufferLen >= expected_size, "got packet buffer len %u, expected %d or more\n", + packet->reportBufferLen, expected_size); + ok(!!packet->reportBuffer, "got packet buffer %p\n", packet->reportBuffer); + + memset(packet->reportBuffer, 0xa5, 3); + if (report_id) ((char *)packet->reportBuffer)[0] = report_id; + irp->IoStatus.Information = 3; + ret = STATUS_SUCCESS; + break; + } + case IOCTL_HID_GET_STRING: ok(!in_size, "got input size %u\n", in_size); ok(out_size == 128, "got output size %u\n", out_size); diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index a34c467ecb7..875aa62e6a1 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -1661,6 +1661,21 @@ static inline void check_hidp_value_caps_(int line, HIDP_VALUE_CAPS *caps, const } } +static BOOL sync_ioctl(HANDLE file, DWORD code, void *in_buf, DWORD in_len, void *out_buf, DWORD *ret_len) +{ + OVERLAPPED ovl = {0}; + DWORD out_len = ret_len ? *ret_len : 0; + BOOL ret; + + ovl.hEvent = CreateEventW(NULL, TRUE, FALSE, NULL); + ret = DeviceIoControl(file, code, in_buf, in_len, out_buf, out_len, &out_len, &ovl); + if (!ret && GetLastError() == ERROR_IO_PENDING) ret = GetOverlappedResult(file, &ovl, &out_len, TRUE); + CloseHandle(ovl.hEvent); + + if (ret_len) *ret_len = out_len; + return ret; +} + static void test_hidp(HANDLE file, int report_id) { const HIDP_CAPS expect_hidp_caps[] = @@ -2419,6 +2434,54 @@ static void test_hidp(HANDLE file, int report_id) memset(buffer + 16, 0xff, 8); ok(!memcmp(buffer, buffer + 16, 16), "unexpected report value\n"); + + memset(report, 0xcd, sizeof(report)); + status = HidP_InitializeReportForID(HidP_Input, report_id, preparsed_data, report, caps.InputReportByteLength); + ok(status == HIDP_STATUS_SUCCESS, "HidP_InitializeReportForID returned %#x\n", status); + + SetLastError(0xdeadbeef); + ret = HidD_GetInputReport(file, report, 0); + ok(!ret, "HidD_GetInputReport succeeded\n"); + todo_wine ok(GetLastError() == ERROR_INVALID_USER_BUFFER, "HidD_GetInputReport returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + ret = HidD_GetInputReport(file, report, caps.InputReportByteLength - 1); + todo_wine + ok(!ret, "HidD_GetInputReport succeeded\n"); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_GetInputReport returned error %u\n", GetLastError()); + + SetLastError(0xdeadbeef); + memset(buffer, 0x5a, sizeof(buffer)); + ret = HidD_GetInputReport(file, buffer, caps.InputReportByteLength); + if (report_id || broken(!ret) /* w7u */) + { + todo_wine + ok(!ret, "HidD_GetInputReport succeeded, last error %u\n", GetLastError()); + todo_wine + ok(GetLastError() == ERROR_INVALID_PARAMETER || broken(GetLastError() == ERROR_CRC), + "HidD_GetInputReport returned error %u\n", GetLastError()); + } + else + { + ok(ret, "HidD_GetInputReport failed, last error %u\n", GetLastError()); + todo_wine ok(buffer[0] == 0x5a, "got buffer[0] %x, expected 0x5a\n", (BYTE)buffer[0]); + } + + SetLastError(0xdeadbeef); + ret = HidD_GetInputReport(file, report, caps.InputReportByteLength); + ok(ret, "HidD_GetInputReport failed, last error %u\n", GetLastError()); + ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + + SetLastError(0xdeadbeef); + value = caps.InputReportByteLength * 2; + ret = sync_ioctl(file, IOCTL_HID_GET_INPUT_REPORT, NULL, 0, report, &value); + ok(ret, "IOCTL_HID_GET_INPUT_REPORT failed, last error %u\n", GetLastError()); + todo_wine ok(value == 3, "got length %u, expected 3\n", value); + ok(report[0] == report_id, "got report[0] %02x, expected %02x\n", report[0], report_id); + + HidD_FreePreparsedData(preparsed_data); CloseHandle(file); }
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Add more tests for button array caps.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: e2e0e5aae4b415e7554f53b32bef791d3c090a59 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e2e0e5aae4b415e7554f53b3…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:52 2021 +0200 ntoskrnl.exe/tests: Add more tests for button array caps. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/ntoskrnl.c | 52 +++++++++++++++++++++++++++++--------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/dlls/ntoskrnl.exe/tests/ntoskrnl.c b/dlls/ntoskrnl.exe/tests/ntoskrnl.c index 797421904c8..a34c467ecb7 100644 --- a/dlls/ntoskrnl.exe/tests/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/tests/ntoskrnl.c @@ -1842,6 +1842,8 @@ static void test_hidp(HANDLE file, int report_id) { .DataIndex = 1, }, { .DataIndex = 5, .RawValue = 1, }, { .DataIndex = 7, .RawValue = 1, }, + { .DataIndex = 19, .RawValue = 1, }, + { .DataIndex = 21, .RawValue = 1, }, { .DataIndex = 30, }, { .DataIndex = 31, }, { .DataIndex = 32, .RawValue = 0xfeedcafe, }, @@ -2200,6 +2202,20 @@ static void test_hidp(HANDLE file, int report_id) report, caps.InputReportByteLength); ok(status == HIDP_STATUS_SUCCESS, "HidP_SetUsages returned %#x\n", status); + usages[0] = 0x9; + usages[1] = 0xb; + usages[2] = 0xa; + value = 3; + ok(report[6] == 0, "got report[6] %x expected 0\n", report[6]); + ok(report[7] == 0, "got report[7] %x expected 0\n", report[7]); + memcpy(buffer, report, caps.InputReportByteLength); + status = HidP_SetUsages(HidP_Input, HID_USAGE_PAGE_KEYBOARD, 0, usages, &value, preparsed_data, + report, caps.InputReportByteLength); + todo_wine ok(status == HIDP_STATUS_BUFFER_TOO_SMALL, "HidP_SetUsages returned %#x\n", status); + buffer[6] = 2; + buffer[7] = 4; + todo_wine ok(!memcmp(buffer, report, caps.InputReportByteLength), "unexpected report data\n"); + status = HidP_SetUsageValue(HidP_Input, HID_USAGE_PAGE_LED, 0, 6, 1, preparsed_data, report, caps.InputReportByteLength); ok(status == HIDP_STATUS_USAGE_NOT_FOUND, "HidP_SetUsageValue returned %#x\n", status); @@ -2238,23 +2254,35 @@ static void test_hidp(HANDLE file, int report_id) status = HidP_GetUsagesEx(HidP_Input, 0, usage_and_pages, &value, preparsed_data, report, caps.InputReportByteLength); ok(status == HIDP_STATUS_SUCCESS, "HidP_GetUsagesEx returned %#x\n", status); - ok(value == 4, "got usage count %d, expected %d\n", value, 4); + todo_wine ok(value == 6, "got usage count %d, expected %d\n", value, 4); ok(usage_and_pages[0].UsagePage == HID_USAGE_PAGE_BUTTON, "got usage_and_pages[0] UsagePage %x, expected %x\n", usage_and_pages[0].UsagePage, HID_USAGE_PAGE_BUTTON); ok(usage_and_pages[1].UsagePage == HID_USAGE_PAGE_BUTTON, "got usage_and_pages[1] UsagePage %x, expected %x\n", usage_and_pages[1].UsagePage, HID_USAGE_PAGE_BUTTON); - ok(usage_and_pages[2].UsagePage == HID_USAGE_PAGE_LED, "got usage_and_pages[2] UsagePage %x, expected %x\n", - usage_and_pages[2].UsagePage, HID_USAGE_PAGE_LED); - ok(usage_and_pages[3].UsagePage == HID_USAGE_PAGE_LED, "got usage_and_pages[3] UsagePage %x, expected %x\n", - usage_and_pages[3].UsagePage, HID_USAGE_PAGE_LED); + ok(usage_and_pages[2].UsagePage == HID_USAGE_PAGE_KEYBOARD, "got usage_and_pages[2] UsagePage %x, expected %x\n", + usage_and_pages[2].UsagePage, HID_USAGE_PAGE_KEYBOARD); + ok(usage_and_pages[3].UsagePage == HID_USAGE_PAGE_KEYBOARD, "got usage_and_pages[3] UsagePage %x, expected %x\n", + usage_and_pages[3].UsagePage, HID_USAGE_PAGE_KEYBOARD); + todo_wine + ok(usage_and_pages[4].UsagePage == HID_USAGE_PAGE_LED, "got usage_and_pages[4] UsagePage %x, expected %x\n", + usage_and_pages[4].UsagePage, HID_USAGE_PAGE_LED); + ok(usage_and_pages[5].UsagePage == HID_USAGE_PAGE_LED, "got usage_and_pages[5] UsagePage %x, expected %x\n", + usage_and_pages[5].UsagePage, HID_USAGE_PAGE_LED); ok(usage_and_pages[0].Usage == 4, "got usage_and_pages[0] Usage %x, expected %x\n", usage_and_pages[0].Usage, 4); ok(usage_and_pages[1].Usage == 6, "got usage_and_pages[1] Usage %x, expected %x\n", usage_and_pages[1].Usage, 6); - ok(usage_and_pages[2].Usage == 6, "got usage_and_pages[2] Usage %x, expected %x\n", - usage_and_pages[2].Usage, 6); - ok(usage_and_pages[3].Usage == 4, "got usage_and_pages[3] Usage %x, expected %x\n", - usage_and_pages[3].Usage, 4); + ok(usage_and_pages[2].Usage == 9, "got usage_and_pages[2] Usage %x, expected %x\n", + usage_and_pages[2].Usage, 9); + todo_wine + ok(usage_and_pages[3].Usage == 11, "got usage_and_pages[3] Usage %x, expected %x\n", + usage_and_pages[3].Usage, 11); + todo_wine + ok(usage_and_pages[4].Usage == 6, "got usage_and_pages[4] Usage %x, expected %x\n", + usage_and_pages[4].Usage, 6); + todo_wine + ok(usage_and_pages[5].Usage == 4, "got usage_and_pages[5] Usage %x, expected %x\n", + usage_and_pages[5].Usage, 4); value = HidP_MaxDataListLength(HidP_Feature + 1, preparsed_data); ok(value == 0, "HidP_MaxDataListLength(HidP_Feature + 1) returned %d, expected %d\n", value, 0); @@ -2268,15 +2296,15 @@ static void test_hidp(HANDLE file, int report_id) value = 1; status = HidP_GetData(HidP_Input, data, &value, preparsed_data, report, caps.InputReportByteLength); ok(status == HIDP_STATUS_BUFFER_TOO_SMALL, "HidP_GetData returned %#x\n", status); - ok(value == 9, "got data count %d, expected %d\n", value, 9); + todo_wine ok(value == 11, "got data count %d, expected %d\n", value, 11); memset(data, 0, sizeof(data)); status = HidP_GetData(HidP_Input, data, &value, preparsed_data, report, caps.InputReportByteLength); ok(status == HIDP_STATUS_SUCCESS, "HidP_GetData returned %#x\n", status); for (i = 0; i < ARRAY_SIZE(expect_data); ++i) { winetest_push_context("data[%d]", i); - check_member(data[i], expect_data[i], "%d", DataIndex); - check_member(data[i], expect_data[i], "%d", RawValue); + todo_wine_if(i >= 4) check_member(data[i], expect_data[i], "%d", DataIndex); + todo_wine_if(i >= 4) check_member(data[i], expect_data[i], "%d", RawValue); winetest_pop_context(); }
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Sync test utils with wine/test.h.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: ebb161243e9d3e6bba3ea5e484e3b706383a192c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=ebb161243e9d3e6bba3ea5e4…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 10:44:51 2021 +0200 ntoskrnl.exe/tests: Sync test utils with wine/test.h. Adding support for thread local test data and context. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/Makefile.in | 10 +- dlls/ntoskrnl.exe/tests/driver.c | 32 ++-- dlls/ntoskrnl.exe/tests/driver.h | 10 +- dlls/ntoskrnl.exe/tests/driver_netio.c | 2 +- dlls/ntoskrnl.exe/tests/ntoskrnl.c | 1 + dlls/ntoskrnl.exe/tests/utils.h | 290 ++++++++++++++++++++++++++------- 6 files changed, 258 insertions(+), 87 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=ebb161243e9d3e6bba3e…
1
0
0
0
Rémi Bernon : ntoskrnl.exe/tests: Only count test driver load notify.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: 7c7e77da9d4d133e992fbbde1f1f27b0c2c8fe5b URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7c7e77da9d4d133e992fbbde…
Author: Rémi Bernon <rbernon(a)codeweavers.com> Date: Mon Jul 5 11:38:23 2021 +0200 ntoskrnl.exe/tests: Only count test driver load notify. Sometimes Windows loads other drivers when we don't expect it, and this causes spurious failures. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/tests/driver.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/dlls/ntoskrnl.exe/tests/driver.c b/dlls/ntoskrnl.exe/tests/driver.c index 94139b4b654..225699df402 100644 --- a/dlls/ntoskrnl.exe/tests/driver.c +++ b/dlls/ntoskrnl.exe/tests/driver.c @@ -313,8 +313,7 @@ static WCHAR test_load_image_name[MAX_PATH]; static void WINAPI test_load_image_notify_routine(UNICODE_STRING *image_name, HANDLE process_id, IMAGE_INFO *image_info) { - if (test_load_image_notify_count == -1 - || (image_name->Buffer && wcsstr(image_name->Buffer, L".tmp"))) + if (image_name->Buffer && wcsstr(image_name->Buffer, L".tmp")) { ++test_load_image_notify_count; test_image_info = *image_info; @@ -380,7 +379,7 @@ static void test_load_driver(void) || !wcscmp(test_load_image_name, full_name->Name.Buffer), "Expected image path name %ls, got %ls.\n", full_name->Name.Buffer, test_load_image_name); - test_load_image_notify_count = -1; + test_load_image_notify_count = 0; ret = ZwLoadDriver(&name); ok(ret == STATUS_IMAGE_ALREADY_LOADED, "got %#x\n", ret); @@ -395,7 +394,7 @@ static void test_load_driver(void) ret = PsRemoveLoadImageNotifyRoutine(test_load_image_notify_routine); ok(ret == STATUS_PROCEDURE_NOT_FOUND, "Got unexpected status %#x.\n", ret); - ok(test_load_image_notify_count == -1, "Got unexpected test_load_image_notify_count %u.\n", + ok(test_load_image_notify_count == 0, "Got unexpected test_load_image_notify_count %u.\n", test_load_image_notify_count); RtlFreeUnicodeString(&image_path); }
1
0
0
0
Francois Gouget : ntdll/tests: Improve the RtlWaitOnAddress() timeout checks.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: e72c71d27d67462480026edc2b756a66578db7bd URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e72c71d27d67462480026edc…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Mon Jul 5 18:10:39 2021 +0200 ntdll/tests: Improve the RtlWaitOnAddress() timeout checks. GetTickCount()'s granularity represents 15% of the time we want to mesure, making it hard to not get failures. So use NtQuerySystemTime() instead since we already depend on it. Narrow down the acceptable range again. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/tests/om.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/dlls/ntdll/tests/om.c b/dlls/ntdll/tests/om.c index 82f8188d176..81be7de00f6 100644 --- a/dlls/ntdll/tests/om.c +++ b/dlls/ntdll/tests/om.c @@ -2266,10 +2266,10 @@ static void test_semaphore(void) static void test_wait_on_address(void) { - DWORD ticks; SIZE_T size; NTSTATUS status; - LARGE_INTEGER timeout; + LARGE_INTEGER start, end, timeout; + DWORD elapsed; LONG64 address, compare; if (!pRtlWaitOnAddress) @@ -2298,13 +2298,13 @@ static void test_wait_on_address(void) /* values match */ address = 0; compare = 0; - pNtQuerySystemTime(&timeout); - timeout.QuadPart += 100*10000; - ticks = GetTickCount(); + pNtQuerySystemTime(&start); + timeout.QuadPart = start.QuadPart + 100 * 10000; status = pRtlWaitOnAddress(&address, &compare, 8, &timeout); - ticks = GetTickCount() - ticks; + pNtQuerySystemTime(&end); ok(status == STATUS_TIMEOUT, "got 0x%08x\n", status); - ok(ticks >= 80 && ticks <= 1000, "got %u\n", ticks); + elapsed = (end.QuadPart - start.QuadPart) / 10000; + ok(90 <= elapsed && elapsed <= 900, "timed out in %u ms\n", elapsed); ok(address == 0, "got %s\n", wine_dbgstr_longlong(address)); ok(compare == 0, "got %s\n", wine_dbgstr_longlong(compare)); @@ -2314,12 +2314,13 @@ static void test_wait_on_address(void) compare = ~0; compare <<= size * 8; + pNtQuerySystemTime(&start); timeout.QuadPart = -100 * 10000; - ticks = GetTickCount(); status = pRtlWaitOnAddress(&address, &compare, size, &timeout); - ticks = GetTickCount() - ticks; + pNtQuerySystemTime(&end); ok(status == STATUS_TIMEOUT, "got 0x%08x\n", status); - ok(ticks >= 80 && ticks <= 1000, "got %u\n", ticks); + elapsed = (end.QuadPart - start.QuadPart) / 10000; + ok(90 <= elapsed && elapsed <= 900, "timed out in %u ms\n", elapsed); status = pRtlWaitOnAddress(&address, &compare, size << 1, &timeout); ok(!status, "got 0x%08x\n", status);
1
0
0
0
Francois Gouget : ntdll/tests: TZinfo sometimes does not get a MUI string.
by Alexandre Julliard
05 Jul '21
05 Jul '21
Module: wine Branch: master Commit: 4e9118047171f4ca608612c8cd428f3bb40df715 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=4e9118047171f4ca608612c8…
Author: Francois Gouget <fgouget(a)codeweavers.com> Date: Mon Jul 5 18:09:37 2021 +0200 ntdll/tests: TZinfo sometimes does not get a MUI string. RtlQuery*TimeZoneInformation() should return a MUI string but there are rare cases where it does not in Windows 10 2004. Signed-off-by: Francois Gouget <fgouget(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntdll/tests/time.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/dlls/ntdll/tests/time.c b/dlls/ntdll/tests/time.c index 90737521a4d..ee683e9a0aa 100644 --- a/dlls/ntdll/tests/time.c +++ b/dlls/ntdll/tests/time.c @@ -234,10 +234,12 @@ static void test_RtlQueryTimeZoneInformation(void) status = pRtlQueryDynamicTimeZoneInformation(&tzinfo); ok(status == STATUS_SUCCESS, "RtlQueryDynamicTimeZoneInformation failed, got %08x\n", status); - ok(tzinfo.StandardName[0] == '@', + ok(tzinfo.StandardName[0] == '@' || + broken(tzinfo.StandardName[0]), /* some win10 2004 */ "standard time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.StandardName)); - ok(tzinfo.DaylightName[0] == '@', + ok(tzinfo.DaylightName[0] == '@' || + broken(tzinfo.DaylightName[0]), /* some win10 2004 */ "daylight time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.DaylightName)); @@ -251,10 +253,12 @@ static void test_RtlQueryTimeZoneInformation(void) status = pRtlQueryTimeZoneInformation((RTL_TIME_ZONE_INFORMATION *)&tzinfo); ok(status == STATUS_SUCCESS, "RtlQueryTimeZoneInformation failed, got %08x\n", status); - ok(tzinfo.StandardName[0] == '@', + ok(tzinfo.StandardName[0] == '@' || + broken(tzinfo.StandardName[0]), /* some win10 2004 */ "standard time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.StandardName)); - ok(tzinfo.DaylightName[0] == '@', + ok(tzinfo.DaylightName[0] == '@' || + broken(tzinfo.DaylightName[0]), /* some win10 2004 */ "daylight time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.DaylightName)); @@ -262,10 +266,12 @@ static void test_RtlQueryTimeZoneInformation(void) status = pRtlQueryTimeZoneInformation((RTL_TIME_ZONE_INFORMATION *)&tzinfo); ok(status == STATUS_SUCCESS, "RtlQueryTimeZoneInformation failed, got %08x\n", status); - ok(tzinfo.StandardName[0] == '@', + ok(tzinfo.StandardName[0] == '@' || + broken(tzinfo.StandardName[0]), /* some win10 2004 */ "standard time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.StandardName)); - ok(tzinfo.DaylightName[0] == '@', + ok(tzinfo.DaylightName[0] == '@' || + broken(tzinfo.DaylightName[0]), /* some win10 2004 */ "daylight time zone name isn't an indirect string, got %s\n", wine_dbgstr_w(tzinfo.DaylightName));
1
0
0
0
← Newer
1
...
55
56
57
58
59
60
61
...
73
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
61
62
63
64
65
66
67
68
69
70
71
72
73
Results per page:
10
25
50
100
200