ReactOS.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
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
List overview
Download
Ros-diffs
February 2009
----- 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
ros-diffs@reactos.org
29 participants
559 discussions
Start a n
N
ew thread
[dgorbachev] 39491: Flush buffers before sending a command to keyboard controller. It should fix 'unresponsive keyboard' bug.
by dgorbachev@svn.reactos.org
Author: dgorbachev Date: Sun Feb 8 10:07:22 2009 New Revision: 39491 URL:
http://svn.reactos.org/svn/reactos?rev=39491&view=rev
Log: Flush buffers before sending a command to keyboard controller. It should fix 'unresponsive keyboard' bug. Modified: trunk/reactos/drivers/input/i8042prt/pnp.c Modified: trunk/reactos/drivers/input/i8042prt/pnp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/input/i8042prt/pnp…
============================================================================== --- trunk/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] (original) +++ trunk/reactos/drivers/input/i8042prt/pnp.c [iso-8859-1] Sun Feb 8 10:07:22 2009 @@ -80,6 +80,7 @@ UCHAR Value = 0; /* Don't enable keyboard and mouse interrupts, disable keyboard/mouse */ + i8042Flush(DeviceExtension); if (!i8042ChangeMode(DeviceExtension, CCB_KBD_INT_ENAB | CCB_MOUSE_INT_ENAB, CCB_KBD_DISAB | CCB_MOUSE_DISAB)) return STATUS_IO_DEVICE_ERROR;
15 years, 10 months
1
0
0
0
[cwittich] 39490: fix some comments
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Feb 8 09:46:22 2009 New Revision: 39490 URL:
http://svn.reactos.org/svn/reactos?rev=39490&view=rev
Log: fix some comments Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] Sun Feb 8 09:46:22 2009 @@ -694,16 +694,16 @@ NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0,0); NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, SRCAND, 0, 0); - /* 4. combine two bitmap and copy it to hdcDest */ + /* 4. combine both and copy the result to hdcDest */ NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDC2, 0, 0, SRCPAINT, 0, 0); NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hDC1, 0, 0, SRCCOPY, 0, 0); - /* 5. restore all object */ + /* 5. restore all objects */ NtGdiSelectBitmap(hDCMask, hOldMaskBitmap); NtGdiSelectBitmap(hDC1, hOldBitmap2); NtGdiSelectBitmap(hDC2, hOldBitmap3); - /* 6. delete all temp object */ + /* 6. delete all temp objects */ NtGdiDeleteObject(hBitmap2); NtGdiDeleteObject(hBitmap3);
15 years, 10 months
1
0
0
0
[cwittich] 39489: add qmgrprxy.dll from wine 1.14
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Feb 8 09:42:09 2009 New Revision: 39489 URL:
http://svn.reactos.org/svn/reactos?rev=39489&view=rev
Log: add qmgrprxy.dll from wine 1.14 Added: trunk/reactos/dll/win32/qmgrprxy/ (with props) trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.idl (with props) trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.rbuild (with props) trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.spec (with props) trunk/reactos/dll/win32/qmgrprxy/version.rc (with props) Modified: trunk/reactos/baseaddress.rbuild trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/dll/win32/win32.rbuild Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=394…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -3,6 +3,7 @@ <group xmlns:xi="
http://www.w3.org/2001/XInclude
"> <property name="BASEADDRESS_REGTESTS" value="0x07000000" /> <property name="BASEADDRESS_NOTIFYHOOK" value="0x08000000" /> + <property name="BASEADDRESS_QMGRPRXY" value="0x1F710000" /> <property name="BASEADDRESS_CRYPTDLG" value="0x209C0000" /> <property name="BASEADDRESS_COMCAT" value="0x20A50000" /> <property name="BASEADDRESS_DEVENUM" value="0x35680000" /> Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -338,6 +338,7 @@ dll\win32\psapi\psapi.dll 1 dll\win32\pstorec\pstorec.dll 1 dll\win32\qmgr\qmgr.dll 1 +dll\win32\qmgrprxy\qmgrprxy.dll 1 dll\win32\rasapi32\rasapi32.dll 1 dll\win32\rasdlg\rasdlg.dll 1 dll\win32\rasman\rasman.dll 1 Propchange: trunk/reactos/dll/win32/qmgrprxy/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sun Feb 8 09:42:09 2009 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/dll/win32/qmgrprxy/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/dll/win32/qmgrprxy/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/win32/qmgrprxy/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgrprxy/qmgrprx…
============================================================================== --- trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.idl (added) +++ trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.idl [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -1,0 +1,22 @@ +/* + * Copyright 2007, 2008 Google (Roy Shea, Dan Hipschman) + * + * 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 "bits.idl" + +#define DO_NO_IMPORTS +#include "bits1_5.idl" Propchange: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.idl ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgrprxy/qmgrprx…
============================================================================== --- trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.rbuild (added) +++ trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.rbuild [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -1,0 +1,29 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> +<module name="qmgrprxy" type="win32dll" baseaddress="${BASEADDRESS_QMGRPRXY}" installbase="system32" entrypoint="0" installname="qmgrprxy.dll" allowwarnings="true"> + <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> + <importlibrary definition="qmgrprxy.spec" /> + <include base="qmgrprxy">.</include> + <include base="ReactOS">include/reactos/wine</include> + <include base="qmgrprxy" root="intermediate">.</include> + <define name="__WINESRC__" /> + <library>wine</library> + <library>qmgrprxy_interface</library> + <library>qmgrprxy_proxy</library> + <library>kernel32</library> + <library>ntdll</library> + <library>rpcrt4</library> + <library>pseh</library> + <file>version.rc</file> <!-- we need at least one file in the module --> + <compilerflag>-fno-unit-at-a-time</compilerflag> +</module> +<module name="qmgrprxy_interface" type="idlinterface"> + <file>qmgrprxy.idl</file> +</module> +<module name="qmgrprxy_proxy" type="rpcproxy"> + <define name="__WINESRC__" /> + <define name="REGISTER_PROXY_DLL" /> + <file>qmgrprxy.idl</file> +</module> +</group> Propchange: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.rbuild ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgrprxy/qmgrprx…
============================================================================== --- trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.spec (added) +++ trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.spec [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -1,0 +1,5 @@ +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() +@ stdcall -private GetProxyDllInfo(ptr ptr) Propchange: trunk/reactos/dll/win32/qmgrprxy/qmgrprxy.spec ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/qmgrprxy/version.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/qmgrprxy/version…
============================================================================== --- trunk/reactos/dll/win32/qmgrprxy/version.rc (added) +++ trunk/reactos/dll/win32/qmgrprxy/version.rc [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -1,0 +1,4 @@ +#define WINE_OLESELFREGISTER +#define WINE_FILENAME_STR "qmgrprxy.dll" + +#include <wine/wine_common_ver.rc> Propchange: trunk/reactos/dll/win32/qmgrprxy/version.rc ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/win32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/win32.rbuild?rev…
============================================================================== --- trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] Sun Feb 8 09:42:09 2009 @@ -313,6 +313,9 @@ <directory name="qmgr"> <xi:include href="qmgr/qmgr.rbuild" /> </directory> +<directory name="qmgrprxy"> + <xi:include href="qmgrprxy/qmgrprxy.rbuild" /> +</directory> <directory name="rasapi32"> <xi:include href="rasapi32/rasapi32.rbuild" /> </directory>
15 years, 10 months
1
0
0
0
[dchapyshev] 39488: .def -> .spec (based on amd64 branch with my fixes)
by dchapyshev@svn.reactos.org
Author: dchapyshev Date: Sun Feb 8 09:41:03 2009 New Revision: 39488 URL:
http://svn.reactos.org/svn/reactos?rev=39488&view=rev
Log: .def -> .spec (based on amd64 branch with my fixes) Added: trunk/reactos/dll/win32/advapi32/advapi32.spec (with props) Removed: trunk/reactos/dll/win32/advapi32/advapi32.def Modified: trunk/reactos/dll/win32/advapi32/advapi32.rbuild Removed: trunk/reactos/dll/win32/advapi32/advapi32.def URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/advapi3…
============================================================================== --- trunk/reactos/dll/win32/advapi32/advapi32.def [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/advapi32.def (removed) @@ -1,708 +1,0 @@ -; $Id$ -; -; advapi32.def -; -; ReactOS Operating System -; -LIBRARY advapi32.dll -EXPORTS -A_SHAFinal@8 -A_SHAInit@4 -A_SHAUpdate@12 -AbortSystemShutdownA@4 -AbortSystemShutdownW@4 -AccessCheck@32 -AccessCheckAndAuditAlarmA@44 -AccessCheckAndAuditAlarmW@44 -;AccessCheckByType -AccessCheckByTypeAndAuditAlarmA@64 -AccessCheckByTypeAndAuditAlarmW@64 -;AccessCheckByTypeResultList@44 -AccessCheckByTypeResultListAndAuditAlarmA@64 -AccessCheckByTypeResultListAndAuditAlarmByHandleA@68 -AccessCheckByTypeResultListAndAuditAlarmByHandleW@68 -AccessCheckByTypeResultListAndAuditAlarmW@64 -AddAccessAllowedAce@16 -AddAccessAllowedAceEx@20 -AddAccessAllowedObjectAce@28 -AddAccessDeniedAce@16 -AddAccessDeniedAceEx@20 -AddAccessDeniedObjectAce@28 -AddAce@20 -AddAuditAccessAce@24 -AddAuditAccessAceEx@28 -AddAuditAccessObjectAce@36 -AddMandatoryAce@20 -AddUsersToEncryptedFile@8 -AdjustTokenGroups@24 -AdjustTokenPrivileges@24 -AllocateAndInitializeSid@44 -AllocateLocallyUniqueId@4 -AreAllAccessesGranted@8 -AreAnyAccessesGranted@8 -BackupEventLogA@8 -BackupEventLogW@8 -BuildExplicitAccessWithNameA@20 -BuildExplicitAccessWithNameW@20 -BuildImpersonateExplicitAccessWithNameA@24 -BuildImpersonateExplicitAccessWithNameW@24 -BuildImpersonateTrusteeA@8 -BuildImpersonateTrusteeW@8 -BuildSecurityDescriptorA@36 -BuildSecurityDescriptorW@36 -BuildTrusteeWithNameA@8 -BuildTrusteeWithNameW@8 -BuildTrusteeWithObjectsAndNameA@24 -BuildTrusteeWithObjectsAndNameW@24 -BuildTrusteeWithObjectsAndSidA@20 -BuildTrusteeWithObjectsAndSidW@20 -BuildTrusteeWithSidA@8 -BuildTrusteeWithSidW@8 -;CancelOverlappedAccess@4 -ChangeServiceConfig2A@12 -ChangeServiceConfig2W@12 -ChangeServiceConfigA@44 -ChangeServiceConfigW@44 -CheckTokenMembership@12 -ClearEventLogA@8 -ClearEventLogW@8 -;CloseCodeAuthzLevel@4 -;CloseEncryptedFileRaw -CloseEventLog@4 -CloseServiceHandle@4 -;CloseTrace@8 -CommandLineFromMsiDescriptor@12 -;ComputeAccessTokenFromCodeAuthzLevel@20 -ControlService@12 -ControlServiceEx@16 -;ControlTraceA@12 -;ControlTraceW@12 -;ConvertAccessToSecurityDescriptorA@20 -;ConvertAccessToSecurityDescriptorW@20 -;ConvertSDToStringSDRootDomainA@24 -;ConvertSDToStringSDRootDomainW@24 -;ConvertSecurityDescriptorToAccessA@28 -;ConvertSecurityDescriptorToAccessNamedA=ConvertSecurityDescriptorToAccessA -;ConvertSecurityDescriptorToAccessNamedW=ConvertSecurityDescriptorToAccessW -;ConvertSecurityDescriptorToAccessW@28 -ConvertSecurityDescriptorToStringSecurityDescriptorA@20 -ConvertSecurityDescriptorToStringSecurityDescriptorW@20 -ConvertSidToStringSidA@8 -ConvertSidToStringSidW@8 -;ConvertStringSDToSDDomainA@24 -;ConvertStringSDToSDDomainW@24 -;ConvertStringSDToSDRootDomainA@20 -;ConvertStringSDToSDRootDomainW@20 -ConvertStringSecurityDescriptorToSecurityDescriptorA@16 -ConvertStringSecurityDescriptorToSecurityDescriptorW@16 -ConvertStringSidToSidA@8 -ConvertStringSidToSidW@8 -ConvertToAutoInheritPrivateObjectSecurity@24 -CopySid@12 -;CreateCodeAuthzLevel@20 -CreatePrivateObjectSecurity@24 -CreatePrivateObjectSecurityEx@32 -CreatePrivateObjectSecurityWithMultipleInheritance@36 -CreateProcessAsUserA@44 -;CreateProcessAsUserSecure -CreateProcessAsUserW@44 -;CreateProcessWithLogonW -CreateProcessWithTokenW@36 -CreateRestrictedToken@36 -CreateServiceA@52 -CreateServiceW@52 -;CreateTraceInstanceId@8 -CreateWellKnownSid@16 -CredDeleteA@12 -CredDeleteW@12 -CredEnumerateA@16 -CredEnumerateW@16 -CredFree@4 -CredGetSessionTypes@8 -;CredGetTargetInfoA@12 -;CredGetTargetInfoW@12 -;CredIsMarshaledCredentialA@4 -;CredIsMarshaledCredentialW@4 -;CredMarshalCredentialA@12 -;CredMarshalCredentialW@12 -;CredProfileLoaded -CredReadA@16 -CredReadDomainCredentialsA@16 -CredReadDomainCredentialsW@16 -CredReadW@16 -;CredRenameA -;CredRenameW -CredUnmarshalCredentialA@12 -CredUnmarshalCredentialW@12 -CredWriteA@8 -CredWriteDomainCredentialsA@12 -CredWriteDomainCredentialsW@12 -CredWriteW@8 -;CredpConvertCredential -;CredpConvertTargetInfo -;CredpDecodeCredential -;CredpEncodeCredential -CryptAcquireContextA@20 -CryptAcquireContextW@20 -CryptContextAddRef@12 -CryptCreateHash@20 -CryptDecrypt@24 -CryptDeriveKey@20 -CryptDestroyHash@4 -CryptDestroyKey@4 -CryptDuplicateHash@16 -CryptDuplicateKey@16 -CryptEncrypt@28 -CryptEnumProviderTypesA@24 -CryptEnumProviderTypesW@24 -CryptEnumProvidersA@24 -CryptEnumProvidersW@24 -CryptExportKey@24 -CryptGenKey@16 -CryptGenRandom@12 -CryptGetDefaultProviderA@20 -CryptGetDefaultProviderW@20 -CryptGetHashParam@20 -CryptGetKeyParam@20 -CryptGetProvParam@20 -CryptGetUserKey@12 -CryptHashData@16 -CryptHashSessionKey@12 -CryptImportKey@24 -CryptReleaseContext@8 -CryptSetHashParam@16 -CryptSetKeyParam@16 -CryptSetProvParam@16 -CryptSetProviderA@8 -CryptSetProviderExA@16 -CryptSetProviderExW@16 -CryptSetProviderW@8 -CryptSignHashA@24 -CryptSignHashW@24 -CryptVerifySignatureA@24 -CryptVerifySignatureW@24 -DecryptFileA@8 -DecryptFileW@8 -DeleteAce@8 -DeleteService@4 -DeregisterEventSource@4 -DestroyPrivateObjectSecurity@4 -;DuplicateEncryptionInfoFile -DuplicateToken@12 -DuplicateTokenEx@24 -;ElfBackupEventLogFileA@8 -;ElfBackupEventLogFileW@8 -;ElfChangeNotify@8 -;ElfClearEventLogFileA@8 -;ElfClearEventLogFileW@8 -;ElfCloseEventLog@4 -;ElfDeregisterEventSource@4 -;ElfNumberOfRecords@8 -;ElfOldestRecord@8 -;ElfOpenBackupEventLogA@12 -;ElfOpenBackupEventLogW@12 -;ElfOpenEventLogA@12 -;ElfOpenEventLogW@12 -;ElfReadEventLogA@28 -;ElfReadEventLogW@28 -;ElfRegisterEventSourceA@12 -;ElfRegisterEventSourceW@12 -;ElfReportEventA@48 -;ElfReportEventW@48 -;EnableTrace -EncryptFileA@4 -EncryptFileW@4 -;EncryptedFileKeyInfo -EncryptionDisable@8 -EnumDependentServicesA@24 -EnumDependentServicesW@24 -EnumServiceGroupW@36 -EnumServicesStatusA@32 -EnumServicesStatusExA@40 -EnumServicesStatusExW@40 -EnumServicesStatusW@32 -;EnumerateTraceGuids -EqualDomainSid@12 -EqualPrefixSid@8 -EqualSid@8 -FileEncryptionStatusA@8 -FileEncryptionStatusW@8 -FindFirstFreeAce@8 -;FlushTraceA -;FlushTraceW -;FreeEncryptedFileKeyInfo -FreeEncryptionCertificateHashList@4 -FreeInheritedFromArray@12 -FreeSid@4 -;GetAccessPermissionsForObjectA -;GetAccessPermissionsForObjectW -GetAce@12 -GetAclInformation@16 -GetAuditedPermissionsFromAclA@16 -GetAuditedPermissionsFromAclW@16 -GetCurrentHwProfileA@4 -GetCurrentHwProfileW@4 -GetEffectiveRightsFromAclA@12 -GetEffectiveRightsFromAclW@12 -;GetEventLogInformation -GetExplicitEntriesFromAclA(a)12=ADVAPI32.GetExplicitEntriesFromAclW -GetExplicitEntriesFromAclW@12 -GetFileSecurityA@20 -GetFileSecurityW@20 -;GetInformationCodeAuthzLevelW -;GetInformationCodeAuthzPolicyW -GetInheritanceSourceA@40 -GetInheritanceSourceW@40 -GetKernelObjectSecurity@20 -GetLengthSid@4 -;GetLocalManagedApplicationData -;GetLocalManagedApplications -;GetManagedApplicationCategories -;GetManagedApplications -GetMultipleTrusteeA@4 -GetMultipleTrusteeOperationA@4 -GetMultipleTrusteeOperationW@4 -GetMultipleTrusteeW@4 -GetNamedSecurityInfoA@32 -;GetNamedSecurityInfoExA -;GetNamedSecurityInfoExW -GetNamedSecurityInfoW@32 -GetNumberOfEventLogRecords@8 -GetOldestEventLogRecord@8 -;GetOverlappedAccessResults -GetPrivateObjectSecurity@20 -GetSecurityDescriptorControl@12 -GetSecurityDescriptorDacl@16 -GetSecurityDescriptorGroup@12 -GetSecurityDescriptorLength(a)4=NTDLL.RtlLengthSecurityDescriptor -GetSecurityDescriptorOwner@12 -GetSecurityDescriptorRMControl@8 -GetSecurityDescriptorSacl@16 -GetSecurityInfo@32 -GetSecurityInfoExA@36 -GetSecurityInfoExW@36 -GetServiceDisplayNameA@16 -GetServiceDisplayNameW@16 -GetServiceKeyNameA@16 -GetServiceKeyNameW@16 -GetSidIdentifierAuthority@4 -GetSidLengthRequired@4 -GetSidSubAuthority@8 -GetSidSubAuthorityCount@4 -GetSiteSidFromToken@4 -GetTokenInformation@20 -GetTraceEnableFlags@8 -GetTraceEnableLevel@8 -GetTraceLoggerHandle@4 -GetTrusteeFormA@4 -GetTrusteeFormW@4 -GetTrusteeNameA@4 -GetTrusteeNameW@4 -GetTrusteeTypeA@4 -GetTrusteeTypeW@4 -GetUserNameA@8 -GetUserNameW@8 -GetWindowsAccountDomainSid@12 -;I_ScGetCurrentGroupStateW@12 -;I_ScIsSecurityProcess -;I_ScPnPGetServiceName -;I_ScSendTSMessage -I_ScSetServiceBitsA@20 -I_ScSetServiceBitsW@20 -;IdentifyCodeAuthzLevelW -ImpersonateAnonymousToken@4 -ImpersonateLoggedOnUser@4 -ImpersonateNamedPipeClient@4 -ImpersonateSelf@4 -InitializeAcl@12 -InitializeSecurityDescriptor@8 -InitializeSid@12 -InitiateSystemShutdownA@20 -;InitiateSystemShutdownExA@24 -InitiateSystemShutdownExW@24 -InitiateSystemShutdownW@20 -;InstallApplication -IsTextUnicode(a)12=NTDLL.RtlIsTextUnicode -IsTokenRestricted@4 -;IsTokenUntrusted -IsValidAcl@4 -IsValidSecurityDescriptor@4 -IsValidSid@4 -IsWellKnownSid@8 -LockServiceDatabase@4 -LogonUserA@24 -;LogonUserExA -;LogonUserExW -LogonUserW@24 -LookupAccountNameA@28 -LookupAccountNameW@28 -LookupAccountSidA@28 -LookupAccountSidW@28 -LookupPrivilegeDisplayNameA@20 -LookupPrivilegeDisplayNameW@20 -LookupPrivilegeNameA@16 -LookupPrivilegeNameW@16 -LookupPrivilegeValueA@12 -LookupPrivilegeValueW@12 -;LookupSecurityDescriptorPartsA@28 -;LookupSecurityDescriptorPartsW@28 -LsaAddAccountRights@16 -;LsaAddPrivilegesToAccount@8 -;LsaClearAuditLog@4 -LsaClose@4 -;LsaCreateAccount@16 -;LsaCreateSecret@16 -;LsaCreateTrustedDomain@16 -;LsaCreateTrustedDomainEx -LsaDelete@4 -;LsaDeleteTrustedDomain@8 -LsaEnumerateAccountRights@16 -;LsaEnumerateAccounts@20 -LsaEnumerateAccountsWithUserRight@16 -;LsaEnumeratePrivileges@20 -;LsaEnumeratePrivilegesOfAccount@8 -LsaEnumerateTrustedDomains@20 -;LsaEnumerateTrustedDomainsEx -LsaFreeMemory@4 -;LsaGetQuotasForAccount@8 -;LsaGetRemoteUserName -;LsaGetSystemAccessAccount@8 -LsaGetUserName@8 -;LsaICLookupNames@32 -;LsaICLookupNamesWithCreds -;LsaICLookupSids@32 -;LsaICLookupSidsWithCreds -;LsaLookupNames@20 -LsaLookupNames2@24 -;LsaLookupPrivilegeDisplayName@16 -;LsaLookupPrivilegeName@12 -;LsaLookupPrivilegeValue@12 -LsaLookupSids@20 -LsaNtStatusToWinError@4 -;LsaOpenAccount@16 -LsaOpenPolicy@16 -;LsaOpenPolicySce -;LsaOpenSecret@16 -;LsaOpenTrustedDomain@16 -;LsaOpenTrustedDomainByName -;LsaQueryDomainInformationPolicy -;LsaQueryForestTrustInformation -LsaQueryInfoTrustedDomain@12 -LsaQueryInformationPolicy@12 -;LsaQuerySecret@20 -;LsaQuerySecurityObject@12 -;LsaQueryTrustedDomainInfo@16 -;LsaQueryTrustedDomainInfoByName -LsaRemoveAccountRights@20 -;LsaRemovePrivilegesFromAccount@12 -LsaRetrievePrivateData@12 -LsaSetInformationPolicy@12 -;LsaSetForestTrustInformation -;LsaSetInformationPolicy -;LsaSetInformationTrustedDomain@12 -;LsaSetQuotasForAccount@8 -;LsaSetSecret@12 -;LsaSetSecurityObject@12 -;LsaSetSystemAccessAccount@8 -;LsaSetTrustedDomainInfoByName -;LsaSetTrustedDomainInformation@16 -LsaStorePrivateData@12 -MD4Final@4 -MD4Init@4 -MD4Update@12 -MD5Final@4 -MD5Init@4 -MD5Update@12 -;MSChapSrvChangePassword -;MSChapSrvChangePassword2 -MakeAbsoluteSD@44 -MakeAbsoluteSD2@8 -MakeSelfRelativeSD@12 -MapGenericMask(a)8=NTDLL.RtlMapGenericMask -NotifyBootConfigStatus@4 -NotifyChangeEventLog@8 -ObjectCloseAuditAlarmA@12 -ObjectCloseAuditAlarmW@12 -ObjectDeleteAuditAlarmA@12 -ObjectDeleteAuditAlarmW@12 -ObjectOpenAuditAlarmA@48 -ObjectOpenAuditAlarmW@48 -ObjectPrivilegeAuditAlarmA@24 -ObjectPrivilegeAuditAlarmW@24 -OpenBackupEventLogA@8 -OpenBackupEventLogW@8 -;OpenEncryptedFileRawA -;OpenEncryptedFileRawW -OpenEventLogA@8 -OpenEventLogW@8 -OpenProcessToken@12 -OpenSCManagerA@12 -OpenSCManagerW@12 -OpenServiceA@12 -OpenServiceW@12 -OpenThreadToken@16 -;OpenTraceA -;OpenTraceW -PrivilegeCheck@12 -PrivilegedServiceAuditAlarmA@20 -PrivilegedServiceAuditAlarmW@20 -;ProcessIdleTasks -;ProcessTrace -;ProvAccessRightsToNTAccessMask ; ? -;QueryAllTracesA -;QueryAllTracesW -QueryRecoveryAgentsOnEncryptedFile@8 -QuerySecurityAccessMask@8 -QueryServiceConfig2A@20 -QueryServiceConfig2W@20 -QueryServiceConfigA@16 -QueryServiceConfigW@16 -QueryServiceLockStatusA@16 -QueryServiceLockStatusW@16 -QueryServiceObjectSecurity@20 -QueryServiceStatus@8 -QueryServiceStatusEx@20 -;QueryTraceA -;QueryTraceW -QueryUsersOnEncryptedFile@8 -;QueryWindows31FilesMigration@4 -;ReadEncryptedFileRaw -ReadEventLogA@28 -ReadEventLogW@28 -RegCloseKey@4 -RegConnectRegistryA@12 -RegConnectRegistryW@12 -RegCopyTreeA@12 -RegCopyTreeW@12 -RegCreateKeyA@12 -RegCreateKeyExA@36 -RegCreateKeyExW@36 -RegCreateKeyW@12 -RegDeleteKeyA@8 -RegDeleteKeyW@8 -RegDeleteKeyExA@16 -RegDeleteKeyExW@16 -RegDeleteKeyValueA@12 -RegDeleteKeyValueW@12 -RegDeleteTreeA@8 -RegDeleteTreeW@8 -RegDeleteValueA@8 -RegDeleteValueW@8 -RegDisablePredefinedCache@0 -RegDisablePredefinedCacheEx@0 -RegDisableReflectionKey@4 -RegEnableReflectionKey@4 -RegEnumKeyA@16 -RegEnumKeyExA@32 -RegEnumKeyExW@32 -RegEnumKeyW@16 -RegEnumValueA@32 -RegEnumValueW@32 -RegFlushKey@4 -RegGetKeySecurity@16 -RegGetValueA@28 -RegGetValueW@28 -RegLoadKeyA@12 -RegLoadKeyW@12 -RegLoadMUIStringA@28 -RegLoadMUIStringW@28 -RegNotifyChangeKeyValue@20 -RegOpenCurrentUser@8 -RegOpenKeyA@12 -RegOpenKeyExA@20 -RegOpenKeyExW@20 -RegOpenKeyW@12 -RegOpenUserClassesRoot@16 -RegOverridePredefKey@8 -RegQueryInfoKeyA@48 -RegQueryInfoKeyW@48 -RegQueryMultipleValuesA@20 -RegQueryMultipleValuesW@20 -RegQueryReflectionKey@8 -RegQueryValueA@16 -RegQueryValueExA@24 -RegQueryValueExW@24 -RegQueryValueW@16 -RegReplaceKeyA@16 -RegReplaceKeyW@16 -RegRestoreKeyA@12 -RegRestoreKeyW@12 -RegSaveKeyA@12 -RegSaveKeyExA@16 -RegSaveKeyExW@16 -RegSaveKeyW@12 -RegSetKeySecurity@12 -RegSetKeyValueA@24 -RegSetKeyValueW@24 -RegSetValueA@20 -RegSetValueExA@24 -RegSetValueExW@24 -RegSetValueW@20 -RegUnLoadKeyA@8 -RegUnLoadKeyW@8 -RegisterEventSourceA@8 -RegisterEventSourceW@8 -;RegisterIdleTask -RegisterServiceCtrlHandlerA@8 -RegisterServiceCtrlHandlerExA@12 -RegisterServiceCtrlHandlerExW@12 -RegisterServiceCtrlHandlerW@8 -RegisterTraceGuidsA@32 -RegisterTraceGuidsW@32 -;RemoveTraceCallback -RemoveUsersFromEncryptedFile@8 -ReportEventA@36 -ReportEventW@36 -RevertToSelf@0 -;SaferCloseLevel -;SaferComputeTokenFromLevel -;SaferCreateLevel -;SaferGetLevelInformation -;SaferGetPolicyInformation -;SaferIdentifyLevel -;SaferRecordEventLogEntry -;SaferSetLevelInformation -;SaferSetPolicyInformation -;SaferiChangeRegistryScope -;SaferiCompareTokenLevels -;SaferiIsExecutableFileType -;SaferiPopulateDefaultsInRegistry -;SaferiRecordEventLogEntry -;SaferiReplaceProcessThreadTokens -;SaferiSearchMatchingHashRules -SetAclInformation@16 -;SetEntriesInAccessListA -;SetEntriesInAccessListW -SetEntriesInAclA@16 -SetEntriesInAclW@16 -;SetEntriesInAuditListA -;SetEntriesInAuditListW -SetFileSecurityA@12 -SetFileSecurityW@12 -;SetInformationCodeAuthzLevelW -;SetInformationCodeAuthzPolicyW -SetKernelObjectSecurity@12 -SetNamedSecurityInfoA@28 -;SetNamedSecurityInfoExA -;SetNamedSecurityInfoExW -SetNamedSecurityInfoW@28 -SetPrivateObjectSecurity@20 -;SetPrivateObjectSecurityEx -SetSecurityAccessMask@8 -SetSecurityDescriptorControl@12 -SetSecurityDescriptorDacl@16 -SetSecurityDescriptorGroup@12 -SetSecurityDescriptorOwner@12 -SetSecurityDescriptorRMControl@8 -SetSecurityDescriptorSacl@16 -SetSecurityInfo@28 -;SetSecurityInfoExA -;SetSecurityInfoExW -SetServiceBits@16 -SetServiceObjectSecurity@12 -SetServiceStatus@8 -SetThreadToken@8 -SetTokenInformation@16 -;SetTraceCallback -;SetUserFileEncryptionKey -StartServiceA@12 -StartServiceCtrlDispatcherA@4 -StartServiceCtrlDispatcherW@4 -StartServiceW@12 -;StartTraceA -;StartTraceW -;StopTraceA -;StopTraceW -;SynchronizeWindows31FilesAndWindowsNTRegistry@16 -SystemFunction001@12 -SystemFunction002@12 -SystemFunction003@8 -SystemFunction004@12 -SystemFunction005@12 -SystemFunction006@8 -SystemFunction007@8 -SystemFunction008@12 -SystemFunction009@12 -SystemFunction010@12 -SystemFunction011(a)12=ADVAPI32.SystemFunction010 -SystemFunction012@12 -SystemFunction013@12 -SystemFunction014(a)12=ADVAPI32.SystemFunction012 -SystemFunction015(a)12=ADVAPI32.SystemFunction013 -SystemFunction016(a)12=ADVAPI32.SystemFunction012 -SystemFunction017(a)12=ADVAPI32.SystemFunction013 -SystemFunction018(a)12=ADVAPI32.SystemFunction012 -SystemFunction019(a)12=ADVAPI32.SystemFunction013 -SystemFunction020(a)12=ADVAPI32.SystemFunction012 -SystemFunction021(a)12=ADVAPI32.SystemFunction013 -SystemFunction022(a)12=ADVAPI32.SystemFunction012 -SystemFunction023(a)12=ADVAPI32.SystemFunction013 -SystemFunction024@12 -SystemFunction025@12 -SystemFunction026(a)12=ADVAPI32.SystemFunction024 -SystemFunction027(a)12=ADVAPI32.SystemFunction025 -SystemFunction028@8 -SystemFunction029@8 -SystemFunction030@8 -SystemFunction031(a)8=ADVAPI32.SystemFunction030 -SystemFunction032@8 -SystemFunction033@8 -SystemFunction034@8 -SystemFunction035@4 -SystemFunction036@8 -SystemFunction040@12 -SystemFunction041@12 -TraceEvent@12 -;TraceEventInstance -TraceMessage -;TraceMessageVa -TreeResetNamedSecurityInfoA@44 -TreeResetNamedSecurityInfoW@44 -;TrusteeAccessToObjectA -;TrusteeAccessToObjectW -;UninstallApplication -UnlockServiceDatabase@4 -;UnregisterIdleTask -UnregisterTraceGuids@8 -;UpdateTraceA -;UpdateTraceW -;WdmWmiServiceMain -;WmiCloseBlock -;WmiCloseTraceWithCursor -;WmiConvertTimestamp -;WmiDevInstToInstanceNameA -;WmiDevInstToInstanceNameW -;WmiEnumerateGuids -;WmiExecuteMethodA -;WmiExecuteMethodW -;WmiFileHandleToInstanceNameA -;WmiFileHandleToInstanceNameW -;WmiFreeBuffer -;WmiGetFirstTraceOffset -;WmiGetNextEvent -;WmiGetTraceHeader -;WmiMofEnumerateResourcesA -;WmiMofEnumerateResourcesW -;WmiNotificationRegistrationA -;WmiNotificationRegistrationW -;WmiOpenBlock -;WmiOpenTraceWithCursor -;WmiParseTraceEvent -;WmiQueryAllDataA -;WmiQueryAllDataMultipleA -;WmiQueryAllDataMultipleW -;WmiQueryAllDataW -;WmiQueryGuidInformation -;WmiQuerySingleInstanceA -;WmiQuerySingleInstanceMultipleA -;WmiQuerySingleInstanceMultipleW -;WmiQuerySingleInstanceW -;WmiReceiveNotificationsA -;WmiReceiveNotificationsW -;WmiSetSingleInstanceA -;WmiSetSingleInstanceW -;WmiSetSingleItemA -;WmiSetSingleItemW -;Wow64Win32ApiEntry -;WriteEncryptedFileRaw -; EOF Modified: trunk/reactos/dll/win32/advapi32/advapi32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/advapi3…
============================================================================== --- trunk/reactos/dll/win32/advapi32/advapi32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/advapi32.rbuild [iso-8859-1] Sun Feb 8 09:41:03 2009 @@ -1,6 +1,6 @@ <module name="advapi32" type="win32dll" baseaddress="${BASEADDRESS_ADVAPI32}" installbase="system32" installname="advapi32.dll" unicode="yes"> - <importlibrary definition="advapi32.def" /> + <importlibrary definition="advapi32.spec" /> <include base="advapi32">.</include> <include base="scm_client">.</include> <include base="lsa_client">.</include> Added: trunk/reactos/dll/win32/advapi32/advapi32.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/advapi3…
============================================================================== --- trunk/reactos/dll/win32/advapi32/advapi32.spec (added) +++ trunk/reactos/dll/win32/advapi32/advapi32.spec [iso-8859-1] Sun Feb 8 09:41:03 2009 @@ -1,0 +1,698 @@ +@ stdcall A_SHAFinal(ptr ptr) +@ stdcall A_SHAInit(ptr) +@ stdcall A_SHAUpdate(ptr ptr long) +@ stdcall AbortSystemShutdownA(ptr) +@ stdcall AbortSystemShutdownW(ptr) +@ stdcall AccessCheck(ptr long long ptr ptr ptr ptr ptr) +@ stdcall AccessCheckAndAuditAlarmA(str ptr str str ptr long ptr long ptr ptr ptr) +@ stdcall AccessCheckAndAuditAlarmW(wstr ptr wstr wstr ptr long ptr long ptr ptr ptr) +@ stub AccessCheckByType #(ptr ptr long long ptr long ptr ptr ptr ptr ptr) +@ stdcall AccessCheckByTypeAndAuditAlarmA(str ptr str str ptr ptr long long long ptr long ptr long ptr ptr ptr) +@ stdcall AccessCheckByTypeAndAuditAlarmW(wstr ptr wstr wstr ptr ptr long long long ptr long ptr long ptr ptr ptr) +@ stub AccessCheckByTypeResultList +@ stdcall AccessCheckByTypeResultListAndAuditAlarmA(str ptr str str ptr long long long long ptr long ptr long ptr ptr ptr) +@ stdcall AccessCheckByTypeResultListAndAuditAlarmByHandleA(str ptr ptr str str ptr long long long long ptr long ptr long ptr ptr ptr) +@ stdcall AccessCheckByTypeResultListAndAuditAlarmByHandleW(wstr ptr ptr wstr wstr ptr long long long long ptr long ptr long ptr ptr ptr) +@ stdcall AccessCheckByTypeResultListAndAuditAlarmW(wstr ptr wstr wstr ptr long long long long ptr long ptr long ptr ptr ptr) +@ stdcall AddAccessAllowedAce(ptr long long ptr) +@ stdcall AddAccessAllowedAceEx(ptr long long long ptr) +@ stdcall AddAccessAllowedObjectAce(ptr long long long ptr ptr ptr) +@ stdcall AddAccessDeniedAce(ptr long long ptr) +@ stdcall AddAccessDeniedAceEx(ptr long long long ptr) +@ stdcall AddAccessDeniedObjectAce(ptr long long long ptr ptr ptr) +@ stdcall AddAce(ptr long long ptr long) +@ stdcall AddAuditAccessAce(ptr long long ptr long long) +@ stdcall AddAuditAccessAceEx(ptr long long long ptr long long) +@ stdcall AddAuditAccessObjectAce(ptr long long long ptr ptr ptr long long) +@ stdcall AddMandatoryAce(ptr long long long ptr) +@ stdcall AddUsersToEncryptedFile(wstr ptr) +@ stdcall AdjustTokenGroups(long long ptr long ptr ptr) +@ stdcall AdjustTokenPrivileges(long long ptr long ptr ptr) +@ stdcall AllocateAndInitializeSid(ptr long long long long long long long long long ptr) +@ stdcall AllocateLocallyUniqueId(ptr) +@ stdcall AreAllAccessesGranted(long long) +@ stdcall AreAnyAccessesGranted(long long) +@ stdcall BackupEventLogA(long str) +@ stdcall BackupEventLogW(long wstr) +@ stdcall BuildExplicitAccessWithNameA(ptr str long long long) +@ stdcall BuildExplicitAccessWithNameW(ptr wstr long long long) +@ stdcall BuildImpersonateExplicitAccessWithNameA(ptr str ptr long long long) +@ stdcall BuildImpersonateExplicitAccessWithNameW(ptr wstr ptr long long long) +@ stdcall BuildImpersonateTrusteeA(ptr ptr) +@ stdcall BuildImpersonateTrusteeW(ptr ptr) +@ stdcall BuildSecurityDescriptorA(ptr ptr long ptr long ptr ptr ptr ptr) +@ stdcall BuildSecurityDescriptorW(ptr ptr long ptr long ptr ptr ptr ptr) +@ stdcall BuildTrusteeWithNameA(ptr str) +@ stdcall BuildTrusteeWithNameW(ptr wstr) +@ stdcall BuildTrusteeWithObjectsAndNameA(ptr ptr long str str str) +@ stdcall BuildTrusteeWithObjectsAndNameW(ptr ptr long wstr wstr wstr) +@ stdcall BuildTrusteeWithObjectsAndSidA(ptr ptr ptr ptr ptr) +@ stdcall BuildTrusteeWithObjectsAndSidW(ptr ptr ptr ptr ptr) +@ stdcall BuildTrusteeWithSidA(ptr ptr) +@ stdcall BuildTrusteeWithSidW(ptr ptr) +@ stub CancelOverlappedAccess +@ stdcall ChangeServiceConfig2A(long long ptr) +@ stdcall ChangeServiceConfig2W(long long ptr) +@ stdcall ChangeServiceConfigA(long long long long wstr str ptr str str str str) +@ stdcall ChangeServiceConfigW(long long long long wstr wstr ptr wstr wstr wstr wstr) +@ stdcall CheckTokenMembership(long ptr ptr) +@ stdcall ClearEventLogA(long str) +@ stdcall ClearEventLogW(long wstr) +@ stub CloseCodeAuthzLevel +@ stub CloseEncryptedFileRaw +@ stdcall CloseEventLog(long) +@ stdcall CloseServiceHandle(long) +@ stub CloseTrace +@ stdcall CommandLineFromMsiDescriptor(wstr ptr ptr) +@ stub ComputeAccessTokenFromCodeAuthzLevel +@ stdcall ControlService(long long ptr) +@ stdcall ControlServiceEx(ptr long long ptr) +@ stub ControlTraceA +@ stub ControlTraceW +@ stub ConvertAccessToSecurityDescriptorA +@ stub ConvertAccessToSecurityDescriptorW +@ stub ConvertSDToStringSDRootDomainA +@ stub ConvertSDToStringSDRootDomainW +@ stub ConvertSecurityDescriptorToAccessA +@ stub ConvertSecurityDescriptorToAccessNamedA #ConvertSecurityDescriptorToAccessA +@ stub ConvertSecurityDescriptorToAccessNamedW #ConvertSecurityDescriptorToAccessW +@ stub ConvertSecurityDescriptorToAccessW +@ stdcall ConvertSecurityDescriptorToStringSecurityDescriptorA(ptr long long ptr ptr) +@ stdcall ConvertSecurityDescriptorToStringSecurityDescriptorW(ptr long long ptr ptr) +@ stdcall ConvertSidToStringSidA(ptr ptr) +@ stdcall ConvertSidToStringSidW(ptr ptr) +@ stub ConvertStringSDToSDDomainA +@ stub ConvertStringSDToSDDomainW +@ stub ConvertStringSDToSDRootDomainA +@ stub ConvertStringSDToSDRootDomainW +@ stdcall ConvertStringSecurityDescriptorToSecurityDescriptorA(str long ptr ptr) +@ stdcall ConvertStringSecurityDescriptorToSecurityDescriptorW(wstr long ptr ptr) +@ stdcall ConvertStringSidToSidA(ptr ptr) +@ stdcall ConvertStringSidToSidW(ptr ptr) +@ stdcall ConvertToAutoInheritPrivateObjectSecurity(ptr ptr ptr ptr long ptr) +@ stdcall CopySid(long ptr ptr) +@ stub CreateCodeAuthzLevel +@ stdcall CreatePrivateObjectSecurity(ptr ptr ptr long long ptr) +@ stdcall CreatePrivateObjectSecurityEx(ptr ptr ptr ptr long long ptr ptr) +@ stdcall CreatePrivateObjectSecurityWithMultipleInheritance(ptr ptr ptr ptr long long long ptr ptr) +@ stdcall CreateProcessAsUserA(long str str ptr ptr long long ptr str ptr ptr) +@ stub CreateProcessAsUserSecure +@ stdcall CreateProcessAsUserW(long str str ptr ptr long long ptr str ptr ptr) +@ stub CreateProcessWithLogonW #(wstr wstr wstr long wstr wstr long ptr wstr ptr ptr) +@ stdcall CreateProcessWithTokenW(ptr long wstr wstr long ptr wstr ptr ptr) +@ stdcall CreateRestrictedToken(long long long ptr long ptr long ptr ptr) +@ stdcall CreateServiceA(long ptr ptr long long long long ptr ptr ptr ptr ptr ptr) +@ stdcall CreateServiceW(long ptr ptr long long long long ptr ptr ptr ptr ptr ptr) +@ stub CreateTraceInstanceId +@ stdcall CreateWellKnownSid(long ptr ptr ptr) +@ stdcall CredDeleteA(str long long) +@ stdcall CredDeleteW(wstr long long) +@ stdcall CredEnumerateA(str long ptr ptr) +@ stdcall CredEnumerateW(wstr long ptr ptr) +@ stdcall CredFree(ptr) +@ stdcall CredGetSessionTypes(long ptr) +@ stub CredGetTargetInfoA +@ stub CredGetTargetInfoW +@ stub CredIsMarshaledCredentialA +@ stub CredIsMarshaledCredentialW +@ stub CredMarshalCredentialA +@ stub CredMarshalCredentialW +@ stub CredProfileLoaded +@ stdcall CredReadA(str long long ptr) +@ stdcall CredReadDomainCredentialsA(ptr long ptr ptr) +@ stdcall CredReadDomainCredentialsW(ptr long ptr ptr) +@ stdcall CredReadW(wstr long long ptr) +@ stub CredRenameA +@ stub CredRenameW +@ stdcall CredUnmarshalCredentialA(str ptr ptr) +@ stdcall CredUnmarshalCredentialW(wstr ptr ptr) +@ stdcall CredWriteA(ptr long) +@ stdcall CredWriteDomainCredentialsA(ptr ptr long) +@ stdcall CredWriteDomainCredentialsW(ptr ptr long) +@ stdcall CredWriteW(ptr long) +@ stub CredpConvertCredential +@ stub CredpConvertTargetInfo +@ stub CredpDecodeCredential +@ stub CredpEncodeCredential +@ stdcall CryptAcquireContextA(ptr str str long long) +@ stdcall CryptAcquireContextW(ptr wstr wstr long long) +@ stdcall CryptContextAddRef(long ptr long) +@ stdcall CryptCreateHash(long long long long ptr) +@ stdcall CryptDecrypt(long long long long ptr ptr) +@ stdcall CryptDeriveKey(long long long long ptr) +@ stdcall CryptDestroyHash(long) +@ stdcall CryptDestroyKey(long) +@ stdcall CryptDuplicateHash(long ptr long ptr) +@ stdcall CryptDuplicateKey(long ptr long ptr) +@ stdcall CryptEncrypt(long long long long ptr ptr long) +@ stdcall CryptEnumProviderTypesA(long ptr long ptr ptr ptr) +@ stdcall CryptEnumProviderTypesW(long ptr long ptr ptr ptr) +@ stdcall CryptEnumProvidersA(long ptr long ptr ptr ptr) +@ stdcall CryptEnumProvidersW(long ptr long ptr ptr ptr) +@ stdcall CryptExportKey(long long long long ptr ptr) +@ stdcall CryptGenKey(long long long ptr) +@ stdcall CryptGenRandom(long long ptr) +@ stdcall CryptGetDefaultProviderA(long ptr long ptr ptr) +@ stdcall CryptGetDefaultProviderW(long ptr long ptr ptr) +@ stdcall CryptGetHashParam(long long ptr ptr long) +@ stdcall CryptGetKeyParam(long long ptr ptr long) +@ stdcall CryptGetProvParam(long long ptr ptr long) +@ stdcall CryptGetUserKey(long long ptr) +@ stdcall CryptHashData(long ptr long long) +@ stdcall CryptHashSessionKey(long long long) +@ stdcall CryptImportKey(long ptr long long long ptr) +@ stdcall CryptReleaseContext(long long) +@ stdcall CryptSetHashParam(long long ptr long) +@ stdcall CryptSetKeyParam(long long ptr long) +@ stdcall CryptSetProvParam(long long ptr long) +@ stdcall CryptSetProviderA(str long) +@ stdcall CryptSetProviderExA(str long ptr long) +@ stdcall CryptSetProviderExW(wstr long ptr long) +@ stdcall CryptSetProviderW(wstr long) +@ stdcall CryptSignHashA(long long ptr long ptr ptr) +@ stdcall CryptSignHashW(long long ptr long ptr ptr) +@ stdcall CryptVerifySignatureA(long ptr long long ptr long) +@ stdcall CryptVerifySignatureW(long ptr long long ptr long) +@ stdcall DecryptFileA(str long) +@ stdcall DecryptFileW(wstr long) +@ stdcall DeleteAce(ptr long) +@ stdcall DeleteService(long) +@ stdcall DeregisterEventSource(long) +@ stdcall DestroyPrivateObjectSecurity(ptr) +@ stub DuplicateEncryptionInfoFile +@ stdcall DuplicateToken(long long ptr) +@ stdcall DuplicateTokenEx(long long ptr long long ptr) +@ stub ElfBackupEventLogFileA +@ stub ElfBackupEventLogFileW +@ stub ElfChangeNotify +@ stub ElfClearEventLogFileA +@ stub ElfClearEventLogFileW +@ stub ElfCloseEventLog +@ stub ElfDeregisterEventSource +@ stub ElfNumberOfRecords +@ stub ElfOldestRecord +@ stub ElfOpenBackupEventLogA +@ stub ElfOpenBackupEventLogW +@ stub ElfOpenEventLogA +@ stub ElfOpenEventLogW +@ stub ElfReadEventLogA +@ stub ElfReadEventLogW +@ stub ElfRegisterEventSourceA +@ stub ElfRegisterEventSourceW +@ stub ElfReportEventA +@ stub ElfReportEventW +@ stub EnableTrace +@ stdcall EncryptFileA(str) +@ stdcall EncryptFileW(wstr) +@ stub EncryptedFileKeyInfo +@ stdcall EncryptionDisable(wstr long) +@ stdcall EnumDependentServicesA(long long ptr long ptr ptr) +@ stdcall EnumDependentServicesW(long long ptr long ptr ptr) +@ stdcall EnumServiceGroupW(ptr long long ptr long ptr ptr ptr wstr) +@ stdcall EnumServicesStatusA(long long long ptr long ptr ptr ptr) +@ stdcall EnumServicesStatusExA(long long long long ptr long ptr ptr ptr str) +@ stdcall EnumServicesStatusExW(long long long long ptr long ptr ptr ptr wstr) +@ stdcall EnumServicesStatusW(long long long ptr long ptr ptr ptr) +@ stub EnumerateTraceGuids +@ stdcall EqualDomainSid(ptr ptr ptr) +@ stdcall EqualPrefixSid(ptr ptr) +@ stdcall EqualSid(ptr ptr) +@ stdcall FileEncryptionStatusA(str ptr) +@ stdcall FileEncryptionStatusW(wstr ptr) +@ stdcall FindFirstFreeAce(ptr ptr) +@ stub FlushTraceA +@ stub FlushTraceW +@ stub FreeEncryptedFileKeyInfo +@ stdcall FreeEncryptionCertificateHashList(ptr) +@ stdcall FreeInheritedFromArray(ptr long ptr) +@ stdcall FreeSid(ptr) +@ stub GetAccessPermissionsForObjectA +@ stub GetAccessPermissionsForObjectW +@ stdcall GetAce(ptr long ptr) +@ stdcall GetAclInformation(ptr ptr long long) +@ stdcall GetAuditedPermissionsFromAclA(ptr ptr ptr ptr) +@ stdcall GetAuditedPermissionsFromAclW(ptr ptr ptr ptr) +@ stdcall GetCurrentHwProfileA(ptr) +@ stdcall GetCurrentHwProfileW(ptr) +@ stdcall GetEffectiveRightsFromAclA(ptr ptr ptr) +@ stdcall GetEffectiveRightsFromAclW(ptr ptr ptr) +@ stub GetEventLogInformation +@ stdcall GetExplicitEntriesFromAclA(ptr ptr ptr) advapi32.GetExplicitEntriesFromAclW +@ stdcall GetExplicitEntriesFromAclW(ptr ptr ptr) +@ stdcall GetFileSecurityA(str long ptr long ptr) +@ stdcall GetFileSecurityW(wstr long ptr long ptr) +@ stub GetInformationCodeAuthzLevelW +@ stub GetInformationCodeAuthzPolicyW +@ stdcall GetInheritanceSourceA(str long long long ptr long ptr ptr ptr ptr) +@ stdcall GetInheritanceSourceW(wstr long long long ptr long ptr ptr ptr ptr) +@ stdcall GetKernelObjectSecurity(long long ptr long ptr) +@ stdcall GetLengthSid(ptr) +@ stub GetLocalManagedApplicationData +@ stub GetLocalManagedApplications +@ stub GetManagedApplicationCategories +@ stub GetManagedApplications +@ stdcall GetMultipleTrusteeA(ptr) +@ stdcall GetMultipleTrusteeOperationA(ptr) +@ stdcall GetMultipleTrusteeOperationW(ptr) +@ stdcall GetMultipleTrusteeW(ptr) +@ stdcall GetNamedSecurityInfoA(str long long ptr ptr ptr ptr ptr) +@ stub GetNamedSecurityInfoExA +@ stub GetNamedSecurityInfoExW +@ stdcall GetNamedSecurityInfoW(wstr long long ptr ptr ptr ptr ptr) +@ stdcall GetNumberOfEventLogRecords(long ptr) +@ stdcall GetOldestEventLogRecord(long ptr) +@ stub GetOverlappedAccessResults +@ stdcall GetPrivateObjectSecurity(ptr long ptr long ptr) +@ stdcall GetSecurityDescriptorControl(ptr ptr ptr) +@ stdcall GetSecurityDescriptorDacl(ptr ptr ptr ptr) +@ stdcall GetSecurityDescriptorGroup(ptr ptr ptr) +@ stdcall GetSecurityDescriptorLength(ptr) ntdll.RtlLengthSecurityDescriptor +@ stdcall GetSecurityDescriptorOwner(ptr ptr ptr) +@ stdcall GetSecurityDescriptorRMControl(ptr ptr) +@ stdcall GetSecurityDescriptorSacl(ptr ptr ptr ptr) +@ stdcall GetSecurityInfo(long long long ptr ptr ptr ptr ptr) +@ stdcall GetSecurityInfoExA(long long long str str ptr ptr ptr ptr) +@ stdcall GetSecurityInfoExW(long long long wstr wstr ptr ptr ptr ptr) +@ stdcall GetServiceDisplayNameA(ptr str ptr ptr) +@ stdcall GetServiceDisplayNameW(ptr wstr ptr ptr) +@ stdcall GetServiceKeyNameA(long str ptr ptr) +@ stdcall GetServiceKeyNameW(long wstr ptr ptr) +@ stdcall GetSidIdentifierAuthority(ptr) +@ stdcall GetSidLengthRequired(long) +@ stdcall GetSidSubAuthority(ptr long) +@ stdcall GetSidSubAuthorityCount(ptr) +@ stdcall GetSiteSidFromToken(ptr) +@ stdcall GetTokenInformation(long long ptr long ptr) +@ stdcall GetTraceEnableFlags(double) +@ stdcall GetTraceEnableLevel(double) +@ stdcall GetTraceLoggerHandle(ptr) +@ stdcall GetTrusteeFormA(ptr) +@ stdcall GetTrusteeFormW(ptr) +@ stdcall GetTrusteeNameA(ptr) +@ stdcall GetTrusteeNameW(ptr) +@ stdcall GetTrusteeTypeA(ptr) +@ stdcall GetTrusteeTypeW(ptr) +@ stdcall GetUserNameA(ptr ptr) +@ stdcall GetUserNameW(ptr ptr) +@ stdcall GetWindowsAccountDomainSid(ptr ptr ptr) +@ stub I_ScGetCurrentGroupStateW +@ stub I_ScIsSecurityProcess +@ stub I_ScPnPGetServiceName +@ stub I_ScSendTSMessage +@ stdcall I_ScSetServiceBitsA(ptr long long long str) +@ stdcall I_ScSetServiceBitsW(ptr long long long wstr) +@ stub IdentifyCodeAuthzLevelW +@ stdcall ImpersonateAnonymousToken(ptr) +@ stdcall ImpersonateLoggedOnUser(ptr) +@ stdcall ImpersonateNamedPipeClient(ptr) +@ stdcall ImpersonateSelf(long) +@ stdcall InitializeAcl(ptr long long) +@ stdcall InitializeSecurityDescriptor(ptr long) +@ stdcall InitializeSid(ptr ptr long) +@ stdcall InitiateSystemShutdownA(str str long long long) +@ stub InitiateSystemShutdownExA #(str str long long long long) +@ stdcall InitiateSystemShutdownExW(wstr wstr long long long long) +@ stdcall InitiateSystemShutdownW(str str long long long) +@ stub InstallApplication +@ stdcall IsTextUnicode(ptr long ptr) ntdll.RtlIsTextUnicode +@ stdcall IsTokenRestricted(ptr) +@ stub IsTokenUntrusted +@ stdcall IsValidAcl(ptr) +@ stdcall IsValidSecurityDescriptor(ptr) +@ stdcall IsValidSid(ptr) +@ stdcall IsWellKnownSid(ptr long) +@ stdcall LockServiceDatabase(ptr) +@ stdcall LogonUserA(str str str long long ptr) +@ stub LogonUserExA +@ stub LogonUserExW +@ stdcall LogonUserW(wstr wstr wstr long long ptr) +@ stdcall LookupAccountNameA(str str ptr ptr ptr ptr ptr) +@ stdcall LookupAccountNameW(wstr wstr ptr ptr ptr ptr ptr) +@ stdcall LookupAccountSidA(ptr ptr ptr ptr ptr ptr ptr) +@ stdcall LookupAccountSidW(ptr ptr ptr ptr ptr ptr ptr) +@ stdcall LookupPrivilegeDisplayNameA(str str str ptr ptr) +@ stdcall LookupPrivilegeDisplayNameW(wstr wstr wstr ptr ptr) +@ stdcall LookupPrivilegeNameA(str ptr ptr long) +@ stdcall LookupPrivilegeNameW(wstr ptr ptr long) +@ stdcall LookupPrivilegeValueA(ptr ptr ptr) +@ stdcall LookupPrivilegeValueW(ptr ptr ptr) +@ stub LookupSecurityDescriptorPartsA +@ stub LookupSecurityDescriptorPartsW +@ stdcall LsaAddAccountRights(ptr ptr ptr long) +@ stub LsaAddPrivilegesToAccount +@ stub LsaClearAuditLog +@ stdcall LsaClose(ptr) +@ stub LsaCreateAccount +@ stub LsaCreateSecret +@ stub LsaCreateTrustedDomain +@ stdcall LsaCreateTrustedDomainEx(ptr ptr ptr long ptr) +@ stdcall LsaDelete(ptr) +@ stdcall LsaDeleteTrustedDomain(ptr ptr) +@ stdcall LsaEnumerateAccountRights(ptr ptr ptr ptr) +@ stub LsaEnumerateAccounts +@ stdcall LsaEnumerateAccountsWithUserRight(ptr ptr ptr ptr) +@ stub LsaEnumeratePrivileges +@ stub LsaEnumeratePrivilegesOfAccount +@ stdcall LsaEnumerateTrustedDomains(ptr ptr ptr long ptr) +@ stdcall LsaEnumerateTrustedDomainsEx(ptr ptr ptr long ptr) +@ stdcall LsaFreeMemory(ptr) +@ stub LsaGetQuotasForAccount +@ stub LsaGetRemoteUserName +@ stub LsaGetSystemAccessAccount +@ stdcall LsaGetUserName(ptr ptr) +@ stub LsaICLookupNames +@ stub LsaICLookupNamesWithCreds +@ stub LsaICLookupSids +@ stub LsaICLookupSidsWithCreds +@ stdcall LsaLookupNames(long long ptr ptr ptr) +@ stdcall LsaLookupNames2(ptr long long ptr ptr ptr) +@ stub LsaLookupPrivilegeDisplayName +@ stub LsaLookupPrivilegeName +@ stub LsaLookupPrivilegeValue +@ stdcall LsaLookupSids(ptr long ptr ptr ptr) +@ stdcall LsaNtStatusToWinError(long) +@ stub LsaOpenAccount +@ stdcall LsaOpenPolicy(long long long long) +@ stub LsaOpenPolicySce +@ stub LsaOpenSecret +@ stub LsaOpenTrustedDomain +@ stdcall LsaOpenTrustedDomainByName(ptr ptr long ptr) +@ stub LsaQueryDomainInformationPolicy +@ stub LsaQueryForestTrustInformation +@ stdcall LsaQueryInfoTrustedDomain(long long long) +@ stdcall LsaQueryInformationPolicy(ptr long ptr) +@ stub LsaQuerySecret +@ stub LsaQuerySecurityObject +@ stdcall LsaQueryTrustedDomainInfo(ptr ptr long ptr) +@ stdcall LsaQueryTrustedDomainInfoByName(ptr ptr long ptr) +@ stdcall LsaRemoveAccountRights(ptr ptr long ptr long) +@ stub LsaRemovePrivilegesFromAccount +@ stdcall LsaRetrievePrivateData(ptr ptr ptr) +@ stdcall LsaSetInformationPolicy(long long ptr) +@ stub LsaSetForestTrustInformation +@ stub LsaSetInformationTrustedDomain +@ stub LsaSetQuotasForAccount +@ stub LsaSetSecret +@ stub LsaSetSecurityObject +@ stub LsaSetSystemAccessAccount +@ stdcall LsaSetTrustedDomainInfoByName(ptr ptr long ptr) +@ stdcall LsaSetTrustedDomainInformation(ptr ptr long ptr) +@ stdcall LsaStorePrivateData(ptr ptr ptr) +@ stdcall MD4Final(ptr) +@ stdcall MD4Init(ptr) +@ stdcall MD4Update(ptr ptr long) +@ stdcall MD5Final(ptr) +@ stdcall MD5Init(ptr) +@ stdcall MD5Update(ptr ptr long) +@ stub MSChapSrvChangePassword +@ stub MSChapSrvChangePassword2 +@ stdcall MakeAbsoluteSD(ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stdcall MakeAbsoluteSD2(ptr ptr) +@ stdcall MakeSelfRelativeSD(ptr ptr ptr) +@ stdcall MapGenericMask(ptr ptr) ntdll.RtlMapGenericMask +@ stdcall NotifyBootConfigStatus(long) +@ stdcall NotifyChangeEventLog(long long) +@ stdcall ObjectCloseAuditAlarmA(str ptr long) +@ stdcall ObjectCloseAuditAlarmW(wstr ptr long) +@ stdcall ObjectDeleteAuditAlarmA(str ptr long) +@ stdcall ObjectDeleteAuditAlarmW(wstr ptr long) +@ stdcall ObjectOpenAuditAlarmA(str ptr str str ptr long long long ptr long long ptr) +@ stdcall ObjectOpenAuditAlarmW(wstr ptr wstr wstr ptr long long long ptr long long ptr) +@ stdcall ObjectPrivilegeAuditAlarmA(str ptr long long ptr long) +@ stdcall ObjectPrivilegeAuditAlarmW(wstr ptr long long ptr long) +@ stdcall OpenBackupEventLogA(str str) +@ stdcall OpenBackupEventLogW(wstr wstr) +@ stub OpenEncryptedFileRawA +@ stub OpenEncryptedFileRawW +@ stdcall OpenEventLogA(str str) +@ stdcall OpenEventLogW(wstr wstr) +@ stdcall OpenProcessToken(long long ptr) +@ stdcall OpenSCManagerA(str str long) +@ stdcall OpenSCManagerW(wstr wstr long) +@ stdcall OpenServiceA(long str long) +@ stdcall OpenServiceW(long wstr long) +@ stdcall OpenThreadToken(long long long ptr) +@ stub OpenTraceA +@ stub OpenTraceW +@ stdcall PrivilegeCheck(ptr ptr ptr) +@ stdcall PrivilegedServiceAuditAlarmA(str str long ptr long) +@ stdcall PrivilegedServiceAuditAlarmW(wstr wstr long ptr long) +@ stub ProcessIdleTasks +@ stub ProcessTrace +@ stub ProvAccessRightsToNTAccessMask # ? +@ stub QueryAllTracesA +@ stub QueryAllTracesW +@ stdcall QueryRecoveryAgentsOnEncryptedFile(wstr ptr) +@ stdcall QuerySecurityAccessMask(long ptr) +@ stdcall QueryServiceConfig2A(long long ptr long ptr) +@ stdcall QueryServiceConfig2W(long long ptr long ptr) +@ stdcall QueryServiceConfigA(long ptr long ptr) +@ stdcall QueryServiceConfigW(long ptr long ptr) +@ stdcall QueryServiceLockStatusA(long ptr long ptr) +@ stdcall QueryServiceLockStatusW(long ptr long ptr) +@ stdcall QueryServiceObjectSecurity(long long ptr long ptr) +@ stdcall QueryServiceStatus(long ptr) +@ stdcall QueryServiceStatusEx(long long ptr long ptr) +@ stub QueryTraceA +@ stub QueryTraceW +@ stdcall QueryUsersOnEncryptedFile(wstr ptr) +@ stub QueryWindows31FilesMigration #(long) +@ stub ReadEncryptedFileRaw +@ stdcall ReadEventLogA(long long long ptr long ptr ptr) +@ stdcall ReadEventLogW(long long long ptr long ptr ptr) +@ stdcall RegCloseKey(long) +@ stdcall RegConnectRegistryA(str long ptr) +@ stdcall RegConnectRegistryW(wstr long ptr) +@ stdcall RegCopyTreeA(ptr str ptr) +@ stdcall RegCopyTreeW(ptr wstr ptr) +@ stdcall RegCreateKeyA(long str ptr) +@ stdcall RegCreateKeyExA(long str long ptr long long ptr ptr ptr) +@ stdcall RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr) +@ stdcall RegCreateKeyW(long wstr ptr) +@ stdcall RegDeleteKeyA(long str) +@ stdcall RegDeleteKeyW(long wstr) +@ stdcall RegDeleteKeyExA(ptr str long long) +@ stdcall RegDeleteKeyExW(ptr wstr long long) +@ stdcall RegDeleteKeyValueA(ptr str str) +@ stdcall RegDeleteKeyValueW(ptr wstr wstr) +@ stdcall RegDeleteTreeA(long str) +@ stdcall RegDeleteTreeW(long wstr) +@ stdcall RegDeleteValueA(long str) +@ stdcall RegDeleteValueW(long wstr) +@ stdcall RegDisablePredefinedCache() +@ stdcall RegDisablePredefinedCacheEx() +@ stdcall RegDisableReflectionKey(ptr) +@ stdcall RegEnableReflectionKey(ptr) +@ stdcall RegEnumKeyA(long long ptr long) +@ stdcall RegEnumKeyExA(long long ptr ptr ptr ptr ptr ptr) +@ stdcall RegEnumKeyExW(long long ptr ptr ptr ptr ptr ptr) +@ stdcall RegEnumKeyW(long long ptr long) +@ stdcall RegEnumValueA(long long ptr ptr ptr ptr ptr ptr) +@ stdcall RegEnumValueW(long long ptr ptr ptr ptr ptr ptr) +@ stdcall RegFlushKey(long) +@ stdcall RegGetKeySecurity(long long ptr ptr) +@ stdcall RegGetValueA(long str str long ptr ptr ptr) +@ stdcall RegGetValueW(long wstr wstr long ptr ptr ptr) +@ stdcall RegLoadKeyA(long str str) +@ stdcall RegLoadKeyW(long wstr wstr) +@ stdcall RegLoadMUIStringA(long str str long ptr long str) +@ stdcall RegLoadMUIStringW(long wstr wstr long ptr long wstr) +@ stdcall RegNotifyChangeKeyValue(long long long long long) +@ stdcall RegOpenCurrentUser(long ptr) +@ stdcall RegOpenKeyA(long str ptr) +@ stdcall RegOpenKeyExA(long str long long ptr) +@ stdcall RegOpenKeyExW(long wstr long long ptr) +@ stdcall RegOpenKeyW(long wstr ptr) +@ stdcall RegOpenUserClassesRoot(ptr long long ptr) +@ stdcall RegOverridePredefKey(long long) +@ stdcall RegQueryInfoKeyA(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stdcall RegQueryInfoKeyW(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) +@ stdcall RegQueryMultipleValuesA(long ptr long ptr ptr) +@ stdcall RegQueryMultipleValuesW(long ptr long ptr ptr) +@ stdcall RegQueryReflectionKey(ptr ptr) +@ stdcall RegQueryValueA(long str ptr ptr) +@ stdcall RegQueryValueExA(long str ptr ptr ptr ptr) +@ stdcall RegQueryValueExW(long wstr ptr ptr ptr ptr) +@ stdcall RegQueryValueW(long wstr ptr ptr) +@ stdcall RegReplaceKeyA(long str str str) +@ stdcall RegReplaceKeyW(long wstr wstr wstr) +@ stdcall RegRestoreKeyA(long str long) +@ stdcall RegRestoreKeyW(long wstr long) +@ stdcall RegSaveKeyA(long ptr ptr) +@ stdcall RegSaveKeyExA(long str ptr long) +@ stdcall RegSaveKeyExW(long str ptr long) +@ stdcall RegSaveKeyW(long ptr ptr) +@ stdcall RegSetKeySecurity(long long ptr) +@ stdcall RegSetKeyValueA(long str str long ptr long) +@ stdcall RegSetKeyValueW(long wstr wstr long ptr long) +@ stdcall RegSetValueA(long str long ptr long) +@ stdcall RegSetValueExA(long str long long ptr long) +@ stdcall RegSetValueExW(long wstr long long ptr long) +@ stdcall RegSetValueW(long wstr long ptr long) +@ stdcall RegUnLoadKeyA(long str) +@ stdcall RegUnLoadKeyW(long wstr) +@ stdcall RegisterEventSourceA(ptr ptr) +@ stdcall RegisterEventSourceW(ptr ptr) +@ stub RegisterIdleTask +@ stdcall RegisterServiceCtrlHandlerA(str ptr) +@ stdcall RegisterServiceCtrlHandlerExA(str ptr ptr) +@ stdcall RegisterServiceCtrlHandlerExW(wstr ptr ptr) +@ stdcall RegisterServiceCtrlHandlerW(wstr ptr) +@ stdcall RegisterTraceGuidsA(ptr ptr ptr long ptr str str ptr) +@ stdcall RegisterTraceGuidsW(ptr ptr ptr long ptr wstr wstr ptr) +@ stub RemoveTraceCallback +@ stdcall RemoveUsersFromEncryptedFile(wstr ptr) +@ stdcall ReportEventA(long long long long ptr long long str ptr) +@ stdcall ReportEventW(long long long long ptr long long wstr ptr) +@ stdcall RevertToSelf() +@ stub SaferCloseLevel +@ stub SaferComputeTokenFromLevel +@ stub SaferCreateLevel +@ stub SaferGetLevelInformation +@ stub SaferGetPolicyInformation +@ stub SaferIdentifyLevel +@ stub SaferRecordEventLogEntry +@ stub SaferSetLevelInformation +@ stub SaferSetPolicyInformation +@ stub SaferiChangeRegistryScope +@ stub SaferiCompareTokenLevels +@ stub SaferiIsExecutableFileType +@ stub SaferiPopulateDefaultsInRegistry +@ stub SaferiRecordEventLogEntry +@ stub SaferiReplaceProcessThreadTokens +@ stub SaferiSearchMatchingHashRules +@ stdcall SetAclInformation(ptr ptr long long) +@ stub SetEntriesInAccessListA +@ stub SetEntriesInAccessListW +@ stdcall SetEntriesInAclA(long ptr ptr ptr) +@ stdcall SetEntriesInAclW(long ptr ptr ptr) +@ stub SetEntriesInAuditListA +@ stub SetEntriesInAuditListW +@ stdcall SetFileSecurityA(str long ptr) +@ stdcall SetFileSecurityW(wstr long ptr) +@ stub SetInformationCodeAuthzLevelW +@ stub SetInformationCodeAuthzPolicyW +@ stdcall SetKernelObjectSecurity(long long ptr) +@ stdcall SetNamedSecurityInfoA(str long ptr ptr ptr ptr ptr) +@ stub SetNamedSecurityInfoExA +@ stub SetNamedSecurityInfoExW +@ stdcall SetNamedSecurityInfoW(wstr long ptr ptr ptr ptr ptr) +@ stdcall SetPrivateObjectSecurity(long ptr ptr ptr long) +@ stub SetPrivateObjectSecurityEx +@ stdcall SetSecurityAccessMask(long ptr) +@ stdcall SetSecurityDescriptorControl(ptr long long) +@ stdcall SetSecurityDescriptorDacl(ptr long ptr long) +@ stdcall SetSecurityDescriptorGroup(ptr ptr long) +@ stdcall SetSecurityDescriptorOwner(ptr ptr long) +@ stdcall SetSecurityDescriptorRMControl(ptr ptr) +@ stdcall SetSecurityDescriptorSacl(ptr long ptr long) +@ stdcall SetSecurityInfo(long long long ptr ptr ptr ptr) +@ stub SetSecurityInfoExA +@ stub SetSecurityInfoExW +@ stdcall SetServiceBits(long long long long) +@ stdcall SetServiceObjectSecurity(long long ptr) +@ stdcall SetServiceStatus(long long) +@ stdcall SetThreadToken(ptr ptr) +@ stdcall SetTokenInformation(long long ptr long) +@ stub SetTraceCallback +@ stub SetUserFileEncryptionKey +@ stdcall StartServiceA(long long ptr) +@ stdcall StartServiceCtrlDispatcherA(ptr) +@ stdcall StartServiceCtrlDispatcherW(ptr) +@ stdcall StartServiceW(long long ptr) +@ stub StartTraceA +@ stub StartTraceW +@ stub StopTraceA +@ stub StopTraceW +@ stub SynchronizeWindows31FilesAndWindowsNTRegistry #(long long long long) +@ stdcall SystemFunction001(ptr ptr ptr) +@ stdcall SystemFunction002(ptr ptr ptr) +@ stdcall SystemFunction003(ptr ptr) +@ stdcall SystemFunction004(ptr ptr ptr) +@ stdcall SystemFunction005(ptr ptr ptr) +@ stdcall SystemFunction006(ptr ptr) +@ stdcall SystemFunction007(ptr ptr) +@ stdcall SystemFunction008(ptr ptr ptr) +@ stdcall SystemFunction009(ptr ptr ptr) +@ stdcall SystemFunction010(ptr ptr ptr) +@ stdcall SystemFunction011(ptr ptr ptr) advapi32.SystemFunction010 +@ stdcall SystemFunction012(ptr ptr ptr) +@ stdcall SystemFunction013(ptr ptr ptr) +@ stdcall SystemFunction014(ptr ptr ptr) advapi32.SystemFunction012 +@ stdcall SystemFunction015(ptr ptr ptr) advapi32.SystemFunction013 +@ stdcall SystemFunction016(ptr ptr ptr) advapi32.SystemFunction012 +@ stdcall SystemFunction017(ptr ptr ptr) advapi32.SystemFunction013 +@ stdcall SystemFunction018(ptr ptr ptr) advapi32.SystemFunction012 +@ stdcall SystemFunction019(ptr ptr ptr) advapi32.SystemFunction013 +@ stdcall SystemFunction020(ptr ptr ptr) advapi32.SystemFunction012 +@ stdcall SystemFunction021(ptr ptr ptr) advapi32.SystemFunction013 +@ stdcall SystemFunction022(ptr ptr ptr) advapi32.SystemFunction012 +@ stdcall SystemFunction023(ptr ptr ptr) advapi32.SystemFunction013 +@ stdcall SystemFunction024(ptr ptr ptr) +@ stdcall SystemFunction025(ptr ptr ptr) +@ stdcall SystemFunction026(ptr ptr ptr) advapi32.SystemFunction024 +@ stdcall SystemFunction027(ptr ptr ptr) advapi32.SystemFunction025 +@ stdcall SystemFunction028(long long) +@ stdcall SystemFunction029(long long) +@ stdcall SystemFunction030(ptr ptr) +@ stdcall SystemFunction031(ptr ptr) advapi32.SystemFunction030 +@ stdcall SystemFunction032(ptr ptr) +@ stdcall SystemFunction033(long long) +@ stdcall SystemFunction034(long long) +@ stdcall SystemFunction035(str) +@ stdcall SystemFunction036(ptr long) +@ stdcall SystemFunction040(ptr long long) +@ stdcall SystemFunction041(ptr long long) +@ stdcall TraceEvent(double ptr) +@ stub TraceEventInstance +@ stdcall TraceMessage(ptr long ptr long) advapi32.TraceMessage +@ stub TraceMessageVa +@ stdcall TreeResetNamedSecurityInfoA(str ptr ptr ptr ptr ptr ptr long ptr ptr ptr) +@ stdcall TreeResetNamedSecurityInfoW(wstr ptr ptr ptr ptr ptr ptr long ptr ptr ptr) +@ stub TrusteeAccessToObjectA +@ stub TrusteeAccessToObjectW +@ stub UninstallApplication +@ stdcall UnlockServiceDatabase(ptr) +@ stub UnregisterIdleTask +@ stdcall UnregisterTraceGuids(double) +@ stub UpdateTraceA +@ stub UpdateTraceW +@ stub WdmWmiServiceMain +@ stub WmiCloseBlock +@ stub WmiCloseTraceWithCursor +@ stub WmiConvertTimestamp +@ stub WmiDevInstToInstanceNameA +@ stub WmiDevInstToInstanceNameW +@ stub WmiEnumerateGuids +@ stub WmiExecuteMethodA +@ stub WmiExecuteMethodW +@ stub WmiFileHandleToInstanceNameA +@ stub WmiFileHandleToInstanceNameW +@ stub WmiFreeBuffer +@ stub WmiGetFirstTraceOffset +@ stub WmiGetNextEvent +@ stub WmiGetTraceHeader +@ stub WmiMofEnumerateResourcesA +@ stub WmiMofEnumerateResourcesW +@ stub WmiNotificationRegistrationA +@ stub WmiNotificationRegistrationW +@ stub WmiOpenBlock +@ stub WmiOpenTraceWithCursor +@ stub WmiParseTraceEvent +@ stub WmiQueryAllDataA +@ stub WmiQueryAllDataMultipleA +@ stub WmiQueryAllDataMultipleW +@ stub WmiQueryAllDataW +@ stub WmiQueryGuidInformation +@ stub WmiQuerySingleInstanceA +@ stub WmiQuerySingleInstanceMultipleA +@ stub WmiQuerySingleInstanceMultipleW +@ stub WmiQuerySingleInstanceW +@ stub WmiReceiveNotificationsA +@ stub WmiReceiveNotificationsW +@ stub WmiSetSingleInstanceA +@ stub WmiSetSingleInstanceW +@ stub WmiSetSingleItemA +@ stub WmiSetSingleItemW +@ stub Wow64Win32ApiEntry +@ stub WriteEncryptedFileRaw Propchange: trunk/reactos/dll/win32/advapi32/advapi32.spec ------------------------------------------------------------------------------ svn:eol-style = native
15 years, 10 months
1
0
0
0
[cwittich] 39487: add actxprxy from wine 1.14
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Feb 8 09:26:59 2009 New Revision: 39487 URL:
http://svn.reactos.org/svn/reactos?rev=39487&view=rev
Log: add actxprxy from wine 1.14 Added: trunk/reactos/dll/win32/actxprxy/ (with props) trunk/reactos/dll/win32/actxprxy/actxprxy.rbuild (with props) trunk/reactos/dll/win32/actxprxy/actxprxy.spec (with props) trunk/reactos/dll/win32/actxprxy/actxprxy_servprov.idl (with props) trunk/reactos/dll/win32/actxprxy/usrmarshal.c (with props) Modified: trunk/reactos/baseaddress.rbuild trunk/reactos/boot/bootdata/packages/reactos.dff trunk/reactos/dll/win32/win32.rbuild Modified: trunk/reactos/baseaddress.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/baseaddress.rbuild?rev=394…
============================================================================== --- trunk/reactos/baseaddress.rbuild [iso-8859-1] (original) +++ trunk/reactos/baseaddress.rbuild [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -95,6 +95,7 @@ <property name="BASEADDRESS_ACLUI" value="0x71550000" /> <property name="BASEADDRESS_DHCPCSVC" value="0x71650000" /> <property name="BASEADDRESS_SHDOCVW" value="0x71700000" /> + <property name="BASEADDRESS_ACTXPRXY" value="0x71800000" /> <property name="BASEADDRESS_MSWSOCK" value="0x71a30000" /> <property name="BASEADDRESS_WSOCK32" value="0x71ab0000" /> <property name="BASEADDRESS_ACLEDIT" value="0x71b70000" /> Modified: trunk/reactos/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/bootdata/packages/rea…
============================================================================== --- trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] (original) +++ trunk/reactos/boot/bootdata/packages/reactos.dff [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -240,6 +240,7 @@ dll\win32\activeds\activeds.dll 1 dll\win32\advapi32\advapi32.dll 1 dll\win32\advpack\advpack.dll 1 +dll\win32\actxprxy\actxprxy.dll 1 dll\win32\atl\atl.dll 1 dll\win32\authz\authz.dll 1 dll\win32\avifil32\avifil32.dll 1 Propchange: trunk/reactos/dll/win32/actxprxy/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sun Feb 8 09:26:59 2009 @@ -1,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/dll/win32/actxprxy/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/dll/win32/actxprxy/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/win32/actxprxy/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/dll/win32/actxprxy/actxprxy.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/actxprxy/actxprx…
============================================================================== --- trunk/reactos/dll/win32/actxprxy/actxprxy.rbuild (added) +++ trunk/reactos/dll/win32/actxprxy/actxprxy.rbuild [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -1,0 +1,30 @@ +<?xml version="1.0"?> +<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> +<group> +<module name="actxprxy" type="win32dll" baseaddress="${BASEADDRESS_ACTXPRXY}" installbase="system32" entrypoint="0" installname="actxprxy.dll" allowwarnings="true"> + <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> + <importlibrary definition="actxprxy.spec" /> + <include base="actxprxy">.</include> + <include base="ReactOS">include/reactos/wine</include> + <include base="actxprxy" root="intermediate">.</include> + <define name="__WINESRC__" /> + <library>wine</library> + <library>actxprxy_interface</library> + <library>actxprxy_proxy</library> + <library>kernel32</library> + <library>ntdll</library> + <library>rpcrt4</library> + <library>pseh</library> + <file>usrmarshal.c</file> + <compilerflag>-fno-unit-at-a-time</compilerflag> +</module> +<module name="actxprxy_interface" type="idlinterface"> + <file>actxprxy_servprov.idl</file> +</module> +<module name="actxprxy_proxy" type="rpcproxy"> + <define name="__WINESRC__" /> + <define name="REGISTER_PROXY_DLL" /> + <define name="PROXY_CLSID_IS">"{ 0xb8da6310, 0xe19b, 0x11d0, { 0x93, 0x3c, 0x00, 0xa0, 0xc9, 0x0d, 0xca, 0xa9 } }"</define> + <file>actxprxy_servprov.idl</file> +</module> +</group> Propchange: trunk/reactos/dll/win32/actxprxy/actxprxy.rbuild ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/actxprxy/actxprxy.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/actxprxy/actxprx…
============================================================================== --- trunk/reactos/dll/win32/actxprxy/actxprxy.spec (added) +++ trunk/reactos/dll/win32/actxprxy/actxprxy.spec [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -1,0 +1,5 @@ +3 stdcall -private GetProxyDllInfo(ptr ptr) +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() Propchange: trunk/reactos/dll/win32/actxprxy/actxprxy.spec ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/actxprxy/actxprxy_servprov.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/actxprxy/actxprx…
============================================================================== --- trunk/reactos/dll/win32/actxprxy/actxprxy_servprov.idl (added) +++ trunk/reactos/dll/win32/actxprxy/actxprxy_servprov.idl [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -1,0 +1,1 @@ +#include "servprov.idl" Propchange: trunk/reactos/dll/win32/actxprxy/actxprxy_servprov.idl ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/actxprxy/usrmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/actxprxy/usrmars…
============================================================================== --- trunk/reactos/dll/win32/actxprxy/usrmarshal.c (added) +++ trunk/reactos/dll/win32/actxprxy/usrmarshal.c [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -1,0 +1,64 @@ +/* + * Miscellaneous Marshaling Routines + * + * Copyright 2006 Robert Shearman (for CodeWeavers) + * + * 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 <stdarg.h> +#include <string.h> + +#define COBJMACROS +#define NONAMELESSUNION +#define NONAMELESSSTRUCT + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winerror.h" +#include "objbase.h" +#include "servprov.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(actxprxy); + +HRESULT CALLBACK IServiceProvider_QueryService_Proxy( + IServiceProvider* This, + REFGUID guidService, + REFIID riid, + void** ppvObject) +{ + TRACE("(%p, %s, %s, %p)\n", This, debugstr_guid(guidService), + debugstr_guid(riid), ppvObject); + + return IServiceProvider_RemoteQueryService_Proxy(This, guidService, riid, + (IUnknown **)ppvObject); +} + +HRESULT __RPC_STUB IServiceProvider_QueryService_Stub( + IServiceProvider* This, + REFGUID guidService, + REFIID riid, + IUnknown** ppvObject) +{ + TRACE("(%p, %s, %s, %p)\n", This, debugstr_guid(guidService), + debugstr_guid(riid), ppvObject); + + return IServiceProvider_QueryService(This, guidService, riid, + (void **)ppvObject); +} Propchange: trunk/reactos/dll/win32/actxprxy/usrmarshal.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/win32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/win32.rbuild?rev…
============================================================================== --- trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/win32.rbuild [iso-8859-1] Sun Feb 8 09:26:59 2009 @@ -16,6 +16,9 @@ <directory name="advpack"> <xi:include href="advpack/advpack.rbuild" /> </directory> +<directory name="actxprxy"> + <xi:include href="actxprxy/actxprxy.rbuild" /> +</directory> <directory name="atl"> <xi:include href="atl/atl.rbuild" /> </directory>
15 years, 10 months
1
0
0
0
[gschneider] 39486: [FORMATTING] apply 4 spaces indentation
by gschneider@svn.reactos.org
Author: gschneider Date: Sun Feb 8 09:18:13 2009 New Revision: 39486 URL:
http://svn.reactos.org/svn/reactos?rev=39486&view=rev
Log: [FORMATTING] apply 4 spaces indentation Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] Sun Feb 8 09:18:13 2009 @@ -1,21 +1,21 @@ /* - * ReactOS W32 Subsystem - * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ +* ReactOS W32 Subsystem +* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 ReactOS Team +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program 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 General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ /* $Id: bitmaps.c 28300 2007-08-12 15:20:09Z tkreuzer $ */ #include <w32k.h> @@ -27,1175 +27,1175 @@ BOOL APIENTRY NtGdiAlphaBlend( - HDC hDCDest, - LONG XOriginDest, - LONG YOriginDest, - LONG WidthDest, - LONG HeightDest, - HDC hDCSrc, - LONG XOriginSrc, - LONG YOriginSrc, - LONG WidthSrc, - LONG HeightSrc, - BLENDFUNCTION BlendFunc, - HANDLE hcmXform) + HDC hDCDest, + LONG XOriginDest, + LONG YOriginDest, + LONG WidthDest, + LONG HeightDest, + HDC hDCSrc, + LONG XOriginSrc, + LONG YOriginSrc, + LONG WidthSrc, + LONG HeightSrc, + BLENDFUNCTION BlendFunc, + HANDLE hcmXform) { - PDC DCDest; - PDC DCSrc; - SURFACE *BitmapDest, *BitmapSrc; - RECTL DestRect, SourceRect; - BOOL Status; - XLATEOBJ *XlateObj; - BLENDOBJ BlendObj; - BlendObj.BlendFunction = BlendFunc; - - DCDest = DC_LockDc(hDCDest); - if (NULL == DCDest) - { - DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiAlphaBlend\n", hDCDest); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (DCDest->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if (hDCSrc != hDCDest) - { - DCSrc = DC_LockDc(hDCSrc); - if (NULL == DCSrc) - { - DC_UnlockDc(DCDest); - DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiAlphaBlend\n", hDCSrc); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (DCSrc->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - } - else - { - DCSrc = DCDest; - } - - /* Offset the destination and source by the origin of their DCs. */ - XOriginDest += DCDest->ptlDCOrig.x; - YOriginDest += DCDest->ptlDCOrig.y; - XOriginSrc += DCSrc->ptlDCOrig.x; - YOriginSrc += DCSrc->ptlDCOrig.y; - - DestRect.left = XOriginDest; - DestRect.top = YOriginDest; - DestRect.right = XOriginDest + WidthDest; - DestRect.bottom = YOriginDest + HeightDest; - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - SourceRect.left = XOriginSrc; - SourceRect.top = YOriginSrc; - SourceRect.right = XOriginSrc + WidthSrc; - SourceRect.bottom = YOriginSrc + HeightSrc; - IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); - - if (!DestRect.right || - !DestRect.bottom || - !SourceRect.right || - !SourceRect.bottom) - { - if (hDCSrc != hDCDest) - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - return TRUE; - } - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); - if (!BitmapDest) - { - if (hDCSrc != hDCDest) - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - return FALSE; - } - if (DCSrc->w.hBitmap == DCDest->w.hBitmap) - BitmapSrc = BitmapDest; - else - { - BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); - if (!BitmapSrc) - { - SURFACE_UnlockSurface(BitmapDest); - if (hDCSrc != hDCDest) - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - return FALSE; - } - } - - /* Create the XLATEOBJ. */ - XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); - - if (XlateObj == (XLATEOBJ*)-1) - { - DPRINT1("couldn't create XlateObj\n"); - SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); - XlateObj = NULL; - Status = FALSE; - } - else - { - /* Perform the alpha blend operation */ - Status = IntEngAlphaBlend(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, - DCDest->CombinedClip, XlateObj, - &DestRect, &SourceRect, &BlendObj); - } - - if (XlateObj != NULL) - EngDeleteXlate(XlateObj); - - SURFACE_UnlockSurface(BitmapDest); - if (BitmapSrc != BitmapDest) - SURFACE_UnlockSurface(BitmapSrc); - DC_UnlockDc(DCDest); - if (hDCSrc != hDCDest) - DC_UnlockDc(DCSrc); - - return Status; + PDC DCDest; + PDC DCSrc; + SURFACE *BitmapDest, *BitmapSrc; + RECTL DestRect, SourceRect; + BOOL Status; + XLATEOBJ *XlateObj; + BLENDOBJ BlendObj; + BlendObj.BlendFunction = BlendFunc; + + DCDest = DC_LockDc(hDCDest); + if (NULL == DCDest) + { + DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiAlphaBlend\n", hDCDest); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (DCDest->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + if (hDCSrc != hDCDest) + { + DCSrc = DC_LockDc(hDCSrc); + if (NULL == DCSrc) + { + DC_UnlockDc(DCDest); + DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiAlphaBlend\n", hDCSrc); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (DCSrc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + } + else + { + DCSrc = DCDest; + } + + /* Offset the destination and source by the origin of their DCs. */ + XOriginDest += DCDest->ptlDCOrig.x; + YOriginDest += DCDest->ptlDCOrig.y; + XOriginSrc += DCSrc->ptlDCOrig.x; + YOriginSrc += DCSrc->ptlDCOrig.y; + + DestRect.left = XOriginDest; + DestRect.top = YOriginDest; + DestRect.right = XOriginDest + WidthDest; + DestRect.bottom = YOriginDest + HeightDest; + IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); + + SourceRect.left = XOriginSrc; + SourceRect.top = YOriginSrc; + SourceRect.right = XOriginSrc + WidthSrc; + SourceRect.bottom = YOriginSrc + HeightSrc; + IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); + + if (!DestRect.right || + !DestRect.bottom || + !SourceRect.right || + !SourceRect.bottom) + { + if (hDCSrc != hDCDest) + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + return TRUE; + } + + /* Determine surfaces to be used in the bitblt */ + BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); + if (!BitmapDest) + { + if (hDCSrc != hDCDest) + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + return FALSE; + } + if (DCSrc->w.hBitmap == DCDest->w.hBitmap) + BitmapSrc = BitmapDest; + else + { + BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); + if (!BitmapSrc) + { + SURFACE_UnlockSurface(BitmapDest); + if (hDCSrc != hDCDest) + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + return FALSE; + } + } + + /* Create the XLATEOBJ. */ + XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); + + if (XlateObj == (XLATEOBJ*)-1) + { + DPRINT1("couldn't create XlateObj\n"); + SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); + XlateObj = NULL; + Status = FALSE; + } + else + { + /* Perform the alpha blend operation */ + Status = IntEngAlphaBlend(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, + DCDest->CombinedClip, XlateObj, + &DestRect, &SourceRect, &BlendObj); + } + + if (XlateObj != NULL) + EngDeleteXlate(XlateObj); + + SURFACE_UnlockSurface(BitmapDest); + if (BitmapSrc != BitmapDest) + SURFACE_UnlockSurface(BitmapSrc); + DC_UnlockDc(DCDest); + if (hDCSrc != hDCDest) + DC_UnlockDc(DCSrc); + + return Status; } BOOL APIENTRY NtGdiBitBlt( - HDC hDCDest, - INT XDest, - INT YDest, - INT Width, - INT Height, - HDC hDCSrc, - INT XSrc, - INT YSrc, - DWORD ROP, - IN DWORD crBackColor, - IN FLONG fl) + HDC hDCDest, + INT XDest, + INT YDest, + INT Width, + INT Height, + HDC hDCSrc, + INT XSrc, + INT YSrc, + DWORD ROP, + IN DWORD crBackColor, + IN FLONG fl) { - PDC DCDest; - PDC DCSrc = NULL; - PDC_ATTR Dc_Attr = NULL; - SURFACE *BitmapDest, *BitmapSrc = NULL; - RECTL DestRect; - POINTL SourcePoint, BrushOrigin; - BOOL Status = FALSE; - XLATEOBJ *XlateObj = NULL; - PGDIBRUSHOBJ BrushObj = NULL; - GDIBRUSHINST BrushInst; - BOOL UsesSource = ROP3_USES_SOURCE(ROP); - BOOL UsesPattern = ROP3_USES_PATTERN(ROP); - - DCDest = DC_LockDc(hDCDest); - if (NULL == DCDest) - { - DPRINT("Invalid destination dc handle (0x%08x) passed to NtGdiBitBlt\n", hDCDest); - return FALSE; - } - if (DCDest->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if (UsesSource) - { - if (hDCSrc != hDCDest) - { - DCSrc = DC_LockDc(hDCSrc); - if (NULL == DCSrc) - { - DC_UnlockDc(DCDest); - DPRINT("Invalid source dc handle (0x%08x) passed to NtGdiBitBlt\n", hDCSrc); - return FALSE; - } - if (DCSrc->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - } - else - { - DCSrc = DCDest; - } - } - - Dc_Attr = DCDest->pDc_Attr; - if (!Dc_Attr) Dc_Attr = &DCDest->Dc_Attr; - - if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) - IntGdiSelectBrush(DCDest,Dc_Attr->hbrush); - - /* Offset the destination and source by the origin of their DCs. */ - XDest += DCDest->ptlDCOrig.x; - YDest += DCDest->ptlDCOrig.y; - if (UsesSource) - { - XSrc += DCSrc->ptlDCOrig.x; - YSrc += DCSrc->ptlDCOrig.y; - } - - DestRect.left = XDest; - DestRect.top = YDest; - DestRect.right = XDest+Width; - DestRect.bottom = YDest+Height; - - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - SourcePoint.x = XSrc; - SourcePoint.y = YSrc; - if (UsesSource) - { - IntLPtoDP(DCSrc, (LPPOINT)&SourcePoint, 1); - } - - BrushOrigin.x = 0; - BrushOrigin.y = 0; - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); - if (!BitmapDest) - goto cleanup; - - if (UsesSource) - { - if (DCSrc->w.hBitmap == DCDest->w.hBitmap) - BitmapSrc = BitmapDest; - else - { - BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); - if (!BitmapSrc) - goto cleanup; - } - } - - if (UsesPattern) - { - BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); - if (NULL == BrushObj) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - goto cleanup; - } - BrushOrigin = *((PPOINTL)&BrushObj->ptOrigin); - IntGdiInitBrushInstance(&BrushInst, BrushObj, DCDest->XlateBrush); - } - - /* Create the XLATEOBJ. */ - if (UsesSource) - { - XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); - - if (XlateObj == (XLATEOBJ*)-1) - { - DPRINT1("couldn't create XlateObj\n"); - SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); - XlateObj = NULL; - goto cleanup; - } - } - - /* Perform the bitblt operation */ + PDC DCDest; + PDC DCSrc = NULL; + PDC_ATTR Dc_Attr = NULL; + SURFACE *BitmapDest, *BitmapSrc = NULL; + RECTL DestRect; + POINTL SourcePoint, BrushOrigin; + BOOL Status = FALSE; + XLATEOBJ *XlateObj = NULL; + PGDIBRUSHOBJ BrushObj = NULL; + GDIBRUSHINST BrushInst; + BOOL UsesSource = ROP3_USES_SOURCE(ROP); + BOOL UsesPattern = ROP3_USES_PATTERN(ROP); + + DCDest = DC_LockDc(hDCDest); + if (NULL == DCDest) + { + DPRINT("Invalid destination dc handle (0x%08x) passed to NtGdiBitBlt\n", hDCDest); + return FALSE; + } + if (DCDest->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + if (UsesSource) + { + if (hDCSrc != hDCDest) + { + DCSrc = DC_LockDc(hDCSrc); + if (NULL == DCSrc) + { + DC_UnlockDc(DCDest); + DPRINT("Invalid source dc handle (0x%08x) passed to NtGdiBitBlt\n", hDCSrc); + return FALSE; + } + if (DCSrc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + } + else + { + DCSrc = DCDest; + } + } + + Dc_Attr = DCDest->pDc_Attr; + if (!Dc_Attr) Dc_Attr = &DCDest->Dc_Attr; + + if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) + IntGdiSelectBrush(DCDest,Dc_Attr->hbrush); + + /* Offset the destination and source by the origin of their DCs. */ + XDest += DCDest->ptlDCOrig.x; + YDest += DCDest->ptlDCOrig.y; + if (UsesSource) + { + XSrc += DCSrc->ptlDCOrig.x; + YSrc += DCSrc->ptlDCOrig.y; + } + + DestRect.left = XDest; + DestRect.top = YDest; + DestRect.right = XDest+Width; + DestRect.bottom = YDest+Height; + + IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); + + SourcePoint.x = XSrc; + SourcePoint.y = YSrc; + if (UsesSource) + { + IntLPtoDP(DCSrc, (LPPOINT)&SourcePoint, 1); + } + + BrushOrigin.x = 0; + BrushOrigin.y = 0; + + /* Determine surfaces to be used in the bitblt */ + BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); + if (!BitmapDest) + goto cleanup; + + if (UsesSource) + { + if (DCSrc->w.hBitmap == DCDest->w.hBitmap) + BitmapSrc = BitmapDest; + else + { + BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); + if (!BitmapSrc) + goto cleanup; + } + } + + if (UsesPattern) + { + BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); + if (NULL == BrushObj) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + goto cleanup; + } + BrushOrigin = *((PPOINTL)&BrushObj->ptOrigin); + IntGdiInitBrushInstance(&BrushInst, BrushObj, DCDest->XlateBrush); + } + + /* Create the XLATEOBJ. */ + if (UsesSource) + { + XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); + + if (XlateObj == (XLATEOBJ*)-1) + { + DPRINT1("couldn't create XlateObj\n"); + SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); + XlateObj = NULL; + goto cleanup; + } + } + + /* Perform the bitblt operation */ Status = IntEngBitBlt(&BitmapDest->SurfObj, BitmapSrc ? &BitmapSrc->SurfObj : NULL, NULL, - DCDest->CombinedClip, XlateObj, &DestRect, - &SourcePoint, NULL, - BrushObj ? &BrushInst.BrushObject : NULL, - &BrushOrigin, ROP3_TO_ROP4(ROP)); + DCDest->CombinedClip, XlateObj, &DestRect, + &SourcePoint, NULL, + BrushObj ? &BrushInst.BrushObject : NULL, + &BrushOrigin, ROP3_TO_ROP4(ROP)); cleanup: - if (UsesSource && XlateObj != NULL) - EngDeleteXlate(XlateObj); - - if(BitmapDest != NULL) - { - SURFACE_UnlockSurface(BitmapDest); - } - if (BitmapSrc != NULL && BitmapSrc != BitmapDest) - { - SURFACE_UnlockSurface(BitmapSrc); - } - if (BrushObj != NULL) - { - BRUSHOBJ_UnlockBrush(BrushObj); - } - if (UsesSource && hDCSrc != hDCDest) - { - DC_UnlockDc(DCSrc); - } - DC_UnlockDc(DCDest); - - return Status; + if (UsesSource && XlateObj != NULL) + EngDeleteXlate(XlateObj); + + if(BitmapDest != NULL) + { + SURFACE_UnlockSurface(BitmapDest); + } + if (BitmapSrc != NULL && BitmapSrc != BitmapDest) + { + SURFACE_UnlockSurface(BitmapSrc); + } + if (BrushObj != NULL) + { + BRUSHOBJ_UnlockBrush(BrushObj); + } + if (UsesSource && hDCSrc != hDCDest) + { + DC_UnlockDc(DCSrc); + } + DC_UnlockDc(DCDest); + + return Status; } BOOL APIENTRY NtGdiTransparentBlt( - HDC hdcDst, - INT xDst, - INT yDst, - INT cxDst, - INT cyDst, - HDC hdcSrc, - INT xSrc, - INT ySrc, - INT cxSrc, - INT cySrc, - COLORREF TransColor) + HDC hdcDst, + INT xDst, + INT yDst, + INT cxDst, + INT cyDst, + HDC hdcSrc, + INT xSrc, + INT ySrc, + INT cxSrc, + INT cySrc, + COLORREF TransColor) { - PDC DCDest, DCSrc; - RECTL rcDest, rcSrc; - SURFACE *BitmapDest, *BitmapSrc = NULL; - XLATEOBJ *XlateObj = NULL; - HPALETTE SourcePalette = 0, DestPalette = 0; - PPALGDI PalDestGDI, PalSourceGDI; - USHORT PalDestMode, PalSrcMode; - ULONG TransparentColor = 0; - BOOL Ret = FALSE; - - if(!(DCDest = DC_LockDc(hdcDst))) - { - DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiTransparentBlt\n", hdcDst); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (DCDest->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if((hdcDst != hdcSrc) && !(DCSrc = DC_LockDc(hdcSrc))) - { - DC_UnlockDc(DCDest); - DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiTransparentBlt\n", hdcSrc); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if(hdcDst == hdcSrc) - { - DCSrc = DCDest; - } - if (DCSrc->DC_Type == DC_TYPE_INFO) - { + PDC DCDest, DCSrc; + RECTL rcDest, rcSrc; + SURFACE *BitmapDest, *BitmapSrc = NULL; + XLATEOBJ *XlateObj = NULL; + HPALETTE SourcePalette = 0, DestPalette = 0; + PPALGDI PalDestGDI, PalSourceGDI; + USHORT PalDestMode, PalSrcMode; + ULONG TransparentColor = 0; + BOOL Ret = FALSE; + + if(!(DCDest = DC_LockDc(hdcDst))) + { + DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiTransparentBlt\n", hdcDst); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (DCDest->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + if((hdcDst != hdcSrc) && !(DCSrc = DC_LockDc(hdcSrc))) + { + DC_UnlockDc(DCDest); + DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiTransparentBlt\n", hdcSrc); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if(hdcDst == hdcSrc) + { + DCSrc = DCDest; + } + if (DCSrc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCSrc); + if(hdcDst != hdcSrc) + { + DC_UnlockDc(DCDest); + } + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + /* Offset positions */ + xDst += DCDest->ptlDCOrig.x; + yDst += DCDest->ptlDCOrig.y; + xSrc += DCSrc->ptlDCOrig.x; + ySrc += DCSrc->ptlDCOrig.y; + + BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); + if (!BitmapDest) + { + goto done; + } + + BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); + if (!BitmapSrc) + { + goto done; + } + + DestPalette = BitmapDest->hDIBPalette; + if (!DestPalette) DestPalette = pPrimarySurface->DevInfo.hpalDefault; + + SourcePalette = BitmapSrc->hDIBPalette; + if (!SourcePalette) SourcePalette = pPrimarySurface->DevInfo.hpalDefault; + + if(!(PalSourceGDI = PALETTE_LockPalette(SourcePalette))) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + goto done; + } + PalSrcMode = PalSourceGDI->Mode; + PALETTE_UnlockPalette(PalSourceGDI); + + if(DestPalette != SourcePalette) + { + if (!(PalDestGDI = PALETTE_LockPalette(DestPalette))) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + goto done; + } + PalDestMode = PalDestGDI->Mode; + PALETTE_UnlockPalette(PalDestGDI); + } + else + { + PalDestMode = PalSrcMode; + } + + /* Translate Transparent (RGB) Color to the source palette */ + if((XlateObj = (XLATEOBJ*)IntEngCreateXlate(PalSrcMode, PAL_RGB, SourcePalette, NULL))) + { + TransparentColor = XLATEOBJ_iXlate(XlateObj, (ULONG)TransColor); + EngDeleteXlate(XlateObj); + } + + /* Create the XLATE object to convert colors between source and destination */ + XlateObj = (XLATEOBJ*)IntEngCreateXlate(PalDestMode, PalSrcMode, DestPalette, SourcePalette); + + rcDest.left = xDst; + rcDest.top = yDst; + rcDest.right = rcDest.left + cxDst; + rcDest.bottom = rcDest.top + cyDst; + IntLPtoDP(DCDest, (LPPOINT)&rcDest, 2); + + rcSrc.left = xSrc; + rcSrc.top = ySrc; + rcSrc.right = rcSrc.left + cxSrc; + rcSrc.bottom = rcSrc.top + cySrc; + IntLPtoDP(DCSrc, (LPPOINT)&rcSrc, 2); + + if((cxDst != cxSrc) || (cyDst != cySrc)) + { + DPRINT1("TransparentBlt() does not support stretching at the moment!\n"); + goto done; + } + + Ret = IntEngTransparentBlt(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, + DCDest->CombinedClip, XlateObj, &rcDest, &rcSrc, + TransparentColor, 0); + +done: DC_UnlockDc(DCSrc); + if (BitmapDest) + { + SURFACE_UnlockSurface(BitmapDest); + } + if (BitmapSrc) + { + SURFACE_UnlockSurface(BitmapSrc); + } if(hdcDst != hdcSrc) { - DC_UnlockDc(DCDest); - } - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - /* Offset positions */ - xDst += DCDest->ptlDCOrig.x; - yDst += DCDest->ptlDCOrig.y; - xSrc += DCSrc->ptlDCOrig.x; - ySrc += DCSrc->ptlDCOrig.y; - - BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); - if (!BitmapDest) - { - goto done; - } - - BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); - if (!BitmapSrc) - { - goto done; - } - - DestPalette = BitmapDest->hDIBPalette; - if (!DestPalette) DestPalette = pPrimarySurface->DevInfo.hpalDefault; - - SourcePalette = BitmapSrc->hDIBPalette; - if (!SourcePalette) SourcePalette = pPrimarySurface->DevInfo.hpalDefault; - - if(!(PalSourceGDI = PALETTE_LockPalette(SourcePalette))) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - goto done; - } - PalSrcMode = PalSourceGDI->Mode; - PALETTE_UnlockPalette(PalSourceGDI); - - if(DestPalette != SourcePalette) - { - if (!(PalDestGDI = PALETTE_LockPalette(DestPalette))) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - goto done; - } - PalDestMode = PalDestGDI->Mode; - PALETTE_UnlockPalette(PalDestGDI); - } - else - { - PalDestMode = PalSrcMode; - } - - /* Translate Transparent (RGB) Color to the source palette */ - if((XlateObj = (XLATEOBJ*)IntEngCreateXlate(PalSrcMode, PAL_RGB, SourcePalette, NULL))) - { - TransparentColor = XLATEOBJ_iXlate(XlateObj, (ULONG)TransColor); - EngDeleteXlate(XlateObj); - } - - /* Create the XLATE object to convert colors between source and destination */ - XlateObj = (XLATEOBJ*)IntEngCreateXlate(PalDestMode, PalSrcMode, DestPalette, SourcePalette); - - rcDest.left = xDst; - rcDest.top = yDst; - rcDest.right = rcDest.left + cxDst; - rcDest.bottom = rcDest.top + cyDst; - IntLPtoDP(DCDest, (LPPOINT)&rcDest, 2); - - rcSrc.left = xSrc; - rcSrc.top = ySrc; - rcSrc.right = rcSrc.left + cxSrc; - rcSrc.bottom = rcSrc.top + cySrc; - IntLPtoDP(DCSrc, (LPPOINT)&rcSrc, 2); - - if((cxDst != cxSrc) || (cyDst != cySrc)) - { - DPRINT1("TransparentBlt() does not support stretching at the moment!\n"); - goto done; - } - - Ret = IntEngTransparentBlt(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, - DCDest->CombinedClip, XlateObj, &rcDest, &rcSrc, - TransparentColor, 0); - -done: - DC_UnlockDc(DCSrc); - if (BitmapDest) - { - SURFACE_UnlockSurface(BitmapDest); - } - if (BitmapSrc) - { - SURFACE_UnlockSurface(BitmapSrc); - } - if(hdcDst != hdcSrc) - { - DC_UnlockDc(DCDest); - } - if(XlateObj) - { - EngDeleteXlate(XlateObj); - } - return Ret; + DC_UnlockDc(DCDest); + } + if(XlateObj) + { + EngDeleteXlate(XlateObj); + } + return Ret; } /*********************************************************************** - * MaskBlt - * Ported from WINE by sedwards 11-4-03 - * - * Someone thought it would be faster to do it here and then switch back - * to GDI32. I dunno. Write a test and let me know. - * A. It should be in here! - */ +* MaskBlt +* Ported from WINE by sedwards 11-4-03 +* +* Someone thought it would be faster to do it here and then switch back +* to GDI32. I dunno. Write a test and let me know. +* A. It should be in here! +*/ static __inline BYTE SwapROP3_SrcDst(BYTE bRop3) { - return (bRop3 & 0x99) | ((bRop3 & 0x22) << 1) | ((bRop3 & 0x44) >> 1); + return (bRop3 & 0x99) | ((bRop3 & 0x22) << 1) | ((bRop3 & 0x44) >> 1); } -#define FRGND_ROP3(ROP4) ((ROP4) & 0x00FFFFFF) -#define BKGND_ROP3(ROP4) (ROP3Table[(SwapROP3_SrcDst((ROP4)>>24)) & 0xFF]) -#define DSTCOPY 0x00AA0029 -#define DSTERASE 0x00220326 /* dest = dest & (~src) : DSna */ +#define FRGND_ROP3(ROP4) ((ROP4) & 0x00FFFFFF) +#define BKGND_ROP3(ROP4) (ROP3Table[(SwapROP3_SrcDst((ROP4)>>24)) & 0xFF]) +#define DSTCOPY 0x00AA0029 +#define DSTERASE 0x00220326 /* dest = dest & (~src) : DSna */ BOOL APIENTRY NtGdiMaskBlt ( - HDC hdcDest, INT nXDest, INT nYDest, - INT nWidth, INT nHeight, HDC hdcSrc, - INT nXSrc, INT nYSrc, HBITMAP hbmMask, - INT xMask, INT yMask, DWORD dwRop, - IN DWORD crBackColor) + HDC hdcDest, INT nXDest, INT nYDest, + INT nWidth, INT nHeight, HDC hdcSrc, + INT nXSrc, INT nYSrc, HBITMAP hbmMask, + INT xMask, INT yMask, DWORD dwRop, + IN DWORD crBackColor) { - HBITMAP hOldMaskBitmap, hBitmap2, hOldBitmap2, hBitmap3, hOldBitmap3; - HDC hDCMask, hDC1, hDC2; - static const DWORD ROP3Table[256] = - { - 0x00000042, 0x00010289, - 0x00020C89, 0x000300AA, - 0x00040C88, 0x000500A9, - 0x00060865, 0x000702C5, - 0x00080F08, 0x00090245, - 0x000A0329, 0x000B0B2A, - 0x000C0324, 0x000D0B25, - 0x000E08A5, 0x000F0001, - 0x00100C85, 0x001100A6, - 0x00120868, 0x001302C8, - 0x00140869, 0x001502C9, - 0x00165CCA, 0x00171D54, - 0x00180D59, 0x00191CC8, - 0x001A06C5, 0x001B0768, - 0x001C06CA, 0x001D0766, - 0x001E01A5, 0x001F0385, - 0x00200F09, 0x00210248, - 0x00220326, 0x00230B24, - 0x00240D55, 0x00251CC5, - 0x002606C8, 0x00271868, - 0x00280369, 0x002916CA, - 0x002A0CC9, 0x002B1D58, - 0x002C0784, 0x002D060A, - 0x002E064A, 0x002F0E2A, - 0x0030032A, 0x00310B28, - 0x00320688, 0x00330008, - 0x003406C4, 0x00351864, - 0x003601A8, 0x00370388, - 0x0038078A, 0x00390604, - 0x003A0644, 0x003B0E24, - 0x003C004A, 0x003D18A4, - 0x003E1B24, 0x003F00EA, - 0x00400F0A, 0x00410249, - 0x00420D5D, 0x00431CC4, - 0x00440328, 0x00450B29, - 0x004606C6, 0x0047076A, - 0x00480368, 0x004916C5, - 0x004A0789, 0x004B0605, - 0x004C0CC8, 0x004D1954, - 0x004E0645, 0x004F0E25, - 0x00500325, 0x00510B26, - 0x005206C9, 0x00530764, - 0x005408A9, 0x00550009, - 0x005601A9, 0x00570389, - 0x00580785, 0x00590609, - 0x005A0049, 0x005B18A9, - 0x005C0649, 0x005D0E29, - 0x005E1B29, 0x005F00E9, - 0x00600365, 0x006116C6, - 0x00620786, 0x00630608, - 0x00640788, 0x00650606, - 0x00660046, 0x006718A8, - 0x006858A6, 0x00690145, - 0x006A01E9, 0x006B178A, - 0x006C01E8, 0x006D1785, - 0x006E1E28, 0x006F0C65, - 0x00700CC5, 0x00711D5C, - 0x00720648, 0x00730E28, - 0x00740646, 0x00750E26, - 0x00761B28, 0x007700E6, - 0x007801E5, 0x00791786, - 0x007A1E29, 0x007B0C68, - 0x007C1E24, 0x007D0C69, - 0x007E0955, 0x007F03C9, - 0x008003E9, 0x00810975, - 0x00820C49, 0x00831E04, - 0x00840C48, 0x00851E05, - 0x008617A6, 0x008701C5, - 0x008800C6, 0x00891B08, - 0x008A0E06, 0x008B0666, - 0x008C0E08, 0x008D0668, - 0x008E1D7C, 0x008F0CE5, - 0x00900C45, 0x00911E08, - 0x009217A9, 0x009301C4, - 0x009417AA, 0x009501C9, - 0x00960169, 0x0097588A, - 0x00981888, 0x00990066, - 0x009A0709, 0x009B07A8, - 0x009C0704, 0x009D07A6, - 0x009E16E6, 0x009F0345, - 0x00A000C9, 0x00A11B05, - 0x00A20E09, 0x00A30669, - 0x00A41885, 0x00A50065, - 0x00A60706, 0x00A707A5, - 0x00A803A9, 0x00A90189, - 0x00AA0029, 0x00AB0889, - 0x00AC0744, 0x00AD06E9, - 0x00AE0B06, 0x00AF0229, - 0x00B00E05, 0x00B10665, - 0x00B21974, 0x00B30CE8, - 0x00B4070A, 0x00B507A9, - 0x00B616E9, 0x00B70348, - 0x00B8074A, 0x00B906E6, - 0x00BA0B09, 0x00BB0226, - 0x00BC1CE4, 0x00BD0D7D, - 0x00BE0269, 0x00BF08C9, - 0x00C000CA, 0x00C11B04, - 0x00C21884, 0x00C3006A, - 0x00C40E04, 0x00C50664, - 0x00C60708, 0x00C707AA, - 0x00C803A8, 0x00C90184, - 0x00CA0749, 0x00CB06E4, - 0x00CC0020, 0x00CD0888, - 0x00CE0B08, 0x00CF0224, - 0x00D00E0A, 0x00D1066A, - 0x00D20705, 0x00D307A4, - 0x00D41D78, 0x00D50CE9, - 0x00D616EA, 0x00D70349, - 0x00D80745, 0x00D906E8, - 0x00DA1CE9, 0x00DB0D75, - 0x00DC0B04, 0x00DD0228, - 0x00DE0268, 0x00DF08C8, - 0x00E003A5, 0x00E10185, - 0x00E20746, 0x00E306EA, - 0x00E40748, 0x00E506E5, - 0x00E61CE8, 0x00E70D79, - 0x00E81D74, 0x00E95CE6, - 0x00EA02E9, 0x00EB0849, - 0x00EC02E8, 0x00ED0848, - 0x00EE0086, 0x00EF0A08, - 0x00F00021, 0x00F10885, - 0x00F20B05, 0x00F3022A, - 0x00F40B0A, 0x00F50225, - 0x00F60265, 0x00F708C5, - 0x00F802E5, 0x00F90845, - 0x00FA0089, 0x00FB0A09, - 0x00FC008A, 0x00FD0A0A, - 0x00FE02A9, 0x00FF0062, - }; - - if (!hbmMask) - return NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0, 0); - - /* 1. make mask bitmap's dc */ - hDCMask = NtGdiCreateCompatibleDC(hdcDest); - hOldMaskBitmap = (HBITMAP)NtGdiSelectBitmap(hDCMask, hbmMask); - - /* 2. make masked Background bitmap */ - - /* 2.1 make bitmap */ - hDC1 = NtGdiCreateCompatibleDC(hdcDest); - hBitmap2 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); - hOldBitmap2 = (HBITMAP)NtGdiSelectBitmap(hDC1, hBitmap2); - - /* 2.2 draw dest bitmap and mask */ - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY, 0, 0); - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, BKGND_ROP3(dwRop), 0, 0); - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, DSTERASE, 0, 0); - - /* 3. make masked Foreground bitmap */ - - /* 3.1 make bitmap */ - hDC2 = NtGdiCreateCompatibleDC(hdcDest); - hBitmap3 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); - hOldBitmap3 = (HBITMAP)NtGdiSelectBitmap(hDC2, hBitmap3); - - /* 3.2 draw src bitmap and mask */ - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, SRCCOPY, 0, 0); - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0,0); - NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, SRCAND, 0, 0); - - /* 4. combine two bitmap and copy it to hdcDest */ - NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDC2, 0, 0, SRCPAINT, 0, 0); - NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hDC1, 0, 0, SRCCOPY, 0, 0); - - /* 5. restore all object */ - NtGdiSelectBitmap(hDCMask, hOldMaskBitmap); - NtGdiSelectBitmap(hDC1, hOldBitmap2); - NtGdiSelectBitmap(hDC2, hOldBitmap3); - - /* 6. delete all temp object */ - NtGdiDeleteObject(hBitmap2); - NtGdiDeleteObject(hBitmap3); - - NtGdiDeleteObjectApp(hDC1); - NtGdiDeleteObjectApp(hDC2); - NtGdiDeleteObjectApp(hDCMask); - - return TRUE; + HBITMAP hOldMaskBitmap, hBitmap2, hOldBitmap2, hBitmap3, hOldBitmap3; + HDC hDCMask, hDC1, hDC2; + static const DWORD ROP3Table[256] = + { + 0x00000042, 0x00010289, + 0x00020C89, 0x000300AA, + 0x00040C88, 0x000500A9, + 0x00060865, 0x000702C5, + 0x00080F08, 0x00090245, + 0x000A0329, 0x000B0B2A, + 0x000C0324, 0x000D0B25, + 0x000E08A5, 0x000F0001, + 0x00100C85, 0x001100A6, + 0x00120868, 0x001302C8, + 0x00140869, 0x001502C9, + 0x00165CCA, 0x00171D54, + 0x00180D59, 0x00191CC8, + 0x001A06C5, 0x001B0768, + 0x001C06CA, 0x001D0766, + 0x001E01A5, 0x001F0385, + 0x00200F09, 0x00210248, + 0x00220326, 0x00230B24, + 0x00240D55, 0x00251CC5, + 0x002606C8, 0x00271868, + 0x00280369, 0x002916CA, + 0x002A0CC9, 0x002B1D58, + 0x002C0784, 0x002D060A, + 0x002E064A, 0x002F0E2A, + 0x0030032A, 0x00310B28, + 0x00320688, 0x00330008, + 0x003406C4, 0x00351864, + 0x003601A8, 0x00370388, + 0x0038078A, 0x00390604, + 0x003A0644, 0x003B0E24, + 0x003C004A, 0x003D18A4, + 0x003E1B24, 0x003F00EA, + 0x00400F0A, 0x00410249, + 0x00420D5D, 0x00431CC4, + 0x00440328, 0x00450B29, + 0x004606C6, 0x0047076A, + 0x00480368, 0x004916C5, + 0x004A0789, 0x004B0605, + 0x004C0CC8, 0x004D1954, + 0x004E0645, 0x004F0E25, + 0x00500325, 0x00510B26, + 0x005206C9, 0x00530764, + 0x005408A9, 0x00550009, + 0x005601A9, 0x00570389, + 0x00580785, 0x00590609, + 0x005A0049, 0x005B18A9, + 0x005C0649, 0x005D0E29, + 0x005E1B29, 0x005F00E9, + 0x00600365, 0x006116C6, + 0x00620786, 0x00630608, + 0x00640788, 0x00650606, + 0x00660046, 0x006718A8, + 0x006858A6, 0x00690145, + 0x006A01E9, 0x006B178A, + 0x006C01E8, 0x006D1785, + 0x006E1E28, 0x006F0C65, + 0x00700CC5, 0x00711D5C, + 0x00720648, 0x00730E28, + 0x00740646, 0x00750E26, + 0x00761B28, 0x007700E6, + 0x007801E5, 0x00791786, + 0x007A1E29, 0x007B0C68, + 0x007C1E24, 0x007D0C69, + 0x007E0955, 0x007F03C9, + 0x008003E9, 0x00810975, + 0x00820C49, 0x00831E04, + 0x00840C48, 0x00851E05, + 0x008617A6, 0x008701C5, + 0x008800C6, 0x00891B08, + 0x008A0E06, 0x008B0666, + 0x008C0E08, 0x008D0668, + 0x008E1D7C, 0x008F0CE5, + 0x00900C45, 0x00911E08, + 0x009217A9, 0x009301C4, + 0x009417AA, 0x009501C9, + 0x00960169, 0x0097588A, + 0x00981888, 0x00990066, + 0x009A0709, 0x009B07A8, + 0x009C0704, 0x009D07A6, + 0x009E16E6, 0x009F0345, + 0x00A000C9, 0x00A11B05, + 0x00A20E09, 0x00A30669, + 0x00A41885, 0x00A50065, + 0x00A60706, 0x00A707A5, + 0x00A803A9, 0x00A90189, + 0x00AA0029, 0x00AB0889, + 0x00AC0744, 0x00AD06E9, + 0x00AE0B06, 0x00AF0229, + 0x00B00E05, 0x00B10665, + 0x00B21974, 0x00B30CE8, + 0x00B4070A, 0x00B507A9, + 0x00B616E9, 0x00B70348, + 0x00B8074A, 0x00B906E6, + 0x00BA0B09, 0x00BB0226, + 0x00BC1CE4, 0x00BD0D7D, + 0x00BE0269, 0x00BF08C9, + 0x00C000CA, 0x00C11B04, + 0x00C21884, 0x00C3006A, + 0x00C40E04, 0x00C50664, + 0x00C60708, 0x00C707AA, + 0x00C803A8, 0x00C90184, + 0x00CA0749, 0x00CB06E4, + 0x00CC0020, 0x00CD0888, + 0x00CE0B08, 0x00CF0224, + 0x00D00E0A, 0x00D1066A, + 0x00D20705, 0x00D307A4, + 0x00D41D78, 0x00D50CE9, + 0x00D616EA, 0x00D70349, + 0x00D80745, 0x00D906E8, + 0x00DA1CE9, 0x00DB0D75, + 0x00DC0B04, 0x00DD0228, + 0x00DE0268, 0x00DF08C8, + 0x00E003A5, 0x00E10185, + 0x00E20746, 0x00E306EA, + 0x00E40748, 0x00E506E5, + 0x00E61CE8, 0x00E70D79, + 0x00E81D74, 0x00E95CE6, + 0x00EA02E9, 0x00EB0849, + 0x00EC02E8, 0x00ED0848, + 0x00EE0086, 0x00EF0A08, + 0x00F00021, 0x00F10885, + 0x00F20B05, 0x00F3022A, + 0x00F40B0A, 0x00F50225, + 0x00F60265, 0x00F708C5, + 0x00F802E5, 0x00F90845, + 0x00FA0089, 0x00FB0A09, + 0x00FC008A, 0x00FD0A0A, + 0x00FE02A9, 0x00FF0062, + }; + + if (!hbmMask) + return NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0, 0); + + /* 1. make mask bitmap's dc */ + hDCMask = NtGdiCreateCompatibleDC(hdcDest); + hOldMaskBitmap = (HBITMAP)NtGdiSelectBitmap(hDCMask, hbmMask); + + /* 2. make masked Background bitmap */ + + /* 2.1 make bitmap */ + hDC1 = NtGdiCreateCompatibleDC(hdcDest); + hBitmap2 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); + hOldBitmap2 = (HBITMAP)NtGdiSelectBitmap(hDC1, hBitmap2); + + /* 2.2 draw dest bitmap and mask */ + NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, SRCCOPY, 0, 0); + NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, BKGND_ROP3(dwRop), 0, 0); + NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, DSTERASE, 0, 0); + + /* 3. make masked Foreground bitmap */ + + /* 3.1 make bitmap */ + hDC2 = NtGdiCreateCompatibleDC(hdcDest); + hBitmap3 = NtGdiCreateCompatibleBitmap(hdcDest, nWidth, nHeight); + hOldBitmap3 = (HBITMAP)NtGdiSelectBitmap(hDC2, hBitmap3); + + /* 3.2 draw src bitmap and mask */ + NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcDest, nXDest, nYDest, SRCCOPY, 0, 0); + NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hdcSrc, nXSrc, nYSrc, FRGND_ROP3(dwRop), 0,0); + NtGdiBitBlt(hDC2, 0, 0, nWidth, nHeight, hDCMask, xMask, yMask, SRCAND, 0, 0); + + /* 4. combine two bitmap and copy it to hdcDest */ + NtGdiBitBlt(hDC1, 0, 0, nWidth, nHeight, hDC2, 0, 0, SRCPAINT, 0, 0); + NtGdiBitBlt(hdcDest, nXDest, nYDest, nWidth, nHeight, hDC1, 0, 0, SRCCOPY, 0, 0); + + /* 5. restore all object */ + NtGdiSelectBitmap(hDCMask, hOldMaskBitmap); + NtGdiSelectBitmap(hDC1, hOldBitmap2); + NtGdiSelectBitmap(hDC2, hOldBitmap3); + + /* 6. delete all temp object */ + NtGdiDeleteObject(hBitmap2); + NtGdiDeleteObject(hBitmap3); + + NtGdiDeleteObjectApp(hDC1); + NtGdiDeleteObjectApp(hDC2); + NtGdiDeleteObjectApp(hDCMask); + + return TRUE; } BOOL APIENTRY NtGdiPlgBlt( - IN HDC hdcTrg, - IN LPPOINT pptlTrg, - IN HDC hdcSrc, - IN INT xSrc, - IN INT ySrc, - IN INT cxSrc, - IN INT cySrc, - IN HBITMAP hbmMask, - IN INT xMask, - IN INT yMask, - IN DWORD crBackColor) + IN HDC hdcTrg, + IN LPPOINT pptlTrg, + IN HDC hdcSrc, + IN INT xSrc, + IN INT ySrc, + IN INT cxSrc, + IN INT cySrc, + IN HBITMAP hbmMask, + IN INT xMask, + IN INT yMask, + IN DWORD crBackColor) { - UNIMPLEMENTED; - return FALSE; + UNIMPLEMENTED; + return FALSE; } BOOL APIENTRY NtGdiStretchBlt( - HDC hDCDest, - INT XOriginDest, - INT YOriginDest, - INT WidthDest, - INT HeightDest, - HDC hDCSrc, - INT XOriginSrc, - INT YOriginSrc, - INT WidthSrc, - INT HeightSrc, - DWORD ROP, - IN DWORD dwBackColor) + HDC hDCDest, + INT XOriginDest, + INT YOriginDest, + INT WidthDest, + INT HeightDest, + HDC hDCSrc, + INT XOriginSrc, + INT YOriginSrc, + INT WidthSrc, + INT HeightSrc, + DWORD ROP, + IN DWORD dwBackColor) { - PDC DCDest; - PDC DCSrc = NULL; - PDC_ATTR Dc_Attr; - SURFACE *BitmapDest, *BitmapSrc = NULL; - RECTL DestRect; - RECTL SourceRect; - BOOL Status = FALSE; - XLATEOBJ *XlateObj = NULL; - PGDIBRUSHOBJ BrushObj = NULL; - BOOL UsesSource = ROP3_USES_SOURCE(ROP); - BOOL UsesPattern = ROP3_USES_PATTERN(ROP); - - if (0 == WidthDest || 0 == HeightDest || 0 == WidthSrc || 0 == HeightSrc) - { - SetLastWin32Error(ERROR_INVALID_PARAMETER); - return FALSE; - } - DCDest = DC_LockDc(hDCDest); - if (NULL == DCDest) - { - DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiStretchBlt\n", hDCDest); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (DCDest->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - if (UsesSource) - { - if (hDCSrc != hDCDest) - { - DCSrc = DC_LockDc(hDCSrc); - if (NULL == DCSrc) - { - DC_UnlockDc(DCDest); - DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiStretchBlt\n", hDCSrc); - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (DCSrc->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(DCSrc); - DC_UnlockDc(DCDest); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - } - else - { - DCSrc = DCDest; - } - } - - Dc_Attr = DCDest->pDc_Attr; - if (!Dc_Attr) Dc_Attr = &DCDest->Dc_Attr; - - if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) - IntGdiSelectBrush(DCDest,Dc_Attr->hbrush); - - /* Offset the destination and source by the origin of their DCs. */ - XOriginDest += DCDest->ptlDCOrig.x; - YOriginDest += DCDest->ptlDCOrig.y; - if (UsesSource) - { - XOriginSrc += DCSrc->ptlDCOrig.x; - YOriginSrc += DCSrc->ptlDCOrig.y; - } - - DestRect.left = XOriginDest; - DestRect.top = YOriginDest; - DestRect.right = XOriginDest+WidthDest; - DestRect.bottom = YOriginDest+HeightDest; - IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); - - SourceRect.left = XOriginSrc; - SourceRect.top = YOriginSrc; - SourceRect.right = XOriginSrc+WidthSrc; - SourceRect.bottom = YOriginSrc+HeightSrc; - if (UsesSource) - { - IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); - } - - /* Determine surfaces to be used in the bitblt */ - BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); - if (BitmapDest == NULL) - goto failed; - if (UsesSource) - { - if (DCSrc->w.hBitmap == DCDest->w.hBitmap) - { - BitmapSrc = BitmapDest; - } - else - { - BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); - if (BitmapSrc == NULL) - goto failed; - } - - int sw = BitmapSrc->SurfObj.sizlBitmap.cx; - int sh = BitmapSrc->SurfObj.sizlBitmap.cy; - if ( SourceRect.left < 0 ) - { - DestRect.left = DestRect.right - (DestRect.right-DestRect.left) * (SourceRect.right)/abs(SourceRect.right-SourceRect.left); - SourceRect.left = 0; - } - if ( SourceRect.top < 0 ) - { - DestRect.top = DestRect.bottom - (DestRect.bottom-DestRect.top) * (SourceRect.bottom)/abs(SourceRect.bottom-SourceRect.top); - SourceRect.top = 0; - } - if ( SourceRect.right < -1 ) - { - DestRect.right = DestRect.left + (DestRect.right-DestRect.left) * (-1-SourceRect.left)/abs(SourceRect.right-SourceRect.left); - SourceRect.right = -1; - } - if ( SourceRect.bottom < -1 ) - { - DestRect.bottom = DestRect.top + (DestRect.bottom-DestRect.top) * (-1-SourceRect.top)/abs(SourceRect.bottom-SourceRect.top); - SourceRect.bottom = -1; - } - if ( SourceRect.right > sw ) - { - DestRect.right = DestRect.left + (DestRect.right-DestRect.left) * abs(sw-SourceRect.left) / abs(SourceRect.right-SourceRect.left); - SourceRect.right = sw; - } - if ( SourceRect.bottom > sh ) - { - DestRect.bottom = DestRect.top + (DestRect.bottom-DestRect.top) * abs(sh-SourceRect.top) / abs(SourceRect.bottom-SourceRect.top); - SourceRect.bottom = sh; - } - sw--; - sh--; - if ( SourceRect.left > sw ) - { - DestRect.left = DestRect.right - (DestRect.right-DestRect.left) * (SourceRect.right-sw) / abs(SourceRect.right-SourceRect.left); - SourceRect.left = 0; - } - if ( SourceRect.top > sh ) - { - DestRect.top = DestRect.bottom - (DestRect.bottom-DestRect.top) * (SourceRect.bottom-sh) / abs(SourceRect.bottom-SourceRect.top); - SourceRect.top = 0; - } - if (0 == (DestRect.right-DestRect.left) || 0 == (DestRect.bottom-DestRect.top) || 0 == (SourceRect.right-SourceRect.left) || 0 == (SourceRect.bottom-SourceRect.top)) - { - SetLastWin32Error(ERROR_INVALID_PARAMETER); - goto failed; - } - - /* Create the XLATEOBJ. */ - XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); - if (XlateObj == (XLATEOBJ*)-1) - { - SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); - XlateObj = NULL; - goto failed; - } - } - - if (UsesPattern) - { - BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); - if (NULL == BrushObj) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - goto failed; - } - } - - /* Perform the bitblt operation */ - Status = IntEngStretchBlt(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, - NULL, DCDest->CombinedClip, XlateObj, - &DestRect, &SourceRect, NULL, NULL, NULL, - ROP3_TO_ROP4(ROP)); + PDC DCDest; + PDC DCSrc = NULL; + PDC_ATTR Dc_Attr; + SURFACE *BitmapDest, *BitmapSrc = NULL; + RECTL DestRect; + RECTL SourceRect; + BOOL Status = FALSE; + XLATEOBJ *XlateObj = NULL; + PGDIBRUSHOBJ BrushObj = NULL; + BOOL UsesSource = ROP3_USES_SOURCE(ROP); + BOOL UsesPattern = ROP3_USES_PATTERN(ROP); + + if (0 == WidthDest || 0 == HeightDest || 0 == WidthSrc || 0 == HeightSrc) + { + SetLastWin32Error(ERROR_INVALID_PARAMETER); + return FALSE; + } + DCDest = DC_LockDc(hDCDest); + if (NULL == DCDest) + { + DPRINT1("Invalid destination dc handle (0x%08x) passed to NtGdiStretchBlt\n", hDCDest); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (DCDest->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + if (UsesSource) + { + if (hDCSrc != hDCDest) + { + DCSrc = DC_LockDc(hDCSrc); + if (NULL == DCSrc) + { + DC_UnlockDc(DCDest); + DPRINT1("Invalid source dc handle (0x%08x) passed to NtGdiStretchBlt\n", hDCSrc); + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (DCSrc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(DCSrc); + DC_UnlockDc(DCDest); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + } + else + { + DCSrc = DCDest; + } + } + + Dc_Attr = DCDest->pDc_Attr; + if (!Dc_Attr) Dc_Attr = &DCDest->Dc_Attr; + + if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) + IntGdiSelectBrush(DCDest,Dc_Attr->hbrush); + + /* Offset the destination and source by the origin of their DCs. */ + XOriginDest += DCDest->ptlDCOrig.x; + YOriginDest += DCDest->ptlDCOrig.y; + if (UsesSource) + { + XOriginSrc += DCSrc->ptlDCOrig.x; + YOriginSrc += DCSrc->ptlDCOrig.y; + } + + DestRect.left = XOriginDest; + DestRect.top = YOriginDest; + DestRect.right = XOriginDest+WidthDest; + DestRect.bottom = YOriginDest+HeightDest; + IntLPtoDP(DCDest, (LPPOINT)&DestRect, 2); + + SourceRect.left = XOriginSrc; + SourceRect.top = YOriginSrc; + SourceRect.right = XOriginSrc+WidthSrc; + SourceRect.bottom = YOriginSrc+HeightSrc; + if (UsesSource) + { + IntLPtoDP(DCSrc, (LPPOINT)&SourceRect, 2); + } + + /* Determine surfaces to be used in the bitblt */ + BitmapDest = SURFACE_LockSurface(DCDest->w.hBitmap); + if (BitmapDest == NULL) + goto failed; + if (UsesSource) + { + if (DCSrc->w.hBitmap == DCDest->w.hBitmap) + { + BitmapSrc = BitmapDest; + } + else + { + BitmapSrc = SURFACE_LockSurface(DCSrc->w.hBitmap); + if (BitmapSrc == NULL) + goto failed; + } + + int sw = BitmapSrc->SurfObj.sizlBitmap.cx; + int sh = BitmapSrc->SurfObj.sizlBitmap.cy; + if ( SourceRect.left < 0 ) + { + DestRect.left = DestRect.right - (DestRect.right-DestRect.left) * (SourceRect.right)/abs(SourceRect.right-SourceRect.left); + SourceRect.left = 0; + } + if ( SourceRect.top < 0 ) + { + DestRect.top = DestRect.bottom - (DestRect.bottom-DestRect.top) * (SourceRect.bottom)/abs(SourceRect.bottom-SourceRect.top); + SourceRect.top = 0; + } + if ( SourceRect.right < -1 ) + { + DestRect.right = DestRect.left + (DestRect.right-DestRect.left) * (-1-SourceRect.left)/abs(SourceRect.right-SourceRect.left); + SourceRect.right = -1; + } + if ( SourceRect.bottom < -1 ) + { + DestRect.bottom = DestRect.top + (DestRect.bottom-DestRect.top) * (-1-SourceRect.top)/abs(SourceRect.bottom-SourceRect.top); + SourceRect.bottom = -1; + } + if ( SourceRect.right > sw ) + { + DestRect.right = DestRect.left + (DestRect.right-DestRect.left) * abs(sw-SourceRect.left) / abs(SourceRect.right-SourceRect.left); + SourceRect.right = sw; + } + if ( SourceRect.bottom > sh ) + { + DestRect.bottom = DestRect.top + (DestRect.bottom-DestRect.top) * abs(sh-SourceRect.top) / abs(SourceRect.bottom-SourceRect.top); + SourceRect.bottom = sh; + } + sw--; + sh--; + if ( SourceRect.left > sw ) + { + DestRect.left = DestRect.right - (DestRect.right-DestRect.left) * (SourceRect.right-sw) / abs(SourceRect.right-SourceRect.left); + SourceRect.left = 0; + } + if ( SourceRect.top > sh ) + { + DestRect.top = DestRect.bottom - (DestRect.bottom-DestRect.top) * (SourceRect.bottom-sh) / abs(SourceRect.bottom-SourceRect.top); + SourceRect.top = 0; + } + if (0 == (DestRect.right-DestRect.left) || 0 == (DestRect.bottom-DestRect.top) || 0 == (SourceRect.right-SourceRect.left) || 0 == (SourceRect.bottom-SourceRect.top)) + { + SetLastWin32Error(ERROR_INVALID_PARAMETER); + goto failed; + } + + /* Create the XLATEOBJ. */ + XlateObj = IntCreateXlateForBlt(DCDest, DCSrc, BitmapDest, BitmapSrc); + if (XlateObj == (XLATEOBJ*)-1) + { + SetLastWin32Error(ERROR_NO_SYSTEM_RESOURCES); + XlateObj = NULL; + goto failed; + } + } + + if (UsesPattern) + { + BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); + if (NULL == BrushObj) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + goto failed; + } + } + + /* Perform the bitblt operation */ + Status = IntEngStretchBlt(&BitmapDest->SurfObj, &BitmapSrc->SurfObj, + NULL, DCDest->CombinedClip, XlateObj, + &DestRect, &SourceRect, NULL, NULL, NULL, + ROP3_TO_ROP4(ROP)); failed: - if (XlateObj) - { - EngDeleteXlate(XlateObj); - } - if (BrushObj) - { - BRUSHOBJ_UnlockBrush(BrushObj); - } - if (BitmapSrc && DCSrc->w.hBitmap != DCDest->w.hBitmap) - { - SURFACE_UnlockSurface(BitmapSrc); - } - if (BitmapDest) - { - SURFACE_UnlockSurface(BitmapDest); - } - if (UsesSource && hDCSrc != hDCDest) - { - DC_UnlockDc(DCSrc); - } - DC_UnlockDc(DCDest); - - return Status; + if (XlateObj) + { + EngDeleteXlate(XlateObj); + } + if (BrushObj) + { + BRUSHOBJ_UnlockBrush(BrushObj); + } + if (BitmapSrc && DCSrc->w.hBitmap != DCDest->w.hBitmap) + { + SURFACE_UnlockSurface(BitmapSrc); + } + if (BitmapDest) + { + SURFACE_UnlockSurface(BitmapDest); + } + if (UsesSource && hDCSrc != hDCDest) + { + DC_UnlockDc(DCSrc); + } + DC_UnlockDc(DCDest); + + return Status; } BOOL FASTCALL IntPatBlt( - PDC dc, - INT XLeft, - INT YLeft, - INT Width, - INT Height, - DWORD ROP, - PGDIBRUSHOBJ BrushObj) + PDC dc, + INT XLeft, + INT YLeft, + INT Width, + INT Height, + DWORD ROP, + PGDIBRUSHOBJ BrushObj) { - RECTL DestRect; - SURFACE *psurf; - GDIBRUSHINST BrushInst; - POINTL BrushOrigin; - BOOL ret = TRUE; - - ASSERT(BrushObj); - - psurf = SURFACE_LockSurface(dc->w.hBitmap); - if (psurf == NULL) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - - if (!(BrushObj->flAttrs & GDIBRUSH_IS_NULL)) - { - if (Width > 0) - { - DestRect.left = XLeft + dc->ptlDCOrig.x; - DestRect.right = XLeft + Width + dc->ptlDCOrig.x; - } - else - { - DestRect.left = XLeft + Width + 1 + dc->ptlDCOrig.x; - DestRect.right = XLeft + dc->ptlDCOrig.x + 1; - } - - if (Height > 0) - { - DestRect.top = YLeft + dc->ptlDCOrig.y; - DestRect.bottom = YLeft + Height + dc->ptlDCOrig.y; - } - else - { - DestRect.top = YLeft + Height + dc->ptlDCOrig.y + 1; - DestRect.bottom = YLeft + dc->ptlDCOrig.y + 1; - } - - IntLPtoDP(dc, (LPPOINT)&DestRect, 2); - - BrushOrigin.x = BrushObj->ptOrigin.x + dc->ptlDCOrig.x; - BrushOrigin.y = BrushObj->ptOrigin.y + dc->ptlDCOrig.y; - - IntGdiInitBrushInstance(&BrushInst, BrushObj, dc->XlateBrush); - - ret = IntEngBitBlt( - &psurf->SurfObj, - NULL, - NULL, - dc->CombinedClip, - NULL, - &DestRect, - NULL, - NULL, - &BrushInst.BrushObject, // use pDC->eboFill - &BrushOrigin, - ROP3_TO_ROP4(ROP)); - } - - SURFACE_UnlockSurface(psurf); - - return ret; + RECTL DestRect; + SURFACE *psurf; + GDIBRUSHINST BrushInst; + POINTL BrushOrigin; + BOOL ret = TRUE; + + ASSERT(BrushObj); + + psurf = SURFACE_LockSurface(dc->w.hBitmap); + if (psurf == NULL) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + + if (!(BrushObj->flAttrs & GDIBRUSH_IS_NULL)) + { + if (Width > 0) + { + DestRect.left = XLeft + dc->ptlDCOrig.x; + DestRect.right = XLeft + Width + dc->ptlDCOrig.x; + } + else + { + DestRect.left = XLeft + Width + 1 + dc->ptlDCOrig.x; + DestRect.right = XLeft + dc->ptlDCOrig.x + 1; + } + + if (Height > 0) + { + DestRect.top = YLeft + dc->ptlDCOrig.y; + DestRect.bottom = YLeft + Height + dc->ptlDCOrig.y; + } + else + { + DestRect.top = YLeft + Height + dc->ptlDCOrig.y + 1; + DestRect.bottom = YLeft + dc->ptlDCOrig.y + 1; + } + + IntLPtoDP(dc, (LPPOINT)&DestRect, 2); + + BrushOrigin.x = BrushObj->ptOrigin.x + dc->ptlDCOrig.x; + BrushOrigin.y = BrushObj->ptOrigin.y + dc->ptlDCOrig.y; + + IntGdiInitBrushInstance(&BrushInst, BrushObj, dc->XlateBrush); + + ret = IntEngBitBlt( + &psurf->SurfObj, + NULL, + NULL, + dc->CombinedClip, + NULL, + &DestRect, + NULL, + NULL, + &BrushInst.BrushObject, // use pDC->eboFill + &BrushOrigin, + ROP3_TO_ROP4(ROP)); + } + + SURFACE_UnlockSurface(psurf); + + return ret; } BOOL FASTCALL IntGdiPolyPatBlt( - HDC hDC, - DWORD dwRop, - PPATRECT pRects, - int cRects, - ULONG Reserved) + HDC hDC, + DWORD dwRop, + PPATRECT pRects, + int cRects, + ULONG Reserved) { - int i; - PPATRECT r; - PGDIBRUSHOBJ BrushObj; - PDC_ATTR Dc_Attr; - DC *dc; - - dc = DC_LockDc(hDC); - if (dc == NULL) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (dc->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(dc); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - Dc_Attr = dc->pDc_Attr; - if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr; - - if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) - IntGdiSelectBrush(dc,Dc_Attr->hbrush); - - for (r = pRects, i = 0; i < cRects; i++) - { - BrushObj = BRUSHOBJ_LockBrush(r->hBrush); - if(BrushObj != NULL) - { - IntPatBlt( - dc, - r->r.left, - r->r.top, - r->r.right, - r->r.bottom, - dwRop, - BrushObj); - BRUSHOBJ_UnlockBrush(BrushObj); - } - r++; - } - - DC_UnlockDc(dc); - - return TRUE; + int i; + PPATRECT r; + PGDIBRUSHOBJ BrushObj; + PDC_ATTR Dc_Attr; + DC *dc; + + dc = DC_LockDc(hDC); + if (dc == NULL) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (dc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(dc); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + Dc_Attr = dc->pDc_Attr; + if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr; + + if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) + IntGdiSelectBrush(dc,Dc_Attr->hbrush); + + for (r = pRects, i = 0; i < cRects; i++) + { + BrushObj = BRUSHOBJ_LockBrush(r->hBrush); + if(BrushObj != NULL) + { + IntPatBlt( + dc, + r->r.left, + r->r.top, + r->r.right, + r->r.bottom, + dwRop, + BrushObj); + BRUSHOBJ_UnlockBrush(BrushObj); + } + r++; + } + + DC_UnlockDc(dc); + + return TRUE; } BOOL APIENTRY NtGdiPatBlt( - HDC hDC, - INT XLeft, - INT YLeft, - INT Width, - INT Height, - DWORD ROP) + HDC hDC, + INT XLeft, + INT YLeft, + INT Width, + INT Height, + DWORD ROP) { - PGDIBRUSHOBJ BrushObj; - DC *dc; - PDC_ATTR Dc_Attr; - BOOL ret; - - BOOL UsesSource = ROP3_USES_SOURCE(ROP); - if (UsesSource) - { - /* in this case we call on GdiMaskBlt */ - return NtGdiMaskBlt(hDC, XLeft, YLeft, Width, Height, 0,0,0,0,0,0,ROP,0); - } - - dc = DC_LockDc(hDC); - if (dc == NULL) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - return FALSE; - } - if (dc->DC_Type == DC_TYPE_INFO) - { - DC_UnlockDc(dc); - /* Yes, Windows really returns TRUE in this case */ - return TRUE; - } - - Dc_Attr = dc->pDc_Attr; - if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr; - - if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) - IntGdiSelectBrush(dc,Dc_Attr->hbrush); - - BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); - if (BrushObj == NULL) - { - SetLastWin32Error(ERROR_INVALID_HANDLE); - DC_UnlockDc(dc); - return FALSE; - } - - ret = IntPatBlt( - dc, - XLeft, - YLeft, - Width, - Height, - ROP, - BrushObj); - - BRUSHOBJ_UnlockBrush(BrushObj); - DC_UnlockDc(dc); - - return ret; + PGDIBRUSHOBJ BrushObj; + DC *dc; + PDC_ATTR Dc_Attr; + BOOL ret; + + BOOL UsesSource = ROP3_USES_SOURCE(ROP); + if (UsesSource) + { + /* in this case we call on GdiMaskBlt */ + return NtGdiMaskBlt(hDC, XLeft, YLeft, Width, Height, 0,0,0,0,0,0,ROP,0); + } + + dc = DC_LockDc(hDC); + if (dc == NULL) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + return FALSE; + } + if (dc->DC_Type == DC_TYPE_INFO) + { + DC_UnlockDc(dc); + /* Yes, Windows really returns TRUE in this case */ + return TRUE; + } + + Dc_Attr = dc->pDc_Attr; + if(!Dc_Attr) Dc_Attr = &dc->Dc_Attr; + + if (Dc_Attr->ulDirty_ & DC_BRUSH_DIRTY) + IntGdiSelectBrush(dc,Dc_Attr->hbrush); + + BrushObj = BRUSHOBJ_LockBrush(Dc_Attr->hbrush); + if (BrushObj == NULL) + { + SetLastWin32Error(ERROR_INVALID_HANDLE); + DC_UnlockDc(dc); + return FALSE; + } + + ret = IntPatBlt( + dc, + XLeft, + YLeft, + Width, + Height, + ROP, + BrushObj); + + BRUSHOBJ_UnlockBrush(BrushObj); + DC_UnlockDc(dc); + + return ret; } BOOL APIENTRY NtGdiPolyPatBlt( - HDC hDC, - DWORD dwRop, - IN PPOLYPATBLT pRects, - IN DWORD cRects, - IN DWORD Mode) + HDC hDC, + DWORD dwRop, + IN PPOLYPATBLT pRects, + IN DWORD cRects, + IN DWORD Mode) { - PPATRECT rb = NULL; - NTSTATUS Status = STATUS_SUCCESS; - BOOL Ret; - - if (cRects > 0) - { - rb = ExAllocatePoolWithTag(PagedPool, sizeof(PATRECT) * cRects, TAG_PATBLT); - if (!rb) - { - SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY); - return FALSE; - } - _SEH2_TRY - { - ProbeForRead(pRects, - cRects * sizeof(PATRECT), - 1); - RtlCopyMemory(rb, - pRects, - cRects * sizeof(PATRECT)); - } - _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) - { - Status = _SEH2_GetExceptionCode(); - } - _SEH2_END; - - if (!NT_SUCCESS(Status)) - { - ExFreePoolWithTag(rb, TAG_PATBLT); - SetLastNtError(Status); - return FALSE; - } - } - - Ret = IntGdiPolyPatBlt(hDC, dwRop, rb, cRects, Mode); - - if (cRects > 0) - ExFreePoolWithTag(rb, TAG_PATBLT); - - return Ret; + PPATRECT rb = NULL; + NTSTATUS Status = STATUS_SUCCESS; + BOOL Ret; + + if (cRects > 0) + { + rb = ExAllocatePoolWithTag(PagedPool, sizeof(PATRECT) * cRects, TAG_PATBLT); + if (!rb) + { + SetLastWin32Error(ERROR_NOT_ENOUGH_MEMORY); + return FALSE; + } + _SEH2_TRY + { + ProbeForRead(pRects, + cRects * sizeof(PATRECT), + 1); + RtlCopyMemory(rb, + pRects, + cRects * sizeof(PATRECT)); + } + _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) + { + Status = _SEH2_GetExceptionCode(); + } + _SEH2_END; + + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(rb, TAG_PATBLT); + SetLastNtError(Status); + return FALSE; + } + } + + Ret = IntGdiPolyPatBlt(hDC, dwRop, rb, cRects, Mode); + + if (cRects > 0) + ExFreePoolWithTag(rb, TAG_PATBLT); + + return Ret; }
15 years, 10 months
1
0
0
0
[gschneider] 39485: Evgeny Boltik, <BSTSoft AT narod DOT ru>: Convert BitBlt source coordinates (destination coordinates were converted already)
by gschneider@svn.reactos.org
Author: gschneider Date: Sun Feb 8 08:54:41 2009 New Revision: 39485 URL:
http://svn.reactos.org/svn/reactos?rev=39485&view=rev
Log: Evgeny Boltik, <BSTSoft AT narod DOT ru>: Convert BitBlt source coordinates (destination coordinates were converted already) Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c Modified: trunk/reactos/subsystems/win32/win32k/objects/bitblt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/objects/bitblt.c [iso-8859-1] Sun Feb 8 08:54:41 2009 @@ -259,6 +259,10 @@ SourcePoint.x = XSrc; SourcePoint.y = YSrc; + if (UsesSource) + { + IntLPtoDP(DCSrc, (LPPOINT)&SourcePoint, 1); + } BrushOrigin.x = 0; BrushOrigin.y = 0;
15 years, 10 months
1
0
0
0
[khornicek] 39484: - sync dinput and dinput8 with wine
by khornicek@svn.reactos.org
Author: khornicek Date: Sun Feb 8 08:34:49 2009 New Revision: 39484 URL:
http://svn.reactos.org/svn/reactos?rev=39484&view=rev
Log: - sync dinput and dinput8 with wine Added: trunk/reactos/dll/directx/dinput8/regsvr.c (with props) Modified: trunk/reactos/dll/directx/dinput/dinput_main.c trunk/reactos/dll/directx/dinput/effect_linuxinput.c trunk/reactos/dll/directx/dinput/joystick_linuxinput.c trunk/reactos/dll/directx/dinput/regsvr.c trunk/reactos/dll/directx/dinput8/dinput8.rbuild trunk/reactos/dll/directx/dinput8/dinput8_main.c trunk/reactos/dll/directx/dinput8/version.rc trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/directx/dinput/dinput_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput/dinput_…
============================================================================== --- trunk/reactos/dll/directx/dinput/dinput_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput/dinput_main.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -885,6 +885,7 @@ static LRESULT CALLBACK LL_hook_proc( int code, WPARAM wparam, LPARAM lparam ) { IDirectInputImpl *dinput; + int skip = 0; if (code != HC_ACTION) return CallNextHookEx( 0, code, wparam, lparam ); @@ -899,12 +900,13 @@ { TRACE("calling %p->%p (%lx %lx)\n", dev, dev->event_proc, wparam, lparam); dev->event_proc( (LPDIRECTINPUTDEVICE8A)dev, wparam, lparam ); + skip |= dev->dwCoopLevel & DISCL_EXCLUSIVE; } LeaveCriticalSection( &dinput->crit ); } LeaveCriticalSection( &dinput_hook_crit ); - return CallNextHookEx( 0, code, wparam, lparam ); + return skip ? 1 : CallNextHookEx( 0, code, wparam, lparam ); } static LRESULT CALLBACK callwndproc_proc( int code, WPARAM wparam, LPARAM lparam ) Modified: trunk/reactos/dll/directx/dinput/effect_linuxinput.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput/effect_…
============================================================================== --- trunk/reactos/dll/directx/dinput/effect_linuxinput.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput/effect_linuxinput.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -55,6 +55,7 @@ struct ff_effect effect; /* Effect data */ int gain; /* Effect gain */ + int first_axis_is_x; int* fd; /* Parent device */ struct list *entry; /* Entry into the parent's list of effects */ }; @@ -512,12 +513,6 @@ } event.type = EV_FF; - - event.code = FF_GAIN; - event.value = This->gain; - if (write(*(This->fd), &event, sizeof(event)) == -1) - FIXME("Failed setting gain. Error: %d \"%s\".\n", errno, strerror(errno)); - event.code = This->effect.id; event.value = dwIterations; if (write(*(This->fd), &event, sizeof(event)) == -1) { @@ -554,6 +549,7 @@ return DIERR_INVALIDPARAM; else if (peff->cAxes < 1) return DIERR_INCOMPLETEEFFECT; + This->first_axis_is_x = peff->rgdwAxes[0] == DIJOFS_X; } /* some of this may look funky, but it's 'cause the linux driver and directx have @@ -578,15 +574,15 @@ } } else { /* two axes */ if (peff->dwFlags & DIEFF_CARTESIAN) { - /* avoid divide-by-zero */ - if (peff->rglDirection[1] == 0) { - if (peff->rglDirection[0] >= 0) - This->effect.direction = 0x4000; - else if (peff->rglDirection[0] < 0) - This->effect.direction = 0xC000; + LONG x, y; + if (This->first_axis_is_x) { + x = peff->rglDirection[0]; + y = peff->rglDirection[1]; } else { - This->effect.direction = (int)(atan(peff->rglDirection[0] / peff->rglDirection[1]) * 0x7FFF / (3 * M_PI)); + x = peff->rglDirection[1]; + y = peff->rglDirection[0]; } + This->effect.direction = (int)((3 * M_PI / 2 - atan2(y, x)) * -0x7FFF / M_PI); } else { /* Polar and spherical are the same for 2 axes */ /* Precision is important here, so we do double math with exact constants */ @@ -627,8 +623,10 @@ /* Gain and Sample Period settings are not supported by the linux * event system */ - if (dwFlags & DIEP_GAIN) + if (dwFlags & DIEP_GAIN) { This->gain = 0xFFFF * peff->dwGain / 10000; + TRACE("Effect gain requested but no effect gain functionality present.\n"); + } if (dwFlags & DIEP_SAMPLEPERIOD) TRACE("Sample period requested but no sample period functionality present.\n"); Modified: trunk/reactos/dll/directx/dinput/joystick_linuxinput.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput/joystic…
============================================================================== --- trunk/reactos/dll/directx/dinput/joystick_linuxinput.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput/joystick_linuxinput.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -194,6 +194,7 @@ struct list ff_effects; int ff_state; int ff_autocenter; + int ff_gain; }; static void fake_current_js_state(JoystickImpl *ji); @@ -461,6 +462,7 @@ Instead, track it with ff_autocenter, and assume it's initialy enabled. */ newDevice->ff_autocenter = 1; + newDevice->ff_gain = 0xFFFF; InitializeCriticalSection(&newDevice->base.crit); newDevice->base.crit.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": JoystickImpl*->base.crit"); @@ -670,12 +672,16 @@ } else { + struct input_event event; + + event.type = EV_FF; + event.code = FF_GAIN; + event.value = This->ff_gain; + if (write(This->joyfd, &event, sizeof(event)) == -1) + ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno)); if (!This->ff_autocenter) { - struct input_event event; - /* Disable autocenter. */ - event.type = EV_FF; event.code = FF_AUTOCENTER; event.value = 0; if (write(This->joyfd, &event, sizeof(event)) == -1) @@ -974,6 +980,23 @@ fake_current_js_state(This); break; } + case (DWORD_PTR)DIPROP_FFGAIN: { + LPCDIPROPDWORD pd = (LPCDIPROPDWORD)ph; + + TRACE("DIPROP_FFGAIN(%d)\n", pd->dwData); + This->ff_gain = MulDiv(pd->dwData, 0xFFFF, 10000); + if (This->base.acquired) { + /* Update immediately. */ + struct input_event event; + + event.type = EV_FF; + event.code = FF_GAIN; + event.value = This->ff_gain; + if (write(This->joyfd, &event, sizeof(event)) == -1) + ERR("Failed to set gain (%i): %d %s\n", This->ff_gain, errno, strerror(errno)); + } + break; + } default: return IDirectInputDevice2AImpl_SetProperty(iface, rguid, ph); } @@ -1083,6 +1106,14 @@ pd->dwData = This->ff_autocenter ? DIPROPAUTOCENTER_ON : DIPROPAUTOCENTER_OFF; TRACE("autocenter(%d)\n", pd->dwData); + break; + } + case (DWORD_PTR) DIPROP_FFGAIN: + { + LPDIPROPDWORD pd = (LPDIPROPDWORD)pdiph; + + pd->dwData = MulDiv(This->ff_gain, 10000, 0xFFFF); + TRACE("DIPROP_FFGAIN(%d)\n", pd->dwData); break; } Modified: trunk/reactos/dll/directx/dinput/regsvr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput/regsvr.…
============================================================================== --- trunk/reactos/dll/directx/dinput/regsvr.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput/regsvr.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -204,7 +204,7 @@ WCHAR buf[39]; StringFromGUID2(list->iid, buf, 39); - //res = RegDeleteTreeW(interface_key, buf); + res = RegDeleteTreeW(interface_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; } @@ -312,18 +312,18 @@ WCHAR buf[39]; StringFromGUID2(list->clsid, buf, 39); - //res = RegDeleteTreeW(coclass_key, buf); + res = RegDeleteTreeW(coclass_key, buf); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; if (list->progid) { - // res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); + res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } if (list->viprogid) { - //res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid); + res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->viprogid); if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; if (res != ERROR_SUCCESS) goto error_close_coclass_key; } Modified: trunk/reactos/dll/directx/dinput8/dinput8.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput8/dinput…
============================================================================== --- trunk/reactos/dll/directx/dinput8/dinput8.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput8/dinput8.rbuild [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -3,6 +3,7 @@ <module name="dinput8" type="win32dll" entrypoint="0" baseaddress="${BASEADDRESS_DINPUT8}" installbase="system32" installname="dinput8.dll" unicode="yes"> <autoregister infsection="OleControlDlls" type="DllRegisterServer" /> <importlibrary definition="dinput8.spec" /> + <define name="_WIN32_WINNT">0x600</define> <include base="dinput8">.</include> <include base="ReactOS">include/reactos/wine</include> <library>wine</library> @@ -17,4 +18,5 @@ <library>dinput</library> <file>version.rc</file> <file>dinput8_main.c</file> + <file>regsvr.c</file> </module> Modified: trunk/reactos/dll/directx/dinput8/dinput8_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput8/dinput…
============================================================================== --- trunk/reactos/dll/directx/dinput8/dinput8_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput8/dinput8_main.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -1,6 +1,7 @@ /* DirectInput 8 * * Copyright 2002 TransGaming Technologies Inc. + * Copyright 2006 Roderick Colenbrander * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -14,13 +15,15 @@ * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "config.h" #include <assert.h> #include <stdarg.h> #include <string.h> + +#define COBJMACROS #include "wine/debug.h" #include "windef.h" @@ -29,25 +32,124 @@ #include "dinput.h" WINE_DEFAULT_DEBUG_CHANNEL(dinput); +static LONG dll_count; + +/* + * Dll lifetime tracking declaration + */ +static void LockModule(void) +{ + InterlockedIncrement(&dll_count); +} + +static void UnlockModule(void) +{ + InterlockedDecrement(&dll_count); +} /****************************************************************************** * DirectInput8Create (DINPUT8.@) */ -HRESULT WINAPI DirectInput8Create( - HINSTANCE hinst, DWORD dwVersion, REFIID riid, LPVOID *ppDI, - LPUNKNOWN punkOuter -) { - return DirectInputCreateEx(hinst, dwVersion, riid, ppDI, punkOuter); +HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riid, LPVOID *ppDI, LPUNKNOWN punkOuter) { + HRESULT hr; + + TRACE("hInst (%p), dwVersion: %d, riid (%s), punkOuter (%p))\n", hinst, dwVersion, debugstr_guid(riid), punkOuter); + + /* The specified version needs to be dinput8 (0x800) or higher */ + if(dwVersion < 0x800) + return DIERR_OLDDIRECTINPUTVERSION; + + if( !(IsEqualGUID(&IID_IDirectInput8A, riid) || IsEqualGUID(&IID_IDirectInput8W, riid) || IsEqualGUID(&IID_IUnknown, riid)) ) + return DIERR_INVALIDPARAM; + + CoInitialize(NULL); + + hr = CoCreateInstance( &CLSID_DirectInput8, punkOuter, CLSCTX_INPROC_SERVER, riid, ppDI); + if(FAILED(hr)) { + ERR("CoCreateInstance failed with hr = %d; Try running wineprefixcreate to fix it.\n", hr); + return DIERR_INVALIDPARAM; + } + + CoUninitialize(); + + /* When aggregation is used (punkOuter!=NULL) the application needs to manually call Initialize. */ + if(punkOuter == NULL && IsEqualGUID(&IID_IDirectInput8A, riid)) { + LPDIRECTINPUTA DI = *ppDI; + IDirectInput8_Initialize(DI, hinst, dwVersion); + } + + if(punkOuter == NULL && IsEqualGUID(&IID_IDirectInput8W, riid)) { + LPDIRECTINPUTW DI = *ppDI; + IDirectInput8_Initialize(DI, hinst, dwVersion); + } + + return S_OK; } + +/******************************************************************************* + * DirectInput8 ClassFactory + */ +typedef struct +{ + /* IUnknown fields */ + const IClassFactoryVtbl *lpVtbl; +} IClassFactoryImpl; + +static HRESULT WINAPI DI8CF_QueryInterface(LPCLASSFACTORY iface,REFIID riid,LPVOID *ppobj) { + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + FIXME("%p %s %p\n",This,debugstr_guid(riid),ppobj); + return E_NOINTERFACE; +} + +static ULONG WINAPI DI8CF_AddRef(LPCLASSFACTORY iface) { + LockModule(); + return 2; +} + +static ULONG WINAPI DI8CF_Release(LPCLASSFACTORY iface) { + UnlockModule(); + return 1; +} + +static HRESULT WINAPI DI8CF_CreateInstance(LPCLASSFACTORY iface,LPUNKNOWN pOuter,REFIID riid,LPVOID *ppobj) { + IClassFactoryImpl *This = (IClassFactoryImpl *)iface; + + TRACE("(%p)->(%p,%s,%p)\n",This,pOuter,debugstr_guid(riid),ppobj); + if( IsEqualGUID( &IID_IDirectInput8A, riid ) || IsEqualGUID( &IID_IDirectInput8W, riid ) || IsEqualGUID( &IID_IUnknown, riid )) { + return DirectInputCreateEx(0, DIRECTINPUT_VERSION, riid, ppobj, pOuter); + } + + ERR("(%p,%p,%s,%p) Interface not found!\n",This,pOuter,debugstr_guid(riid),ppobj); + return E_NOINTERFACE; +} + +static HRESULT WINAPI DI8CF_LockServer(LPCLASSFACTORY iface,BOOL dolock) { + TRACE("(%p)->(%d)\n", iface, dolock); + + if(dolock) + LockModule(); + else + UnlockModule(); + + return S_OK; +} + +static const IClassFactoryVtbl DI8CF_Vtbl = { + DI8CF_QueryInterface, + DI8CF_AddRef, + DI8CF_Release, + DI8CF_CreateInstance, + DI8CF_LockServer +}; +static IClassFactoryImpl DINPUT8_CF = { &DI8CF_Vtbl }; + /*********************************************************************** * DllCanUnloadNow (DINPUT8.@) */ HRESULT WINAPI DllCanUnloadNow(void) { - FIXME("(void): stub\n"); - - return S_FALSE; + return dll_count == 0 ? S_OK : S_FALSE; } /*********************************************************************** @@ -55,28 +157,13 @@ */ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv) { - FIXME("(%p, %p, %p): stub\n", debugstr_guid(rclsid), - debugstr_guid(riid), ppv); + TRACE("(%s,%s,%p)\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); + if ( IsEqualCLSID( &IID_IClassFactory, riid ) ) { + *ppv = &DINPUT8_CF; + IClassFactory_AddRef((IClassFactory*)*ppv); + return S_OK; + } + FIXME("(%s,%s,%p): no interface found.\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv); return CLASS_E_CLASSNOTAVAILABLE; } - -/*********************************************************************** - * DllRegisterServer (DINPUT8.@) - */ -HRESULT WINAPI DllRegisterServer(void) -{ - FIXME("(void): stub\n"); - - return S_OK; -} - -/*********************************************************************** - * DllUnregisterServer (DINPUT8.@) - */ -HRESULT WINAPI DllUnregisterServer(void) -{ - FIXME("(void): stub\n"); - - return S_OK; -} Added: trunk/reactos/dll/directx/dinput8/regsvr.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput8/regsvr…
============================================================================== --- trunk/reactos/dll/directx/dinput8/regsvr.c (added) +++ trunk/reactos/dll/directx/dinput8/regsvr.c [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -1,0 +1,294 @@ +/* + * self-registerable dll functions for dinput8.dll + * + * Copyright (C) 2003 John K. Hohm + * Copyright (C) 2007 Francois Gouget for CodeWeavers + * + * 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 <stdarg.h> +#include <string.h> + +#include "windef.h" +#include "winbase.h" +#include "winreg.h" +#include "wingdi.h" +#include "winuser.h" +#include "winerror.h" + +#include "dinput.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(dinput); + +/* + * Near the bottom of this file are the exported DllRegisterServer and + * DllUnregisterServer, which make all this worthwhile. + */ + +/*********************************************************************** + * interface for self-registering + */ + +struct regsvr_coclass +{ + CLSID const *clsid; /* NULL for end of list */ + LPCSTR name; /* can be NULL to omit */ + LPCSTR ips; /* can be NULL to omit */ + LPCSTR ips32; /* can be NULL to omit */ + LPCSTR ips32_tmodel; /* can be NULL to omit */ + LPCSTR clsid_str; /* can be NULL to omit */ + LPCSTR progid; /* can be NULL to omit */ +}; + +static HRESULT register_coclasses(struct regsvr_coclass const *list); +static HRESULT unregister_coclasses(struct regsvr_coclass const *list); + +/*********************************************************************** + * static string constants + */ +static WCHAR const interface_keyname[10] = { + 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', 'e', 0 }; +static WCHAR const base_ifa_keyname[14] = { + 'B', 'a', 's', 'e', 'I', 'n', 't', 'e', 'r', 'f', 'a', 'c', + 'e', 0 }; +static WCHAR const num_methods_keyname[11] = { + 'N', 'u', 'm', 'M', 'e', 't', 'h', 'o', 'd', 's', 0 }; +static WCHAR const ps_clsid_keyname[15] = { + 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', + 'i', 'd', 0 }; +static WCHAR const ps_clsid32_keyname[17] = { + 'P', 'r', 'o', 'x', 'y', 'S', 't', 'u', 'b', 'C', 'l', 's', + 'i', 'd', '3', '2', 0 }; +static WCHAR const clsid_keyname[6] = { + 'C', 'L', 'S', 'I', 'D', 0 }; +static WCHAR const ips_keyname[13] = { + 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', + 0 }; +static WCHAR const ips32_keyname[15] = { + 'I', 'n', 'P', 'r', 'o', 'c', 'S', 'e', 'r', 'v', 'e', 'r', + '3', '2', 0 }; +static WCHAR const progid_keyname[7] = { + 'P', 'r', 'o', 'g', 'I', 'D', 0 }; +static char const tmodel_valuename[] = "ThreadingModel"; + +/*********************************************************************** + * static helper functions + */ +static LONG register_key_defvalueW(HKEY base, WCHAR const *name, + WCHAR const *value); +static LONG register_key_defvalueA(HKEY base, WCHAR const *name, + char const *value); + +/*********************************************************************** + * register_coclasses + */ +static HRESULT register_coclasses(struct regsvr_coclass const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY coclass_key; + + res = RegCreateKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &coclass_key, NULL); + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->clsid; ++list) { + WCHAR buf[39]; + HKEY clsid_key; + + StringFromGUID2(list->clsid, buf, 39); + res = RegCreateKeyExW(coclass_key, buf, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &clsid_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + + if (list->name) { + res = RegSetValueExA(clsid_key, NULL, 0, REG_SZ, + (CONST BYTE*)(list->name), + strlen(list->name) + 1); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->ips) { + res = register_key_defvalueA(clsid_key, ips_keyname, list->ips); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->ips32) { + HKEY ips32_key; + + res = RegCreateKeyExW(clsid_key, ips32_keyname, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, + &ips32_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = RegSetValueExA(ips32_key, NULL, 0, REG_SZ, + (CONST BYTE*)list->ips32, + lstrlenA(list->ips32) + 1); + if (res == ERROR_SUCCESS && list->ips32_tmodel) + res = RegSetValueExA(ips32_key, tmodel_valuename, 0, REG_SZ, + (CONST BYTE*)list->ips32_tmodel, + strlen(list->ips32_tmodel) + 1); + RegCloseKey(ips32_key); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->clsid_str) { + res = register_key_defvalueA(clsid_key, clsid_keyname, + list->clsid_str); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + if (list->progid) { + HKEY progid_key; + + res = register_key_defvalueA(clsid_key, progid_keyname, + list->progid); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = RegCreateKeyExA(HKEY_CLASSES_ROOT, list->progid, 0, + NULL, 0, KEY_READ | KEY_WRITE, NULL, + &progid_key, NULL); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + + res = register_key_defvalueW(progid_key, clsid_keyname, buf); + RegCloseKey(progid_key); + if (res != ERROR_SUCCESS) goto error_close_clsid_key; + } + + error_close_clsid_key: + RegCloseKey(clsid_key); + } + +error_close_coclass_key: + RegCloseKey(coclass_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * unregister_coclasses + */ +static HRESULT unregister_coclasses(struct regsvr_coclass const *list) +{ + LONG res = ERROR_SUCCESS; + HKEY coclass_key; + + res = RegOpenKeyExW(HKEY_CLASSES_ROOT, clsid_keyname, 0, + KEY_READ | KEY_WRITE, &coclass_key); + if (res == ERROR_FILE_NOT_FOUND) return S_OK; + if (res != ERROR_SUCCESS) goto error_return; + + for (; res == ERROR_SUCCESS && list->clsid; ++list) { + WCHAR buf[39]; + + StringFromGUID2(list->clsid, buf, 39); + res = RegDeleteTreeW(coclass_key, buf); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + + if (list->progid) { + res = RegDeleteTreeA(HKEY_CLASSES_ROOT, list->progid); + if (res == ERROR_FILE_NOT_FOUND) res = ERROR_SUCCESS; + if (res != ERROR_SUCCESS) goto error_close_coclass_key; + } + } + +error_close_coclass_key: + RegCloseKey(coclass_key); +error_return: + return res != ERROR_SUCCESS ? HRESULT_FROM_WIN32(res) : S_OK; +} + +/*********************************************************************** + * regsvr_key_defvalueW + */ +static LONG register_key_defvalueW( + HKEY base, + WCHAR const *name, + WCHAR const *value) +{ + LONG res; + HKEY key; + + res = RegCreateKeyExW(base, name, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &key, NULL); + if (res != ERROR_SUCCESS) return res; + res = RegSetValueExW(key, NULL, 0, REG_SZ, (CONST BYTE*)value, + (lstrlenW(value) + 1) * sizeof(WCHAR)); + RegCloseKey(key); + return res; +} + +/*********************************************************************** + * regsvr_key_defvalueA + */ +static LONG register_key_defvalueA( + HKEY base, + WCHAR const *name, + char const *value) +{ + LONG res; + HKEY key; + + res = RegCreateKeyExW(base, name, 0, NULL, 0, + KEY_READ | KEY_WRITE, NULL, &key, NULL); + if (res != ERROR_SUCCESS) return res; + res = RegSetValueExA(key, NULL, 0, REG_SZ, (CONST BYTE*)value, + lstrlenA(value) + 1); + RegCloseKey(key); + return res; +} + +/*********************************************************************** + * coclass list + */ + +static struct regsvr_coclass const coclass_list[] = { + { &CLSID_DirectInput8, + "DirectInput8 Object", + NULL, + "dinput8.dll", + "Both" + }, + { NULL } /* list terminator */ +}; + +/*********************************************************************** + * DllRegisterServer (DINPUT8.@) + */ +HRESULT WINAPI DllRegisterServer(void) +{ + HRESULT hr; + + TRACE("\n"); + + hr = register_coclasses(coclass_list); + return hr; +} + +/*********************************************************************** + * DllUnregisterServer (DINPUT8.@) + */ +HRESULT WINAPI DllUnregisterServer(void) +{ + HRESULT hr; + + TRACE("\n"); + + hr = unregister_coclasses(coclass_list); + return hr; +} Propchange: trunk/reactos/dll/directx/dinput8/regsvr.c ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/directx/dinput8/version.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/directx/dinput8/versio…
============================================================================== --- trunk/reactos/dll/directx/dinput8/version.rc [iso-8859-1] (original) +++ trunk/reactos/dll/directx/dinput8/version.rc [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -13,7 +13,7 @@ * * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #define WINE_FILEDESCRIPTION_STR "Wine DirectInput 8" @@ -22,6 +22,5 @@ #define WINE_FILEVERSION_STR "5.1.2600.881" #define WINE_PRODUCTVERSION 5,1,2600,881 #define WINE_PRODUCTVERSION_STR "5.1" -#define WINE_PRODUCTNAME_STR "DirectX" #include "wine/wine_common_ver.rc" Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sun Feb 8 08:34:49 2009 @@ -124,7 +124,7 @@ reactos/dll/win32/wmi # Autosync reactos/dll/win32/wtsapi32 # Autosync reactos/dll/directx/dinput # Synced to Wine-1_1_4 -reactos/dll/directx/dinput8 # Synced to Wine-0_9_5 +reactos/dll/directx/dinput8 # Synced to Wine-1_1_4 reactos/dll/directx/dplay # Synced to Wine-0_9_5 reactos/dll/directx/dplayx # Synced to Wine-0_9_5 reactos/dll/directx/dxdiagn # Synced to Wine-0_9_5
15 years, 10 months
1
0
0
0
[gschneider] 39483: StretchBlt: +clipping -bugs - Additional checks (coordinates switched, NOOP, degenerate, outside of valid region, ...) and offset source rectangle in internal StretchBlt functions - Fixes the StretchBlt problem in bug #3477, bug #3656 completely as well as bug #4089 and some issues reported elsewhere (bug #3325 for example) - Increment horizontal position even if outside of the clipping rect (Evgeny Boltik, <BSTSoft AT narod DOT ru>) - One small problem is left, one cookie fo
by gschneider@svn.reactos.org
Author: gschneider Date: Sun Feb 8 08:25:33 2009 New Revision: 39483 URL:
http://svn.reactos.org/svn/reactos?rev=39483&view=rev
Log: StretchBlt: +clipping -bugs - Additional checks (coordinates switched, NOOP, degenerate, outside of valid region, ...) and offset source rectangle in internal StretchBlt functions - Fixes the StretchBlt problem in bug #3477, bug #3656 completely as well as bug #4089 and some issues reported elsewhere (bug #3325 for example) - Increment horizontal position even if outside of the clipping rect (Evgeny Boltik, <BSTSoft AT narod DOT ru>) - One small problem is left, one cookie for the person who reproduces it, two for the one that fixes it ;-) Modified: trunk/reactos/subsystems/win32/win32k/dib/dibXXbpp.c trunk/reactos/subsystems/win32/win32k/eng/bitblt.c Modified: trunk/reactos/subsystems/win32/win32k/dib/dibXXbpp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/di…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/dib/dibXXbpp.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/dib/dibXXbpp.c [iso-8859-1] Sun Feb 8 08:25:33 2009 @@ -160,13 +160,13 @@ fnDest_PutPixel(DestSurf, DesX, DesY, color); - sx += SrcZoomXHight; - sx_dec += SrcZoomXLow; - if (sx_dec >= sx_max) - { - sx++; - sx_dec -= sx_max; - } + } + sx += SrcZoomXHight; + sx_dec += SrcZoomXLow; + if (sx_dec >= sx_max) + { + sx++; + sx_dec -= sx_max; } } Modified: trunk/reactos/subsystems/win32/win32k/eng/bitblt.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/en…
============================================================================== --- trunk/reactos/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/win32/win32k/eng/bitblt.c [iso-8859-1] Sun Feb 8 08:25:33 2009 @@ -825,7 +825,6 @@ { //
www.osr.com/ddk/graphics/gdifncs_0bs7.htm
- POINTL InputPoint; RECTL InputRect; RECTL OutputRect; POINTL Translate; @@ -838,23 +837,79 @@ POINTL AdjustedBrushOrigin; BOOL UsesSource = ROP4_USES_SOURCE(Mode); - InputRect.left = prclSrc->left; - InputRect.right = prclSrc->right; - InputRect.top = prclSrc->top; - InputRect.bottom = prclSrc->bottom; - + if (Mode == R4_NOOP) + { + /* Copy destination onto itself: nop */ + return TRUE; + } + + OutputRect = *prclDest; + if (OutputRect.right < OutputRect.left) + { + OutputRect.left = prclDest->right; + OutputRect.right = prclDest->left; + } + if (OutputRect.bottom < OutputRect.top) + { + OutputRect.left = prclDest->right; + OutputRect.right = prclDest->left; + } + + InputRect = *prclSrc; if (UsesSource) { - if (! IntEngEnter(&EnterLeaveSource, psoSource, &InputRect, TRUE, &Translate, &psoInput)) + if (NULL == prclSrc) { return FALSE; } - } - - InputPoint.x = InputRect.left + Translate.x; - InputPoint.y = InputRect.top + Translate.y; - - OutputRect = *prclDest; + + /* Make sure we don't try to copy anything outside the valid source region */ + if (InputRect.left < 0) + { + OutputRect.left -= InputRect.left; + InputRect.left = 0; + } + if (InputRect.top < 0) + { + OutputRect.top -= InputRect.top; + InputRect.top = 0; + } + + if (! IntEngEnter(&EnterLeaveSource, psoSource, &InputRect, TRUE, + &Translate, &psoInput)) + { + return FALSE; + } + + InputRect.left += Translate.x; + InputRect.right += Translate.x; + InputRect.top += Translate.y; + InputRect.bottom += Translate.y; + } + + if (NULL != ClipRegion) + { + if (OutputRect.left < ClipRegion->rclBounds.left) + { + InputRect.left += ClipRegion->rclBounds.left - OutputRect.left; + OutputRect.left = ClipRegion->rclBounds.left; + } + if (ClipRegion->rclBounds.right < OutputRect.right) + { + InputRect.right -= OutputRect.right - ClipRegion->rclBounds.right; + OutputRect.right = ClipRegion->rclBounds.right; + } + if (OutputRect.top < ClipRegion->rclBounds.top) + { + InputRect.top += ClipRegion->rclBounds.top - OutputRect.top; + OutputRect.top = ClipRegion->rclBounds.top; + } + if (ClipRegion->rclBounds.bottom < OutputRect.bottom) + { + InputRect.bottom -= OutputRect.bottom - ClipRegion->rclBounds.bottom; + OutputRect.bottom = ClipRegion->rclBounds.bottom; + } + } /* Check for degenerate case: if height or width of OutputRect is 0 pixels there's nothing to do */ @@ -876,12 +931,12 @@ return FALSE; } - OutputRect.left = prclDest->left + Translate.x; - OutputRect.right = prclDest->right + Translate.x; - OutputRect.top = prclDest->top + Translate.y; - OutputRect.bottom = prclDest->bottom + Translate.y; - - if (NULL != BrushOrigin) + OutputRect.left += Translate.x; + OutputRect.right += Translate.x; + OutputRect.top += Translate.y; + OutputRect.bottom += Translate.y; + + if (BrushOrigin) { AdjustedBrushOrigin.x = BrushOrigin->x + Translate.x; AdjustedBrushOrigin.y = BrushOrigin->y + Translate.y; @@ -906,7 +961,6 @@ { BltRectFunc = CallDibStretchBlt; } - Ret = (*BltRectFunc)(psoOutput, psoInput, Mask, ClipRegion, ColorTranslation, &OutputRect, &InputRect, MaskOrigin, @@ -939,12 +993,80 @@ POINT MaskOrigin; SURFACE *psurfDest; SURFACE *psurfSource = NULL; + RECTL InputClippedRect; + RECTL InputRect; + RECTL OutputRect; BOOL UsesSource = ROP4_USES_SOURCE(ROP); + LONG InputClWidth, InputClHeight, InputWidth, InputHeight; ASSERT(psoDest); psurfDest = CONTAINING_RECORD(psoDest, SURFACE, SurfObj); ASSERT(psurfDest); - + ASSERT(DestRect); + + InputClippedRect = *DestRect; + if (InputClippedRect.right < InputClippedRect.left) + { + InputClippedRect.left = DestRect->right; + InputClippedRect.right = DestRect->left; + } + if (InputClippedRect.bottom < InputClippedRect.top) + { + InputClippedRect.top = DestRect->bottom; + InputClippedRect.bottom = DestRect->top; + } + + if (UsesSource) + { + if (NULL == SourceRect || NULL == psoSource) + { + return FALSE; + } + InputRect = *SourceRect; + + /* Make sure we don't try to copy anything outside the valid source region */ + if (InputRect.left < 0) + { + InputClippedRect.left -= InputRect.left; + InputRect.left = 0; + } + if (InputRect.top < 0) + { + InputClippedRect.top -= InputRect.top; + InputRect.top = 0; + } + + if (InputClippedRect.right < InputClippedRect.left || + InputClippedRect.bottom < InputClippedRect.top) + { + /* Everything clipped away, nothing to do */ + return TRUE; + } + } + + if (ClipRegion) + { + if (! EngIntersectRect(&OutputRect, &InputClippedRect, + &ClipRegion->rclBounds)) + { + return TRUE; + } + /* Update source rect */ + InputClWidth = InputClippedRect.right - InputClippedRect.left; + InputClHeight = InputClippedRect.bottom - InputClippedRect.top; + InputWidth = InputRect.right - InputRect.left; + InputHeight = InputRect.bottom - InputRect.top; + + InputRect.left += (InputWidth * (OutputRect.left - InputClippedRect.left)) / InputClWidth; + InputRect.right -= (InputWidth * (InputClippedRect.right - OutputRect.right)) / InputClWidth; + InputRect.top += (InputHeight * (OutputRect.top - InputClippedRect.top)) / InputClHeight; + InputRect.bottom -= (InputHeight * (InputClippedRect.bottom - OutputRect.bottom)) / InputClHeight; + } + else + { + OutputRect = InputClippedRect; + } + if (pMaskOrigin != NULL) { MaskOrigin.x = pMaskOrigin->x; MaskOrigin.y = pMaskOrigin->y; @@ -952,21 +1074,19 @@ /* No success yet */ ret = FALSE; - ASSERT(DestRect); SURFACE_LockBitmapBits(psurfDest); - MouseSafetyOnDrawStart(psoDest, DestRect->left, DestRect->top, - DestRect->right, DestRect->bottom); + MouseSafetyOnDrawStart(psoDest, OutputRect.left, OutputRect.top, + OutputRect.right, OutputRect.bottom); if (UsesSource) { psurfSource = CONTAINING_RECORD(psoSource, SURFACE, SurfObj); - ASSERT(SourceRect); if (psoSource != psoDest) { SURFACE_LockBitmapBits(psurfSource); } - MouseSafetyOnDrawStart(psoSource, SourceRect->left, SourceRect->top, - SourceRect->right, SourceRect->bottom); + MouseSafetyOnDrawStart(psoSource, InputRect.left, InputRect.top, + InputRect.right, InputRect.bottom); } /* Prepare color adjustment */ @@ -978,14 +1098,14 @@ // FIXME: MaskOrigin is always NULL ! ret = GDIDEVFUNCS(psoDest).StretchBlt( psoDest, (UsesSource) ? psoSource : NULL, MaskSurf, ClipRegion, ColorTranslation, - &ca, BrushOrigin, DestRect, SourceRect, NULL, ROP); + &ca, BrushOrigin, &OutputRect, &InputRect, NULL, ROP); } if (! ret) { // FIXME: see previous fixme ret = EngStretchBlt(psoDest, psoSource, MaskSurf, ClipRegion, ColorTranslation, - &ca, BrushOrigin, DestRect, SourceRect, NULL, ROP); + &ca, BrushOrigin, &OutputRect, &InputRect, NULL, ROP); } if (UsesSource)
15 years, 10 months
1
0
0
0
[cwittich] 39482: sync CredReadDomainCredentialsA/W with wine 1.14
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Feb 8 04:34:09 2009 New Revision: 39482 URL:
http://svn.reactos.org/svn/reactos?rev=39482&view=rev
Log: sync CredReadDomainCredentialsA/W with wine 1.14 Modified: trunk/reactos/dll/win32/advapi32/sec/cred.c Modified: trunk/reactos/dll/win32/advapi32/sec/cred.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/sec/cre…
============================================================================== --- trunk/reactos/dll/win32/advapi32/sec/cred.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/sec/cred.c [iso-8859-1] Sun Feb 8 04:34:09 2009 @@ -1700,26 +1700,168 @@ return TRUE; } -BOOL -WINAPI -CredReadDomainCredentialsW(PCREDENTIAL_TARGET_INFORMATIONW TargetInfo, - DWORD Flags, - DWORD *Count, - PCREDENTIALW **Credential) -{ - WARN("Not implemented\n"); +/****************************************************************************** + * CredReadDomainCredentialsW [ADVAPI32.@] + */ +BOOL WINAPI CredReadDomainCredentialsW(PCREDENTIAL_TARGET_INFORMATIONW TargetInformation, DWORD Flags, + DWORD *Size, PCREDENTIALW **Credentials) +{ + FIXME("(%p, 0x%x, %p, %p) stub\n", TargetInformation, Flags, Size, Credentials); + + /* follow Windows behavior - do not test for NULL, initialize early */ + *Size = 0; + *Credentials = NULL; + if (!TargetInformation) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + SetLastError(ERROR_NOT_FOUND); return FALSE; } -BOOL -WINAPI -CredReadDomainCredentialsA(PCREDENTIAL_TARGET_INFORMATIONA TargetInfo, - DWORD Flags, - DWORD *Count, - PCREDENTIALA **Credential) -{ - WARN("Not implemented\n"); - return FALSE; +/****************************************************************************** + * CredReadDomainCredentialsA [ADVAPI32.@] + */ +BOOL WINAPI CredReadDomainCredentialsA(PCREDENTIAL_TARGET_INFORMATIONA TargetInformation, + DWORD Flags, DWORD *Size, PCREDENTIALA **Credentials) +{ + PCREDENTIAL_TARGET_INFORMATIONW TargetInformationW; + DWORD len, i; + WCHAR *buffer, *end; + BOOL ret; + PCREDENTIALW* CredentialsW; + + TRACE("(%p, 0x%x, %p, %p)\n", TargetInformation, Flags, Size, Credentials); + + /* follow Windows behavior - do not test for NULL, initialize early */ + *Size = 0; + *Credentials = NULL; + + if (!TargetInformation) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + len = sizeof(*TargetInformationW); + if (TargetInformation->TargetName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->TargetName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->NetbiosServerName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->NetbiosServerName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->DnsServerName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsServerName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->NetbiosDomainName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->NetbiosDomainName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->DnsDomainName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsDomainName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->DnsTreeName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsTreeName, -1, NULL, 0) * sizeof(WCHAR); + if (TargetInformation->PackageName) + len += MultiByteToWideChar(CP_ACP, 0, TargetInformation->PackageName, -1, NULL, 0) * sizeof(WCHAR); + + TargetInformationW = HeapAlloc(GetProcessHeap(), 0, len); + if (!TargetInformationW) + { + SetLastError(ERROR_OUTOFMEMORY); + return FALSE; + } + buffer = (WCHAR*)(TargetInformationW + 1); + end = (WCHAR *)((char *)TargetInformationW + len); + + if (TargetInformation->TargetName) + { + TargetInformationW->TargetName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->TargetName, -1, + TargetInformationW->TargetName, end - buffer); + } else + TargetInformationW->TargetName = NULL; + + if (TargetInformation->NetbiosServerName) + { + TargetInformationW->NetbiosServerName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->NetbiosServerName, -1, + TargetInformationW->NetbiosServerName, end - buffer); + } else + TargetInformationW->NetbiosServerName = NULL; + + if (TargetInformation->DnsServerName) + { + TargetInformationW->DnsServerName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsServerName, -1, + TargetInformationW->DnsServerName, end - buffer); + } else + TargetInformationW->DnsServerName = NULL; + + if (TargetInformation->NetbiosDomainName) + { + TargetInformationW->NetbiosDomainName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->NetbiosDomainName, -1, + TargetInformationW->NetbiosDomainName, end - buffer); + } else + TargetInformationW->NetbiosDomainName = NULL; + + if (TargetInformation->DnsDomainName) + { + TargetInformationW->DnsDomainName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsDomainName, -1, + TargetInformationW->DnsDomainName, end - buffer); + } else + TargetInformationW->DnsDomainName = NULL; + + if (TargetInformation->DnsTreeName) + { + TargetInformationW->DnsTreeName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->DnsTreeName, -1, + TargetInformationW->DnsTreeName, end - buffer); + } else + TargetInformationW->DnsTreeName = NULL; + + if (TargetInformation->PackageName) + { + TargetInformationW->PackageName = buffer; + buffer += MultiByteToWideChar(CP_ACP, 0, TargetInformation->PackageName, -1, + TargetInformationW->PackageName, end - buffer); + } else + TargetInformationW->PackageName = NULL; + + TargetInformationW->Flags = TargetInformation->Flags; + TargetInformationW->CredTypeCount = TargetInformation->CredTypeCount; + TargetInformationW->CredTypes = TargetInformation->CredTypes; + + ret = CredReadDomainCredentialsW(TargetInformationW, Flags, Size, &CredentialsW); + + HeapFree(GetProcessHeap(), 0, TargetInformationW); + + if (ret) + { + char *buf; + + len = *Size * sizeof(PCREDENTIALA); + for (i = 0; i < *Size; i++) + convert_PCREDENTIALW_to_PCREDENTIALA(CredentialsW[i], NULL, &len); + + *Credentials = HeapAlloc(GetProcessHeap(), 0, len); + if (!*Credentials) + { + CredFree(CredentialsW); + SetLastError(ERROR_OUTOFMEMORY); + return FALSE; + } + + buf = (char *)&(*Credentials)[*Size]; + for (i = 0; i < *Size; i++) + { + len = 0; + (*Credentials)[i] = (PCREDENTIALA)buf; + convert_PCREDENTIALW_to_PCREDENTIALA(CredentialsW[i], (*Credentials)[i], &len); + buf += len; + } + + CredFree(CredentialsW); + } + return ret; } BOOL
15 years, 10 months
1
0
0
0
← Newer
1
...
31
32
33
34
35
36
37
...
56
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
Results per page:
10
25
50
100
200