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
2025
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
September 2008
----- 2025 -----
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
ros-diffs@reactos.org
27 participants
747 discussions
Start a n
N
ew thread
[cwittich] 36213: sync cryptnet with wine 1.1.4
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Sep 14 01:01:06 2008 New Revision: 36213 URL:
http://svn.reactos.org/svn/reactos?rev=36213&view=rev
Log: sync cryptnet with wine 1.1.4 Modified: trunk/reactos/dll/win32/cryptnet/cryptnet_main.c Modified: trunk/reactos/dll/win32/cryptnet/cryptnet_main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/cryptnet/cryptne…
============================================================================== --- trunk/reactos/dll/win32/cryptnet/cryptnet_main.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/cryptnet/cryptnet_main.c [iso-8859-1] Sun Sep 14 01:01:06 2008 @@ -219,8 +219,7 @@ pUrlArray->rgwszUrl[pUrlArray->cUrl++] = nextUrl; nextUrl += - (lstrlenW(name->rgAltEntry[j].u.pwszURL) + 1) - * sizeof(WCHAR); + (lstrlenW(name->rgAltEntry[j].u.pwszURL) + 1); } } }
16 years, 3 months
1
0
0
0
[cgutman] 36212: - Call a serialized miniport's Send/SendPackets handler at DISPATCH_LEVEL
by cgutman@svn.reactos.org
Author: cgutman Date: Sun Sep 14 00:30:06 2008 New Revision: 36212 URL:
http://svn.reactos.org/svn/reactos?rev=36212&view=rev
Log: - Call a serialized miniport's Send/SendPackets handler at DISPATCH_LEVEL Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
============================================================================== --- branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sun Sep 14 00:30:06 2008 @@ -752,7 +752,7 @@ { PNDIS_WORK_ITEM NdisWorkItem = WorkItem; PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(NdisWorkItem->Context); - KIRQL OldIrql; + KIRQL OldIrql, RaiseOldIrql; NDIS_STATUS NdisStatus; PVOID WorkItemContext; NDIS_WORK_ITEM_TYPE WorkItemType; @@ -778,27 +778,45 @@ #endif if(Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler) { - NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's SendPackets handler\n")); - - /* - * XXX assumes single-packet - prolly OK since we'll call something - * different on multi-packet sends - */ - (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( - Adapter->NdisMiniportBlock.MiniportAdapterContext, (PPNDIS_PACKET)&WorkItemContext, 1); - NdisStatus = - NDIS_GET_PACKET_STATUS((PNDIS_PACKET)WorkItemContext); - - NDIS_DbgPrint(MAX_TRACE, ("back from miniport's SendPackets handler\n")); + if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE) + { + NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's SendPackets handler\n")); + (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( + Adapter->NdisMiniportBlock.MiniportAdapterContext, (PPNDIS_PACKET)&WorkItemContext, 1); + } + else + { + /* SendPackets is called at DISPATCH_LEVEL for all serialized miniports */ + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); + { + NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's SendPackets handler\n")); + (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendPacketsHandler)( + Adapter->NdisMiniportBlock.MiniportAdapterContext, (PPNDIS_PACKET)&WorkItemContext, 1); + } + KeLowerIrql(RaiseOldIrql); + } + + NdisStatus = NDIS_GET_PACKET_STATUS((PNDIS_PACKET)WorkItemContext); } else { - NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n")); - - NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( - Adapter->NdisMiniportBlock.MiniportAdapterContext, (PNDIS_PACKET)WorkItemContext, 0); - - NDIS_DbgPrint(MAX_TRACE, ("back from miniport's Send handler\n")); + if(Adapter->NdisMiniportBlock.Flags & NDIS_ATTRIBUTE_DESERIALIZE) + { + NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n")); + NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( + Adapter->NdisMiniportBlock.MiniportAdapterContext, (PNDIS_PACKET)WorkItemContext, 0); + NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n")); + } + else + { + /* Send is called at DISPATCH_LEVEL for all serialized miniports */ + KeRaiseIrql(DISPATCH_LEVEL, &RaiseOldIrql); + NDIS_DbgPrint(MAX_TRACE, ("Calling miniport's Send handler\n")); + NdisStatus = (*Adapter->NdisMiniportBlock.DriverHandle->MiniportCharacteristics.SendHandler)( + Adapter->NdisMiniportBlock.MiniportAdapterContext, (PNDIS_PACKET)WorkItemContext, 0); + NDIS_DbgPrint(MAX_TRACE, ("back from miniport's send handler\n")); + KeLowerIrql(RaiseOldIrql); + } } if( NdisStatus != NDIS_STATUS_PENDING ) { NdisMSendComplete
16 years, 3 months
1
0
0
0
[cgutman] 36211: - Change our method of queuing work items so we don't leak anymore
by cgutman@svn.reactos.org
Author: cgutman Date: Sun Sep 14 00:16:32 2008 New Revision: 36211 URL:
http://svn.reactos.org/svn/reactos?rev=36211&view=rev
Log: - Change our method of queuing work items so we don't leak anymore Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
============================================================================== --- branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sun Sep 14 00:16:32 2008 @@ -748,11 +748,10 @@ KeLowerIrql(OldIrql); } -VOID NTAPI MiniportWorker( - IN PDEVICE_OBJECT DeviceObject, - IN PVOID Context) -{ - PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(Context); +VOID NTAPI MiniportWorker(IN PVOID WorkItem) +{ + PNDIS_WORK_ITEM NdisWorkItem = WorkItem; + PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(NdisWorkItem->Context); KIRQL OldIrql; NDIS_STATUS NdisStatus; PVOID WorkItemContext; @@ -858,6 +857,8 @@ break; } } + + ExFreePool(WorkItem); } @@ -876,15 +877,20 @@ * SystemArgument2 = Unused */ { - PIO_WORKITEM WorkItem; - PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); + PNDIS_WORK_ITEM NdisWorkItem; + PWORK_QUEUE_ITEM WorkItem; NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - WorkItem = IoAllocateWorkItem(Adapter->NdisMiniportBlock.DeviceObject); - if( !WorkItem ) return; - - IoQueueWorkItem(WorkItem, MiniportWorker, CriticalWorkQueue, DeferredContext); + NdisWorkItem = ExAllocatePool(NonPagedPool, sizeof(PNDIS_WORK_ITEM)); + + WorkItem = (PWORK_QUEUE_ITEM)NdisWorkItem->WrapperReserved; + + NdisWorkItem->Context = DeferredContext; + + ExInitializeWorkItem(WorkItem, MiniportWorker, NdisWorkItem); + + ExQueueWorkItem(WorkItem, CriticalWorkQueue); }
16 years, 3 months
1
0
0
0
[cwittich] 36210: sync oleaut32 to wine 1.1.4
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Sep 14 00:15:39 2008 New Revision: 36210 URL:
http://svn.reactos.org/svn/reactos?rev=36210&view=rev
Log: sync oleaut32 to wine 1.1.4 Added: trunk/reactos/dll/win32/oleaut32/oleaut32_Zh.rc (with props) trunk/reactos/dll/win32/oleaut32/oleaut32_ocidl.idl (with props) Modified: trunk/reactos/dll/win32/oleaut32/hash.c trunk/reactos/dll/win32/oleaut32/oleaut.c trunk/reactos/dll/win32/oleaut32/oleaut32.rbuild trunk/reactos/dll/win32/oleaut32/oleaut32.rc trunk/reactos/dll/win32/oleaut32/olepicture.c trunk/reactos/dll/win32/oleaut32/safearray.c trunk/reactos/dll/win32/oleaut32/typelib.c trunk/reactos/dll/win32/oleaut32/typelib.spec trunk/reactos/dll/win32/oleaut32/typelib2.c trunk/reactos/dll/win32/oleaut32/usrmarshal.c trunk/reactos/dll/win32/oleaut32/varformat.c trunk/reactos/dll/win32/oleaut32/variant.c trunk/reactos/dll/win32/oleaut32/vartype.c trunk/reactos/dll/win32/oleaut32/version.rc Modified: trunk/reactos/dll/win32/oleaut32/hash.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/hash.c?…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/hash.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/hash.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -486,6 +486,7 @@ /*********************************************************************** * LHashValOfNameSysA (OLEAUT32.166) + * LHashValOfNameSys (TYPELIB.4) * * Produce a string hash value. * Modified: trunk/reactos/dll/win32/oleaut32/oleaut.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut.…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/oleaut.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -807,8 +807,7 @@ return S_OK; /*FALLTHROUGH*/ } - FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid)); - return CLASS_E_CLASSNOTAVAILABLE; + return OLEAUTPS_DllGetClassObject(rclsid, iid, ppv); } /*********************************************************************** Modified: trunk/reactos/dll/win32/oleaut32/oleaut32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut3…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/oleaut32.rbuild [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -31,7 +31,7 @@ <file>oleaut32_oaidl.idl</file> <include base="oleaut32" root="intermediate">.</include> <file>oleaut32.spec</file> - <library>oleaut32_oleaut32_oaidl_proxy</library> + <library>oleaut32_proxy</library> <library>wine</library> <library>ole32</library> <library>rpcrt4</library> @@ -45,7 +45,8 @@ <library>uuid</library> <library>pseh</library> </module> -<module name="oleaut32_oleaut32_oaidl_proxy" type="rpcproxy" allowwarnings="true"> +<module name="oleaut32_proxy" type="rpcproxy" allowwarnings="true"> <file>oleaut32_oaidl.idl</file> + <file>oleaut32_ocidl.idl</file> </module> </group> Modified: trunk/reactos/dll/win32/oleaut32/oleaut32.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut3…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut32.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/oleaut32.rc [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -47,6 +47,7 @@ #include "oleaut32_Sv.rc" #include "oleaut32_Th.rc" #include "oleaut32_Tr.rc" +#include "oleaut32_Zh.rc" #include "oleaut32_Uk.rc" /* Added: trunk/reactos/dll/win32/oleaut32/oleaut32_Zh.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut3…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut32_Zh.rc (added) +++ trunk/reactos/dll/win32/oleaut32/oleaut32_Zh.rc [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1,0 +1,48 @@ +/* + * oleaut32 (Simplified and Traditional Chinese Resources) + * + * Copyright 2008 Hongbo Ni <
hongbo.at.njstar.com
> + * + * 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 + */ + +/* Chinese text is encoded in UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED + +STRINGTABLE DISCARDABLE +{ + IDS_TRUE "ç" + IDS_FALSE "å" + IDS_YES "æ¯" + IDS_NO "å¦" + IDS_ON "å¼" + IDS_OFF "å ³" +} + +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_TRADITIONAL + +STRINGTABLE DISCARDABLE +{ + IDS_TRUE "ç" + IDS_FALSE "å" + IDS_YES "æ¯" + IDS_NO "å¦" + IDS_ON "é" + IDS_OFF "é" +} + +#pragma code_page(default) Propchange: trunk/reactos/dll/win32/oleaut32/oleaut32_Zh.rc ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/dll/win32/oleaut32/oleaut32_ocidl.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/oleaut3…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/oleaut32_ocidl.idl (added) +++ trunk/reactos/dll/win32/oleaut32/oleaut32_ocidl.idl [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1,0 +1,20 @@ +/* + * Copyright 2007 Google (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 + */ + +cpp_quote("#include <winuser.h>") +#include "ocidl.idl" Propchange: trunk/reactos/dll/win32/oleaut32/oleaut32_ocidl.idl ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/dll/win32/oleaut32/olepicture.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/olepict…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/olepicture.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1365,6 +1365,8 @@ DIB_RGB_COLORS ); DeleteDC(hdcref); + if (This->desc.u.bmp.hbitmap == 0) + return E_FAIL; This->desc.picType = PICTYPE_BITMAP; OLEPictureImpl_SetBitmap(This); return S_OK; @@ -1845,7 +1847,7 @@ TRACE("Reading all data from stream.\n"); xbuf = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, origsize); if (headerisdata) - memcpy (xbuf, &header, 8); + memcpy (xbuf, header, 8); while (1) { while (xread < origsize) { hr = IStream_Read(pStm,xbuf+xread,origsize-xread,&nread); @@ -1869,9 +1871,11 @@ } else { This->datalen = toread+(headerisdata?8:0); xbuf = This->data = HeapAlloc (GetProcessHeap(), HEAP_ZERO_MEMORY, This->datalen); + if (!xbuf) + return E_OUTOFMEMORY; if (headerisdata) - memcpy (xbuf, &header, 8); + memcpy (xbuf, header, 8); while (xread < This->datalen) { ULONG nread; @@ -1927,7 +1931,7 @@ FIXME("Unknown magic %04x, %d read bytes:\n",magic,xread); hr=E_FAIL; for (i=0;i<xread+8;i++) { - if (i<8) MESSAGE("%02x ",((unsigned char*)&header)[i]); + if (i<8) MESSAGE("%02x ",((unsigned char*)header)[i]); else MESSAGE("%02x ",xbuf[i-8]); if (i % 10 == 9) MESSAGE("\n"); } @@ -2644,8 +2648,15 @@ *ppvObj = NULL; return hr; } - IPersistStream_Load(ps,lpstream); + hr = IPersistStream_Load(ps,lpstream); IPersistStream_Release(ps); + if (FAILED(hr)) + { + ERR("IPersistStream_Load failed\n"); + IPicture_Release(newpic); + *ppvObj = NULL; + return hr; + } hr = IPicture_QueryInterface(newpic,riid,ppvObj); if (hr) FIXME("Failed to get interface %s from IPicture.\n",debugstr_guid(riid)); Modified: trunk/reactos/dll/win32/oleaut32/safearray.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/safearr…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/safearray.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/safearray.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1500,6 +1500,8 @@ if (psa->fFeatures & FADF_RECORD) *pvt = VT_RECORD; + else if ((psa->fFeatures & (FADF_HAVEIID|FADF_DISPATCH)) == (FADF_HAVEIID|FADF_DISPATCH)) + *pvt = VT_DISPATCH; else if (psa->fFeatures & FADF_HAVEIID) *pvt = VT_UNKNOWN; else if (psa->fFeatures & FADF_HAVEVARTYPE) Modified: trunk/reactos/dll/win32/oleaut32/typelib.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/typelib…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/typelib.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/typelib.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1357,6 +1357,8 @@ { DebugBreak(); } + +static void * TLB_Alloc(unsigned size) __WINE_ALLOC_SIZE(1); static void * TLB_Alloc(unsigned size) { void * ret; @@ -1434,6 +1436,18 @@ pCustDataNext = pCustData->next; TLB_Free(pCustData); } +} + +static BSTR TLB_MultiByteToBSTR(const char *ptr) +{ + DWORD len; + BSTR ret; + + len = MultiByteToWideChar(CP_ACP, 0, ptr, -1, NULL, 0); + ret = SysAllocStringLen(NULL, len - 1); + if (!ret) return ret; + MultiByteToWideChar(CP_ACP, 0, ptr, -1, ret, len); + return ret; } /********************************************************************** @@ -2699,7 +2713,6 @@ while(offset < tlbSegDir.pImpFiles.offset +tlbSegDir.pImpFiles.length) { char *name; - DWORD len; *ppImpLib = TLB_Alloc(sizeof(TLBImpLib)); (*ppImpLib)->offset = offset - tlbSegDir.pImpFiles.offset; @@ -2713,10 +2726,7 @@ size >>= 2; name = TLB_Alloc(size+1); MSFT_Read(name, size, &cx, DO_NOT_SEEK); - len = MultiByteToWideChar(CP_ACP, 0, name, -1, NULL, 0 ); - (*ppImpLib)->name = TLB_Alloc(len * sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, name, -1, (*ppImpLib)->name, len ); - TLB_Free(name); + (*ppImpLib)->name = TLB_MultiByteToBSTR(name); MSFT_ReadGuid(&(*ppImpLib)->guid, oGuid, &cx); offset = (offset + sizeof(INT) + sizeof(DWORD) + sizeof(LCID) + sizeof(UINT16) + size + 3) & ~3; @@ -2749,20 +2759,6 @@ return (ITypeLib2*) pTypeLibImpl; } - -static BSTR TLB_MultiByteToBSTR(const char *ptr) -{ - DWORD len; - WCHAR *nameW; - BSTR ret; - - len = MultiByteToWideChar(CP_ACP, 0, ptr, -1, NULL, 0); - nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, ptr, -1, nameW, len); - ret = SysAllocString(nameW); - HeapFree(GetProcessHeap(), 0, nameW); - return ret; -} static BOOL TLB_GUIDFromString(const char *str, GUID *guid) { @@ -2790,16 +2786,14 @@ { WORD bytelen; DWORD len; - WCHAR *nameW; *pBstr = NULL; bytelen = *(const WORD*)ptr; if(bytelen == 0xffff) return 2; len = MultiByteToWideChar(CP_ACP, 0, ptr + 2, bytelen, NULL, 0); - nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); - len = MultiByteToWideChar(CP_ACP, 0, ptr + 2, bytelen, nameW, len); - *pBstr = SysAllocStringLen(nameW, len); - HeapFree(GetProcessHeap(), 0, nameW); + *pBstr = SysAllocStringLen(NULL, len - 1); + if (*pBstr) + len = MultiByteToWideChar(CP_ACP, 0, ptr + 2, bytelen, *pBstr, len); return bytelen + 2; } @@ -2882,7 +2876,7 @@ return S_OK; } - ERR("Unable to find reference\n"); + ERR_(typelib)("Unable to find reference\n"); *typelib_ref = -1; return E_FAIL; } @@ -2989,7 +2983,7 @@ FIXME("Ref magic = %x\n", pRef->magic); return NULL; } - name = ( (char*)(&pRef->names) + pRef->number); + name = ( (char*)pRef->names + pRef->number); table = HeapAlloc(GetProcessHeap(), 0, sizeof(*table) + ((pRef->number >> 3) - 1) * sizeof(table->refs[0])); table->num = pRef->number >> 3; @@ -3007,7 +3001,7 @@ name += SLTG_ReadStringA(name, &refname); if(sscanf(refname, "*\\R%x*#%x", &lib_offs, &type_num) != 2) - FIXME("Can't sscanf ref\n"); + FIXME_(typelib)("Can't sscanf ref\n"); if(lib_offs != 0xffff) { TLBImpLib **import = &pTL->pImpLibs; @@ -3029,7 +3023,7 @@ &(*import)->wVersionMajor, &(*import)->wVersionMinor, &(*import)->lcid, fname) != 4) { - FIXME("can't sscanf ref %s\n", + FIXME_(typelib)("can't sscanf ref %s\n", pNameTable + lib_offs + 40); } len = strlen(fname); @@ -3057,7 +3051,7 @@ typelib_ref += 4; } if((BYTE)*name != SLTG_REF_MAGIC) - FIXME("End of ref block magic = %x\n", *name); + FIXME_(typelib)("End of ref block magic = %x\n", *name); dump_TLBRefType(pTL); return table; } @@ -3086,7 +3080,7 @@ if(info->next == 0xffff) break; if(OneOnly) - FIXME("Interface inheriting more than one interface\n"); + FIXME_(typelib)("Interface inheriting more than one interface\n"); info = (SLTG_ImplInfo*)(pBlk + info->next); } info++; /* see comment at top of function */ @@ -3134,6 +3128,12 @@ SLTG_DoElem(pType, pBlk, &(*ppVarDesc)->vardesc.elemdescVar, ref_lookup); + + if (TRACE_ON(typelib)) { + char buf[300]; + dump_TypeDesc(&(*ppVarDesc)->vardesc.elemdescVar.tdesc, buf); + TRACE_(typelib)("elemdescVar: %s\n", buf); + } if (pItem->flags & 0x40) { TRACE_(typelib)("VAR_DISPATCH\n"); @@ -3155,9 +3155,15 @@ case VT_BSTR: { WORD len = *(WORD *)(pBlk + pItem->byte_offs); - INT alloc_len = MultiByteToWideChar(CP_ACP, 0, pBlk + pItem->byte_offs + 2, len, NULL, 0); - BSTR str = SysAllocStringLen(NULL, alloc_len); - MultiByteToWideChar(CP_ACP, 0, pBlk + pItem->byte_offs + 2, len, str, alloc_len); + BSTR str; + TRACE_(typelib)("len = %u\n", len); + if (len == 0xffff) { + str = NULL; + } else { + INT alloc_len = MultiByteToWideChar(CP_ACP, 0, pBlk + pItem->byte_offs + 2, len, NULL, 0); + str = SysAllocStringLen(NULL, alloc_len); + MultiByteToWideChar(CP_ACP, 0, pBlk + pItem->byte_offs + 2, len, str, alloc_len); + } V_VT((*ppVarDesc)->vardesc.u.lpvarValue) = VT_BSTR; V_BSTR((*ppVarDesc)->vardesc.u.lpvarValue) = str; break; @@ -3170,7 +3176,7 @@ *(INT*)(pBlk + pItem->byte_offs); break; default: - FIXME("VAR_CONST unimplemented for type %d\n", (*ppVarDesc)->vardesc.elemdescVar.tdesc.vt); + FIXME_(typelib)("VAR_CONST unimplemented for type %d\n", (*ppVarDesc)->vardesc.elemdescVar.tdesc.vt); } } } @@ -3185,12 +3191,6 @@ if (pItem->flags & 0x80) (*ppVarDesc)->vardesc.wVarFlags |= VARFLAG_FREADONLY; - - if (TRACE_ON(typelib)) { - char buf[300]; - dump_TypeDesc(&(*ppVarDesc)->vardesc.elemdescVar.tdesc, buf); - TRACE_(typelib)("elemdescVar: %s\n", buf); - } bstrPrevName = (*ppVarDesc)->Name; ppVarDesc = &((*ppVarDesc)->next); @@ -3302,6 +3302,9 @@ if(paramName) { (*ppFuncDesc)->pParamDesc[param].Name = TLB_MultiByteToBSTR(paramName); + } else { + (*ppFuncDesc)->pParamDesc[param].Name = + SysAllocString((*ppFuncDesc)->Name); } } @@ -3439,6 +3442,8 @@ if (pTITail->funcs_off != 0xffff) SLTG_DoFuncs(pBlk, pBlk + pTITail->funcs_off, pTI, pTITail->cFuncs, pNameTable, ref_lookup); HeapFree(GetProcessHeap(), 0, ref_lookup); + if (TRACE_ON(typelib)) + dump_TypeInfo(pTI); } /* Because SLTG_OtherTypeInfo is such a painful struct, we make a more @@ -3491,7 +3496,7 @@ TRACE_(typelib)("\tmagic=0x%08x, file blocks = %d\n", pHeader->SLTG_magic, pHeader->nrOfFileBlks ); if (pHeader->SLTG_magic != SLTG_SIGNATURE) { - FIXME("Header type magic 0x%08x not supported.\n", + FIXME_(typelib)("Header type magic 0x%08x not supported.\n", pHeader->SLTG_magic); return NULL; } @@ -3508,12 +3513,12 @@ /* Let's see if we're still in sync */ if(memcmp(pMagic->CompObj_magic, SLTG_COMPOBJ_MAGIC, sizeof(SLTG_COMPOBJ_MAGIC))) { - FIXME("CompObj magic = %s\n", pMagic->CompObj_magic); + FIXME_(typelib)("CompObj magic = %s\n", pMagic->CompObj_magic); return NULL; } if(memcmp(pMagic->dir_magic, SLTG_DIR_MAGIC, sizeof(SLTG_DIR_MAGIC))) { - FIXME("dir magic = %s\n", pMagic->dir_magic); + FIXME_(typelib)("dir magic = %s\n", pMagic->dir_magic); return NULL; } @@ -3607,7 +3612,7 @@ pNameTable += 0x20; break; default: - FIXME("pNameTable jump = %x\n", *(WORD*)pNameTable); + FIXME_(typelib)("pNameTable jump = %x\n", *(WORD*)pNameTable); break; } @@ -3615,7 +3620,7 @@ pNameTable += 2; - TRACE("Library name is %s\n", pNameTable + pLibBlk->name); + TRACE_(typelib)("Library name is %s\n", pNameTable + pLibBlk->name); pTypeLibImpl->Name = TLB_MultiByteToBSTR(pNameTable + pLibBlk->name); @@ -3637,16 +3642,17 @@ if(strcmp(pBlkEntry[order].index_string + (char*)pMagic, pOtherTypeInfoBlks[i].index_name)) { - FIXME("Index strings don't match\n"); + FIXME_(typelib)("Index strings don't match\n"); return NULL; } pTIHeader = pBlk; if(pTIHeader->magic != SLTG_TIHEADER_MAGIC) { - FIXME("TypeInfoHeader magic = %04x\n", pTIHeader->magic); + FIXME_(typelib)("TypeInfoHeader magic = %04x\n", pTIHeader->magic); return NULL; } - TRACE("pTIHeader->res06 = %x, pTIHeader->res0e = %x, pTIHeader->res16 = %x, pTIHeader->res1e = %x\n", + TRACE_(typelib)("pTIHeader->res06 = %x, pTIHeader->res0e = %x, " + "pTIHeader->res16 = %x, pTIHeader->res1e = %x\n", pTIHeader->res06, pTIHeader->res0e, pTIHeader->res16, pTIHeader->res1e); *ppTypeInfoImpl = (ITypeInfoImpl*)ITypeInfo_Constructor(); @@ -3664,11 +3670,11 @@ (pTIHeader->typeflags1 >> 3) | (pTIHeader->typeflags2 << 5); if((pTIHeader->typeflags1 & 7) != 2) - FIXME("typeflags1 = %02x\n", pTIHeader->typeflags1); + FIXME_(typelib)("typeflags1 = %02x\n", pTIHeader->typeflags1); if(pTIHeader->typeflags3 != 2) - FIXME("typeflags3 = %02x\n", pTIHeader->typeflags3); - - TRACE("TypeInfo %s of kind %s guid %s typeflags %04x\n", + FIXME_(typelib)("typeflags3 = %02x\n", pTIHeader->typeflags3); + + TRACE_(typelib)("TypeInfo %s of kind %s guid %s typeflags %04x\n", debugstr_w((*ppTypeInfoImpl)->Name), typekind_desc[pTIHeader->typekind], debugstr_guid(&(*ppTypeInfoImpl)->TypeAttr.guid), @@ -3867,7 +3873,7 @@ { if (pImpLib->pImpTypeLib) ITypeLib_Release((ITypeLib *)pImpLib->pImpTypeLib); - TLB_Free(pImpLib->name); + SysFreeString(pImpLib->name); pImpLibNext = pImpLib->next; TLB_Free(pImpLib); Modified: trunk/reactos/dll/win32/oleaut32/typelib.spec URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/typelib…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/typelib.spec [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/typelib.spec [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1,6 +1,6 @@ 2 stub CREATETYPELIB 3 pascal LoadTypeLib(ptr ptr) LoadTypeLib16 -4 stub LHASHVALOFNAMESYS +4 pascal LHashValOfNameSys(word long str) LHashValOfNameSysA 5 stub _IID_ICREATETYPEINFO 6 stub _IID_ICREATETYPELIB 7 stub _IID_ITYPECOMP Modified: trunk/reactos/dll/win32/oleaut32/typelib2.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/typelib…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/typelib2.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/typelib2.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -152,6 +152,7 @@ WCHAR *filename; MSFT_Header typelib_header; + INT helpStringDll; MSFT_pSeg typelib_segdir[MSFT_SEG_MAX]; char *typelib_segment_data[MSFT_SEG_MAX]; int typelib_segment_block_length[MSFT_SEG_MAX]; @@ -231,6 +232,7 @@ This->typelib_header.res48 = 0x80; This->typelib_header.dispatchpos = -1; This->typelib_header.nimpinfos = 0; + This->helpStringDll = -1; } /**************************************************************************** @@ -726,7 +728,7 @@ importfile->guid = guidoffset; importfile->lcid = This->typelib_header.lcid2; importfile->version = major_version | (minor_version << 16); - memcpy(&importfile->filename, encoded_string, length); + memcpy(importfile->filename, encoded_string, length); return offset; } @@ -3331,8 +3333,10 @@ ctl2_finalize_typeinfos(This, filepos); if (!ctl2_write_chunk(hFile, &This->typelib_header, sizeof(This->typelib_header))) return retval; + if (This->typelib_header.varflags & HELPDLLFLAG) + if (!ctl2_write_chunk(hFile, &This->helpStringDll, sizeof(This->helpStringDll))) return retval; if (!ctl2_write_chunk(hFile, This->typelib_typeinfo_offsets, This->typelib_header.nrtypeinfos * 4)) return retval; - if (!ctl2_write_chunk(hFile, &This->typelib_segdir, sizeof(This->typelib_segdir))) return retval; + if (!ctl2_write_chunk(hFile, This->typelib_segdir, sizeof(This->typelib_segdir))) return retval; if (!ctl2_write_segment(This, hFile, MSFT_SEG_TYPEINFO )) return retval; if (!ctl2_write_segment(This, hFile, MSFT_SEG_GUIDHASH )) return retval; if (!ctl2_write_segment(This, hFile, MSFT_SEG_GUID )) return retval; @@ -3401,35 +3405,56 @@ * * Sets a context number for the library help string. * - * RETURNS - * + * PARAMS + * iface [I] The type library to set the help string context for. + * dwContext [I] The help string context. + * + * RETURNS * Success: S_OK * Failure: E_OUTOFMEMORY or E_INVALIDARG. */ -static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringContext( - ICreateTypeLib2 * iface, /* [I] The type library to set the help string context for. */ - ULONG dwHelpStringContext) /* [I] The help string context. */ -{ - FIXME("(%p,%d), stub!\n", iface, dwHelpStringContext); - return E_OUTOFMEMORY; +static +HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringContext(ICreateTypeLib2 * iface, + ULONG dwContext) +{ + ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface; + + TRACE("(%p,%d)\n", iface, dwContext); + + This->typelib_header.helpstringcontext = dwContext; + return S_OK; } /****************************************************************************** * ICreateTypeLib2_SetHelpStringDll {OLEAUT32} * - * Sets the DLL used to look up localized help strings. - * - * RETURNS - * + * Set the DLL used to look up localized help strings. + * + * PARAMS + * iface [I] The type library to set the help DLL for. + * szDllName [I] The name of the help DLL. + * + * RETURNS * Success: S_OK * Failure: E_OUTOFMEMORY or E_INVALIDARG. */ -static HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringDll( - ICreateTypeLib2 * iface, /* [I] The type library to set the help DLL for. */ - LPOLESTR szFileName) /* [I] The name of the help DLL. */ -{ - FIXME("(%p,%s), stub!\n", iface, debugstr_w(szFileName)); - return E_OUTOFMEMORY; +static +HRESULT WINAPI ICreateTypeLib2_fnSetHelpStringDll(ICreateTypeLib2 * iface, + LPOLESTR szDllName) +{ + ICreateTypeLib2Impl *This = (ICreateTypeLib2Impl *)iface; + int offset; + + TRACE("(%p,%s)\n", iface, debugstr_w(szDllName)); + if (!szDllName) + return E_INVALIDARG; + + offset = ctl2_alloc_string(This, szDllName); + if (offset == -1) + return E_OUTOFMEMORY; + This->typelib_header.varflags |= HELPDLLFLAG; + This->helpStringDll = offset; + return S_OK; } /*================== ITypeLib2 Implementation ===================================*/ Modified: trunk/reactos/dll/win32/oleaut32/usrmarshal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/usrmars…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/usrmarshal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/usrmarshal.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -36,6 +36,7 @@ #include "oleauto.h" #include "rpcproxy.h" #include "typelib.h" +#include "ocidl.h" #include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(ole); @@ -50,9 +51,11 @@ CSTDSTUBBUFFERRELEASE(&PSFactoryBuffer) extern const ExtendedProxyFileInfo oleaut32_oaidl_ProxyFileInfo; +extern const ExtendedProxyFileInfo oleaut32_ocidl_ProxyFileInfo; static const ProxyFileInfo *OLEAUT32_ProxyFileList[] = { &oleaut32_oaidl_ProxyFileInfo, + &oleaut32_ocidl_ProxyFileInfo, NULL }; @@ -1128,6 +1131,32 @@ SafeArrayDestroy(*ppsa); } + +ULONG WINAPI HFONT_UserSize(ULONG *pFlags, ULONG Start, HFONT *phfont) +{ + FIXME(":stub\n"); + return 0; +} + +unsigned char * WINAPI HFONT_UserMarshal(ULONG *pFlags, unsigned char *Buffer, HFONT *phfont) +{ + FIXME(":stub\n"); + return NULL; +} + +unsigned char * WINAPI HFONT_UserUnmarshal(ULONG *pFlags, unsigned char *Buffer, HFONT *phfont) +{ + FIXME(":stub\n"); + return NULL; +} + +void WINAPI HFONT_UserFree(ULONG *pFlags, HFONT *phfont) +{ + FIXME(":stub\n"); + return; +} + + /* IDispatch */ /* exactly how Invoke is marshalled is not very clear to me yet, * but the way I've done it seems to work for me */ @@ -2029,3 +2058,158 @@ FIXME("not implemented\n"); return E_FAIL; } + +/* call_as/local stubs for ocidl.idl */ + +HRESULT CALLBACK IClassFactory2_CreateInstanceLic_Proxy( + IClassFactory2* This, + IUnknown *pUnkOuter, + IUnknown *pUnkReserved, + REFIID riid, + BSTR bstrKey, + PVOID *ppvObj) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IClassFactory2_CreateInstanceLic_Stub( + IClassFactory2* This, + REFIID riid, + BSTR bstrKey, + IUnknown **ppvObj) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumConnections_Next_Proxy( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumConnections_Next_Stub( + IEnumConnections* This, + ULONG cConnections, + LPCONNECTDATA rgcd, + ULONG *pcFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumConnectionPoints_Next_Proxy( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumConnectionPoints_Next_Stub( + IEnumConnectionPoints* This, + ULONG cConnections, + LPCONNECTIONPOINT *ppCP, + ULONG *pcFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IPersistMemory_Load_Proxy( + IPersistMemory* This, + LPVOID pMem, + ULONG cbSize) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IPersistMemory_Load_Stub( + IPersistMemory* This, + BYTE *pMem, + ULONG cbSize) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IPersistMemory_Save_Proxy( + IPersistMemory* This, + LPVOID pMem, + BOOL fClearDirty, + ULONG cbSize) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IPersistMemory_Save_Stub( + IPersistMemory* This, + BYTE *pMem, + BOOL fClearDirty, + ULONG cbSize) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +void CALLBACK IAdviseSinkEx_OnViewStatusChange_Proxy( + IAdviseSinkEx* This, + DWORD dwViewStatus) +{ + FIXME("not implemented\n"); +} + +HRESULT __RPC_STUB IAdviseSinkEx_OnViewStatusChange_Stub( + IAdviseSinkEx* This, + DWORD dwViewStatus) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IEnumOleUndoUnits_Next_Proxy( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IEnumOleUndoUnits_Next_Stub( + IEnumOleUndoUnits* This, + ULONG cElt, + IOleUndoUnit **rgElt, + ULONG *pcEltFetched) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT CALLBACK IQuickActivate_QuickActivate_Proxy( + IQuickActivate* This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} + +HRESULT __RPC_STUB IQuickActivate_QuickActivate_Stub( + IQuickActivate* This, + QACONTAINER *pQaContainer, + QACONTROL *pQaControl) +{ + FIXME("not implemented\n"); + return E_NOTIMPL; +} Modified: trunk/reactos/dll/win32/oleaut32/varformat.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/varform…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/varformat.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/varformat.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1,6 +1,7 @@ /* * Variant formatting functions * + * Copyright 2008 Damjan Jovanovic * Copyright 2003 Jon Griffiths * * This library is free software; you can redistribute it and/or @@ -1181,6 +1182,7 @@ /* Number formatting state flags */ #define NUM_WROTE_DEC 0x01 /* Written the decimal separator */ #define NUM_WRITE_ON 0x02 /* Started to write the number */ +#define NUM_WROTE_SIGN 0x04 /* Written the negative sign */ /* Format a variant using a number format */ static HRESULT VARIANT_FormatNumber(LPVARIANT pVarIn, LPOLESTR lpszFormat, @@ -1191,6 +1193,7 @@ NUMPARSE np; int have_int, need_int = 0, have_frac, need_frac, exponent = 0, pad = 0; WCHAR buff[256], *pBuff = buff; + WCHAR thousandSeparator[32]; VARIANT vString, vBool; DWORD dwState = 0; FMT_HEADER *header = (FMT_HEADER*)rgbTok; @@ -1313,6 +1316,16 @@ have_int, need_int, have_frac, need_frac, pad, exponent); } + if (numHeader->flags & FMT_FLAG_THOUSANDS) + { + if (!GetLocaleInfoW(lcid, LOCALE_STHOUSAND, thousandSeparator, + sizeof(thousandSeparator)/sizeof(WCHAR))) + { + thousandSeparator[0] = ','; + thousandSeparator[1] = 0; + } + } + pToken = (const BYTE*)numHeader + sizeof(FMT_NUMBER_HEADER); prgbDig = rgbDig; @@ -1320,6 +1333,7 @@ { WCHAR defaultChar = '?'; DWORD boolFlag, localeValue = 0; + BOOL shouldAdvance = TRUE; if (pToken - rgbTok > header->size) { @@ -1377,6 +1391,16 @@ break; case FMT_NUM_DECIMAL: + if ((np.dwOutFlags & NUMPRS_NEG) && !(dwState & NUM_WROTE_SIGN)) + { + /* last chance for a negative sign in the .# case */ + TRACE("write negative sign\n"); + localeValue = LOCALE_SNEGATIVESIGN; + defaultChar = '-'; + dwState |= NUM_WROTE_SIGN; + shouldAdvance = FALSE; + break; + } TRACE("write decimal separator\n"); localeValue = LOCALE_SDECIMAL; defaultChar = '.'; @@ -1450,8 +1474,21 @@ } else { - int count, count_max; - + int count, count_max, position; + + if ((np.dwOutFlags & NUMPRS_NEG) && !(dwState & NUM_WROTE_SIGN)) + { + TRACE("write negative sign\n"); + localeValue = LOCALE_SNEGATIVESIGN; + defaultChar = '-'; + dwState |= NUM_WROTE_SIGN; + shouldAdvance = FALSE; + break; + } + + position = have_int + pad; + if (dwState & NUM_WRITE_ON) + position = max(position, need_int); need_int -= pToken[1]; count_max = have_int + pad - need_int; if (count_max < 0) @@ -1461,25 +1498,55 @@ count = pToken[1] - count_max; TRACE("write %d leading zeros\n", count); while (count-- > 0) + { *pBuff++ = '0'; + if ((numHeader->flags & FMT_FLAG_THOUSANDS) && + position > 1 && (--position % 3) == 0) + { + int k; + TRACE("write thousand separator\n"); + for (k = 0; thousandSeparator[k]; k++) + *pBuff++ = thousandSeparator[k]; + } + } } if (*pToken == FMT_NUM_COPY_ZERO || have_int > 1 || (have_int > 0 && *prgbDig > 0)) { - dwState |= NUM_WRITE_ON; count = min(count_max, have_int); count_max -= count; have_int -= count; TRACE("write %d whole number digits\n", count); while (count--) + { + dwState |= NUM_WRITE_ON; *pBuff++ = '0' + *prgbDig++; + if ((numHeader->flags & FMT_FLAG_THOUSANDS) && + position > 1 && (--position % 3) == 0) + { + int k; + TRACE("write thousand separator\n"); + for (k = 0; thousandSeparator[k]; k++) + *pBuff++ = thousandSeparator[k]; + } + } } count = min(count_max, pad); count_max -= count; pad -= count; TRACE("write %d whole trailing 0's\n", count); while (count--) + { *pBuff++ = '0'; + if ((numHeader->flags & FMT_FLAG_THOUSANDS) && + position > 1 && (--position % 3) == 0) + { + int k; + TRACE("write thousand separator\n"); + for (k = 0; thousandSeparator[k]; k++) + *pBuff++ = thousandSeparator[k]; + } + } } pToken++; break; @@ -1504,7 +1571,8 @@ *pBuff++ = defaultChar; } } - pToken++; + if (shouldAdvance) + pToken++; } VARIANT_FormatNumber_Exit: Modified: trunk/reactos/dll/win32/oleaut32/variant.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/variant…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/variant.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/variant.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -1191,7 +1191,7 @@ ud.st.wSecond = DOS_SECOND(wDosTime); ud.st.wDayOfWeek = ud.st.wMilliseconds = 0; - return !VarDateFromUdate(&ud, 0, pDateOut); + return VarDateFromUdate(&ud, 0, pDateOut) == S_OK; } /********************************************************************** @@ -1255,7 +1255,7 @@ return FALSE; ud.st = *lpSt; - return !VarDateFromUdate(&ud, 0, pDateOut); + return VarDateFromUdate(&ud, 0, pDateOut) == S_OK; } /*********************************************************************** Modified: trunk/reactos/dll/win32/oleaut32/vartype.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/vartype…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/vartype.c [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -5179,7 +5179,7 @@ to multiply quotient by 10 (without overflowing), while adjusting the scale, until scale is 0. If this cannot be done, it is a real overflow. */ - while (!r_overflow && quotientscale < 0) { + while (r_overflow == S_OK && quotientscale < 0) { memset(remainderplusquotient, 0, sizeof(remainderplusquotient)); memcpy(remainderplusquotient, quotient->bitsnum, sizeof(quotient->bitsnum)); VARIANT_int_mulbychar(remainderplusquotient, sizeof(remainderplusquotient)/sizeof(DWORD), 10); @@ -5189,7 +5189,7 @@ memcpy(quotient->bitsnum, remainderplusquotient, sizeof(quotient->bitsnum)); } else r_overflow = DISP_E_OVERFLOW; } - if (!r_overflow) { + if (r_overflow == S_OK) { if (quotientscale <= 255) quotient->scale = quotientscale; else VARIANT_DI_clear(quotient); } @@ -6516,7 +6516,7 @@ VARIANT_int_add(decVal.bitsnum, 3, &one, 1); } decVal.bitsnum[2] = 0; - VARIANT_DI_tostringW(&decVal, buff, sizeof(buff)); + VARIANT_DI_tostringW(&decVal, buff, sizeof(buff)/sizeof(buff[0])); if (dwFlags & LOCALE_USE_NLS) { Modified: trunk/reactos/dll/win32/oleaut32/version.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/oleaut32/version…
============================================================================== --- trunk/reactos/dll/win32/oleaut32/version.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/oleaut32/version.rc [iso-8859-1] Sun Sep 14 00:15:39 2008 @@ -19,5 +19,7 @@ #define WINE_OLESELFREGISTER #define WINE_FILEDESCRIPTION_STR "Wine OLE dll" #define WINE_FILENAME_STR "oleaut32.dll" +#define WINE_FILEVERSION 6, 0, 6001, 18000 /* version from Vista SP1 */ +#define WINE_FILEVERSION_STR "6.0.6001.18000" #include "wine/wine_common_ver.rc"
16 years, 3 months
1
0
0
0
[cwittich] 36209: revert the ole32 idl hack from heispiter as it breaks the rpc proxy
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Sep 14 00:09:19 2008 New Revision: 36209 URL:
http://svn.reactos.org/svn/reactos?rev=36209&view=rev
Log: revert the ole32 idl hack from heispiter as it breaks the rpc proxy Modified: trunk/reactos/dll/win32/ole32/ole32_oleidl.idl Modified: trunk/reactos/dll/win32/ole32/ole32_oleidl.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ole32/ole32_olei…
============================================================================== --- trunk/reactos/dll/win32/ole32/ole32_oleidl.idl [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ole32/ole32_oleidl.idl [iso-8859-1] Sun Sep 14 00:09:19 2008 @@ -17,4 +17,4 @@ */ cpp_quote("#include <winuser.h>") -cpp_quote("#include <oleidl.h>") +#include "oleidl.idl"
16 years, 3 months
1
0
0
0
[cwittich] 36208: better hackfix for rpc.h generate oleacc header from idl
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Sep 14 00:08:29 2008 New Revision: 36208 URL:
http://svn.reactos.org/svn/reactos?rev=36208&view=rev
Log: better hackfix for rpc.h generate oleacc header from idl Added: trunk/reactos/include/psdk/oleacc.idl (with props) Modified: trunk/reactos/include/psdk/psdk.rbuild trunk/reactos/include/psdk/rpc.h Added: trunk/reactos/include/psdk/oleacc.idl URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/oleacc.idl?re…
============================================================================== --- trunk/reactos/include/psdk/oleacc.idl (added) +++ trunk/reactos/include/psdk/oleacc.idl [iso-8859-1] Sun Sep 14 00:08:29 2008 @@ -1,0 +1,180 @@ +/* + * Copyright (C) 2005 Dmitry Timoshkov + * + * 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 + */ + +import "oaidl.idl"; + +cpp_quote("#define NAVDIR_UP 1") +cpp_quote("#define NAVDIR_DOWN 2") +cpp_quote("#define NAVDIR_LEFT 3") +cpp_quote("#define NAVDIR_RIGHT 4") +cpp_quote("#define NAVDIR_NEXT 5") +cpp_quote("#define NAVDIR_PREVIOUS 6") +cpp_quote("#define NAVDIR_FIRSTCHILD 7") +cpp_quote("#define NAVDIR_LASTCHILD 8") + +cpp_quote("#define ROLE_SYSTEM_TITLEBAR 1") +cpp_quote("#define ROLE_SYSTEM_MENUBAR 2") +cpp_quote("#define ROLE_SYSTEM_SCROLLBAR 3") +cpp_quote("#define ROLE_SYSTEM_GRIP 4") +cpp_quote("#define ROLE_SYSTEM_SOUND 5") +cpp_quote("#define ROLE_SYSTEM_CURSOR 6") +cpp_quote("#define ROLE_SYSTEM_CARET 7") +cpp_quote("#define ROLE_SYSTEM_ALERT 8") +cpp_quote("#define ROLE_SYSTEM_WINDOW 9") +cpp_quote("#define ROLE_SYSTEM_CLIENT 10") +cpp_quote("#define ROLE_SYSTEM_MENUPOPUP 11") +cpp_quote("#define ROLE_SYSTEM_MENUITEM 12") +cpp_quote("#define ROLE_SYSTEM_TOOLTIP 13") +cpp_quote("#define ROLE_SYSTEM_APPLICATION 14") +cpp_quote("#define ROLE_SYSTEM_DOCUMENT 15") +cpp_quote("#define ROLE_SYSTEM_PANE 16") +cpp_quote("#define ROLE_SYSTEM_CHART 17") +cpp_quote("#define ROLE_SYSTEM_DIALOG 18") +cpp_quote("#define ROLE_SYSTEM_BORDER 19") +cpp_quote("#define ROLE_SYSTEM_GROUPING 20") +cpp_quote("#define ROLE_SYSTEM_SEPARATOR 21") +cpp_quote("#define ROLE_SYSTEM_TOOLBAR 22") +cpp_quote("#define ROLE_SYSTEM_STATUSBAR 23") +cpp_quote("#define ROLE_SYSTEM_TABLE 24") +cpp_quote("#define ROLE_SYSTEM_COLUMNHEADER 25") +cpp_quote("#define ROLE_SYSTEM_ROWHEADER 26") +cpp_quote("#define ROLE_SYSTEM_COLUMN 27") +cpp_quote("#define ROLE_SYSTEM_ROW 28") +cpp_quote("#define ROLE_SYSTEM_CELL 29") +cpp_quote("#define ROLE_SYSTEM_LINK 30") +cpp_quote("#define ROLE_SYSTEM_HELPBALLOON 31") +cpp_quote("#define ROLE_SYSTEM_CHARACTER 32") +cpp_quote("#define ROLE_SYSTEM_LIST 33") +cpp_quote("#define ROLE_SYSTEM_LISTITEM 34") +cpp_quote("#define ROLE_SYSTEM_OUTLINE 35") +cpp_quote("#define ROLE_SYSTEM_OUTLINEITEM 36") +cpp_quote("#define ROLE_SYSTEM_PAGETAB 37") +cpp_quote("#define ROLE_SYSTEM_PROPERTYPAGE 38") +cpp_quote("#define ROLE_SYSTEM_INDICATOR 39") +cpp_quote("#define ROLE_SYSTEM_GRAPHIC 40") +cpp_quote("#define ROLE_SYSTEM_STATICTEXT 41") +cpp_quote("#define ROLE_SYSTEM_TEXT 42") +cpp_quote("#define ROLE_SYSTEM_PUSHBUTTON 43") +cpp_quote("#define ROLE_SYSTEM_CHECKBUTTON 44") +cpp_quote("#define ROLE_SYSTEM_RADIOBUTTON 45") +cpp_quote("#define ROLE_SYSTEM_COMBOBOX 46") +cpp_quote("#define ROLE_SYSTEM_DROPLIST 47") +cpp_quote("#define ROLE_SYSTEM_PROGRESSBAR 48") +cpp_quote("#define ROLE_SYSTEM_DIAL 49") +cpp_quote("#define ROLE_SYSTEM_HOTKEYFIELD 50") +cpp_quote("#define ROLE_SYSTEM_SLIDER 51") +cpp_quote("#define ROLE_SYSTEM_SPINBUTTON 52") +cpp_quote("#define ROLE_SYSTEM_DIAGRAM 53") +cpp_quote("#define ROLE_SYSTEM_ANIMATION 54") +cpp_quote("#define ROLE_SYSTEM_EQUATION 55") +cpp_quote("#define ROLE_SYSTEM_BUTTONDROPDOWN 56") +cpp_quote("#define ROLE_SYSTEM_BUTTONMENU 57") +cpp_quote("#define ROLE_SYSTEM_BUTTONDROPDOWNGRID 58") +cpp_quote("#define ROLE_SYSTEM_WHITESPACE 59") +cpp_quote("#define ROLE_SYSTEM_PAGETABLIST 60") +cpp_quote("#define ROLE_SYSTEM_CLOCK 61") +cpp_quote("#define ROLE_SYSTEM_SPLITBUTTON 62") +cpp_quote("#define ROLE_SYSTEM_IPADDRESS 63") +cpp_quote("#define ROLE_SYSTEM_OUTLINEBUTTON 64") + +cpp_quote("#define SELFLAG_NONE 0x00") +cpp_quote("#define SELFLAG_TAKEFOCUS 0x01") +cpp_quote("#define SELFLAG_TAKESELECTION 0x02") +cpp_quote("#define SELFLAG_EXTENDSELECTION 0x04") +cpp_quote("#define SELFLAG_ADDSELECTION 0x08") +cpp_quote("#define SELFLAG_REMOVESELECTION 0x10") +cpp_quote("#define SELFLAG_VALID 0x1f") + +[ + local, + object, + uuid(618736e0-3c3d-11cf-810c-00aa00389b71), + pointer_default(unique) +] +interface IAccessible : IDispatch +{ + typedef [unique] IAccessible *LPACCESSIBLE; + const long DISPID_ACC_PARENT = -5000; + const long DISPID_ACC_CHILDCOUNT = -5001; + const long DISPID_ACC_CHILD = -5002; + const long DISPID_ACC_NAME = -5003; + const long DISPID_ACC_VALUE = -5004; + const long DISPID_ACC_DESCRIPTION= -5005; + const long DISPID_ACC_ROLE = -5006; + const long DISPID_ACC_STATE = -5007; + const long DISPID_ACC_HELP = -5008; + const long DISPID_ACC_HELPTOPIC = -5009; + const long DISPID_ACC_KEYBOARDSHORTCUT = -5010; + const long DISPID_ACC_FOCUS = -5011; + const long DISPID_ACC_SELECTION = -5012; + const long DISPID_ACC_DEFAULTACTION = -5013; + const long DISPID_ACC_SELECT = -5014; + const long DISPID_ACC_LOCATION = -5015; + const long DISPID_ACC_NAVIGATE = -5016; + const long DISPID_ACC_HITTEST = -5017; + const long DISPID_ACC_DODEFAULTACTION = -5018; + + [hidden, propget, id(DISPID_ACC_PARENT)] HRESULT accParent([out, retval]IDispatch** ppdispParent); + [hidden, propget, id(DISPID_ACC_CHILDCOUNT)] HRESULT accChildCount([out, retval] long* pcountChildren); + [hidden, propget, id(DISPID_ACC_CHILD)] HRESULT accChild([in] VARIANT varChildID, [out, retval]IDispatch **ppdispChild); + [hidden, propget, id(DISPID_ACC_NAME)] HRESULT accName([in]VARIANT varID, [out, retval] BSTR* pszName); + [hidden, propget, id(DISPID_ACC_VALUE)] HRESULT accValue([in]VARIANT varID, [out, retval] BSTR* pszValue); + [hidden, propget, id(DISPID_ACC_DESCRIPTION)] HRESULT accDescription([in]VARIANT varID, [out, retval] BSTR* pszDescription); + [hidden, propget, id(DISPID_ACC_ROLE)] HRESULT accRole([in]VARIANT varID, [out, retval]VARIANT* pvarRole); + [hidden, propget, id(DISPID_ACC_STATE)] HRESULT accState([in]VARIANT varID, [out, retval]VARIANT* pvarState); + [hidden, propget, id(DISPID_ACC_HELP)] HRESULT accHelp([in]VARIANT varID, [out, retval]BSTR* pszHelp); + [hidden, propget, id(DISPID_ACC_HELPTOPIC)] HRESULT accHelpTopic([out]BSTR* pszHelpFile, [in]VARIANT varID, [out, retval] long* pidTopic); + [hidden, propget, id(DISPID_ACC_KEYBOARDSHORTCUT)] HRESULT accKeyboardShortcut([in]VARIANT varID, [out, retval] BSTR* pszKeyboardShortcut); + [hidden, propget, id(DISPID_ACC_FOCUS)] HRESULT accFocus([out, retval] VARIANT* pvarID); + [hidden, propget, id(DISPID_ACC_SELECTION)] HRESULT accSelection([out, retval] VARIANT* pvarID); + [hidden, propget, id(DISPID_ACC_DEFAULTACTION)] HRESULT accDefaultAction([in]VARIANT varID, [out, retval] BSTR* pszDefaultAction); + + [hidden, id(DISPID_ACC_SELECT)] HRESULT accSelect([in]long flagsSelect, [in]VARIANT varID); + [hidden, id(DISPID_ACC_LOCATION)] HRESULT accLocation([out]long* pxLeft, [out]long* pyTop, [out]long* pcxWidth, [out]long* pcyHeight, [in]VARIANT varID); + [hidden, id(DISPID_ACC_NAVIGATE)] HRESULT accNavigate([in]long navDir, [in]VARIANT varStart, [out, retval] VARIANT* pvarEnd); + [hidden, id(DISPID_ACC_HITTEST)] HRESULT accHitTest([in]long xLeft, [in]long yTop, [out,retval] VARIANT* pvarID); + [hidden, id(DISPID_ACC_DODEFAULTACTION)] HRESULT accDoDefaultAction([in]VARIANT varID); + + [hidden, propput, id(DISPID_ACC_NAME)] HRESULT accName([in]VARIANT varID, [in]BSTR pszName); + [hidden, propput, id(DISPID_ACC_VALUE)] HRESULT accValue([in]VARIANT varID, [out, retval]BSTR pszValue); +} + +cpp_quote("DEFINE_GUID(LIBID_Accessibility, 0x1ea4dbf0, 0x3c3b, 0x11cf, 0x81, 0x0c, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71);") +cpp_quote("DEFINE_GUID(CLSID_AccPropServices, 0xb5f8350b, 0x0548, 0x48b1, 0xa6, 0xee, 0x88, 0xbd, 0x00, 0xb4, 0xa5, 0xe7);") +cpp_quote("DEFINE_GUID(IIS_IsOleaccProxy, 0x902697fa, 0x80e4, 0x4560, 0x80, 0x2a, 0xa1, 0x3f, 0x22, 0xa6, 0x47, 0x09);") + +cpp_quote("LRESULT WINAPI LresultFromObject(REFIID,WPARAM,LPUNKNOWN);") +cpp_quote("HRESULT WINAPI ObjectFromLresult(LRESULT,REFIID,WPARAM,void **);") +cpp_quote("HRESULT WINAPI WindowFromAccessibleObject(IAccessible *,HWND *);") +cpp_quote("HRESULT WINAPI AccessibleObjectFromWindow(HWND,DWORD,REFIID,void **);") +cpp_quote("HRESULT WINAPI AccessibleObjectFromEvent(HWND,DWORD,DWORD,IAccessible **,VARIANT *);") +cpp_quote("HRESULT WINAPI AccessibleObjectFromPoint(POINT,IAccessible **,VARIANT *);") +cpp_quote("HRESULT WINAPI AccessibleChildren(IAccessible *,LONG,LONG,VARIANT *,LONG *);") + +cpp_quote("void WINAPI GetOleaccVersionInfo(DWORD *,DWORD *);") +cpp_quote("HRESULT WINAPI CreateStdAccessibleObject(HWND,LONG,REFIID,void **);") +cpp_quote("HRESULT WINAPI CreateStdAccessibleProxyA(HWND,LPCSTR,LONG,REFIID,void **);") +cpp_quote("HRESULT WINAPI CreateStdAccessibleProxyW(HWND,LPCWSTR,LONG,REFIID,void **);") +cpp_quote("#define CreateStdAccessibleProxy WINELIB_NAME_AW(CreateStdAccessibleProxy)") + +cpp_quote("UINT WINAPI GetRoleTextA(DWORD,LPSTR,UINT);") +cpp_quote("UINT WINAPI GetRoleTextW(DWORD,LPWSTR,UINT);") +cpp_quote("#define GetRoleText WINELIB_NAME_AW(GetRoleText)") +cpp_quote("UINT WINAPI GetStateTextA(DWORD,LPSTR,UINT);") +cpp_quote("UINT WINAPI GetStateTextW(DWORD,LPWSTR,UINT);") +cpp_quote("#define GetStateText WINELIB_NAME_AW(GetStateText)") Propchange: trunk/reactos/include/psdk/oleacc.idl ------------------------------------------------------------------------------ svn:eol-style = native Modified: trunk/reactos/include/psdk/psdk.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/psdk.rbuild?r…
============================================================================== --- trunk/reactos/include/psdk/psdk.rbuild [iso-8859-1] (original) +++ trunk/reactos/include/psdk/psdk.rbuild [iso-8859-1] Sun Sep 14 00:08:29 2008 @@ -27,6 +27,7 @@ <file>objsafe.idl</file> <file>ocidl.idl</file> <file>ocmm.idl</file> + <file>oleacc.idl</file> <file>oledb.idl</file> <file>oleidl.idl</file> <file>optary.idl</file> Modified: trunk/reactos/include/psdk/rpc.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/rpc.h?rev=362…
============================================================================== --- trunk/reactos/include/psdk/rpc.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/rpc.h [iso-8859-1] Sun Sep 14 00:08:29 2008 @@ -1,6 +1,14 @@ #if !defined( RPC_NO_WINDOWS_H ) && !defined( MAC ) && !defined( _MAC ) +#if defined (_OLE32_) +#ifndef RC_INVOKED +#include <stdarg.h> +#endif +#include <windef.h> +#include <winbase.h> +#else #include <windows.h> +#endif #endif #ifdef __GNUC__
16 years, 3 months
1
0
0
0
[cwittich] 36207: Output NULL for inherited methods in the vtbl. Dan Hipschman <dsh at linux.ucla.edu>
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Sep 14 00:07:16 2008 New Revision: 36207 URL:
http://svn.reactos.org/svn/reactos?rev=36207&view=rev
Log: Output NULL for inherited methods in the vtbl. Dan Hipschman <dsh at
linux.ucla.edu
> Modified: trunk/reactos/tools/widl/proxy.c Modified: trunk/reactos/tools/widl/proxy.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/tools/widl/proxy.c?rev=362…
============================================================================== --- trunk/reactos/tools/widl/proxy.c [iso-8859-1] (original) +++ trunk/reactos/tools/widl/proxy.c [iso-8859-1] Sun Sep 14 00:07:16 2008 @@ -461,41 +461,45 @@ print_proxy("\n"); } -static int write_proxy_methods(type_t *iface) +static int write_proxy_methods(type_t *iface, int skip) { const func_t *cur; int i = 0; - if (iface->ref) i = write_proxy_methods(iface->ref); + if (iface->ref) i = write_proxy_methods(iface->ref, iface->ref->ref != NULL); if (iface->funcs) LIST_FOR_EACH_ENTRY( cur, iface->funcs, const func_t, entry ) { var_t *def = cur->def; if (!is_callas(def->attrs)) { if (i) fprintf(proxy, ",\n"); - print_proxy( "%s_", iface->name); + print_proxy( "%s%s_", skip ? "0\t/* " : "", iface->name); write_name(proxy, def); - fprintf(proxy, "_Proxy"); + fprintf(proxy, "_Proxy%s", skip ? " */" : ""); i++; } } return i; } -static int write_stub_methods(type_t *iface) +static int write_stub_methods(type_t *iface, int skip) { const func_t *cur; int i = 0; - if (iface->ref) i = write_stub_methods(iface->ref); + if (iface->ref) i = write_stub_methods(iface->ref, TRUE); else return i; /* skip IUnknown */ if (iface->funcs) LIST_FOR_EACH_ENTRY( cur, iface->funcs, const func_t, entry ) { var_t *def = cur->def; if (!is_local(def->attrs)) { - if (i) fprintf(proxy,",\n"); - print_proxy( "%s_", iface->name); - write_name(proxy, def); - fprintf(proxy, "_Stub"); - i++; + if (skip) + print_proxy("STUB_FORWARDING_FUNCTION,\n"); + else { + if (i) fprintf(proxy,",\n"); + print_proxy( "%s_", iface->name); + write_name(proxy, def); + fprintf(proxy, "_Stub"); + i++; + } } } return i; @@ -549,7 +553,7 @@ print_proxy( "},\n"); print_proxy( "{\n"); indent++; - write_proxy_methods(iface); + write_proxy_methods(iface, FALSE); fprintf(proxy, "\n"); indent--; print_proxy( "}\n"); @@ -561,7 +565,7 @@ print_proxy( "static const PRPC_STUB_FUNCTION %s_table[] =\n", iface->name); print_proxy( "{\n"); indent++; - stubs = write_stub_methods(iface); + stubs = write_stub_methods(iface, FALSE); fprintf(proxy, "\n"); indent--; fprintf(proxy, "};\n");
16 years, 3 months
1
0
0
0
[cgutman] 36206: - Queue a work item to do our work that was previously done in MiniportDpc so SendHandler gets called at the correct IRQL
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Sep 13 23:02:04 2008 New Revision: 36206 URL:
http://svn.reactos.org/svn/reactos?rev=36206&view=rev
Log: - Queue a work item to do our work that was previously done in MiniportDpc so SendHandler gets called at the correct IRQL Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c Modified: branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c URL:
http://svn.reactos.org/svn/reactos/branches/aicom-network-fixes/drivers/net…
============================================================================== --- branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original) +++ branches/aicom-network-fixes/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sat Sep 13 23:02:04 2008 @@ -748,35 +748,23 @@ KeLowerIrql(OldIrql); } - -VOID NTAPI MiniportDpc( - IN PKDPC Dpc, - IN PVOID DeferredContext, - IN PVOID SystemArgument1, - IN PVOID SystemArgument2) -/* - * FUNCTION: Deferred routine to handle serialization - * ARGUMENTS: - * Dpc = Pointer to DPC object - * DeferredContext = Pointer to context information (LOGICAL_ADAPTER) - * SystemArgument1 = Unused - * SystemArgument2 = Unused - */ -{ +VOID NTAPI MiniportWorker( + IN PDEVICE_OBJECT DeviceObject, + IN PVOID Context) +{ + PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(Context); + KIRQL OldIrql; NDIS_STATUS NdisStatus; PVOID WorkItemContext; NDIS_WORK_ITEM_TYPE WorkItemType; - PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); - - NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - - KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); + + KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); NdisStatus = MiniDequeueWorkItem (Adapter, &WorkItemType, &WorkItemContext); - KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); + KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); if (NdisStatus == NDIS_STATUS_SUCCESS) { @@ -870,6 +858,33 @@ break; } } +} + + + +VOID NTAPI MiniportDpc( + IN PKDPC Dpc, + IN PVOID DeferredContext, + IN PVOID SystemArgument1, + IN PVOID SystemArgument2) +/* + * FUNCTION: Deferred routine to handle serialization + * ARGUMENTS: + * Dpc = Pointer to DPC object + * DeferredContext = Pointer to context information (LOGICAL_ADAPTER) + * SystemArgument1 = Unused + * SystemArgument2 = Unused + */ +{ + PIO_WORKITEM WorkItem; + PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); + + NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); + + WorkItem = IoAllocateWorkItem(Adapter->NdisMiniportBlock.DeviceObject); + if( !WorkItem ) return; + + IoQueueWorkItem(WorkItem, MiniportWorker, CriticalWorkQueue, DeferredContext); }
16 years, 3 months
1
0
0
0
[cwittich] 36205: revert 36199
by cwittich@svn.reactos.org
Author: cwittich Date: Sat Sep 13 22:39:06 2008 New Revision: 36205 URL:
http://svn.reactos.org/svn/reactos?rev=36205&view=rev
Log: revert 36199 Modified: trunk/reactos/dll/win32/avifil32/avifil32.rbuild Modified: trunk/reactos/dll/win32/avifil32/avifil32.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/avifil32/avifil3…
============================================================================== --- trunk/reactos/dll/win32/avifil32/avifil32.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/avifil32/avifil32.rbuild [iso-8859-1] Sat Sep 13 22:39:06 2008 @@ -6,6 +6,7 @@ <importlibrary definition="avifil32.spec.def" /> <include base="avifil32">.</include> <include base="ReactOS">include/reactos/wine</include> + <define name="__WINESRC__" /> <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x600</define> <file>acmstream.c</file>
16 years, 3 months
1
0
0
0
[cgutman] 36204: - Merge aicom-network-fixes up to r36198
by cgutman@svn.reactos.org
Author: cgutman Date: Sat Sep 13 19:48:32 2008 New Revision: 36204 URL:
http://svn.reactos.org/svn/reactos?rev=36204&view=rev
Log: - Merge aicom-network-fixes up to r36198 Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c trunk/reactos/drivers/network/ndis/ndis/efilter.c trunk/reactos/drivers/network/ndis/ndis/io.c trunk/reactos/drivers/network/ndis/ndis/miniport.c trunk/reactos/drivers/network/ndis/ndis/protocol.c Modified: trunk/reactos/drivers/network/ndis/ndis/buffer.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/buffer.c [iso-8859-1] Sat Sep 13 19:48:32 2008 @@ -465,7 +465,7 @@ /* - * @unimplemented + * @implemented */ VOID EXPORT @@ -694,7 +694,7 @@ /* - * @unimplemented + * @implemented */ VOID EXPORT @@ -710,12 +710,42 @@ * PoolHandle = Handle returned by NdisAllocatePacketPool */ { - *Status = NDIS_STATUS_FAILURE; -} - - -/* - * @unimplemented + PNDIS_PACKET Temp; + PNDISI_PACKET_POOL Pool = (PNDISI_PACKET_POOL)PoolHandle; + + NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) Packet (0x%X) PoolHandle (0x%X).\n", + Status, Packet, PoolHandle)); + + *Packet = NULL; + + if (Pool == NULL) + { + *Status = NDIS_STATUS_FAILURE; + return; + } + + KeAcquireSpinLockAtDpcLevel(&Pool->SpinLock.SpinLock); + + if (Pool->FreeList) { + Temp = Pool->FreeList; + Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head; + + KeReleaseSpinLockFromDpcLevel(&Pool->SpinLock.SpinLock); + + RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE)); + Temp->Private.Pool = Pool; + + *Packet = Temp; + *Status = NDIS_STATUS_SUCCESS; + } else { + *Status = NDIS_STATUS_RESOURCES; + KeReleaseSpinLockFromDpcLevel(&Pool->SpinLock.SpinLock); + } +} + + +/* + * @implemented */ VOID EXPORT @@ -731,12 +761,37 @@ * PoolHandle = Handle returned by NdisAllocatePacketPool */ { - *Status = NDIS_STATUS_FAILURE; -} - - -/* - * @unimplemented + PNDIS_PACKET Temp; + PNDISI_PACKET_POOL Pool = (PNDISI_PACKET_POOL)PoolHandle; + + NDIS_DbgPrint(MAX_TRACE, ("Status (0x%X) Packet (0x%X) PoolHandle (0x%X).\n", + Status, Packet, PoolHandle)); + + *Packet = NULL; + + if (Pool == NULL) + { + *Status = NDIS_STATUS_FAILURE; + return; + } + + if (Pool->FreeList) { + Temp = Pool->FreeList; + Pool->FreeList = (PNDIS_PACKET)Temp->Private.Head; + + RtlZeroMemory(&Temp->Private, sizeof(NDIS_PACKET_PRIVATE)); + Temp->Private.Pool = Pool; + + *Packet = Temp; + *Status = NDIS_STATUS_SUCCESS; + } else { + *Status = NDIS_STATUS_RESOURCES; + } +} + + +/* + * @implemented */ VOID EXPORT @@ -748,11 +803,17 @@ * Packet = Pointer to packet to free */ { -} - - -/* - * @unimplemented + NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet)); + + KeAcquireSpinLockAtDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock); + Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList; + ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet; + KeReleaseSpinLockFromDpcLevel(&((NDISI_PACKET_POOL*)Packet->Private.Pool)->SpinLock.SpinLock); +} + + +/* + * @implemented */ VOID EXPORT @@ -764,6 +825,10 @@ * Packet = Pointer to packet to free */ { + NDIS_DbgPrint(MAX_TRACE, ("Packet (0x%X).\n", Packet)); + + Packet->Private.Head = (PNDIS_BUFFER)((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList; + ((NDISI_PACKET_POOL*)Packet->Private.Pool)->FreeList = Packet; } @@ -891,13 +956,15 @@ Buffer = _Packet->Private.Head; *_FirstBuffer = Buffer; - *_FirstBufferVA = MmGetMdlVirtualAddress(Buffer); if (Buffer != NULL) { *_FirstBufferLength = MmGetMdlByteCount(Buffer); + *_FirstBufferVA = MmGetSystemAddressForMdl(Buffer); Buffer = Buffer->Next; - } else + } else { *_FirstBufferLength = 0; + *_FirstBufferVA = NULL; + } *_TotalBufferLength = *_FirstBufferLength; Modified: trunk/reactos/drivers/network/ndis/ndis/efilter.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/efilter.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/efilter.c [iso-8859-1] Sat Sep 13 19:48:32 2008 @@ -59,7 +59,7 @@ /* - * @unimplemented + * @implemented */ VOID EXPORT @@ -100,7 +100,7 @@ /* - * @unimplemented + * @implemented */ VOID EXPORT @@ -112,7 +112,6 @@ * Filter = Pointer to Ethernet filter */ { - KIRQL OldIrql; PLIST_ENTRY CurrentEntry; PLOGICAL_ADAPTER Adapter; PADAPTER_BINDING AdapterBinding; @@ -124,7 +123,7 @@ Adapter = (PLOGICAL_ADAPTER)((PETHI_FILTER)Filter)->Miniport; NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { CurrentEntry = Adapter->ProtocolListHead.Flink; @@ -138,7 +137,7 @@ CurrentEntry = CurrentEntry->Flink; } } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); } /* EOF */ Modified: trunk/reactos/drivers/network/ndis/ndis/io.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/io.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/io.c [iso-8859-1] Sat Sep 13 19:48:32 2008 @@ -198,7 +198,7 @@ /* - * @unimplemented + * @implemented */ VOID EXPORT @@ -819,7 +819,7 @@ /* - * @unimplemented + * @implemented */ NDIS_STATUS EXPORT Modified: trunk/reactos/drivers/network/ndis/ndis/miniport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/miniport.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/miniport.c [iso-8859-1] Sat Sep 13 19:48:32 2008 @@ -767,15 +767,16 @@ PVOID WorkItemContext; NDIS_WORK_ITEM_TYPE WorkItemType; PLOGICAL_ADAPTER Adapter = GET_LOGICAL_ADAPTER(DeferredContext); - KIRQL OldIrql; NDIS_DbgPrint(DEBUG_MINIPORT, ("Called.\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); NdisStatus = MiniDequeueWorkItem (Adapter, &WorkItemType, &WorkItemContext); + + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); if (NdisStatus == NDIS_STATUS_SUCCESS) { @@ -869,8 +870,6 @@ break; } } - - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); } @@ -1205,6 +1204,17 @@ { NDIS_DbgPrint(MIN_TRACE, ("OID_GEN_CURRENT_LOOKAHEAD failed. NdisStatus (0x%X).\n", NdisStatus)); return NdisStatus; + } + + NdisStatus = MiniQueryInformation(Adapter, OID_GEN_MAXIMUM_SEND_PACKETS, sizeof(ULONG), + &Adapter->NdisMiniportBlock.MaxSendPackets, &BytesWritten); + + if (NdisStatus != NDIS_STATUS_SUCCESS) + { + NDIS_DbgPrint(MIN_TRACE, ("OID_GEN_MAXIMUM_SEND_PACKETS failed. NdisStatus (0x%X).\n", NdisStatus)); + + /* Set it to 1 if it fails because some drivers don't support this (?)*/ + Adapter->NdisMiniportBlock.MaxSendPackets = 1; } NDIS_DbgPrint(DEBUG_MINIPORT, ("CurLookaheadLength (0x%X).\n", Adapter->NdisMiniportBlock.CurrentLookahead)); Modified: trunk/reactos/drivers/network/ndis/ndis/protocol.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/network/ndis/ndis/…
============================================================================== --- trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] (original) +++ trunk/reactos/drivers/network/ndis/ndis/protocol.c [iso-8859-1] Sat Sep 13 19:48:32 2008 @@ -63,7 +63,6 @@ * - XXX ATM, this only handles loopback packets - is that its designed function? */ { - KIRQL OldIrql; UINT BufferedLength; UINT PacketLength; @@ -76,12 +75,12 @@ NdisQueryPacket(Packet, NULL, NULL, NULL, &PacketLength); NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { Adapter->NdisMiniportBlock.IndicatedPacket[KeGetCurrentProcessorNumber()] = Packet; BufferedLength = CopyPacketToBuffer(Adapter->LookaheadBuffer, Packet, 0, Adapter->NdisMiniportBlock.CurrentLookahead); } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); if (BufferedLength > Adapter->MediumHeaderSize) { @@ -96,11 +95,11 @@ } NDIS_DbgPrint(MAX_TRACE, ("acquiring miniport block lock\n")); - KeAcquireSpinLock(&Adapter->NdisMiniportBlock.Lock, &OldIrql); + KeAcquireSpinLockAtDpcLevel(&Adapter->NdisMiniportBlock.Lock); { Adapter->NdisMiniportBlock.IndicatedPacket[KeGetCurrentProcessorNumber()] = NULL; } - KeReleaseSpinLock(&Adapter->NdisMiniportBlock.Lock, OldIrql); + KeReleaseSpinLockFromDpcLevel(&Adapter->NdisMiniportBlock.Lock); return STATUS_SUCCESS; }
16 years, 3 months
1
0
0
0
← Newer
1
...
37
38
39
40
41
42
43
...
75
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Results per page:
10
25
50
100
200