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
April
March
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
April 2019
----- 2025 -----
April 2025
March 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
803 discussions
Start a n
N
ew thread
Martin Storsjo : msvcrt: Hook up the unprefixed logb/logbf/ logbl functions for msvcr120/ucrtbase.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: 85826158947637f790b68742a5448c483f47234f URL:
https://source.winehq.org/git/wine.git/?a=commit;h=85826158947637f790b68742…
Author: Martin Storsjo <martin(a)martin.st> Date: Tue Apr 23 13:46:57 2019 +0300 msvcrt: Hook up the unprefixed logb/logbf/logbl functions for msvcr120/ucrtbase. Signed-off-by: Martin Storsjo <martin(a)martin.st> Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-crt-math-l1-1-0.spec | 6 +++--- dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcr120_app/msvcr120_app.spec | 6 +++--- dlls/msvcrt/math.c | 22 +++++++++++----------- dlls/ucrtbase/ucrtbase.spec | 6 +++--- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec b/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec index a9deec8..75ecaf1 100644 --- a/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec +++ b/dlls/api-ms-win-crt-math-l1-1-0/api-ms-win-crt-math-l1-1-0.spec @@ -276,9 +276,9 @@ @ cdecl log2(double) ucrtbase.log2 @ cdecl log2f(float) ucrtbase.log2f @ cdecl log2l(double) ucrtbase.log2l -@ stub logb -@ stub logbf -@ stub logbl +@ cdecl logb(double) ucrtbase.logb +@ cdecl logbf(float) ucrtbase.logbf +@ cdecl logbl(double) ucrtbase.logbl @ cdecl -arch=arm,x86_64,arm64 logf(float) ucrtbase.logf @ cdecl lrint(double) ucrtbase.lrint @ cdecl lrintf(float) ucrtbase.lrintf diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 618b9bc..68284c9 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -2265,9 +2265,9 @@ @ cdecl log2(double) MSVCR120_log2 @ cdecl log2f(float) MSVCR120_log2f @ cdecl log2l(double) MSVCR120_log2l -@ stub logb -@ stub logbf -@ stub logbl +@ cdecl logb(double) MSVCRT__logb +@ cdecl logbf(float) MSVCRT__logbf +@ cdecl logbl(double) MSVCRT__logb @ cdecl -arch=i386,x86_64,arm,arm64 longjmp(ptr long) MSVCRT_longjmp @ cdecl lrint(double) MSVCR120_lrint @ cdecl lrintf(float) MSVCR120_lrintf diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 26ffaf7..a9c21cb 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -1928,9 +1928,9 @@ @ cdecl log2(double) msvcr120.log2 @ cdecl log2f(float) msvcr120.log2f @ cdecl log2l(double) msvcr120.log2l -@ stub logb -@ stub logbf -@ stub logbl +@ cdecl logb(double) msvcr120.logb +@ cdecl logbf(float) msvcr120.logbf +@ cdecl logbl(double) msvcr120.logbl @ cdecl -arch=i386,x86_64,arm,arm64 longjmp(ptr long) msvcr120.longjmp @ cdecl lrint(double) msvcr120.lrint @ cdecl lrintf(float) msvcr120.lrintf diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index 21f1f9b..fdd664d 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -157,6 +157,17 @@ float CDECL MSVCRT__nextafterf( float num, float next ) return nextafterf( num, next ); } +/********************************************************************* + * _logbf (MSVCRT.@) + */ +float CDECL MSVCRT__logbf( float num ) +{ + float ret = logbf(num); + if (isnan(num)) math_error(_DOMAIN, "_logbf", num, 0, ret); + else if (!num) math_error(_SING, "_logbf", num, 0, ret); + return ret; +} + #endif #if defined(__x86_64__) || defined(__arm__) || defined(__aarch64__) @@ -180,17 +191,6 @@ INT CDECL MSVCRT__isnanf( float num ) } /********************************************************************* - * _logbf (MSVCRT.@) - */ -float CDECL MSVCRT__logbf( float num ) -{ - float ret = logbf(num); - if (isnan(num)) math_error(_DOMAIN, "_logbf", num, 0, ret); - else if (!num) math_error(_SING, "_logbf", num, 0, ret); - return ret; -} - -/********************************************************************* * MSVCRT_acosf (MSVCRT.@) */ float CDECL MSVCRT_acosf( float x ) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 1866f1b..b7f814a 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -2398,9 +2398,9 @@ @ cdecl log2(double) MSVCR120_log2 @ cdecl log2f(float) MSVCR120_log2f @ cdecl log2l(double) MSVCR120_log2l -@ stub logb -@ stub logbf -@ stub logbl +@ cdecl logb(double) MSVCRT__logb +@ cdecl logbf(float) MSVCRT__logbf +@ cdecl logbl(double) MSVCRT__logb @ cdecl -arch=arm,x86_64,arm64 logf(float) MSVCRT_logf @ cdecl -arch=i386,x86_64,arm,arm64 longjmp(ptr long) MSVCRT_longjmp @ cdecl lrint(double) MSVCR120_lrint
1
0
0
0
Martin Storsjo : msvcrt: Fix the fallback implementation of asinh for large negative values.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: fc1107382b7f965103476babee74e74854f167e6 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=fc1107382b7f965103476bab…
Author: Martin Storsjo <martin(a)martin.st> Date: Tue Apr 23 10:00:04 2019 +0300 msvcrt: Fix the fallback implementation of asinh for large negative values. Signed-off-by: Martin Storsjo <martin(a)martin.st> Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvcrt/math.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dlls/msvcrt/math.c b/dlls/msvcrt/math.c index c893c83..21f1f9b 100644 --- a/dlls/msvcrt/math.c +++ b/dlls/msvcrt/math.c @@ -3063,7 +3063,10 @@ double CDECL MSVCR120_asinh(double x) #ifdef HAVE_ASINH return asinh(x); #else - if (!isfinite(x*x+1)) return log(2) + log(x); + if (!isfinite(x*x+1)) { + if (x > 0) return log(2) + log(x); + else return -log(2) - log(-x); + } return log(x + sqrt(x*x+1)); #endif }
1
0
0
0
Michael Müller : avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: e40dd74d8128483c17839ddeee9dacaed4e7dc22 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=e40dd74d8128483c17839dde…
Author: Michael Müller <michael(a)fds-team.de> Date: Thu Apr 25 09:12:26 2019 +0200 avifile.dll16: Convert between AVISTREAMINFO (16 bit) and AVISTREAMINFOA. Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/avifile.dll16/avifile.dll16.spec | 4 +- dlls/avifile.dll16/main.c | 100 ++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+), 2 deletions(-) diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec index 2b5fb91..5dabd7f 100644 --- a/dlls/avifile.dll16/avifile.dll16.spec +++ b/dlls/avifile.dll16/avifile.dll16.spec @@ -36,13 +36,13 @@ 141 pascal AVIFileRelease(long) AVIFileRelease 142 pascal AVIFileInfo(long ptr long) AVIFileInfoA 143 pascal AVIFileGetStream(long ptr long long) AVIFileGetStream -144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStreamA +144 pascal AVIFileCreateStream(long ptr ptr) AVIFileCreateStream16 146 pascal AVIFileWriteData(long long ptr long) AVIFileWriteData 147 pascal AVIFileReadData(long long ptr ptr) AVIFileReadData 148 pascal AVIFileEndRecord(long) AVIFileEndRecord 160 pascal AVIStreamAddRef(long) AVIStreamAddRef 161 pascal AVIStreamRelease(long) AVIStreamRelease -162 pascal AVIStreamInfo(long ptr long) AVIStreamInfoA +162 pascal AVIStreamInfo(long ptr long) AVIStreamInfo16 163 pascal AVIStreamFindSample(long long long) AVIStreamFindSample 164 pascal AVIStreamReadFormat(long long ptr ptr) AVIStreamReadFormat 165 pascal AVIStreamReadData(long long ptr ptr) AVIStreamReadData diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c index 9e1faac..6c2d992 100644 --- a/dlls/avifile.dll16/main.c +++ b/dlls/avifile.dll16/main.c @@ -23,6 +23,27 @@ #include "wingdi.h" #include "vfw.h" +typedef struct _AVISTREAMINFO16 { + DWORD fccType; + DWORD fccHandler; + DWORD dwFlags; + DWORD dwCaps; + WORD wPriority; + WORD wLanguage; + DWORD dwScale; + DWORD dwRate; + DWORD dwStart; + DWORD dwLength; + DWORD dwInitialFrames; + DWORD dwSuggestedBufferSize; + DWORD dwQuality; + DWORD dwSampleSize; + RECT16 rcFrame; + DWORD dwEditCount; + DWORD dwFormatChangeCount; + CHAR szName[64]; +} AVISTREAMINFO16, *LPAVISTREAMINFO16, *PAVISTREAMINFO16; + struct frame_wrapper16 { PGETFRAME pg; @@ -131,3 +152,82 @@ HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) HeapFree(GetProcessHeap(), 0, wrapper); return hr; } + +/*********************************************************************** + * AVIFileCreateStream (AVIFILE.144) + */ +HRESULT WINAPI AVIFileCreateStream16(PAVIFILE pfile, PAVISTREAM *ppavi, LPAVISTREAMINFO16 asi16) +{ + AVISTREAMINFOA asi; + + if (!asi16) + return AVIFileCreateStreamA(pfile, ppavi, NULL); + + asi.fccType = asi16->fccType; + asi.fccHandler = asi16->fccHandler; + asi.dwFlags = asi16->dwFlags; + asi.dwCaps = asi16->dwCaps; + asi.wPriority = asi16->wPriority; + asi.wLanguage = asi16->wLanguage; + asi.dwScale = asi16->dwScale; + asi.dwRate = asi16->dwRate; + asi.dwStart = asi16->dwStart; + asi.dwLength = asi16->dwLength; + asi.dwInitialFrames = asi16->dwInitialFrames; + asi.dwSuggestedBufferSize = asi16->dwSuggestedBufferSize; + asi.dwQuality = asi16->dwQuality; + asi.dwSampleSize = asi16->dwSampleSize; + asi.rcFrame.left = asi16->rcFrame.left; + asi.rcFrame.top = asi16->rcFrame.top; + asi.rcFrame.right = asi16->rcFrame.right; + asi.rcFrame.bottom = asi16->rcFrame.bottom; + asi.dwEditCount = asi16->dwEditCount; + asi.dwFormatChangeCount = asi16->dwFormatChangeCount; + strcpy( asi.szName, asi16->szName ); + + return AVIFileCreateStreamA(pfile, ppavi, &asi); +} + + +/*********************************************************************** + * AVIStreamInfo (AVIFILE.162) + */ +HRESULT WINAPI AVIStreamInfo16(PAVISTREAM pstream, LPAVISTREAMINFO16 asi16, LONG size) +{ + AVISTREAMINFOA asi; + HRESULT hr; + + if (!asi16) + return AVIStreamInfoA(pstream, NULL, size); + + if (size < sizeof(AVISTREAMINFO16)) + return AVIERR_BADSIZE; + + hr = AVIStreamInfoA(pstream, &asi, sizeof(asi)); + if (SUCCEEDED(hr)) + { + asi16->fccType = asi.fccType; + asi16->fccHandler = asi.fccHandler; + asi16->dwFlags = asi.dwFlags; + asi16->dwCaps = asi.dwCaps; + asi16->wPriority = asi.wPriority; + asi16->wLanguage = asi.wLanguage; + asi16->dwScale = asi.dwScale; + asi16->dwRate = asi.dwRate; + asi16->dwStart = asi.dwStart; + asi16->dwLength = asi.dwLength; + asi16->dwInitialFrames = asi.dwInitialFrames; + asi16->dwSuggestedBufferSize = asi.dwSuggestedBufferSize; + asi16->dwQuality = asi.dwQuality; + asi16->dwSampleSize = asi.dwSampleSize; + asi16->rcFrame.left = asi.rcFrame.left; + asi16->rcFrame.top = asi.rcFrame.top; + asi16->rcFrame.right = asi.rcFrame.right; + asi16->rcFrame.bottom = asi.rcFrame.bottom; + asi16->dwEditCount = asi.dwEditCount; + asi16->dwFormatChangeCount = asi.dwFormatChangeCount; + strcpy( asi16->szName, asi.szName ); + } + + return hr; +}
1
0
0
0
Michael Müller : avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: 9fd1ec632720fa684b3e38c2f90833c71c6876a9 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=9fd1ec632720fa684b3e38c2…
Author: Michael Müller <michael(a)fds-team.de> Date: Thu Apr 25 09:12:25 2019 +0200 avifile.dll16: Correctly convert result of AVIStreamGetFrame to a segptr. Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/avifile.dll16/Makefile.in | 3 + dlls/avifile.dll16/avifile.dll16.spec | 6 +- dlls/avifile.dll16/main.c | 133 ++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+), 3 deletions(-) diff --git a/dlls/avifile.dll16/Makefile.in b/dlls/avifile.dll16/Makefile.in index 6050c6c..4152c2f 100644 --- a/dlls/avifile.dll16/Makefile.in +++ b/dlls/avifile.dll16/Makefile.in @@ -1,3 +1,6 @@ MODULE = avifile.dll16 IMPORTS = avifil32 EXTRADLLFLAGS = -m16 -Wb,--main-module,avifil32.dll + +C_SRCS = \ + main.c diff --git a/dlls/avifile.dll16/avifile.dll16.spec b/dlls/avifile.dll16/avifile.dll16.spec index 239d3a4..2b5fb91 100644 --- a/dlls/avifile.dll16/avifile.dll16.spec +++ b/dlls/avifile.dll16/avifile.dll16.spec @@ -20,9 +20,9 @@ 105 stub AVIMAKECOMPRESSEDSTREAM 106 stub AVIMAKEFILEFROMSTREAMS 107 stub AVIMAKESTREAMFROMCLIPBOARD -110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame -111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose -112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen +110 pascal AVIStreamGetFrame(long long) AVIStreamGetFrame16 +111 pascal AVIStreamGetFrameClose(long) AVIStreamGetFrameClose16 +112 pascal AVIStreamGetFrameOpen(long ptr) AVIStreamGetFrameOpen16 120 stub _AVISAVE 121 stub AVISAVEV 122 stub AVISAVEOPTIONS diff --git a/dlls/avifile.dll16/main.c b/dlls/avifile.dll16/main.c new file mode 100644 index 0000000..9e1faac --- /dev/null +++ b/dlls/avifile.dll16/main.c @@ -0,0 +1,133 @@ +/* + * Wrapper for 16 bit avifile functions + * + * Copyright 2016 Michael Müller + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "wine/winbase16.h" +#include "winternl.h" +#include "wingdi.h" +#include "vfw.h" + +struct frame_wrapper16 +{ + PGETFRAME pg; + PVOID ptr; + DWORD size; + WORD sel; + WORD count; +}; + +static void free_segptr_frame(struct frame_wrapper16 *wrapper) +{ + int i; + + if (!wrapper->sel) + return; + + for (i = 0; i < wrapper->count; i++) + FreeSelector16(wrapper->sel + (i << __AHSHIFT)); + + wrapper->sel = 0; +} + +static SEGPTR alloc_segptr_frame(struct frame_wrapper16 *wrapper, void *ptr, DWORD size) +{ + int i; + + if (wrapper->sel) + { + if (wrapper->ptr == ptr && wrapper->size == size) + return MAKESEGPTR(wrapper->sel, 0); + free_segptr_frame(wrapper); + } + + wrapper->ptr = ptr; + wrapper->size = size; + wrapper->count = (size + 0xffff) / 0x10000; + wrapper->sel = AllocSelectorArray16(wrapper->count); + if (!wrapper->sel) + return 0; + + for (i = 0; i < wrapper->count; i++) + { + SetSelectorBase(wrapper->sel + (i << __AHSHIFT), (DWORD)ptr + i * 0x10000); + SetSelectorLimit16(wrapper->sel + (i << __AHSHIFT), size - 1); + size -= 0x10000; + } + + return MAKESEGPTR(wrapper->sel, 0); +} + +/*********************************************************************** + * AVIStreamGetFrameOpen (AVIFILE.112) + */ +PGETFRAME WINAPI AVIStreamGetFrameOpen16(PAVISTREAM pstream, LPBITMAPINFOHEADER lpbiWanted) +{ + struct frame_wrapper16 *wrapper; + PGETFRAME pg; + + pg = AVIStreamGetFrameOpen(pstream, lpbiWanted); + if (!pg) return NULL; + + wrapper = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*wrapper)); + if (!wrapper) + { + AVIStreamGetFrameClose(pg); + return NULL; + } + + wrapper->pg = pg; + return (PGETFRAME)wrapper; +} + +/*********************************************************************** + * AVIStreamGetFrame (AVIFILE.110) + */ +SEGPTR WINAPI AVIStreamGetFrame16(PGETFRAME pg, LONG pos) +{ + struct frame_wrapper16 *wrapper = (void *)pg; + BITMAPINFOHEADER *bih; + + if (!pg) return 0; + + bih = AVIStreamGetFrame(wrapper->pg, pos); + if (bih) + { + DWORD size = bih->biSize + bih->biSizeImage; + return alloc_segptr_frame(wrapper, bih, size); + } + + return 0; +} + + +/*********************************************************************** + * AVIStreamGetFrameClose (AVIFILE.111) + */ +HRESULT WINAPI AVIStreamGetFrameClose16(PGETFRAME pg) +{ + struct frame_wrapper16 *wrapper = (void *)pg; + HRESULT hr; + + if (!pg) return S_OK; + + hr = AVIStreamGetFrameClose(wrapper->pg); + free_segptr_frame(wrapper); + HeapFree(GetProcessHeap(), 0, wrapper); + return hr; +}
1
0
0
0
Nikola Pavlica : dsound: Added 7.1 to stereo downmix.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: fc84b8675a848683988d1793ea4bc9f95b7ea395 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=fc84b8675a848683988d1793…
Author: Nikola Pavlica <pavlica.nikola(a)gmail.com> Date: Tue Apr 23 20:04:23 2019 +0200 dsound: Added 7.1 to stereo downmix. Signed-off-by: Nikola Pavlica <pavlica.nikola(a)gmail.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dsound/dsound_convert.c | 47 ++++++++++++++++++++++++++++++++++++++++++++ dlls/dsound/dsound_private.h | 1 + dlls/dsound/mixer.c | 6 ++++++ 3 files changed, 54 insertions(+) diff --git a/dlls/dsound/dsound_convert.c b/dlls/dsound/dsound_convert.c index 6171b16..3519337 100644 --- a/dlls/dsound/dsound_convert.c +++ b/dlls/dsound/dsound_convert.c @@ -251,6 +251,53 @@ void put_surround512stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD c } } +void put_surround712stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) +{ + /* based on analyzing a recording of a dsound downmix */ + switch(channel){ + + case 6: /* back left */ + value *= 0.24f; + dsb->put_aux(dsb, pos, 0, value); + break; + + case 4: /* surround left */ + value *= 0.24f; + dsb->put_aux(dsb, pos, 0, value); + break; + + case 0: /* front left */ + value *= 1.0f; + dsb->put_aux(dsb, pos, 0, value); + break; + + case 7: /* back right */ + value *= 0.24f; + dsb->put_aux(dsb, pos, 1, value); + break; + + case 5: /* surround right */ + value *= 0.24f; + dsb->put_aux(dsb, pos, 1, value); + break; + + case 1: /* front right */ + value *= 1.0f; + dsb->put_aux(dsb, pos, 1, value); + break; + + case 2: /* centre */ + value *= 0.7; + dsb->put_aux(dsb, pos, 0, value); + dsb->put_aux(dsb, pos, 1, value); + break; + + case 3: + /* LFE is totally ignored in dsound when downmixing to 2 channels */ + break; + } +} + void put_quad2stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) { /* based on pulseaudio's downmix algorithm */ diff --git a/dlls/dsound/dsound_private.h b/dlls/dsound/dsound_private.h index 45a100e..b04ce06 100644 --- a/dlls/dsound/dsound_private.h +++ b/dlls/dsound/dsound_private.h @@ -179,6 +179,7 @@ void put_stereo2quad(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel void put_mono2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN; void put_stereo2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN; void put_surround512stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN; +void put_surround712stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN; void put_quad2stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) DECLSPEC_HIDDEN; HRESULT secondarybuffer_create(DirectSoundDevice *device, const DSBUFFERDESC *dsbd, diff --git a/dlls/dsound/mixer.c b/dlls/dsound/mixer.c index 32bde38..05ca99b 100644 --- a/dlls/dsound/mixer.c +++ b/dlls/dsound/mixer.c @@ -179,6 +179,12 @@ void DSOUND_RecalcFormat(IDirectSoundBufferImpl *dsb) dsb->put = put_surround512stereo; dsb->put_aux = putieee32_sum; } + else if (ichannels == 8 && ochannels == 2) + { + dsb->mix_channels = 8; + dsb->put = put_surround712stereo; + dsb->put_aux = putieee32_sum; + } else if (ichannels == 4 && ochannels == 2) { dsb->mix_channels = 4;
1
0
0
0
Nikola Pavlica : dsound: Revised 5.1 to stereo downmix.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: 87eaa2f593d3a6b2e1440de3bf4c6b37ef089fcf URL:
https://source.winehq.org/git/wine.git/?a=commit;h=87eaa2f593d3a6b2e1440de3…
Author: Nikola Pavlica <pavlica.nikola(a)gmail.com> Date: Tue Apr 23 20:04:22 2019 +0200 dsound: Revised 5.1 to stereo downmix. Signed-off-by: Nikola Pavlica <pavlica.nikola(a)gmail.com> Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dsound/dsound_convert.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/dlls/dsound/dsound_convert.c b/dlls/dsound/dsound_convert.c index 26dbb32..6171b16 100644 --- a/dlls/dsound/dsound_convert.c +++ b/dlls/dsound/dsound_convert.c @@ -216,39 +216,37 @@ void put_stereo2surround51(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD c void put_surround512stereo(const IDirectSoundBufferImpl *dsb, DWORD pos, DWORD channel, float value) { - /* based on pulseaudio's downmix algorithm */ + /* based on analyzing a recording of a dsound downmix */ switch(channel){ - case 4: /* back left */ - value *= 0.056f; /* (1/9) / (sum of left volumes) */ + case 4: /* surround left */ + value *= 0.24f; dsb->put_aux(dsb, pos, 0, value); break; case 0: /* front left */ - value *= 0.503f; /* 1 / (sum of left volumes) */ + value *= 1.0f; dsb->put_aux(dsb, pos, 0, value); break; - case 5: /* back right */ - value *= 0.056f; /* (1/9) / (sum of right volumes) */ + case 5: /* surround right */ + value *= 0.24f; dsb->put_aux(dsb, pos, 1, value); break; case 1: /* front right */ - value *= 0.503f; /* 1 / (sum of right volumes) */ + value *= 1.0f; dsb->put_aux(dsb, pos, 1, value); break; - case 2: /* front centre */ - value *= 0.252f; /* 0.5 / (sum of left/right volumes) */ + case 2: /* centre */ + value *= 0.7; dsb->put_aux(dsb, pos, 0, value); dsb->put_aux(dsb, pos, 1, value); break; - case 3: /* LFE */ - value *= 0.189f; /* 0.375 / (sum of left/right volumes) */ - dsb->put_aux(dsb, pos, 0, value); - dsb->put_aux(dsb, pos, 1, value); + case 3: + /* LFE is totally ignored in dsound when downmixing to 2 channels */ break; } }
1
0
0
0
Dmitry Timoshkov : kernel32: Add MapUserPhysicalPages stub.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: f80059544b9a0cd793b7a93f669ddf1f7ee74796 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f80059544b9a0cd793b7a93f…
Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Thu Apr 25 12:46:14 2019 +0800 kernel32: Add MapUserPhysicalPages stub. Signed-off-by: Dmitry Timoshkov <dmitry(a)baikal.ru> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- .../api-ms-win-core-memory-l1-1-2.spec | 2 +- dlls/kernel32/heap.c | 8 ++++++++ dlls/kernel32/kernel32.spec | 2 +- dlls/kernelbase/kernelbase.spec | 2 +- include/winbase.h | 1 + 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/api-ms-win-core-memory-l1-1-2/api-ms-win-core-memory-l1-1-2.spec b/dlls/api-ms-win-core-memory-l1-1-2/api-ms-win-core-memory-l1-1-2.spec index 9d96da9..85fd48b 100644 --- a/dlls/api-ms-win-core-memory-l1-1-2/api-ms-win-core-memory-l1-1-2.spec +++ b/dlls/api-ms-win-core-memory-l1-1-2/api-ms-win-core-memory-l1-1-2.spec @@ -11,7 +11,7 @@ @ stdcall GetProcessWorkingSetSizeEx(long ptr ptr ptr) kernel32.GetProcessWorkingSetSizeEx @ stdcall GetSystemFileCacheSize(ptr ptr ptr) kernel32.GetSystemFileCacheSize @ stdcall GetWriteWatch(long ptr long ptr ptr ptr) kernel32.GetWriteWatch -@ stub MapUserPhysicalPages +@ stdcall MapUserPhysicalPages(ptr long ptr) kernel32.MapUserPhysicalPages @ stdcall MapViewOfFile(long long long long long) kernel32.MapViewOfFile @ stdcall MapViewOfFileEx(long long long long long ptr) kernel32.MapViewOfFileEx @ stub MapViewOfFileFromApp diff --git a/dlls/kernel32/heap.c b/dlls/kernel32/heap.c index e68420a..31931af 100644 --- a/dlls/kernel32/heap.c +++ b/dlls/kernel32/heap.c @@ -1491,3 +1491,11 @@ BOOL WINAPI FreeUserPhysicalPages(HANDLE process, ULONG_PTR *pages, ULONG_PTR *u SetLastError(ERROR_CALL_NOT_IMPLEMENTED); return FALSE; } + +BOOL WINAPI MapUserPhysicalPages(PVOID addr, ULONG_PTR page_count, PULONG_PTR pages) +{ + FIXME("(%p, %lu, %p): stub\n", addr, page_count, pages); + *pages = 0; + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + return FALSE; +} diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec index 75e7cc5..295a4db 100644 --- a/dlls/kernel32/kernel32.spec +++ b/dlls/kernel32/kernel32.spec @@ -1076,7 +1076,7 @@ @ stdcall -i386 -private MapLS(ptr) krnl386.exe16.MapLS @ stdcall -i386 -private MapSL(long) krnl386.exe16.MapSL @ stdcall -i386 -private MapSLFix(long) krnl386.exe16.MapSLFix -# @ stub MapUserPhysicalPages +@ stdcall MapUserPhysicalPages(ptr long ptr) # @ stub MapUserPhysicalPagesScatter @ stdcall MapViewOfFile(long long long long long) @ stdcall MapViewOfFileEx(long long long long long ptr) diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec index ac6fc12..22ea65f 100644 --- a/dlls/kernelbase/kernelbase.spec +++ b/dlls/kernelbase/kernelbase.spec @@ -948,7 +948,7 @@ @ stdcall MakeSelfRelativeSD(ptr ptr ptr) advapi32.MakeSelfRelativeSD @ stdcall MapGenericMask(ptr ptr) advapi32.MapGenericMask # @ stub MapPredefinedHandleInternal -# @ stub MapUserPhysicalPages +@ stdcall MapUserPhysicalPages(ptr long ptr) kernel32.MapUserPhysicalPages @ stdcall MapViewOfFile(long long long long long) kernel32.MapViewOfFile @ stdcall MapViewOfFileEx(long long long long long ptr) kernel32.MapViewOfFileEx @ stub MapViewOfFileExNuma diff --git a/include/winbase.h b/include/winbase.h index c2e216c..6c97afe 100644 --- a/include/winbase.h +++ b/include/winbase.h @@ -2435,6 +2435,7 @@ WINADVAPI BOOL WINAPI MakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_ WINADVAPI VOID WINAPI MapGenericMask(PDWORD,PGENERIC_MAPPING); WINBASEAPI HMODULE WINAPI MapHModuleSL(WORD); WINBASEAPI WORD WINAPI MapHModuleLS(HMODULE); +WINBASEAPI BOOL WINAPI MapUserPhysicalPages(PVOID,ULONG_PTR,PULONG_PTR); WINBASEAPI LPVOID WINAPI MapViewOfFile(HANDLE,DWORD,DWORD,DWORD,SIZE_T); WINBASEAPI LPVOID WINAPI MapViewOfFileEx(HANDLE,DWORD,DWORD,DWORD,SIZE_T,LPVOID); WINBASEAPI BOOL WINAPI MoveFileA(LPCSTR,LPCSTR);
1
0
0
0
Vijay Kiran Kamuju : include: Add missing ACE and ACL related defines in winnt.h.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: a20014a5e731419a82897306b937680d9106d1ed URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a20014a5e731419a82897306…
Author: Vijay Kiran Kamuju <infyquest(a)gmail.com> Date: Thu Apr 25 15:09:02 2019 +0200 include: Add missing ACE and ACL related defines in winnt.h. Signed-off-by: Vijay Kiran Kamuju <infyquest(a)gmail.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- include/winnt.h | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 4 deletions(-) diff --git a/include/winnt.h b/include/winnt.h index bdcd90a..b5393f5 100644 --- a/include/winnt.h +++ b/include/winnt.h @@ -4289,6 +4289,7 @@ static const WCHAR SE_CREATE_GLOBAL_NAME[] = { 'S','e','C','r','e','a','t','e',' #define SE_PRIVILEGE_ENABLED 0x00000002 #define SE_PRIVILEGE_REMOVED 0x00000004 #define SE_PRIVILEGE_USED_FOR_ACCESS 0x80000000 +#define SE_PRIVILEGE_VALID_ATTRIBUTES 0x80000007 #define PRIVILEGE_SET_ALL_NECESSARY 1 @@ -4356,6 +4357,7 @@ typedef struct _SID_AND_ATTRIBUTES { /* S-1-2 */ #define SECURITY_LOCAL_SID_AUTHORITY {0,0,0,0,0,2} +#define SECURITY_LOCAL_LOGON_RID __MSABI_LONG(0X00000000) /* S-1-3 */ #define SECURITY_CREATOR_SID_AUTHORITY {0,0,0,0,0,3} @@ -4390,16 +4392,35 @@ typedef struct _SID_AND_ATTRIBUTES { #define SECURITY_LOCAL_SERVICE_RID __MSABI_LONG(0x00000013) #define SECURITY_NETWORK_SERVICE_RID __MSABI_LONG(0x00000014) #define SECURITY_NT_NON_UNIQUE __MSABI_LONG(0x00000015) +#define SECURITY_ENTERPRISE_READONLY_CONTROLLERS_RID __MSABI_LONG(0x00000016) #define SECURITY_BUILTIN_DOMAIN_RID __MSABI_LONG(0x00000020) +#define SECURITY_WRITE_RESTRICTED_CODE_RID __MSABI_LONG(0x00000021) #define SECURITY_PACKAGE_BASE_RID __MSABI_LONG(0x00000040) #define SECURITY_PACKAGE_NTLM_RID __MSABI_LONG(0x0000000A) #define SECURITY_PACKAGE_SCHANNEL_RID __MSABI_LONG(0x0000000E) #define SECURITY_PACKAGE_DIGEST_RID __MSABI_LONG(0x00000015) +#define SECURITY_CRED_TYPE_BASE_RID __MSABI_LONG(0x00000041) +#define SECURITY_CRED_TYPE_THIS_ORG_CERT_RID __MSABI_LONG(0x00000001) +#define SECURITY_MIN_BASE_RID __MSABI_LONG(0x00000050) +#define SECURITY_SERVICE_ID_BASE_RID __MSABI_LONG(0x00000050) +#define SECURITY_RESERVED_ID_BASE_RID __MSABI_LONG(0x00000051) +#define SECURITY_APPPOOL_ID_BASE_RID __MSABI_LONG(0x00000052) +#define SECURITY_VIRTUALSERVER_ID_BASE_RID __MSABI_LONG(0x00000053) +#define SECURITY_USERMODEDRIVERHOST_ID_BASE_RID __MSABI_LONG(0x00000054) +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_BASE_RID __MSABI_LONG(0x00000055) +#define SECURITY_WMIHOST_ID_BASE_RID __MSABI_LONG(0x00000056) +#define SECURITY_TASK_ID_BASE_RID __MSABI_LONG(0x00000057) +#define SECURITY_NFS_ID_BASE_RID __MSABI_LONG(0x00000058) +#define SECURITY_COM_ID_BASE_RID __MSABI_LONG(0x00000059) +#define SECURITY_MAX_BASE_RID __MSABI_LONG(0x0000006F) +#define SECURITY_WINDOWSMOBILE_ID_BASE_RID __MSABI_LONG(0x00000070) #define SECURITY_MAX_ALWAYS_FILTERED __MSABI_LONG(0x000003E7) #define SECURITY_MIN_NEVER_FILTERED __MSABI_LONG(0x000003E8) #define SECURITY_OTHER_ORGANIZATION_RID __MSABI_LONG(0x000003E8) +#define DOMAIN_GROUP_RID_ENTERPRISE_READONLY_DOMAIN_CONTROLLERS __MSABI_LONG(0x000001F2) + #define FOREST_USER_RID_MAX __MSABI_LONG(0x000001F3) #define DOMAIN_USER_RID_ADMIN __MSABI_LONG(0x000001F4) #define DOMAIN_USER_RID_GUEST __MSABI_LONG(0x000001F5) @@ -4415,6 +4436,9 @@ typedef struct _SID_AND_ATTRIBUTES { #define DOMAIN_GROUP_RID_SCHEMA_ADMINS __MSABI_LONG(0x00000206) #define DOMAIN_GROUP_RID_ENTERPRISE_ADMINS __MSABI_LONG(0x00000207) #define DOMAIN_GROUP_RID_POLICY_ADMINS __MSABI_LONG(0x00000208) +#define DOMAIN_GROUP_RID_READONLY_CONTROLLERS __MSABI_LONG(0x00000209) + +#define SECURITY_RESOURCE_MANAGER_AUTHORITY {0,0,0,0,0,9} #define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15} #define SECURITY_APP_PACKAGE_BASE_RID __MSABI_LONG(0x000000002) @@ -4432,9 +4456,13 @@ typedef struct _SID_AND_ATTRIBUTES { #define SECURITY_MANDATORY_UNTRUSTED_RID __MSABI_LONG(0x00000000) #define SECURITY_MANDATORY_LOW_RID __MSABI_LONG(0x00001000) #define SECURITY_MANDATORY_MEDIUM_RID __MSABI_LONG(0x00002000) +#define SECURITY_MANDATORY_MEDIUM_PLUS_RID __MSABI_LONG(0x00002100) #define SECURITY_MANDATORY_HIGH_RID __MSABI_LONG(0x00003000) #define SECURITY_MANDATORY_SYSTEM_RID __MSABI_LONG(0x00004000) #define SECURITY_MANDATORY_PROTECTED_PROCESS_RID __MSABI_LONG(0x00005000) +#define SECURITY_MANDATORY_MAXIMUM_USER_RID SECURITY_MANDATORY_SYSTEM_RID + +#define MANDATORY_LEVEL_TO_MANDATORY_RID(ML) (ML * 0x1000) #define DOMAIN_ALIAS_RID_ADMINS __MSABI_LONG(0x00000220) #define DOMAIN_ALIAS_RID_USERS __MSABI_LONG(0x00000221) @@ -4458,11 +4486,32 @@ typedef struct _SID_AND_ATTRIBUTES { #define DOMAIN_ALIAS_RID_AUTHORIZATIONACCESS __MSABI_LONG(0x00000230) #define DOMAIN_ALIAS_RID_TS_LICENSE_SERVERS __MSABI_LONG(0x00000231) #define DOMAIN_ALIAS_RID_DCOM_USERS __MSABI_LONG(0x00000232) +#define DOMAIN_ALIAS_RID_IUSERS __MSABI_LONG(0x00000238) +#define DOMAIN_ALIAS_RID_CRYPTO_OPERATORS __MSABI_LONG(0x00000239) +#define DOMAIN_ALIAS_RID_CACHEABLE_PRINCIPALS_GROUP __MSABI_LONG(0x0000023B) +#define DOMAIN_ALIAS_RID_NON_CACHEABLE_PRINCIPALS_GROUP __MSABI_LONG(0x0000023C) +#define DOMAIN_ALIAS_RID_EVENT_LOG_READERS_GROUP __MSABI_LONG(0x0000023D) +#define DOMAIN_ALIAS_RID_CERTSVC_DCOM_ACCESS_GROUP __MSABI_LONG(0x0000023E) #define SECURITY_SERVER_LOGON_RID SECURITY_ENTERPRISE_CONTROLLERS_RID #define SECURITY_PACKAGE_RID_COUNT __MSABI_LONG(2) +#define SECURITY_CRED_TYPE_RID_COUNT __MSABI_LONG(2) #define SECURITY_LOGON_IDS_RID_COUNT __MSABI_LONG(3) +#define SECURITY_NT_NON_UNIQUE_SUB_AUTH_COUNT __MSABI_LONG(3) +#define SECURITY_SERVICE_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_APPPOOL_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_VIRTUALSERVER_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_USERMODEDRIVERHOST_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_CLOUD_INFRASTRUCTURE_SERVICES_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_WMIHOST_ID_RID_COUNT __MSABI_LONG(6) +#define SECURITY_VIRTUALACCOUNT_ID_RID_COUNT __MSABI_LONG(6) + +#define SYSTEM_LUID { 0x3e7, 0x0 } +#define ANONYMOUS_LOGON_LUID { 0x3e6, 0x0 } +#define LOCALSERVICE_LUID { 0x3e5, 0x0 } +#define NETWORKSERVICE_LUID { 0x3e4, 0x0 } +#define IUSER_LUID { 0x3e3, 0x0 } typedef enum { WinNullSid = 0, @@ -4815,11 +4864,30 @@ typedef struct _ACE_HEADER { } ACE_HEADER,*PACE_HEADER; /* AceType */ -#define ACCESS_ALLOWED_ACE_TYPE 0 -#define ACCESS_DENIED_ACE_TYPE 1 -#define SYSTEM_AUDIT_ACE_TYPE 2 -#define SYSTEM_ALARM_ACE_TYPE 3 +#define ACCESS_MIN_MS_ACE_TYPE 0x0 +#define ACCESS_ALLOWED_ACE_TYPE 0x0 +#define ACCESS_DENIED_ACE_TYPE 0x1 +#define SYSTEM_AUDIT_ACE_TYPE 0x2 +#define SYSTEM_ALARM_ACE_TYPE 0x3 +#define ACCESS_MAX_MS_V2_ACE_TYPE 0x3 +#define ACCESS_ALLOWED_COMPOUND_ACE_TYPE 0x4 +#define ACCESS_MAX_MS_V3_ACE_TYPE 0x4 +#define ACCESS_MIN_MS_OBJECT_ACE_TYPE 0x5 +#define ACCESS_ALLOWED_OBJECT_ACE_TYPE 0x5 +#define ACCESS_DENIED_OBJECT_ACE_TYPE 0x6 +#define ACCESS_AUDIT_OBJECT_ACE_TYPE 0x7 +#define ACCESS_ALARM_OBJECT_ACE_TYPE 0x8 +#define ACCESS_MAX_MS_V4_ACE_TYPE 0x8 +#define ACCESS_ALLOWED_CALLBACK_ACE_TYPE 0x9 +#define ACCESS_DENIED_CALLBACK_ACE_TYPE 0xa +#define ACCESS_ALLOWED_CALLBACK_OBJECT_ACE_TYPE 0xb +#define ACCESS_DENIED_CALLBACK_OBJECT_ACE_TYPE 0xc +#define SYSTEM_AUDIT_CALLBACK_ACE_TYPE 0xd +#define SYSTEM_ALARM_CALLBACK_ACE_TYPE 0xe +#define SYSTEM_AUDIT_CALLBACK_OBJECT_ACE_TYPE 0xf +#define SYSTEM_ALARM_CALLBACK_OBJECT_ACE_TYPE 0x10 #define SYSTEM_MANDATORY_LABEL_ACE_TYPE 0x11 +#define ACCESS_MAX_MS_V5_ACE_TYPE 0x11 /* inherit AceFlags */ #define OBJECT_INHERIT_ACE 0x01
1
0
0
0
Jacek Caban : server: Use generic kernel object list to store client device file pointer.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: 52ff9bd3acb2fa42b63d6a079d3c128d588639e3 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=52ff9bd3acb2fa42b63d6a07…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Apr 25 14:55:10 2019 +0200 server: Use generic kernel object list to store client device file pointer. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/ntoskrnl.exe/ntoskrnl.c | 3 +-- server/device.c | 30 +++++++++++++++++++----------- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c index c1e6a9c..b353839 100644 --- a/dlls/ntoskrnl.exe/ntoskrnl.c +++ b/dlls/ntoskrnl.exe/ntoskrnl.c @@ -518,8 +518,7 @@ static const WCHAR file_type_name[] = {'F','i','l','e',0}; static struct _OBJECT_TYPE file_type = { file_type_name, - create_file_object, - free_kernel_object + create_file_object }; POBJECT_TYPE IoFileObjectType = &file_type; diff --git a/server/device.c b/server/device.c index 7037a2c..1d864e0 100644 --- a/server/device.c +++ b/server/device.c @@ -170,7 +170,7 @@ struct device_file struct object obj; /* object header */ struct device *device; /* device for this file */ struct fd *fd; /* file descriptor for irp */ - client_ptr_t user_ptr; /* opaque ptr for client side */ + struct list kernel_object; /* list of kernel object pointers */ int closed; /* closed file flag */ struct list entry; /* entry in device list */ struct list requests; /* list of pending irp requests */ @@ -178,6 +178,7 @@ struct device_file static void device_file_dump( struct object *obj, int verbose ); static struct fd *device_file_get_fd( struct object *obj ); +static struct list *device_file_get_kernel_obj_list( struct object *obj ); static int device_file_close_handle( struct object *obj, struct process *process, obj_handle_t handle ); static void device_file_destroy( struct object *obj ); static enum server_fd_type device_file_get_fd_type( struct fd *fd ); @@ -204,7 +205,7 @@ static const struct object_ops device_file_ops = no_link_name, /* link_name */ NULL, /* unlink_name */ no_open_file, /* open_file */ - no_kernel_obj_list, /* get_kernel_obj_list */ + device_file_get_kernel_obj_list, /* get_kernel_obj_list */ device_file_close_handle, /* close_handle */ device_file_destroy /* destroy */ }; @@ -432,7 +433,7 @@ static struct object *device_open_file( struct object *obj, unsigned int access, file->device = (struct device *)grab_object( device ); file->closed = 0; - file->user_ptr = 0; + list_init( &file->kernel_object ); list_init( &file->requests ); list_add_tail( &device->files, &file->entry ); if (device->unix_path) @@ -494,6 +495,12 @@ static struct fd *device_file_get_fd( struct object *obj ) return (struct fd *)grab_object( file->fd ); } +static struct list *device_file_get_kernel_obj_list( struct object *obj ) +{ + struct device_file *file = (struct device_file *)obj; + return &file->kernel_object; +} + static int device_file_close_handle( struct object *obj, struct process *process, obj_handle_t handle ) { struct device_file *file = (struct device_file *)obj; @@ -531,26 +538,26 @@ static void device_file_destroy( struct object *obj ) release_object( file->device ); } -static void fill_irp_params( struct irp_call *irp, irp_params_t *params ) +static void fill_irp_params( struct device_manager *manager, struct irp_call *irp, irp_params_t *params ) { *params = irp->params; switch (params->major) { case IRP_MJ_CLOSE: - params->close.file = irp->file->user_ptr; + params->close.file = get_kernel_object_ptr( manager, &irp->file->obj ); break; case IRP_MJ_READ: - params->read.file = irp->file->user_ptr; + params->read.file = get_kernel_object_ptr( manager, &irp->file->obj ); break; case IRP_MJ_WRITE: - params->write.file = irp->file->user_ptr; + params->write.file = get_kernel_object_ptr( manager, &irp->file->obj ); break; case IRP_MJ_FLUSH_BUFFERS: - params->flush.file = irp->file->user_ptr; + params->flush.file = get_kernel_object_ptr( manager, &irp->file->obj ); break; case IRP_MJ_DEVICE_CONTROL: - params->ioctl.file = irp->file->user_ptr; + params->ioctl.file = get_kernel_object_ptr( manager, &irp->file->obj ); break; } } @@ -873,7 +880,7 @@ DECL_HANDLER(get_next_device_request) if (iosb->in_size > get_reply_max_size()) set_error( STATUS_BUFFER_OVERFLOW ); else if (!irp->file || (reply->next = alloc_handle( current->process, irp, 0, 0 ))) { - fill_irp_params( irp, &reply->params ); + fill_irp_params( manager, irp, &reply->params ); set_reply_data_ptr( iosb->in_data, iosb->in_size ); iosb->in_data = NULL; iosb->in_size = 0; @@ -895,7 +902,8 @@ DECL_HANDLER(set_irp_result) if ((irp = (struct irp_call *)get_handle_obj( current->process, req->handle, 0, &irp_call_ops ))) { - if (irp->file) irp->file->user_ptr = req->file_ptr; + if (irp->file && irp->file->device->manager) + set_kernel_object( irp->file->device->manager, &irp->file->obj, req->file_ptr ); set_irp_result( irp, req->status, get_req_data(), get_req_data_size(), req->size ); close_handle( current->process, req->handle ); /* avoid an extra round-trip for close */ release_object( irp );
1
0
0
0
Jacek Caban : server: Ensure that IRP_MJ_CLOSE is queued only once.
by Alexandre Julliard
25 Apr '19
25 Apr '19
Module: wine Branch: master Commit: a77a1a543373826f92964359a788a8a2f6fa2bd5 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=a77a1a543373826f92964359…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Apr 25 14:54:58 2019 +0200 server: Ensure that IRP_MJ_CLOSE is queued only once. Client may alloc new handle inside IRP_MJ_CLOSE handler. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- server/device.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/server/device.c b/server/device.c index 0bb2757..7037a2c 100644 --- a/server/device.c +++ b/server/device.c @@ -171,6 +171,7 @@ struct device_file struct device *device; /* device for this file */ struct fd *fd; /* file descriptor for irp */ client_ptr_t user_ptr; /* opaque ptr for client side */ + int closed; /* closed file flag */ struct list entry; /* entry in device list */ struct list requests; /* list of pending irp requests */ }; @@ -430,6 +431,7 @@ static struct object *device_open_file( struct object *obj, unsigned int access, if (!(file = alloc_object( &device_file_ops ))) return NULL; file->device = (struct device *)grab_object( device ); + file->closed = 0; file->user_ptr = 0; list_init( &file->requests ); list_add_tail( &device->files, &file->entry ); @@ -496,11 +498,12 @@ static int device_file_close_handle( struct object *obj, struct process *process { struct device_file *file = (struct device_file *)obj; - if (file->device->manager && obj->handle_count == 1) /* last handle */ + if (!file->closed && file->device->manager && obj->handle_count == 1) /* last handle */ { struct irp_call *irp; irp_params_t params; + file->closed = 1; memset( ¶ms, 0, sizeof(params) ); params.close.major = IRP_MJ_CLOSE;
1
0
0
0
← Newer
1
...
8
9
10
11
12
13
14
...
81
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
74
75
76
77
78
79
80
81
Results per page:
10
25
50
100
200