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
October 2010
----- 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
20 participants
435 discussions
Start a n
N
ew thread
[tkreuzer] 49245: [WIN32K] - Remove a wrong ASSERT - Improve EngLoadImageEx to correctly handle the path and optional dll extension. - Get rid of EngLoadDriver
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Oct 23 21:59:21 2010 New Revision: 49245 URL:
http://svn.reactos.org/svn/reactos?rev=49245&view=rev
Log: [WIN32K] - Remove a wrong ASSERT - Improve EngLoadImageEx to correctly handle the path and optional dll extension. - Get rid of EngLoadDriver Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/device.c branches/reactos-yarotows/subsystems/win32/win32k/eng/ldevobj.c branches/reactos-yarotows/subsystems/win32/win32k/eng/pdevobj.c branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c branches/reactos-yarotows/subsystems/win32/win32k/include/ldevobj.h Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/device.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/device.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/device.c [iso-8859-1] Sat Oct 23 21:59:21 2010 @@ -122,7 +122,7 @@ { DPRINT1("trying driver: %ls\n", pwsz); /* Try to load the display driver */ - pldev = EngLoadDriver(pwsz, LDEV_DEVICE_DISPLAY); + pldev = EngLoadImageEx(pwsz, LDEV_DEVICE_DISPLAY); if (!pldev) { DPRINT1("Could not load driver: '%ls'\n", pwsz); Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/ldevobj.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/ldevobj.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/ldevobj.c [iso-8859-1] Sat Oct 23 21:59:21 2010 @@ -185,8 +185,9 @@ if (!NT_SUCCESS(Status)) { - DPRINT1("Failed to load a GDI driver: '%S'\n", pstrPathName->Buffer); - ASSERT(FALSE); + DPRINT1("Failed to load a GDI driver: '%S', Status = 0x%lx\n", + pstrPathName->Buffer, Status); + /* Free the allocated memory */ ExFreePoolWithTag(pDriverInfo, TAG_LDEV); return FALSE; @@ -322,13 +323,47 @@ LPWSTR pwszDriverName, ULONG ldevtype) { + WCHAR acwBuffer[MAX_PATH]; PLDEVOBJ pldev; UNICODE_STRING strDriverName; + ULONG cwcLength; + LPWSTR pwsz; DPRINT("EngLoadImageEx(%ls, %ld)\n", pwszDriverName, ldevtype); - - /* Initialize the driver name */ - RtlInitUnicodeString(&strDriverName, pwszDriverName); + ASSERT(pwszDriverName); + + /* Initialize buffer for the the driver name */ + RtlInitEmptyUnicodeString(&strDriverName, acwBuffer, sizeof(acwBuffer)); + + /* Start path with systemroot */ + RtlAppendUnicodeToString(&strDriverName, L"\\SystemRoot\\System32\\"); + + /* Get Length of given string */ + cwcLength = wcslen(pwszDriverName); + + /* Check if we have a system32 path given */ + pwsz = pwszDriverName + cwcLength; + while (pwsz > pwszDriverName) + { + if (_wcsnicmp(pwsz, L"\\system32\\", 10) == 0) + { + /* Driver name starts after system32 */ + pwsz += 10; + break; + } + pwsz--; + } + + /* Append the driver name */ + RtlAppendUnicodeToString(&strDriverName, pwsz); + + /* MSDN says "The driver must include this suffix in the pwszDriver string." + But in fact it's optional. */ + if (_wcsnicmp(pwszDriverName + cwcLength - 4, L".dll", 4) != 0) + { + /* Append the .dll suffix */ + RtlAppendUnicodeToString(&strDriverName, L".dll"); + } /* Lock loader */ EngAcquireSemaphore(ghsemLDEVList); @@ -339,7 +374,7 @@ /* Check if the ldev is associated with a file */ if (pldev->pGdiDriverInfo) { - /* Check for match */ + /* Check for match (case insensative) */ if (RtlEqualUnicodeString(&pldev->pGdiDriverInfo->DriverName, &strDriverName, 1)) { /* Image found in LDEV list */ @@ -399,25 +434,6 @@ return pldev; } -PLDEVOBJ -APIENTRY -EngLoadDriver( - LPWSTR pwszDriverName, - ULONG ldevtype) -{ - WCHAR acwBuffer[MAX_PATH]; - PLDEVOBJ pldev; - - ASSERT(pwszDriverName); - DPRINT("EngLoadDriver(%ls, %ld)\n", pwszDriverName, ldevtype); - - /* Create a full file name */ // FIXME: do better than that - swprintf(acwBuffer, L"\\SystemRoot\\System32\\%ls.dll", pwszDriverName); - - pldev = EngLoadImageEx(acwBuffer, ldevtype); - - return pldev; -} /** Exported functions ********************************************************/ Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/pdevobj.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/pdevobj.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/pdevobj.c [iso-8859-1] Sat Oct 23 21:59:21 2010 @@ -261,7 +261,7 @@ } /* Try to get a diplay driver */ - ppdev->pldev = EngLoadDriver(pdm->dmDeviceName, LDEV_DEVICE_DISPLAY); + ppdev->pldev = EngLoadImageEx(pdm->dmDeviceName, LDEV_DEVICE_DISPLAY); if (!ppdev->pldev) { DPRINT1("Could not load display driver '%ls'\n", Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/surface.c [iso-8859-1] Sat Oct 23 21:59:21 2010 @@ -173,7 +173,7 @@ pso->iType = iType; pso->iUniq = InterlockedIncrement((PLONG)&giUniqueSurface); - /* Assign a default palette amd increment its reference count */ + /* Assign a default palette and increment its reference count */ psurf->ppal = appalSurfaceDefault[iFormat]; GDIOBJ_IncrementShareCount(&psurf->ppal->BaseObject); } Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/ldevobj.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/include/ldevobj.h [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/include/ldevobj.h [iso-8859-1] Sat Oct 23 21:59:21 2010 @@ -69,7 +69,7 @@ PLDEVOBJ APIENTRY -EngLoadDriver( +EngLoadImageEx( LPWSTR pwszDriverName, ULONG ldevtype);
14 years, 2 months
1
0
0
0
[janderwald] 49244: [PORTCLS] - Fix multiple bugs in round buffer implementation - Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any...
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 20:20:18 2010 New Revision: 49244 URL:
http://svn.reactos.org/svn/reactos?rev=49244&view=rev
Log: [PORTCLS] - Fix multiple bugs in round buffer implementation - Should result in less audio glitches, especially when playing audio files with low sample rates. Please report any regressions! Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] Sat Oct 23 20:20:18 2010 @@ -686,6 +686,7 @@ ULONG BufferLength; ULONG BytesToCopy; ULONG BufferSize; + ULONG Gap; PUCHAR Buffer; NTSTATUS Status; @@ -696,7 +697,18 @@ { Status = m_IrpQueue->GetMapping(&Buffer, &BufferSize); if (!NT_SUCCESS(Status)) - return; + { + Gap = Position - m_CommonBufferOffset; + if (Gap > m_FrameSize) + { + // insert silence samples + DPRINT1("Inserting Silence Buffer Offset %lu GapLength %lu\n", m_CommonBufferOffset, BufferLength); + m_Stream->Silence((PUCHAR)m_CommonBuffer + m_CommonBufferOffset, BufferLength); + + m_CommonBufferOffset += BufferLength; + break; + } + } BytesToCopy = min(BufferLength, BufferSize); @@ -712,7 +724,7 @@ m_IrpQueue->UpdateMapping(BytesToCopy); m_CommonBufferOffset += BytesToCopy; - BufferLength = Position - m_CommonBufferOffset; + BufferLength -= BytesToCopy; m_Position.PlayOffset += BytesToCopy; if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING) @@ -744,7 +756,18 @@ { Status = m_IrpQueue->GetMapping(&Buffer, &BufferSize); if (!NT_SUCCESS(Status)) - return; + { + Gap = m_CommonBufferSize - m_CommonBufferOffset + Position; + if (Gap > m_FrameSize) + { + // insert silence samples + DPRINT1("Overlap Inserting Silence Buffer Size %lu Offset %lu Gap %lu Position %lu\n", m_CommonBufferSize, m_CommonBufferOffset, Gap, Position); + m_Stream->Silence((PUCHAR)m_CommonBuffer + m_CommonBufferOffset, BufferLength); + + m_CommonBufferOffset += BufferLength; + } + break; + } BytesToCopy = min(BufferLength, BufferSize); @@ -765,7 +788,7 @@ m_CommonBufferOffset += BytesToCopy; m_Position.PlayOffset += BytesToCopy; - BufferLength = m_CommonBufferSize - m_CommonBufferOffset; + BufferLength -=BytesToCopy; if (m_ConnectDetails->Interface.Id == KSINTERFACE_STANDARD_LOOPED_STREAMING) { @@ -1192,7 +1215,6 @@ #endif DPRINT1("CPortPinWaveCyclic::Init Status %x PinId %u Capture %u\n", Status, ConnectDetails->PinId, Capture); - DPRINT1("Bits %u Samples %u Channels %u Tag %u FrameSize %u\n", ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wBitsPerSample, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nSamplesPerSec, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nChannels, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wFormatTag, m_FrameSize); if (!NT_SUCCESS(Status)) return Status; @@ -1268,6 +1290,7 @@ PC_ASSERT(NT_SUCCESS(Status)); PC_ASSERT(m_FrameSize); + DPRINT1("Bits %u Samples %u Channels %u Tag %u FrameSize %u CommonBufferSize %lu\n", ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wBitsPerSample, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nSamplesPerSec, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.nChannels, ((PKSDATAFORMAT_WAVEFORMATEX)(DataFormat))->WaveFormatEx.wFormatTag, m_FrameSize, m_CommonBufferSize); /* set up allocator framing */
14 years, 2 months
1
0
0
0
[janderwald] 49243: [PORTCLS] - Rewrite the topology filter / pin / node property handling - Store property sets of filter / pins / nodes in a common property set array - Write a common dispatch fu...
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 18:51:17 2010 New Revision: 49243 URL:
http://svn.reactos.org/svn/reactos?rev=49243&view=rev
Log: [PORTCLS] - Rewrite the topology filter / pin / node property handling - Store property sets of filter / pins / nodes in a common property set array - Write a common dispatch function, which serves as a trampoline for filter / pin / node property requests - Private property handlers of the drivers are now accessible Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/undoc.cpp Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/undoc.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/undoc.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/undoc.cpp [iso-8859-1] Sat Oct 23 18:51:17 2010 @@ -8,22 +8,6 @@ #include "private.hpp" - -KSPIN_INTERFACE PinInterfaces[] = -{ - { - {STATIC_KSINTERFACESETID_Standard}, - KSINTERFACE_STANDARD_STREAMING, - 0 - }, - { - {STATIC_KSINTERFACESETID_Standard}, - KSINTERFACE_STANDARD_LOOPED_STREAMING, - 0 - } -}; - - NTSTATUS NTAPI KsoDispatchCreateWithGenericFactory( @@ -84,274 +68,6 @@ // FIXME seh probing return KsDisableEvent(Irp, Descriptor->EventList, KSEVENTS_SPINLOCK, (PVOID)Descriptor->EventListLock); -} - -NTSTATUS -PcHandleGuidNullRequest( - IN OUT PIRP Irp, - IN PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor) -{ - PPCNODE_DESCRIPTOR Node; - PPCPROPERTY_ITEM PropertyItem; - PIO_STACK_LOCATION IoStack; - PKSP_NODE Property; - LPGUID Buffer; - ULONG Count = 0, SubIndex, Index; - - // get current irp stack location - IoStack = IoGetCurrentIrpStackLocation(Irp); - - - // access property - Property = (PKSP_NODE)IoStack->Parameters.DeviceIoControl.Type3InputBuffer; - - if (Property->NodeId >= SubDeviceDescriptor->DeviceDescriptor->NodeCount) - { - // request is out of bounds - Irp->IoStatus.Information = 0; - return STATUS_INVALID_PARAMETER; - } - - Node = (PPCNODE_DESCRIPTOR)((ULONG_PTR)SubDeviceDescriptor->DeviceDescriptor->Nodes + (Property->NodeId * SubDeviceDescriptor->DeviceDescriptor->NodeSize)); - - if (!Node->AutomationTable) - { - // request is out of bounds - Irp->IoStatus.Information = 0; - return STATUS_INVALID_PARAMETER; - } - - PC_ASSERT(Node->AutomationTable); - PC_ASSERT(Node->AutomationTable->PropertyCount); - PC_ASSERT(Node->AutomationTable->PropertyItemSize); - - Buffer = (LPGUID)AllocateItem(NonPagedPool, sizeof (GUID) * Node->AutomationTable->PropertyCount, TAG_PORTCLASS); - if (!Buffer) - return STATUS_INSUFFICIENT_RESOURCES; - - PropertyItem = (PCPROPERTY_ITEM*)Node->AutomationTable->Properties; - for (Index = 0; Index < Node->AutomationTable->PropertyCount; Index++) - { - BOOL Found = FALSE; - for (SubIndex = 0; SubIndex < Count; SubIndex++) - { - if (IsEqualGUIDAligned(Buffer[SubIndex], *PropertyItem->Set)) - { - Found = TRUE; - break; - } - } - if (!Found) - { - RtlMoveMemory(&Buffer[Count], PropertyItem->Set, sizeof (GUID)); - Count++; - } - PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + Node->AutomationTable->PropertyItemSize); - } - - // store result length - Irp->IoStatus.Information = sizeof (GUID) * Count; - if (IoStack->Parameters.DeviceIoControl.OutputBufferLength < sizeof (GUID) * Count) - { - // buffer too small - FreeItem(Buffer, TAG_PORTCLASS); - return STATUS_MORE_ENTRIES; - } - - RtlMoveMemory(Irp->UserBuffer, Buffer, sizeof (GUID) * Count); - FreeItem(Buffer, TAG_PORTCLASS); - return STATUS_SUCCESS; -} - -NTSTATUS -PcFindNodePropertyHandler( - PIRP Irp, - PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor, - OUT PPCPROPERTY_ITEM * OutPropertyItem) -{ - PPCNODE_DESCRIPTOR Node; - PPCPROPERTY_ITEM PropertyItem; - PIO_STACK_LOCATION IoStack; - PKSP_NODE Property; - ULONG Index; - - // get current irp stack location - IoStack = IoGetCurrentIrpStackLocation(Irp); - - // access property - Property = (PKSP_NODE)IoStack->Parameters.DeviceIoControl.Type3InputBuffer; - - if (Property->NodeId >= SubDeviceDescriptor->DeviceDescriptor->NodeCount) - { - // request is out of bounds - DPRINT("InvalidIndex %u %u\n", Property->NodeId, SubDeviceDescriptor->DeviceDescriptor->NodeCount); - return STATUS_INVALID_PARAMETER; - } - - Node = (PPCNODE_DESCRIPTOR)((ULONG_PTR)SubDeviceDescriptor->DeviceDescriptor->Nodes + (Property->NodeId * SubDeviceDescriptor->DeviceDescriptor->NodeSize)); - - if (!Node->AutomationTable) - { - // request is out of bounds - Irp->IoStatus.Information = 0; - return STATUS_NOT_FOUND; - } - - // sanity checks - PC_ASSERT(Node->AutomationTable); - PC_ASSERT(Node->AutomationTable->PropertyCount); - PC_ASSERT(Node->AutomationTable->PropertyItemSize); - - PropertyItem = (PCPROPERTY_ITEM*)Node->AutomationTable->Properties; - - DPRINT("NodeId %u PropertyCount %u\n", Property->NodeId, Node->AutomationTable->PropertyCount); - for(Index = 0; Index < Node->AutomationTable->PropertyCount; Index++) - { - if (IsEqualGUIDAligned(*PropertyItem->Set, Property->Property.Set) && PropertyItem->Id == Property->Property.Id) - { - //found property handler - *OutPropertyItem = PropertyItem; - return STATUS_SUCCESS; - } - PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + Node->AutomationTable->PropertyItemSize); - } - - // no handler yet found - DPRINT("NotFound\n"); - return STATUS_NOT_FOUND; -} - -NTSTATUS -PcNodeBasicSupportHandler( - PIRP Irp, - PPCPROPERTY_ITEM PropertyItem) -{ - PULONG Flags; - PIO_STACK_LOCATION IoStack; - PKSPROPERTY_DESCRIPTION Description; - PKSP_NODE Property; - - // get current irp stack location - IoStack = IoGetCurrentIrpStackLocation(Irp); - - // access property - Property = (PKSP_NODE)IoStack->Parameters.DeviceIoControl.Type3InputBuffer; - - PC_ASSERT(IoStack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(ULONG)); - Flags= (PULONG)Irp->UserBuffer; - - // reset flags - *Flags = 0; - - if (PropertyItem->Flags & KSPROPERTY_TYPE_SET) - *Flags |= KSPROPERTY_TYPE_SET; - - if (PropertyItem->Flags & KSPROPERTY_TYPE_GET) - *Flags |= KSPROPERTY_TYPE_GET; - - // store result length - Irp->IoStatus.Information = sizeof(ULONG); - - if (IoStack->Parameters.DeviceIoControl.OutputBufferLength >= sizeof(KSPROPERTY_DESCRIPTION)) - { - // get output buffer - Description = (PKSPROPERTY_DESCRIPTION)Irp->UserBuffer; - - // store result - Description->DescriptionSize = sizeof(KSPROPERTY_DESCRIPTION); - Description->PropTypeSet.Set = KSPROPTYPESETID_General; - Description->PropTypeSet.Id = 0; - Description->PropTypeSet.Flags = 0; - Description->MembersListCount = 0; - Description->Reserved = 0; - - Irp->IoStatus.Information = sizeof(KSPROPERTY_DESCRIPTION); - } - return STATUS_SUCCESS; -} - - -NTSTATUS -PcHandleNodePropertyRequest( - PIRP Irp, - IN PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor) -{ - PIO_STACK_LOCATION IoStack; - PPCPROPERTY_ITEM PropertyItem; - PPCPROPERTY_REQUEST PropertyRequest; - PKSP_NODE Property; - NTSTATUS Status; - - // get current irp stack location - IoStack = IoGetCurrentIrpStackLocation(Irp); - - if (IoStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(KSP_NODE)) - { - // certainly not a node property request - return STATUS_NOT_FOUND; - } - - // access property - Property = (PKSP_NODE)IoStack->Parameters.DeviceIoControl.Type3InputBuffer; - - if (IsEqualGUIDAligned(Property->Property.Set, GUID_NULL) && Property->Property.Id == 0 && Property->Property.Flags == (KSPROPERTY_TYPE_SETSUPPORT | KSPROPERTY_TYPE_TOPOLOGY)) - { - return PcHandleGuidNullRequest(Irp, SubDeviceDescriptor); - } - - // find property handler - Status = PcFindNodePropertyHandler(Irp, SubDeviceDescriptor, &PropertyItem); - - // check for success - if (!NT_SUCCESS(Status)) - { - // might not be a node property request - DPRINT("NotFound\n"); - return STATUS_NOT_FOUND; - } - - if (Property->Property.Flags & KSPROPERTY_TYPE_BASICSUPPORT) - { - // caller issued a basic property request - if (!(PropertyItem->Flags & KSPROPERTY_TYPE_BASICSUPPORT)) - { - // driver does not have a basic support handler - return PcNodeBasicSupportHandler(Irp, PropertyItem); - } - } - - // sanity check - PC_ASSERT(SubDeviceDescriptor->UnknownMiniport); - - // allocate a property request - PropertyRequest = (PPCPROPERTY_REQUEST)AllocateItem(NonPagedPool, sizeof(PCPROPERTY_REQUEST), TAG_PORTCLASS); - if (!PropertyRequest) - return STATUS_INSUFFICIENT_RESOURCES; - - // initialize property request - PropertyRequest->MajorTarget = SubDeviceDescriptor->UnknownMiniport; - PropertyRequest->MinorTarget = SubDeviceDescriptor->UnknownStream; - PropertyRequest->Irp = Irp; - PropertyRequest->Node = Property->NodeId; - PropertyRequest->PropertyItem = PropertyItem; - PropertyRequest->Verb = Property->Property.Flags; - PropertyRequest->InstanceSize = IoStack->Parameters.DeviceIoControl.InputBufferLength - sizeof(KSNODEPROPERTY); - PropertyRequest->Instance = (PVOID)((ULONG_PTR)IoStack->Parameters.DeviceIoControl.Type3InputBuffer + sizeof(KSNODEPROPERTY)); - PropertyRequest->ValueSize = IoStack->Parameters.DeviceIoControl.OutputBufferLength; - PropertyRequest->Value = Irp->UserBuffer; - - Status = PropertyItem->Handler(PropertyRequest); - - if (Status != STATUS_PENDING) - { - //request completed - Irp->IoStatus.Information = PropertyRequest->ValueSize; - FreeItem(PropertyRequest, TAG_PORTCLASS); - } - - // done - DPRINT("Status %x\n", Status); - return Status; } NTSTATUS @@ -362,21 +78,22 @@ IN PKSPROPERTY_SET PropertySet, IN PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor) { - NTSTATUS Status; - - // try handle it as node property request - Status = PcHandleNodePropertyRequest(Irp, SubDeviceDescriptor); - - if (Status == STATUS_NOT_FOUND) - { - // store device descriptor - KSPROPERTY_ITEM_IRP_STORAGE(Irp) = (PKSPROPERTY_ITEM)SubDeviceDescriptor; - - /* then try KsPropertyHandler */ - Status = KsPropertyHandler(Irp, PropertySetCount, PropertySet); - } - - return Status; + PIO_STACK_LOCATION IoStack; + + // get current irp stack location + IoStack = IoGetCurrentIrpStackLocation(Irp); + + if (IoStack->Parameters.DeviceIoControl.InputBufferLength < sizeof(KSPROPERTY)) + { + // certainly an invalid request + return STATUS_INVALID_PARAMETER; + } + + // store device descriptor + KSPROPERTY_ITEM_IRP_STORAGE(Irp) = (PKSPROPERTY_ITEM)SubDeviceDescriptor; + + // then try KsPropertyHandler + return KsPropertyHandler(Irp, PropertySetCount, PropertySet); } VOID @@ -406,15 +123,377 @@ } NTSTATUS +NTAPI +PropertyItemDispatch( + IN PIRP Irp, + IN PKSIDENTIFIER Request, + IN OUT PVOID Data) +{ + PPCPROPERTY_REQUEST PropertyRequest; + PSUBDEVICE_DESCRIPTOR Descriptor; + PKSPROPERTY Property; + PPCNODE_DESCRIPTOR NodeDescriptor; + PKSNODEPROPERTY NodeProperty; + PKSPROPERTY_SET PropertySet; + PPCPROPERTY_ITEM PropertyItem; + PPCAUTOMATION_TABLE NodeAutomation; + PIO_STACK_LOCATION IoStack; + ULONG InstanceSize, ValueSize, Index; + PVOID Instance; + NTSTATUS Status; + + // allocate a property request + PropertyRequest = (PPCPROPERTY_REQUEST)AllocateItem(NonPagedPool, sizeof(PCPROPERTY_REQUEST), TAG_PORTCLASS); + if (!PropertyRequest) + return STATUS_INSUFFICIENT_RESOURCES; + + // grab device descriptor + Descriptor = (PSUBDEVICE_DESCRIPTOR)KSPROPERTY_ITEM_IRP_STORAGE(Irp); + + // get current irp stack + IoStack = IoGetCurrentIrpStackLocation(Irp); + + // get input property request + Property = (PKSPROPERTY)IoStack->Parameters.DeviceIoControl.Type3InputBuffer; + + // get property set + PropertySet = (PKSPROPERTY_SET)KSPROPERTY_SET_IRP_STORAGE(Irp); + + // sanity check + PC_ASSERT(Descriptor); + PC_ASSERT(Descriptor->UnknownMiniport); + + // get instance / value size + InstanceSize = IoStack->Parameters.DeviceIoControl.InputBufferLength; + Instance = Data; + ValueSize = IoStack->Parameters.DeviceIoControl.OutputBufferLength; + + // initialize property request + PropertyRequest->MajorTarget = Descriptor->UnknownMiniport; + PropertyRequest->MinorTarget = Descriptor->UnknownStream; + PropertyRequest->Irp = Irp; + PropertyRequest->Verb = Property->Flags; + + + // check if this is filter / pin property request + if (!(Property->Flags & KSPROPERTY_TYPE_TOPOLOGY)) + { + // adjust input buffer size + InstanceSize -= sizeof(KSPROPERTY); + Instance = (PVOID)((ULONG_PTR)Instance + sizeof(KSPROPERTY)); + + // filter / pin property request dont use node field + PropertyRequest->Node = MAXULONG; + } + else if (InstanceSize >= sizeof(KSNODEPROPERTY)) + { + // request is for a node + InstanceSize -= sizeof(KSNODEPROPERTY); + Instance = (PVOID)((ULONG_PTR)Instance + sizeof(KSNODEPROPERTY)); + + // cast node property request + NodeProperty = (PKSNODEPROPERTY)Request; + + // store node id + PropertyRequest->Node = NodeProperty->NodeId; + } + else + { + // invalid buffer size + return STATUS_INVALID_BUFFER_SIZE; + } + + // store instance size + PropertyRequest->InstanceSize = InstanceSize; + PropertyRequest->Instance = (InstanceSize != 0 ? Instance : NULL); + + // store value size + PropertyRequest->ValueSize = ValueSize; + PropertyRequest->Value = (ValueSize != 0 ? Irp->UserBuffer : NULL); + + // now scan the property set for the attached property set item stored in Relations member + if (PropertySet) + { + // sanity check + PC_ASSERT(IsEqualGUIDAligned(Property->Set, *PropertySet->Set)); + + for(Index = 0; Index < PropertySet->PropertiesCount; Index++) + { + // check if they got the same property id + if (PropertySet->PropertyItem[Index].PropertyId == Property->Id) + { + // found item + PropertyRequest->PropertyItem = (const PCPROPERTY_ITEM*)PropertySet->PropertyItem[Index].Relations; + + // done + break; + } + } + } + + // check if there has been a property set item attached + if (!PropertyRequest->PropertyItem) + { + // is topology node id valid + if (PropertyRequest->Node < Descriptor->DeviceDescriptor->NodeCount) + { + // get node descriptor + NodeDescriptor = (PPCNODE_DESCRIPTOR) ((ULONG_PTR)Descriptor->DeviceDescriptor->Nodes + PropertyRequest->Node * Descriptor->DeviceDescriptor->NodeSize); + + // get node automation table + NodeAutomation = (PPCAUTOMATION_TABLE)NodeDescriptor->AutomationTable; + + // has it got a automation table + if (NodeAutomation) + { + // now scan the properties and check if it supports this request + PropertyItem = (PPCPROPERTY_ITEM)NodeAutomation->Properties; + for(Index = 0; Index < NodeAutomation->PropertyCount; Index++) + { + // are they same property + if (IsEqualGUIDAligned(*PropertyItem->Set, Property->Set)) + { + if (PropertyItem->Id == Property->Id) + { + // found match + PropertyRequest->PropertyItem = PropertyItem; + + // done + break; + } + } + + // move to next property item + PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + NodeAutomation->PropertyItemSize); + } + } + } + } + + if (PropertyRequest->PropertyItem && PropertyRequest->PropertyItem->Handler) + { + // now call the handler + UNICODE_STRING GuidBuffer; + RtlStringFromGUID(Property->Set, &GuidBuffer); + DPRINT1("Calling Node %lu MajorTarget %p MinorTarget %p PropertySet %S PropertyId %lu PropertyFlags %lx InstanceSize %lu ValueSize %lu Handler %p PropertyRequest %p\n", + PropertyRequest->Node, PropertyRequest->MajorTarget, PropertyRequest->MinorTarget, GuidBuffer.Buffer, Property->Id, Property->Flags, PropertyRequest->InstanceSize, PropertyRequest->ValueSize, + PropertyRequest->PropertyItem->Handler, PropertyRequest); + Status = PropertyRequest->PropertyItem->Handler(PropertyRequest); + + Irp->IoStatus.Information = PropertyRequest->ValueSize; + + if (Status != STATUS_PENDING) + { + // free property request + FreeItem(PropertyRequest, TAG_PORTCLASS); + } + } + else + { + FreeItem(PropertyRequest, TAG_PORTCLASS); + Status = STATUS_NOT_FOUND; + } + + /* done */ + return Status; +} + +NTSTATUS PcAddToPropertyTable( - PVOID Ptr, - LONG Unknown, - LONG Unknown2, - LONG Unknown3, - CHAR Unknown4) -{ - UNIMPLEMENTED; - return STATUS_NOT_IMPLEMENTED; + IN PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor, + IN PPCPROPERTY_ITEM PropertyItem, + IN ULONG bNode) +{ + ULONG bFound = FALSE; + ULONG Index, PropertySetIndex, PropertySetItemIndex; + PKSPROPERTY_SET NewPropertySet; + PKSPROPERTY_ITEM FilterPropertyItem, NewFilterPropertyItem; + LPGUID Guid; + //UNICODE_STRING GuidBuffer; + +ASSERT(PropertyItem->Set); + // RtlStringFromGUID(*PropertyItem->Set, &GuidBuffer); + // DPRINT1("PcAddToPropertyTable Adding Item Set %S Id %lu Flags %lx\n", GuidBuffer.Buffer, PropertyItem->Id, PropertyItem->Flags); + + + + //DPRINT1("FilterPropertySetCount %lu\n", SubDeviceDescriptor->FilterPropertySetCount); + // first step check if the property set is present already + for(Index = 0; Index < SubDeviceDescriptor->FilterPropertySetCount; Index++) + { + + //RtlStringFromGUID(*SubDeviceDescriptor->FilterPropertySet[Index].Set, &GuidBuffer); + //DPRINT1("FilterProperty Set %S PropertyCount %lu\n", GuidBuffer.Buffer, SubDeviceDescriptor->FilterPropertySet[Index].PropertiesCount); + if (IsEqualGUIDAligned(*SubDeviceDescriptor->FilterPropertySet[Index].Set, *PropertyItem->Set)) + { + // property set is already present + bFound = TRUE; + PropertySetIndex = Index; + + // break out + break; + } + } + + // is the property set present + if (!bFound) + { + // need to allocate a property set + NewPropertySet = (PKSPROPERTY_SET)AllocateItem(NonPagedPool, (SubDeviceDescriptor->FilterPropertySetCount + 1) * sizeof(KSPROPERTY_SET), TAG_PORTCLASS); + if (!NewPropertySet) + { + // out of memory + return STATUS_INSUFFICIENT_RESOURCES; + } + + // need to allocate property set guid + Guid = (LPGUID)AllocateItem(NonPagedPool, sizeof(GUID), TAG_PORTCLASS); + if (!Guid) + { + // out of memory + FreeItem(NewPropertySet, TAG_PORTCLASS); + return STATUS_INSUFFICIENT_RESOURCES; + } + + // are any existing property sets + if (SubDeviceDescriptor->FilterPropertySetCount) + { + // copy property sets + RtlMoveMemory(NewPropertySet, SubDeviceDescriptor->FilterPropertySet, SubDeviceDescriptor->FilterPropertySetCount * sizeof(KSPROPERTY_SET)); + + // release memory + FreeItem(SubDeviceDescriptor->FilterPropertySet, TAG_PORTCLASS); + } + + // store new property set descriptors + SubDeviceDescriptor->FilterPropertySet = NewPropertySet; + + // store index + PropertySetIndex = SubDeviceDescriptor->FilterPropertySetCount; + + // increment property set count + SubDeviceDescriptor->FilterPropertySetCount++; + + // copy property guid + RtlMoveMemory(Guid, PropertyItem->Set, sizeof(GUID)); + + // initialize property set + SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].Set = Guid; + SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount = 0; + } + + // as the property set has been indentified, now search for duplicate property set item entries + FilterPropertyItem = (PKSPROPERTY_ITEM)SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem; + bFound = FALSE; + + for(Index = 0; Index < SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount; Index++) + { + // now search for an equal property set item + if (FilterPropertyItem->PropertyId == PropertyItem->Id) + { + // found existing property set item + bFound = TRUE; + PropertySetItemIndex = Index; + break; + } + + // move to next entry + FilterPropertyItem++; + } + + if (!bFound) + { + // need to allocate memory for new property set item + NewFilterPropertyItem = (PKSPROPERTY_ITEM)AllocateItem(NonPagedPool, (SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount + 1) * sizeof(KSPROPERTY_ITEM), TAG_PORTCLASS); + if (!NewFilterPropertyItem) + { + // out of memory + return STATUS_INSUFFICIENT_RESOURCES; + } + + // are any existing property set items + if (SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount) + { + // copy property item sets + RtlMoveMemory(NewFilterPropertyItem, + (PVOID)SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem, + SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount * sizeof(KSPROPERTY_ITEM)); + + // release old descriptors + FreeItem((PVOID)SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem, TAG_PORTCLASS); + } + + // store new descriptor + SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem = NewFilterPropertyItem; + + // store index + PropertySetItemIndex = SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount; + + // increment property item set count + SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertiesCount++; + + // now initialize property item + FilterPropertyItem = (PKSPROPERTY_ITEM)&SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem[PropertySetItemIndex]; + FilterPropertyItem->PropertyId = PropertyItem->Id; + FilterPropertyItem->MinProperty = sizeof(KSPROPERTY); + FilterPropertyItem->MinData = 0; + + // are any set operations supported + if (PropertyItem->Flags & PCPROPERTY_ITEM_FLAG_SET) + { + // setup handler + FilterPropertyItem->SetPropertyHandler = PropertyItemDispatch; + } + + // are set operation supported + if (PropertyItem->Flags & PCPROPERTY_ITEM_FLAG_GET) + { + // setup handler + FilterPropertyItem->GetPropertyHandler = PropertyItemDispatch; + } + + // are get operations supported + if (PropertyItem->Flags & PCPROPERTY_ITEM_FLAG_GET) + { + // setup handler + FilterPropertyItem->GetPropertyHandler = PropertyItemDispatch; + } + + // are basic support operations supported + if (PropertyItem->Flags & PCPROPERTY_ITEM_FLAG_BASICSUPPORT) + { + // setup handler + FilterPropertyItem->SupportHandler = PropertyItemDispatch; + } + + if (!bNode) + { + // store property item in relations + // only store property item of filter properties / pin properties + // because filter & pin properties do not require a specific context + // on the other hand node properties are specifically bound to a node + + FilterPropertyItem->Relations = (const KSPROPERTY*)PropertyItem; + } + } + else + { + // property set item handler already present + + if (bNode) + { + // filter & pin properties should not be exposed on a node + ASSERT(SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem[PropertySetItemIndex].Relations == NULL); + } + else + { + // node properties should not be exposed on a filter & pin + ASSERT(SubDeviceDescriptor->FilterPropertySet[PropertySetIndex].PropertyItem[PropertySetItemIndex].Relations != NULL); + } + } + + // done + return STATUS_SUCCESS; } NTSTATUS @@ -491,6 +570,15 @@ EventItem = (PPCEVENT_ITEM)((ULONG_PTR)EventItem + NodeDescriptor->AutomationTable->EventItemSize); } + DPRINT1(" Index %u PropertyCount %u\n", Index, NodeDescriptor->AutomationTable->PropertyCount); + PropertyItem = (PPCPROPERTY_ITEM)NodeDescriptor->AutomationTable->Properties; + for(SubIndex = 0; SubIndex < NodeDescriptor->AutomationTable->PropertyCount; SubIndex++) + { + RtlStringFromGUID(*PropertyItem->Set, &GuidString); + DPRINT1(" PropertyIndex %u GUID %S Id %u Flags %x\n", SubIndex, GuidString.Buffer, PropertyItem->Id, PropertyItem->Flags); + + PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + NodeDescriptor->AutomationTable->PropertyItemSize); + } } @@ -539,10 +627,13 @@ IN PPCFILTER_DESCRIPTOR FilterDescription) { SUBDEVICE_DESCRIPTOR * Descriptor; - ULONG Index; + ULONG Index, SubIndex; NTSTATUS Status = STATUS_INSUFFICIENT_RESOURCES; PPCPIN_DESCRIPTOR SrcDescriptor; - + PPCNODE_DESCRIPTOR NodeDescriptor; + PPCPROPERTY_ITEM PropertyItem; + + // allocate subdevice descriptor Descriptor = (PSUBDEVICE_DESCRIPTOR)AllocateItem(NonPagedPool, sizeof(SUBDEVICE_DESCRIPTOR), TAG_PORTCLASS); if (!Descriptor) return STATUS_INSUFFICIENT_RESOURCES; @@ -551,6 +642,7 @@ InitializeListHead(&Descriptor->SymbolicLinkList); InitializeListHead(&Descriptor->PhysicalConnectionList); + //FIXME add driver category guids Descriptor->Interfaces = (GUID*)AllocateItem(NonPagedPool, sizeof(GUID) * InterfaceCount, TAG_PORTCLASS); if (!Descriptor->Interfaces) goto cleanup; @@ -559,98 +651,215 @@ RtlCopyMemory(Descriptor->Interfaces, InterfaceGuids, sizeof(GUID) * InterfaceCount); Descriptor->InterfaceCount = InterfaceCount; + //DumpFilterDescriptor(FilterDescription); + + // are any property sets supported by the portcls if (FilterPropertiesCount) { - /// FIXME - /// handle driver properties - - DumpFilterDescriptor(FilterDescription); - + // first allocate filter properties set Descriptor->FilterPropertySet = (PKSPROPERTY_SET)AllocateItem(NonPagedPool, sizeof(KSPROPERTY_SET) * FilterPropertiesCount, TAG_PORTCLASS); if (! Descriptor->FilterPropertySet) goto cleanup; + // now copy all filter property sets Descriptor->FilterPropertySetCount = FilterPropertiesCount; for(Index = 0; Index < FilterPropertiesCount; Index++) { + // copy property set RtlMoveMemory(&Descriptor->FilterPropertySet[Index], &FilterProperties[Index], sizeof(KSPROPERTY_SET)); + + if (Descriptor->FilterPropertySet[Index].PropertiesCount) + { + // copy property items to make sure they are dynamically allocated + Descriptor->FilterPropertySet[Index].PropertyItem = (PKSPROPERTY_ITEM)AllocateItem(NonPagedPool, FilterProperties[Index].PropertiesCount * sizeof(KSPROPERTY_ITEM), TAG_PORTCLASS); + if (!Descriptor->FilterPropertySet[Index].PropertyItem) + { + // no memory + goto cleanup; + } + + // copy filter property items + RtlMoveMemory((PVOID)Descriptor->FilterPropertySet[Index].PropertyItem, FilterProperties[Index].PropertyItem, FilterProperties[Index].PropertiesCount * sizeof(KSPROPERTY_ITEM)); + } } } - Descriptor->Topology = (PKSTOPOLOGY)AllocateItem(NonPagedPool, sizeof(KSTOPOLOGY), TAG_PORTCLASS); - if (!Descriptor->Topology) - goto cleanup; - - if (FilterDescription->ConnectionCount) - { - Descriptor->Topology->TopologyConnections = (PKSTOPOLOGY_CONNECTION)AllocateItem(NonPagedPool, sizeof(KSTOPOLOGY_CONNECTION) * FilterDescription->ConnectionCount, TAG_PORTCLASS); - if (!Descriptor->Topology->TopologyConnections) - goto cleanup; - - RtlMoveMemory((PVOID)Descriptor->Topology->TopologyConnections, FilterDescription->Connections, FilterDescription->ConnectionCount * sizeof(PCCONNECTION_DESCRIPTOR)); - Descriptor->Topology->TopologyConnectionsCount = FilterDescription->ConnectionCount; - } - - if (FilterDescription->NodeCount) - { - Descriptor->Topology->TopologyNodes = (const GUID *)AllocateItem(NonPagedPool, sizeof(GUID) * FilterDescription->NodeCount, TAG_PORTCLASS); - if (!Descriptor->Topology->TopologyNodes) - goto cleanup; - - Descriptor->Topology->TopologyNodesNames = (const GUID *)AllocateItem(NonPagedPool, sizeof(GUID) * FilterDescription->NodeCount, TAG_PORTCLASS); - if (!Descriptor->Topology->TopologyNodesNames) - goto cleanup; - - for(Index = 0; Index < FilterDescription->NodeCount; Index++) - { - if (FilterDescription->Nodes[Index].Type) - { - RtlMoveMemory((PVOID)&Descriptor->Topology->TopologyNodes[Index], FilterDescription->Nodes[Index].Type, sizeof(GUID)); - } - if (FilterDescription->Nodes[Index].Name) - { - RtlMoveMemory((PVOID)&Descriptor->Topology->TopologyNodesNames[Index], FilterDescription->Nodes[Index].Name, sizeof(GUID)); - } - } - Descriptor->Topology->TopologyNodesCount = FilterDescription->NodeCount; - } - + // now check if the filter descriptor supports filter properties + if (FilterDescription->AutomationTable) + { + // get first entry + PropertyItem = (PPCPROPERTY_ITEM)FilterDescription->AutomationTable->Properties; + + // copy driver filter property sets + for(Index = 0; Index < FilterDescription->AutomationTable->PropertyCount; Index++) + { + // add the property item + Status = PcAddToPropertyTable(Descriptor, PropertyItem, FALSE); + + // check for success + if (Status != STATUS_SUCCESS) + { + // goto cleanup + goto cleanup; + } + + // move to next entry + PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + FilterDescription->AutomationTable->PropertyItemSize); + } + } + + // check if the filter has pins if (FilterDescription->PinCount) { + // allocate pin factory descriptors Descriptor->Factory.KsPinDescriptor = (PKSPIN_DESCRIPTOR)AllocateItem(NonPagedPool, sizeof(KSPIN_DESCRIPTOR) * FilterDescription->PinCount, TAG_PORTCLASS); if (!Descriptor->Factory.KsPinDescriptor) goto cleanup; + // allocate pin instance info Descriptor->Factory.Instances = (PPIN_INSTANCE_INFO)AllocateItem(NonPagedPool, FilterDescription->PinCount * sizeof(PIN_INSTANCE_INFO), TAG_PORTCLASS); if (!Descriptor->Factory.Instances) goto cleanup; + // initialize pin factory descriptor Descriptor->Factory.PinDescriptorCount = FilterDescription->PinCount; Descriptor->Factory.PinDescriptorSize = sizeof(KSPIN_DESCRIPTOR); + // grab first entry SrcDescriptor = (PPCPIN_DESCRIPTOR)FilterDescription->Pins; - DPRINT("Size %u Expected %u\n", FilterDescription->PinSize, sizeof(PCPIN_DESCRIPTOR)); // copy pin factories for(Index = 0; Index < FilterDescription->PinCount; Index++) { + // copy pin descriptor RtlMoveMemory(&Descriptor->Factory.KsPinDescriptor[Index], &SrcDescriptor->KsPinDescriptor, sizeof(KSPIN_DESCRIPTOR)); - Descriptor->Factory.KsPinDescriptor[Index].Interfaces = PinInterfaces; - Descriptor->Factory.KsPinDescriptor[Index].InterfacesCount = sizeof(PinInterfaces) / sizeof(KSPIN_INTERFACE); - - DPRINT("Index %u DataRangeCount %u\n", Index, SrcDescriptor->KsPinDescriptor.DataRangesCount); - + // initialize pin factory instance data Descriptor->Factory.Instances[Index].CurrentPinInstanceCount = 0; Descriptor->Factory.Instances[Index].MaxFilterInstanceCount = SrcDescriptor->MaxFilterInstanceCount; Descriptor->Factory.Instances[Index].MaxGlobalInstanceCount = SrcDescriptor->MaxGlobalInstanceCount; Descriptor->Factory.Instances[Index].MinFilterInstanceCount = SrcDescriptor->MinFilterInstanceCount; + + // check if the descriptor has an automation table + if (SrcDescriptor->AutomationTable) + { + // it has, grab first entry + PropertyItem = (PPCPROPERTY_ITEM)SrcDescriptor->AutomationTable->Properties; + + // now add all supported property items + for(SubIndex = 0; SubIndex < SrcDescriptor->AutomationTable->PropertyCount; SubIndex++) + { + // add the property item to the table + Status = PcAddToPropertyTable(Descriptor, PropertyItem, FALSE); + + // check for success + if (Status != STATUS_SUCCESS) + { + // goto cleanup + goto cleanup; + } + + // move to next entry + PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + SrcDescriptor->AutomationTable->PropertyItemSize); + } + } + + // move to next entry SrcDescriptor = (PPCPIN_DESCRIPTOR)((ULONG_PTR)SrcDescriptor + FilterDescription->PinSize); } } + // allocate topology descriptor + Descriptor->Topology = (PKSTOPOLOGY)AllocateItem(NonPagedPool, sizeof(KSTOPOLOGY), TAG_PORTCLASS); + if (!Descriptor->Topology) + goto cleanup; + + // are there any connections + if (FilterDescription->ConnectionCount) + { + // allocate connection descriptor + Descriptor->Topology->TopologyConnections = (PKSTOPOLOGY_CONNECTION)AllocateItem(NonPagedPool, sizeof(KSTOPOLOGY_CONNECTION) * FilterDescription->ConnectionCount, TAG_PORTCLASS); + if (!Descriptor->Topology->TopologyConnections) + goto cleanup; + + // copy connection descriptor + RtlMoveMemory((PVOID)Descriptor->Topology->TopologyConnections, FilterDescription->Connections, FilterDescription->ConnectionCount * sizeof(PCCONNECTION_DESCRIPTOR)); + + // store connection count + Descriptor->Topology->TopologyConnectionsCount = FilterDescription->ConnectionCount; + } + + // does the filter have nodes + if (FilterDescription->NodeCount) + { + // allocate topology node types array + Descriptor->Topology->TopologyNodes = (const GUID *)AllocateItem(NonPagedPool, sizeof(GUID) * FilterDescription->NodeCount, TAG_PORTCLASS); + if (!Descriptor->Topology->TopologyNodes) + goto cleanup; + + // allocate topology node names array + Descriptor->Topology->TopologyNodesNames = (const GUID *)AllocateItem(NonPagedPool, sizeof(GUID) * FilterDescription->NodeCount, TAG_PORTCLASS); + if (!Descriptor->Topology->TopologyNodesNames) + goto cleanup; + + // grab first entry + NodeDescriptor = (PPCNODE_DESCRIPTOR)FilterDescription->Nodes; + + // iterate all nodes and copy node types / names and node properties + for(Index = 0; Index < FilterDescription->NodeCount; Index++) + { + // does it have a type + if (NodeDescriptor->Type) + { + // copy node type + RtlMoveMemory((PVOID)&Descriptor->Topology->TopologyNodes[Index], NodeDescriptor->Type, sizeof(GUID)); + } + + // does it have a node name + if (NodeDescriptor->Name) + { + // copy node name + RtlMoveMemory((PVOID)&Descriptor->Topology->TopologyNodesNames[Index], NodeDescriptor->Name, sizeof(GUID)); + } + + // check if has an automation table + if (NodeDescriptor->AutomationTable) + { + // grab first entry + PropertyItem = (PPCPROPERTY_ITEM)NodeDescriptor->AutomationTable->Properties; + + // copy all node properties into the global property set + for(SubIndex = 0; SubIndex < NodeDescriptor->AutomationTable->PropertyCount; SubIndex++) + { + // add to property set + Status = PcAddToPropertyTable(Descriptor, PropertyItem, TRUE); + + // check for success + if (Status != STATUS_SUCCESS) + { + // failed + goto cleanup; + } + + // move to next property item + PropertyItem = (PPCPROPERTY_ITEM)((ULONG_PTR)PropertyItem + NodeDescriptor->AutomationTable->PropertyItemSize); + } + } + + // move to next descriptor + NodeDescriptor = (PPCNODE_DESCRIPTOR)((ULONG_PTR)NodeDescriptor + FilterDescription->NodeSize); + } + + // now store the topology node count + Descriptor->Topology->TopologyNodesCount = FilterDescription->NodeCount; + } + + // store descriptor Descriptor->DeviceDescriptor = FilterDescription; + + // store result *OutSubdeviceDescriptor = Descriptor; + // done return STATUS_SUCCESS; cleanup:
14 years, 2 months
1
0
0
0
[janderwald] 49242: [PORTCLS] - Remove silence buffer hack - Stub DRM Property Handler - Before stopping the audio pin, fill the dma buffer with silence samples - create a subdevice descriptor for ...
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 18:42:59 2010 New Revision: 49242 URL:
http://svn.reactos.org/svn/reactos?rev=49242&view=rev
Log: [PORTCLS] - Remove silence buffer hack - Stub DRM Property Handler - Before stopping the audio pin, fill the dma buffer with silence samples - create a subdevice descriptor for instantiated pins too Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/guids.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_dmus.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavert.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/private.hpp Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/guids.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/guids.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/guids.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -79,6 +79,7 @@ const GUID KSPROPSETID_Pin = {0x8C134960L, 0x51AD, 0x11CF, {0x87, 0x8A, 0x94, 0xF8, 0x01, 0xC1, 0x00, 0x00}}; const GUID KSPROPSETID_Connection = {0x1D58C920L, 0xAC9B, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}}; const GUID KSPROPTYPESETID_General = {0x97E99BA0L, 0xBDEA, 0x11CF, {0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00}}; +const GUID KSPROPSETID_DrmAudioStream = {0x2f2c8ddd, 0x4198, 0x4fac, {0xba, 0x29, 0x61, 0xbb, 0x05, 0xb7, 0xde, 0x06}}; const GUID KSEVENTSETID_LoopedStreaming = {0x4682B940L, 0xC6EF, 0x11D0, {0x96, 0xD8, 0x00, 0xAA, 0x00, 0x51, 0xE5, 0x1D}}; const GUID KSEVENTSETID_Connection = {0x7f4bcbe0L, 0x9ea5, 0x11cf, {0xa5, 0xd6, 0x28, 0xdb, 0x04, 0xc1, 0x00, 0x00}}; Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -321,8 +321,7 @@ STDMETHOD_(NTSTATUS, Init)(THIS_ IN KSPIN_CONNECT *ConnectDetails, IN ULONG FrameSize, - IN ULONG Alignment, - IN PVOID SilenceBuffer) PURE; + IN ULONG Alignment) PURE; STDMETHOD_(NTSTATUS, AddMapping)(THIS_ IN PIRP Irp, @@ -363,8 +362,7 @@ STDMETHODIMP_(NTSTATUS) Init(THIS_ \ IN KSPIN_CONNECT *ConnectDetails, \ IN ULONG FrameSize, \ - IN ULONG Alignment, \ - IN PVOID SilenceBuffer); \ + IN ULONG Alignment); \ \ STDMETHODIMP_(NTSTATUS) AddMapping(THIS_ \ IN PIRP Irp, \ Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/irpstream.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -43,7 +43,6 @@ LIST_ENTRY m_IrpList; LIST_ENTRY m_FreeIrpList; PIRP m_Irp; - PVOID m_SilenceBuffer; ULONG m_OutOfMapping; ULONG m_MaxFrameSize; @@ -84,12 +83,10 @@ CIrpQueue::Init( IN KSPIN_CONNECT *ConnectDetails, IN ULONG FrameSize, - IN ULONG Alignment, - IN PVOID SilenceBuffer) + IN ULONG Alignment) { m_ConnectDetails = ConnectDetails; m_MaxFrameSize = FrameSize; - m_SilenceBuffer = SilenceBuffer; m_Alignment = Alignment; InitializeListHead(&m_IrpList); @@ -259,21 +256,12 @@ m_CurrentOffset = Offset = 0; } - if (!Irp && m_SilenceBuffer && m_MaxFrameSize) - { + if (!Irp) + { + // no irp buffer available DPRINT("NoIrp\n"); - // no irp available, use silence buffer - *Buffer = (PUCHAR)m_SilenceBuffer; - *BufferSize = m_MaxFrameSize; - return STATUS_SUCCESS; - } - - if (!Irp) - { - // no irp buffer available return STATUS_UNSUCCESSFUL; } - // get stream header StreamHeader = (PKSSTREAM_HEADER)Irp->Tail.Overlay.DriverContext[2]; Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_dmus.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_dmus.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_dmus.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -604,7 +604,7 @@ } } - Status = m_IrpQueue->Init(ConnectDetails, 0, 0, NULL); + Status = m_IrpQueue->Init(ConnectDetails, 0, 0); if (!NT_SUCCESS(Status)) { DPRINT("IrpQueue_Init failed with %x\n", Status); Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -73,7 +73,7 @@ ULONG m_StopCount; KSAUDIO_POSITION m_Position; KSALLOCATOR_FRAMING m_AllocatorFraming; - SUBDEVICE_DESCRIPTOR m_Descriptor; + PSUBDEVICE_DESCRIPTOR m_Descriptor; KSPIN_LOCK m_EventListLock; LIST_ENTRY m_EventList; @@ -105,10 +105,12 @@ NTSTATUS NTAPI PinWaveCyclicAllocatorFraming(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data); NTSTATUS NTAPI PinWaveCyclicAddEndOfStreamEvent(IN PIRP Irp, IN PKSEVENTDATA EventData, IN PKSEVENT_ENTRY EventEntry); NTSTATUS NTAPI PinWaveCyclicAddLoopedStreamEvent(IN PIRP Irp, IN PKSEVENTDATA EventData, IN PKSEVENT_ENTRY EventEntry); +NTSTATUS NTAPI PinWaveCyclicDRMHandler(IN PIRP Irp, IN PKSIDENTIFIER Request, IN OUT PVOID Data); DEFINE_KSPROPERTY_CONNECTIONSET(PinWaveCyclicConnectionSet, PinWaveCyclicState, PinWaveCyclicDataFormat, PinWaveCyclicAllocatorFraming); DEFINE_KSPROPERTY_AUDIOSET(PinWaveCyclicAudioSet, PinWaveCyclicAudioPosition); +DEFINE_KSPROPERTY_DRMSET(PinWaveCyclicDRMSet, PinWaveCyclicDRMHandler); KSEVENT_ITEM PinWaveCyclicConnectionEventSet = { @@ -146,6 +148,13 @@ (const KSPROPERTY_ITEM*)&PinWaveCyclicAudioSet, 0, NULL + }, + { + &KSPROPSETID_DrmAudioStream, + sizeof(PinWaveCyclicDRMSet) / sizeof(KSPROPERTY_ITEM), + (const KSPROPERTY_ITEM*)&PinWaveCyclicDRMSet, + 0, + NULL } }; @@ -191,6 +200,19 @@ return STATUS_UNSUCCESSFUL; } + +NTSTATUS +NTAPI +PinWaveCyclicDRMHandler( + IN PIRP Irp, + IN PKSIDENTIFIER Request, + IN OUT PVOID Data) +{ + DPRINT1("PinWaveCyclicDRMHandler\n"); + ASSERT(0); + return STATUS_INVALID_PARAMETER; +} + NTSTATUS NTAPI @@ -448,12 +470,14 @@ { // FIXME // complete with successful state + Pin->m_Stream->Silence(Pin->m_CommonBuffer, Pin->m_CommonBufferSize); Pin->m_IrpQueue->CancelBuffers(); Pin->m_Position.PlayOffset = 0; Pin->m_Position.WriteOffset = 0; } else if (Pin->m_State == KSSTATE_STOP) { + Pin->m_Stream->Silence(Pin->m_CommonBuffer, Pin->m_CommonBufferSize); Pin->m_IrpQueue->CancelBuffers(); Pin->m_Position.PlayOffset = 0; Pin->m_Position.WriteOffset = 0; @@ -751,7 +775,6 @@ m_Position.PlayOffset = m_Position.PlayOffset % m_Position.WriteOffset; } } - } if (Gap == Length) @@ -773,22 +796,13 @@ { ULONG Position; NTSTATUS Status; - PUCHAR Buffer; - ULONG BufferSize; ULONGLONG OldOffset, NewOffset; PC_ASSERT_IRQL(DISPATCH_LEVEL); if (m_State == KSSTATE_RUN) { - Status = m_IrpQueue->GetMapping(&Buffer, &BufferSize); - if (!NT_SUCCESS(Status)) - { - return; - } - Status = m_Stream->GetPosition(&Position); - DPRINT("Position %u Buffer %p BufferSize %u ActiveIrpOffset %u Capture %u\n", Position, Buffer, m_CommonBufferSize, BufferSize, m_Capture); OldOffset = m_Position.PlayOffset; @@ -841,7 +855,7 @@ if (IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_PROPERTY) { /* handle property with subdevice descriptor */ - Status = PcHandlePropertyWithTable(Irp, m_Descriptor.FilterPropertySetCount, m_Descriptor.FilterPropertySet, &m_Descriptor); + Status = PcHandlePropertyWithTable(Irp, m_Descriptor->FilterPropertySetCount, m_Descriptor->FilterPropertySet, m_Descriptor); if (Status == STATUS_NOT_FOUND) { @@ -854,11 +868,11 @@ } else if (IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_ENABLE_EVENT) { - Status = PcHandleEnableEventWithTable(Irp, &m_Descriptor); + Status = PcHandleEnableEventWithTable(Irp, m_Descriptor); } else if (IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_DISABLE_EVENT) { - Status = PcHandleDisableEventWithTable(Irp, &m_Descriptor); + Status = PcHandleDisableEventWithTable(Irp, m_Descriptor); } else if (IoStack->Parameters.DeviceIoControl.IoControlCode == IOCTL_KS_RESET_STATE) { @@ -1120,7 +1134,6 @@ PKSDATAFORMAT DataFormat; PDEVICE_OBJECT DeviceObject; BOOLEAN Capture; - PVOID SilenceBuffer; PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor = NULL; //IDrmAudioStream * DrmAudio = NULL; @@ -1203,18 +1216,26 @@ InitializeListHead(&m_EventList); KeInitializeSpinLock(&m_EventListLock); - /* set up subdevice descriptor */ - RtlZeroMemory(&m_Descriptor, sizeof(SUBDEVICE_DESCRIPTOR)); - m_Descriptor.FilterPropertySet = PinWaveCyclicPropertySet; - m_Descriptor.FilterPropertySetCount = sizeof(PinWaveCyclicPropertySet) / sizeof(KSPROPERTY_SET); - m_Descriptor.UnknownStream = (PUNKNOWN)m_Stream; - m_Descriptor.DeviceDescriptor = SubDeviceDescriptor->DeviceDescriptor; - m_Descriptor.UnknownMiniport = SubDeviceDescriptor->UnknownMiniport; - m_Descriptor.PortPin = (PVOID)this; - m_Descriptor.EventSetCount = sizeof(PinWaveCyclicEventSet) / sizeof(KSEVENT_SET); - m_Descriptor.EventSet = PinWaveCyclicEventSet; - m_Descriptor.EventList = &m_EventList; - m_Descriptor.EventListLock = &m_EventListLock; + Status = PcCreateSubdeviceDescriptor(&m_Descriptor, + SubDeviceDescriptor->InterfaceCount, + SubDeviceDescriptor->Interfaces, + 0, /* FIXME KSINTERFACE_STANDARD with KSINTERFACE_STANDARD_STREAMING / KSINTERFACE_STANDARD_LOOPED_STREAMING */ + NULL, + sizeof(PinWaveCyclicPropertySet) / sizeof(KSPROPERTY_SET), + PinWaveCyclicPropertySet, + 0, + 0, + 0, + NULL, + sizeof(PinWaveCyclicEventSet) / sizeof(KSEVENT_SET), + PinWaveCyclicEventSet, + SubDeviceDescriptor->DeviceDescriptor); + + m_Descriptor->UnknownStream = (PUNKNOWN)m_Stream; + m_Descriptor->UnknownMiniport = SubDeviceDescriptor->UnknownMiniport; + m_Descriptor->PortPin = (PVOID)this; + m_Descriptor->EventList = &m_EventList; + m_Descriptor->EventListLock = &m_EventListLock; // initialize reset state m_ResetState = KSRESET_END; @@ -1247,9 +1268,6 @@ PC_ASSERT(NT_SUCCESS(Status)); PC_ASSERT(m_FrameSize); - SilenceBuffer = AllocateItem(NonPagedPool, m_FrameSize, TAG_PORTCLASS); - if (!SilenceBuffer) - return STATUS_INSUFFICIENT_RESOURCES; /* set up allocator framing */ @@ -1260,10 +1278,9 @@ m_AllocatorFraming.Reserved = 0; m_AllocatorFraming.FrameSize = m_FrameSize; - m_Stream->Silence(SilenceBuffer, m_FrameSize); m_Stream->Silence(m_CommonBuffer, m_CommonBufferSize); - Status = m_IrpQueue->Init(ConnectDetails, m_FrameSize, 0, SilenceBuffer); + Status = m_IrpQueue->Init(ConnectDetails, m_FrameSize, 0); if (!NT_SUCCESS(Status)) { m_IrpQueue->Release(); @@ -1282,9 +1299,6 @@ m_Port = Port; m_Filter = Filter; - //DPRINT("Setting state to acquire %x\n", m_Stream->SetState(KSSTATE_ACQUIRE)); - //DPRINT("Setting state to pause %x\n", m_Stream->SetState(KSSTATE_PAUSE)); - return STATUS_SUCCESS; } Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -919,7 +919,7 @@ } // initialize irp queue - Status = m_IrpQueue->Init(ConnectDetails, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment, NULL); + Status = m_IrpQueue->Init(ConnectDetails, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment); if (!NT_SUCCESS(Status)) { // this should never happen Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavert.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavert.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavert.cpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -587,7 +587,7 @@ goto cleanup; } - Status = m_IrpQueue->Init(ConnectDetails, 0, 0, NULL); + Status = m_IrpQueue->Init(ConnectDetails, 0, 0); if (!NT_SUCCESS(Status)) { goto cleanup; Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/private.hpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/private.hpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/private.hpp [iso-8859-1] Sat Oct 23 18:42:59 2010 @@ -354,6 +354,22 @@ PropPositionHandler)\ DEFINE_KSPROPERTY_TABLE(PinSet) {\ DEFINE_KSPROPERTY_ITEM_AUDIO_POSITION(PropPositionHandler, PropPositionHandler)\ +} + + +#define DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(SetHandler)\ + DEFINE_KSPROPERTY_ITEM(\ + KSPROPERTY_DRMAUDIOSTREAM_CONTENTID,\ + NULL,\ + sizeof(KSPROPERTY),\ + sizeof(ULONG),\ + (SetHandler),\ + NULL, 0, NULL, NULL, 0) + +#define DEFINE_KSPROPERTY_DRMSET(PinSet,\ + PropPositionHandler)\ +DEFINE_KSPROPERTY_TABLE(PinSet) {\ + DEFINE_KSPROPERTY_ITEM_DRMAUDIOSTREAM_CONTENTID(PropPositionHandler)\ } #define DEFINE_KSPROPERTY_PINPROPOSEDATAFORMAT(PinSet,\
14 years, 2 months
1
0
0
0
[tkreuzer] 49241: [FORMATTING] Fix indentation, no code change.
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Oct 23 17:05:34 2010 New Revision: 49241 URL:
http://svn.reactos.org/svn/reactos?rev=49241&view=rev
Log: [FORMATTING] Fix indentation, no code change. Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/mouse.c Modified: branches/reactos-yarotows/subsystems/win32/win32k/eng/mouse.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
============================================================================== --- branches/reactos-yarotows/subsystems/win32/win32k/eng/mouse.c [iso-8859-1] (original) +++ branches/reactos-yarotows/subsystems/win32/win32k/eng/mouse.c [iso-8859-1] Sat Oct 23 17:05:34 2010 @@ -77,9 +77,9 @@ } if (pgp->Exclude.right >= HazardX1 - && pgp->Exclude.left <= HazardX2 - && pgp->Exclude.bottom >= HazardY1 - && pgp->Exclude.top <= HazardY2) + && pgp->Exclude.left <= HazardX2 + && pgp->Exclude.bottom >= HazardY1 + && pgp->Exclude.top <= HazardY2) { ppdev->SafetyRemoveLevel = ppdev->SafetyRemoveCount; ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj, -1, -1, NULL); @@ -112,7 +112,10 @@ return FALSE; } - ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj, gpsi->ptCursor.x, gpsi->ptCursor.y, &pgp->Exclude); + ppdev->pfnMovePointer(&ppdev->pSurface->SurfObj, + gpsi->ptCursor.x, + gpsi->ptCursor.y, + &pgp->Exclude); ppdev->SafetyRemoveLevel = 0; @@ -163,16 +166,16 @@ ptlSave.y = rclDest.top - pt.y; IntEngBitBlt(psoDest, - &pgp->psurfSave->SurfObj, - NULL, - NULL, - NULL, - &rclDest, - &ptlSave, - &ptlSave, - NULL, - NULL, - ROP3_TO_ROP4(SRCCOPY)); + &pgp->psurfSave->SurfObj, + NULL, + NULL, + NULL, + &rclDest, + &ptlSave, + &ptlSave, + NULL, + NULL, + ROP3_TO_ROP4(SRCCOPY)); } VOID @@ -216,71 +219,71 @@ /* Copy the pixels under the cursor to temporary surface. */ IntEngBitBlt(&pgp->psurfSave->SurfObj, - psoDest, - NULL, - NULL, - NULL, - &rclPointer, - (POINTL*)&rclSurf, - NULL, - NULL, - NULL, - ROP3_TO_ROP4(SRCCOPY)); + psoDest, + NULL, + NULL, + NULL, + &rclPointer, + (POINTL*)&rclSurf, + NULL, + NULL, + NULL, + ROP3_TO_ROP4(SRCCOPY)); /* Blt the pointer on the screen. */ if (pgp->psurfColor) { IntEngBitBlt(psoDest, - &pgp->psurfMask->SurfObj, - NULL, - NULL, - NULL, - &rclSurf, - (POINTL*)&rclPointer, - NULL, - NULL, - NULL, - ROP3_TO_ROP4(SRCAND)); + &pgp->psurfMask->SurfObj, + NULL, + NULL, + NULL, + &rclSurf, + (POINTL*)&rclPointer, + NULL, + NULL, + NULL, + ROP3_TO_ROP4(SRCAND)); IntEngBitBlt(psoDest, - &pgp->psurfColor->SurfObj, - NULL, - NULL, - NULL, - &rclSurf, - (POINTL*)&rclPointer, - NULL, - NULL, - NULL, - ROP3_TO_ROP4(SRCINVERT)); + &pgp->psurfColor->SurfObj, + NULL, + NULL, + NULL, + &rclSurf, + (POINTL*)&rclPointer, + NULL, + NULL, + NULL, + ROP3_TO_ROP4(SRCINVERT)); } else { IntEngBitBlt(psoDest, - &pgp->psurfMask->SurfObj, - NULL, - NULL, - NULL, - &rclSurf, - (POINTL*)&rclPointer, - NULL, - NULL, - NULL, - ROP3_TO_ROP4(SRCAND)); + &pgp->psurfMask->SurfObj, + NULL, + NULL, + NULL, + &rclSurf, + (POINTL*)&rclPointer, + NULL, + NULL, + NULL, + ROP3_TO_ROP4(SRCAND)); rclPointer.top += pgp->Size.cy; IntEngBitBlt(psoDest, - &pgp->psurfMask->SurfObj, - NULL, - NULL, - NULL, - &rclSurf, - (POINTL*)&rclPointer, - NULL, - NULL, - NULL, - ROP3_TO_ROP4(SRCINVERT)); + &pgp->psurfMask->SurfObj, + NULL, + NULL, + NULL, + &rclSurf, + (POINTL*)&rclPointer, + NULL, + NULL, + NULL, + ROP3_TO_ROP4(SRCINVERT)); } } @@ -317,16 +320,16 @@ if (psoColor || psoMask) { /* Get the size of the new pointer */ - if (psoColor) - { + if (psoColor) + { sizel.cx = psoColor->sizlBitmap.cx; sizel.cy = psoColor->sizlBitmap.cy; - } + } else// if (psoMask) - { + { sizel.cx = psoMask->sizlBitmap.cx; sizel.cy = psoMask->sizlBitmap.cy / 2; - } + } rectl.left = 0; rectl.top = 0; @@ -379,35 +382,35 @@ /* Create a bitmap for the mask */ hbmMask = EngCreateBitmap(psoMask->sizlBitmap, - lDelta, - pso->iBitmapFormat, - BMF_TOPDOWN | BMF_NOZEROINIT, - NULL); + lDelta, + pso->iBitmapFormat, + BMF_TOPDOWN | BMF_NOZEROINIT, + NULL); psurfMask = SURFACE_ShareLockSurface(hbmMask); if (!psurfMask) goto failure; /* Initialize an EXLATEOBJ */ - ppal = PALETTE_LockPalette(ppdev->devinfo.hpalDefault); - EXLATEOBJ_vInitialize(&exlo, - &gpalMono, - ppal, - 0, - RGB(0xff,0xff,0xff), - RGB(0,0,0)); + ppal = PALETTE_LockPalette(ppdev->devinfo.hpalDefault); + EXLATEOBJ_vInitialize(&exlo, + &gpalMono, + ppal, + 0, + RGB(0xff,0xff,0xff), + RGB(0,0,0)); /* Copy the mask bitmap */ rectl.bottom = psoMask->sizlBitmap.cy; IntEngCopyBits(&psurfMask->SurfObj, - psoMask, - NULL, - &exlo.xlo, + psoMask, + NULL, + &exlo.xlo, &rectl, (POINTL*)&rectl); /* Cleanup */ - EXLATEOBJ_vCleanup(&exlo); + EXLATEOBJ_vCleanup(&exlo); if (ppal) PALETTE_UnlockPalette(ppal); - } + } /* Hide mouse pointer */ IntHideMousePointer(ppdev, pso); @@ -434,7 +437,7 @@ EngDeleteSurface(pgp->psurfSave->BaseObject.hHmgr); SURFACE_ShareUnlockSurface(pgp->psurfSave); pgp->psurfSave = NULL; - } + } /* See if we are being asked to hide the pointer. */ if (psoMask == NULL && psoColor == NULL)
14 years, 2 months
1
0
0
0
[tkreuzer] 49240: sync with trunk (r49238)
by tkreuzer@svn.reactos.org
Author: tkreuzer Date: Sat Oct 23 16:42:45 2010 New Revision: 49240 URL:
http://svn.reactos.org/svn/reactos?rev=49240&view=rev
Log: sync with trunk (r49238) Added: branches/reactos-yarotows/base/applications/calc/lang/ja-JP.rc - copied unchanged from r49238, trunk/reactos/base/applications/calc/lang/ja-JP.rc branches/reactos-yarotows/base/applications/cmdutils/reg/Sv.rc - copied unchanged from r49238, trunk/reactos/base/applications/cmdutils/reg/Sv.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/Sv.rc - copied unchanged from r49238, trunk/reactos/base/applications/cmdutils/xcopy/Sv.rc branches/reactos-yarotows/base/applications/games/winmine/ (props changed) - copied from r49238, trunk/reactos/base/applications/games/winmine/ branches/reactos-yarotows/base/applications/winhlp32/He.rc - copied unchanged from r49238, trunk/reactos/base/applications/winhlp32/He.rc branches/reactos-yarotows/base/applications/winhlp32/Sr.rc - copied unchanged from r49238, trunk/reactos/base/applications/winhlp32/Sr.rc branches/reactos-yarotows/dll/directx/wine/wined3d/powf.c - copied unchanged from r49238, trunk/reactos/dll/directx/wine/wined3d/powf.c branches/reactos-yarotows/dll/directx/wine/wined3d/sqrtf.c - copied unchanged from r49238, trunk/reactos/dll/directx/wine/wined3d/sqrtf.c branches/reactos-yarotows/dll/win32/advapi32/misc/efs.c - copied unchanged from r49238, trunk/reactos/dll/win32/advapi32/misc/efs.c branches/reactos-yarotows/drivers/storage/class/cdrom_new/ - copied from r49238, trunk/reactos/drivers/storage/class/cdrom_new/ branches/reactos-yarotows/drivers/storage/classpnp/autorun.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/autorun.c branches/reactos-yarotows/drivers/storage/classpnp/class.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/class.c branches/reactos-yarotows/drivers/storage/classpnp/class.def - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/class.def branches/reactos-yarotows/drivers/storage/classpnp/class.rc - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/class.rc branches/reactos-yarotows/drivers/storage/classpnp/classp.h - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/classp.h branches/reactos-yarotows/drivers/storage/classpnp/classpnp.rbuild - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/classpnp.rbuild branches/reactos-yarotows/drivers/storage/classpnp/classwmi.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/classwmi.c branches/reactos-yarotows/drivers/storage/classpnp/clntirp.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/clntirp.c branches/reactos-yarotows/drivers/storage/classpnp/create.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/create.c branches/reactos-yarotows/drivers/storage/classpnp/data.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/data.c branches/reactos-yarotows/drivers/storage/classpnp/debug.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/debug.c branches/reactos-yarotows/drivers/storage/classpnp/debug.h - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/debug.h branches/reactos-yarotows/drivers/storage/classpnp/dictlib.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/dictlib.c branches/reactos-yarotows/drivers/storage/classpnp/lock.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/lock.c branches/reactos-yarotows/drivers/storage/classpnp/obsolete.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/obsolete.c branches/reactos-yarotows/drivers/storage/classpnp/power.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/power.c branches/reactos-yarotows/drivers/storage/classpnp/retry.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/retry.c branches/reactos-yarotows/drivers/storage/classpnp/utils.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/utils.c branches/reactos-yarotows/drivers/storage/classpnp/xferpkt.c - copied unchanged from r49238, trunk/reactos/drivers/storage/classpnp/xferpkt.c branches/reactos-yarotows/drivers/storage/inc/ - copied from r49238, trunk/reactos/drivers/storage/inc/ branches/reactos-yarotows/lib/drivers/sound/mmixer/topology.c - copied unchanged from r49238, trunk/reactos/lib/drivers/sound/mmixer/topology.c branches/reactos-yarotows/lib/sdk/crt/math/powf.c - copied unchanged from r49238, trunk/reactos/lib/sdk/crt/math/powf.c Removed: branches/reactos-yarotows/base/applications/games/winemine/ Modified: branches/reactos-yarotows/ (props changed) branches/reactos-yarotows/base/applications/calc/lang/en-US.rc branches/reactos-yarotows/base/applications/calc/resource.rc branches/reactos-yarotows/base/applications/cmdutils/reg/It.rc branches/reactos-yarotows/base/applications/cmdutils/reg/rsrc.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/Da.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/De.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/En.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/Fr.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/It.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/Ja.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/Ko.rc branches/reactos-yarotows/base/applications/cmdutils/xcopy/rsrc.rc branches/reactos-yarotows/base/applications/games/games.rbuild branches/reactos-yarotows/base/applications/games/winmine/lang/ (props changed) branches/reactos-yarotows/base/applications/games/winmine/rc/ (props changed) branches/reactos-yarotows/base/applications/paint/rsrc.rc branches/reactos-yarotows/base/applications/winhlp32/Bg.rc branches/reactos-yarotows/base/applications/winhlp32/Cs.rc branches/reactos-yarotows/base/applications/winhlp32/Da.rc branches/reactos-yarotows/base/applications/winhlp32/De.rc branches/reactos-yarotows/base/applications/winhlp32/En.rc branches/reactos-yarotows/base/applications/winhlp32/Es.rc branches/reactos-yarotows/base/applications/winhlp32/Fi.rc branches/reactos-yarotows/base/applications/winhlp32/Fr.rc branches/reactos-yarotows/base/applications/winhlp32/Hu.rc branches/reactos-yarotows/base/applications/winhlp32/It.rc branches/reactos-yarotows/base/applications/winhlp32/Ja.rc branches/reactos-yarotows/base/applications/winhlp32/Ko.rc branches/reactos-yarotows/base/applications/winhlp32/Lt.rc branches/reactos-yarotows/base/applications/winhlp32/Nl.rc branches/reactos-yarotows/base/applications/winhlp32/No.rc branches/reactos-yarotows/base/applications/winhlp32/Pl.rc branches/reactos-yarotows/base/applications/winhlp32/Pt.rc branches/reactos-yarotows/base/applications/winhlp32/Rm.rc branches/reactos-yarotows/base/applications/winhlp32/Ro.rc branches/reactos-yarotows/base/applications/winhlp32/Ru.rc branches/reactos-yarotows/base/applications/winhlp32/Si.rc branches/reactos-yarotows/base/applications/winhlp32/Sk.rc branches/reactos-yarotows/base/applications/winhlp32/Sv.rc branches/reactos-yarotows/base/applications/winhlp32/Tr.rc branches/reactos-yarotows/base/applications/winhlp32/Uk.rc branches/reactos-yarotows/base/applications/winhlp32/Zh.rc branches/reactos-yarotows/base/applications/winhlp32/macro.c branches/reactos-yarotows/base/applications/winhlp32/rsrc.rc branches/reactos-yarotows/base/applications/winhlp32/winhelp.c branches/reactos-yarotows/base/applications/winhlp32/winhelp_res.h branches/reactos-yarotows/base/applications/wordpad/It.rc branches/reactos-yarotows/base/applications/wordpad/Zh.rc branches/reactos-yarotows/base/setup/usetup/lang/ja-JP.h branches/reactos-yarotows/base/system/lsass/lsass.c branches/reactos-yarotows/base/system/msiexec/rsrc.rc branches/reactos-yarotows/base/system/services/rpcserver.c branches/reactos-yarotows/boot/bootdata/packages/reactos.dff branches/reactos-yarotows/dll/directx/wine/wined3d/wined3d.rbuild branches/reactos-yarotows/dll/win32/advapi32/advapi32.rbuild branches/reactos-yarotows/dll/win32/advapi32/advapi32.spec branches/reactos-yarotows/dll/win32/advapi32/sec/cred.c branches/reactos-yarotows/dll/win32/advapi32/sec/lsa.c branches/reactos-yarotows/dll/win32/advapi32/sec/sec.c branches/reactos-yarotows/dll/win32/jscript/jscript_Si.rc (props changed) branches/reactos-yarotows/dll/win32/lsasrv/lsarpc.c branches/reactos-yarotows/dll/win32/lsasrv/lsasrv.c branches/reactos-yarotows/dll/win32/lsasrv/lsasrv.spec branches/reactos-yarotows/dll/win32/msi/action.c branches/reactos-yarotows/dll/win32/msi/appsearch.c branches/reactos-yarotows/dll/win32/msi/classes.c branches/reactos-yarotows/dll/win32/msi/cond.tab.c branches/reactos-yarotows/dll/win32/msi/cond.y branches/reactos-yarotows/dll/win32/msi/custom.c branches/reactos-yarotows/dll/win32/msi/database.c branches/reactos-yarotows/dll/win32/msi/join.c branches/reactos-yarotows/dll/win32/msi/media.c branches/reactos-yarotows/dll/win32/msi/msi.c branches/reactos-yarotows/dll/win32/msi/msi.spec branches/reactos-yarotows/dll/win32/msi/msi_Fi.rc branches/reactos-yarotows/dll/win32/msi/msipriv.h branches/reactos-yarotows/dll/win32/msi/msiquery.c branches/reactos-yarotows/dll/win32/msi/package.c branches/reactos-yarotows/dll/win32/msi/record.c branches/reactos-yarotows/dll/win32/msi/registry.c branches/reactos-yarotows/dll/win32/msi/storages.c branches/reactos-yarotows/dll/win32/msi/string.c branches/reactos-yarotows/dll/win32/msi/suminfo.c branches/reactos-yarotows/dll/win32/msi/table.c branches/reactos-yarotows/dll/win32/msi/version.rc branches/reactos-yarotows/dll/win32/newdev/lang/ja-JP.rc branches/reactos-yarotows/dll/win32/rpcrt4/ndr_marshall.c branches/reactos-yarotows/dll/win32/rpcrt4/rpcrt4_ros.diff branches/reactos-yarotows/dll/win32/syssetup/install.c branches/reactos-yarotows/dll/win32/syssetup/lang/ja-JP.rc branches/reactos-yarotows/dll/win32/user32/include/user32.h branches/reactos-yarotows/dll/win32/user32/include/user32p.h branches/reactos-yarotows/dll/win32/user32/misc/misc.c branches/reactos-yarotows/dll/win32/user32/windows/defwnd.c branches/reactos-yarotows/dll/win32/user32/windows/hook.c branches/reactos-yarotows/dll/win32/user32/windows/input.c branches/reactos-yarotows/dll/win32/user32/windows/menu.c branches/reactos-yarotows/dll/win32/user32/windows/message.c branches/reactos-yarotows/dll/win32/user32/windows/window.c branches/reactos-yarotows/dll/win32/wdmaud.drv/legacy.c branches/reactos-yarotows/drivers/ksfilter/ks/connectivity.c branches/reactos-yarotows/drivers/ksfilter/ks/property.c branches/reactos-yarotows/drivers/ksfilter/ks/topology.c branches/reactos-yarotows/drivers/storage/class/directory.rbuild branches/reactos-yarotows/drivers/storage/class/disk/disk.c branches/reactos-yarotows/drivers/storage/directory.rbuild branches/reactos-yarotows/drivers/storage/scsiport/scsiport.c branches/reactos-yarotows/drivers/storage/scsiport/scsiport_int.h branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/interfaces.hpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp branches/reactos-yarotows/drivers/wdm/audio/legacy/wdmaud/mmixer.c branches/reactos-yarotows/drivers/wdm/audio/legacy/wdmaud/wdmaud.h branches/reactos-yarotows/include/ndk/mmtypes.h branches/reactos-yarotows/include/psdk/msi.h branches/reactos-yarotows/include/psdk/ntsecapi.h branches/reactos-yarotows/include/psdk/winbase.h branches/reactos-yarotows/include/psdk/wingdi.h branches/reactos-yarotows/include/psdk/winuser.h branches/reactos-yarotows/include/reactos/idl/lsa.idl branches/reactos-yarotows/include/reactos/subsys/lsass/lsasrv.h branches/reactos-yarotows/include/reactos/win32k/ntuser.h branches/reactos-yarotows/lib/drivers/sound/mmixer/controls.c branches/reactos-yarotows/lib/drivers/sound/mmixer/filter.c branches/reactos-yarotows/lib/drivers/sound/mmixer/mixer.c branches/reactos-yarotows/lib/drivers/sound/mmixer/mmixer.h branches/reactos-yarotows/lib/drivers/sound/mmixer/mmixer.rbuild branches/reactos-yarotows/lib/drivers/sound/mmixer/priv.h branches/reactos-yarotows/lib/drivers/sound/mmixer/sup.c branches/reactos-yarotows/lib/drivers/sound/mmixer/wave.c branches/reactos-yarotows/lib/rtl/heap.c branches/reactos-yarotows/lib/rtl/heap.h branches/reactos-yarotows/lib/rtl/heap_rewrite.c branches/reactos-yarotows/lib/rtl/heapdbg.c branches/reactos-yarotows/lib/rtl/ppb.c branches/reactos-yarotows/media/doc/README.WINE branches/reactos-yarotows/ntoskrnl/cc/copy.c branches/reactos-yarotows/ntoskrnl/ex/init.c branches/reactos-yarotows/ntoskrnl/ex/sysinfo.c branches/reactos-yarotows/ntoskrnl/fstub/fstubex.c branches/reactos-yarotows/ntoskrnl/include/internal/mm.h branches/reactos-yarotows/ntoskrnl/ke/i386/ctxswitch.S branches/reactos-yarotows/ntoskrnl/ke/procobj.c branches/reactos-yarotows/ntoskrnl/ke/thrdobj.c branches/reactos-yarotows/ntoskrnl/ke/thrdschd.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/mdlsup.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/miarm.h branches/reactos-yarotows/ntoskrnl/mm/ARM3/mminit.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/pagfault.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/pfnlist.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/procsup.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/section.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/vadnode.c branches/reactos-yarotows/ntoskrnl/mm/ARM3/virtual.c branches/reactos-yarotows/ntoskrnl/mm/anonmem.c branches/reactos-yarotows/ntoskrnl/mm/balance.c branches/reactos-yarotows/ntoskrnl/mm/freelist.c branches/reactos-yarotows/ntoskrnl/mm/i386/page.c branches/reactos-yarotows/ntoskrnl/mm/marea.c branches/reactos-yarotows/ntoskrnl/mm/mmfault.c branches/reactos-yarotows/ntoskrnl/mm/mminit.c branches/reactos-yarotows/ntoskrnl/mm/rmap.c branches/reactos-yarotows/ntoskrnl/mm/section.c branches/reactos-yarotows/subsystems/win32/csrss/csrsrv/init.c branches/reactos-yarotows/subsystems/win32/csrss/win32csr/ (props changed) branches/reactos-yarotows/subsystems/win32/win32k/include/hook.h branches/reactos-yarotows/subsystems/win32/win32k/include/msgqueue.h branches/reactos-yarotows/subsystems/win32/win32k/include/win32.h branches/reactos-yarotows/subsystems/win32/win32k/include/window.h branches/reactos-yarotows/subsystems/win32/win32k/main/dllmain.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/callback.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/caret.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/desktop.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/event.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/focus.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/hook.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/message.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/msgqueue.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/object.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/simplecall.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/window.c branches/reactos-yarotows/subsystems/win32/win32k/ntuser/winpos.c branches/reactos-yarotows/subsystems/win32/win32k/objects/cliprgn.c [This mail would be too long, it was shortened to contain the URLs only.] Modified: branches/reactos-yarotows/base/applications/calc/lang/en-US.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/calc/resource.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/reg/It.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/reg/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/Da.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/De.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/En.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/Fr.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/It.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/Ja.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/Ko.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/cmdutils/xcopy/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/games/games.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/paint/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Bg.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Cs.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Da.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/De.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/En.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Es.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Fi.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Fr.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Hu.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/It.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Ja.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Ko.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Lt.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Nl.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/No.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Pl.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Pt.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Rm.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Ro.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Ru.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Si.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Sk.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Sv.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Tr.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Uk.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/Zh.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/macro.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/winhelp.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/winhlp32/winhelp_res.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/wordpad/It.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/applications/wordpad/Zh.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/applicati…
Modified: branches/reactos-yarotows/base/setup/usetup/lang/ja-JP.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/setup/use…
Modified: branches/reactos-yarotows/base/system/lsass/lsass.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/system/ls…
Modified: branches/reactos-yarotows/base/system/msiexec/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/system/ms…
Modified: branches/reactos-yarotows/base/system/services/rpcserver.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/base/system/se…
Modified: branches/reactos-yarotows/boot/bootdata/packages/reactos.dff URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/boot/bootdata/…
Modified: branches/reactos-yarotows/dll/directx/wine/wined3d/wined3d.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/directx/wi…
Modified: branches/reactos-yarotows/dll/win32/advapi32/advapi32.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/adva…
Modified: branches/reactos-yarotows/dll/win32/advapi32/advapi32.spec URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/adva…
Modified: branches/reactos-yarotows/dll/win32/advapi32/sec/cred.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/adva…
Modified: branches/reactos-yarotows/dll/win32/advapi32/sec/lsa.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/adva…
Modified: branches/reactos-yarotows/dll/win32/advapi32/sec/sec.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/adva…
Modified: branches/reactos-yarotows/dll/win32/lsasrv/lsarpc.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/lsas…
Modified: branches/reactos-yarotows/dll/win32/lsasrv/lsasrv.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/lsas…
Modified: branches/reactos-yarotows/dll/win32/lsasrv/lsasrv.spec URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/lsas…
Modified: branches/reactos-yarotows/dll/win32/msi/action.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/appsearch.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/classes.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/cond.tab.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/cond.y URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/custom.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/database.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/join.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/media.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/msi.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/msi.spec URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/msi_Fi.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/msipriv.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/msiquery.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/package.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/record.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/registry.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/storages.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/string.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/suminfo.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/table.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/msi/version.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/msi/…
Modified: branches/reactos-yarotows/dll/win32/newdev/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/newd…
Modified: branches/reactos-yarotows/dll/win32/rpcrt4/ndr_marshall.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/rpcr…
Modified: branches/reactos-yarotows/dll/win32/rpcrt4/rpcrt4_ros.diff URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/rpcr…
Modified: branches/reactos-yarotows/dll/win32/syssetup/install.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/syss…
Modified: branches/reactos-yarotows/dll/win32/syssetup/lang/ja-JP.rc URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/syss…
Modified: branches/reactos-yarotows/dll/win32/user32/include/user32.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/include/user32p.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/misc/misc.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/defwnd.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/hook.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/input.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/menu.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/message.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/user32/windows/window.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/user…
Modified: branches/reactos-yarotows/dll/win32/wdmaud.drv/legacy.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/dll/win32/wdma…
Modified: branches/reactos-yarotows/drivers/ksfilter/ks/connectivity.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/ksfilt…
Modified: branches/reactos-yarotows/drivers/ksfilter/ks/property.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/ksfilt…
Modified: branches/reactos-yarotows/drivers/ksfilter/ks/topology.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/ksfilt…
Modified: branches/reactos-yarotows/drivers/storage/class/directory.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/storag…
Modified: branches/reactos-yarotows/drivers/storage/class/disk/disk.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/storag…
Modified: branches/reactos-yarotows/drivers/storage/directory.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/storag…
Modified: branches/reactos-yarotows/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/storag…
Modified: branches/reactos-yarotows/drivers/storage/scsiport/scsiport_int.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/storag…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/interfaces.hpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/backpln/portcls/port_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/legacy/wdmaud/mmixer.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/drivers/wdm/audio/legacy/wdmaud/wdmaud.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/drivers/wdm/au…
Modified: branches/reactos-yarotows/include/ndk/mmtypes.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/ndk/mm…
Modified: branches/reactos-yarotows/include/psdk/msi.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/psdk/m…
Modified: branches/reactos-yarotows/include/psdk/ntsecapi.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/psdk/n…
Modified: branches/reactos-yarotows/include/psdk/winbase.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/psdk/w…
Modified: branches/reactos-yarotows/include/psdk/wingdi.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/psdk/w…
Modified: branches/reactos-yarotows/include/psdk/winuser.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/psdk/w…
Modified: branches/reactos-yarotows/include/reactos/idl/lsa.idl URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/reacto…
Modified: branches/reactos-yarotows/include/reactos/subsys/lsass/lsasrv.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/reacto…
Modified: branches/reactos-yarotows/include/reactos/win32k/ntuser.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/include/reacto…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/controls.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/filter.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/mixer.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/mmixer.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/mmixer.rbuild URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/priv.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/sup.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/drivers/sound/mmixer/wave.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/drivers/so…
Modified: branches/reactos-yarotows/lib/rtl/heap.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/rtl/heap.c…
Modified: branches/reactos-yarotows/lib/rtl/heap.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/rtl/heap.h…
Modified: branches/reactos-yarotows/lib/rtl/heap_rewrite.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/rtl/heap_r…
Modified: branches/reactos-yarotows/lib/rtl/heapdbg.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/rtl/heapdb…
Modified: branches/reactos-yarotows/lib/rtl/ppb.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/lib/rtl/ppb.c?…
Modified: branches/reactos-yarotows/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/media/doc/READ…
Modified: branches/reactos-yarotows/ntoskrnl/cc/copy.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/cc/co…
Modified: branches/reactos-yarotows/ntoskrnl/ex/init.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ex/in…
Modified: branches/reactos-yarotows/ntoskrnl/ex/sysinfo.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ex/sy…
Modified: branches/reactos-yarotows/ntoskrnl/fstub/fstubex.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/fstub…
Modified: branches/reactos-yarotows/ntoskrnl/include/internal/mm.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/inclu…
Modified: branches/reactos-yarotows/ntoskrnl/ke/i386/ctxswitch.S URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ke/i3…
Modified: branches/reactos-yarotows/ntoskrnl/ke/procobj.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ke/pr…
Modified: branches/reactos-yarotows/ntoskrnl/ke/thrdobj.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ke/th…
Modified: branches/reactos-yarotows/ntoskrnl/ke/thrdschd.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/ke/th…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/mdlsup.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/miarm.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/mminit.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/pagfault.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/pfnlist.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/procsup.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/section.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/vadnode.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/ARM3/virtual.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/AR…
Modified: branches/reactos-yarotows/ntoskrnl/mm/anonmem.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/an…
Modified: branches/reactos-yarotows/ntoskrnl/mm/balance.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/ba…
Modified: branches/reactos-yarotows/ntoskrnl/mm/freelist.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/fr…
Modified: branches/reactos-yarotows/ntoskrnl/mm/i386/page.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/i3…
Modified: branches/reactos-yarotows/ntoskrnl/mm/marea.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/ma…
Modified: branches/reactos-yarotows/ntoskrnl/mm/mmfault.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/mm…
Modified: branches/reactos-yarotows/ntoskrnl/mm/mminit.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/mm…
Modified: branches/reactos-yarotows/ntoskrnl/mm/rmap.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/rm…
Modified: branches/reactos-yarotows/ntoskrnl/mm/section.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/ntoskrnl/mm/se…
Modified: branches/reactos-yarotows/subsystems/win32/csrss/csrsrv/init.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/hook.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/msgqueue.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/win32.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/include/window.h URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/main/dllmain.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/callback.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/caret.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/desktop.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/event.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/focus.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/hook.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/message.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/msgqueue.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/object.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/simplecall.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/window.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/ntuser/winpos.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
Modified: branches/reactos-yarotows/subsystems/win32/win32k/objects/cliprgn.c URL:
http://svn.reactos.org/svn/reactos/branches/reactos-yarotows/subsystems/win…
14 years, 2 months
1
0
0
0
[janderwald] 49239: - Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 14:42:22 2010 New Revision: 49239 URL:
http://svn.reactos.org/svn/reactos?rev=49239&view=rev
Log: - Fix definition of KSPROPSETID_DrmAudioStream, KSPROPERTY_DRMAUDIOSTREAM Modified: trunk/reactos/include/psdk/ks.h trunk/reactos/include/psdk/ksmedia.h Modified: trunk/reactos/include/psdk/ks.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/ks.h?rev=4923…
============================================================================== --- trunk/reactos/include/psdk/ks.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/ks.h [iso-8859-1] Sat Oct 23 14:42:22 2010 @@ -1003,11 +1003,6 @@ KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY -*/ - -#define KSPROPSETID_DrmAudioStream -/* - KSPROPERTY_DRMAUDIOSTREAM_CONTENTID */ #define KSPROPSETID_Hrtf3d Modified: trunk/reactos/include/psdk/ksmedia.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/ksmedia.h?rev…
============================================================================== --- trunk/reactos/include/psdk/ksmedia.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/ksmedia.h [iso-8859-1] Sat Oct 23 14:42:22 2010 @@ -565,6 +565,15 @@ #endif // !_NTDDK_ } LOOPEDSTREAMING_POSITION_EVENT_DATA, *PLOOPEDSTREAMING_POSITION_EVENT_DATA ; +#define STATIC_KSPROPSETID_DrmAudioStream\ + 0x2f2c8ddd, 0x4198, 0x4fac, 0xba, 0x29, 0x61, 0xbb, 0x5, 0xb7, 0xde, 0x6 +DEFINE_GUIDSTRUCT("2F2C8DDD-4198-4fac-BA29-61BB05B7DE06", KSPROPSETID_DrmAudioStream); +#define KSPROPSETID_DrmAudioStream DEFINE_GUIDNAMED(KSPROPSETID_DrmAudioStream) + +typedef enum { + KSPROPERTY_DRMAUDIOSTREAM_CONTENTID +} KSPROPERTY_DRMAUDIOSTREAM; + /* SysAudio Properties
14 years, 2 months
1
0
0
0
[janderwald] 49238: [PORTCLS] - Fix check if the pin can be instantiated another time - Remove hack to close old - Add function FreePin to remove its old reference - Fix memory leaks / reference le...
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 12:10:56 2010 New Revision: 49238 URL:
http://svn.reactos.org/svn/reactos?rev=49238&view=rev
Log: [PORTCLS] - Fix check if the pin can be instantiated another time - Remove hack to close old - Add function FreePin to remove its old reference - Fix memory leaks / reference leaks in WavePci pin implementation - Fix memory / reference leaks in WavePci Close implementation Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavecyclic.cpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -327,7 +327,7 @@ NTSTATUS NTAPI CPortFilterWaveCyclic::FreePin( - IN struct IPortPinWaveCyclic* Pin) + IN PPORTPINWAVECYCLIC Pin) { ULONG Index; Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/filter_wavepci.cpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -96,12 +96,13 @@ return STATUS_UNSUCCESSFUL; } - if (m_Pins[ConnectDetails->PinId] && m_Descriptor->Factory.Instances[ConnectDetails->PinId].CurrentPinInstanceCount) - { - // release existing instance - PC_ASSERT(0); - m_Pins[ConnectDetails->PinId]->Close(DeviceObject, NULL); - } + if (m_Pins[ConnectDetails->PinId] && + (m_Descriptor->Factory.Instances[ConnectDetails->PinId].CurrentPinInstanceCount == m_Descriptor->Factory.Instances[ConnectDetails->PinId].MaxFilterInstanceCount)) + { + // no available instance + return STATUS_UNSUCCESSFUL; + } + // now create the pin Status = NewPortPinWavePci(&Pin); @@ -305,6 +306,26 @@ return STATUS_SUCCESS; } +NTSTATUS +NTAPI +CPortFilterWavePci::FreePin( + IN struct IPortPinWavePci* Pin) +{ + ULONG Index; + + for(Index = 0; Index < m_Descriptor->Factory.PinDescriptorCount; Index++) + { + if (m_Pins[Index] == Pin) + { + m_Descriptor->Factory.Instances[Index].CurrentPinInstanceCount--; + m_Pins[Index] = NULL; + return STATUS_SUCCESS; + } + } + return STATUS_UNSUCCESSFUL; +} + + NTSTATUS NewPortFilterWavePci( OUT IPortFilterWavePci ** OutFilter) Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/interfaces.hpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -599,6 +599,8 @@ #undef INTERFACE #define INTERFACE IPortFilterWavePci +struct IPortPinWavePci; + DECLARE_INTERFACE_(IPortFilterWavePci, IIrpTarget) { DEFINE_ABSTRACT_UNKNOWN() @@ -607,6 +609,9 @@ STDMETHOD_(NTSTATUS, Init)(THIS_ IN PPORTWAVEPCI Port)PURE; + + STDMETHOD_(NTSTATUS, FreePin)(THIS_ + IN struct IPortPinWavePci* Pin)PURE; }; typedef IPortFilterWavePci *PPORTFILTERWAVEPCI; @@ -614,7 +619,10 @@ #define IMP_IPortFilterPci \ IMP_IIrpTarget; \ STDMETHODIMP_(NTSTATUS) Init(THIS_ \ - IN PPORTWAVEPCI Port) + IN PPORTWAVEPCI Port); \ + STDMETHODIMP_(NTSTATUS) FreePin(THIS_ \ + IN struct IPortPinWavePci* Pin) + /***************************************************************************** * IPortPinWavePci Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavecyclic.cpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -960,27 +960,29 @@ { // free format FreeItem(m_Format, TAG_PORTCLASS); + + // format is freed m_Format = NULL; } if (m_IrpQueue) { - // fixme cancel irps + // cancel remaining irps + m_IrpQueue->CancelBuffers(); + + // release irp queue m_IrpQueue->Release(); - } - - - if (m_Port) - { - // release reference to port driver - m_Port->Release(); - m_Port = NULL; + + // queue is freed + m_IrpQueue = NULL; } if (m_ServiceGroup) { // remove member from service group m_ServiceGroup->RemoveMember(PSERVICESINK(this)); + + // do not release service group, it is released by the miniport object m_ServiceGroup = NULL; } @@ -999,20 +1001,35 @@ // set state to stop m_State = KSSTATE_STOP; - DPRINT("Closing stream at Irql %u\n", KeGetCurrentIrql()); + // release stream m_Stream->Release(); + // stream is now freed + m_Stream = NULL; } if (m_Filter) { - // release reference to filter instance + // disconnect pin from filter m_Filter->FreePin((PPORTPINWAVECYCLIC)this); + + // release filter reference m_Filter->Release(); + + // pin is done with filter m_Filter = NULL; + } + + if (m_Port) + { + // release reference to port driver + m_Port->Release(); + + // work is done for port + m_Port = NULL; } Irp->IoStatus.Information = 0; Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/pin_wavepci.cpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -61,8 +61,6 @@ ULONG m_TotalPackets; KSAUDIO_POSITION m_Position; ULONG m_StopCount; - - ULONG m_Delay; BOOL m_bUsePrefetch; ULONG m_PrefetchOffset; @@ -637,41 +635,85 @@ IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) { - ISubdevice *SubDevice; NTSTATUS Status; - PSUBDEVICE_DESCRIPTOR Descriptor; + + if (m_Format) + { + // free format + FreeItem(m_Format, TAG_PORTCLASS); + + // format is freed + m_Format = NULL; + } + + if (m_IrpQueue) + { + // cancel remaining irps + m_IrpQueue->CancelBuffers(); + + // release irp queue + m_IrpQueue->Release(); + + // queue is freed + m_IrpQueue = NULL; + } + if (m_ServiceGroup) { + // remove member from service group m_ServiceGroup->RemoveMember(PSERVICESINK(this)); + + // do not release service group, it is released by the miniport object + m_ServiceGroup = NULL; } if (m_Stream) { if (m_State != KSSTATE_STOP) { - m_Stream->SetState(KSSTATE_STOP); + // stop stream + Status = m_Stream->SetState(KSSTATE_STOP); + if (!NT_SUCCESS(Status)) + { + DPRINT("Warning: failed to stop stream with %x\n", Status); + PC_ASSERT(0); + } } + // set state to stop + m_State = KSSTATE_STOP; + + DPRINT("Closing stream at Irql %u\n", KeGetCurrentIrql()); + + // release stream m_Stream->Release(); - } - - Status = m_Port->QueryInterface(IID_ISubdevice, (PVOID*)&SubDevice); - if (NT_SUCCESS(Status)) - { - Status = SubDevice->GetDescriptor(&Descriptor); - if (NT_SUCCESS(Status)) - { - Descriptor->Factory.Instances[m_ConnectDetails->PinId].CurrentPinInstanceCount--; - } - SubDevice->Release(); - } - - if (m_Format) - { - FreeItem(m_Format, TAG_PORTCLASS); - m_Format = NULL; - } - + + // stream is now freed + m_Stream = NULL; + } + + if (m_Filter) + { + // disconnect pin from filter + m_Filter->FreePin((PPORTPINWAVEPCI)this); + + // release filter reference + m_Filter->Release(); + + // pin is done with filter + m_Filter = NULL; + } + + if (m_Port) + { + // release reference to port driver + m_Port->Release(); + + // work is done for port + m_Port = NULL; + } + + // successfully complete irp Irp->IoStatus.Status = STATUS_SUCCESS; Irp->IoStatus.Information = 0; IoCompleteRequest(Irp, IO_NO_INCREMENT); @@ -756,42 +798,66 @@ NTSTATUS Status; PKSDATAFORMAT DataFormat; BOOLEAN Capture; - + ISubdevice * Subdevice = NULL; + PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor = NULL; + + // check if it is a source / sink pin + if (KsPinDescriptor->Communication == KSPIN_COMMUNICATION_SINK && KsPinDescriptor->DataFlow == KSPIN_DATAFLOW_IN) + { + // sink pin + Capture = FALSE; + } + else if (KsPinDescriptor->Communication == KSPIN_COMMUNICATION_SINK && KsPinDescriptor->DataFlow == KSPIN_DATAFLOW_OUT) + { + // source pin + Capture = TRUE; + } + else + { + DPRINT("Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow); + DbgBreakPoint(); + while(TRUE); + } + + // add port / filter reference Port->AddRef(); Filter->AddRef(); + // initialize pin m_Port = Port; m_Filter = Filter; m_KsPinDescriptor = KsPinDescriptor; m_ConnectDetails = ConnectDetails; m_Miniport = GetWavePciMiniport(Port); m_DeviceObject = DeviceObject; - + m_State = KSSTATE_STOP; + m_Capture = Capture; + + DPRINT("IPortPinWavePci_fnInit entered\n"); + + // get dataformat DataFormat = (PKSDATAFORMAT)(ConnectDetails + 1); - DPRINT("IPortPinWavePci_fnInit entered\n"); - + // allocate data format m_Format = (PKSDATAFORMAT)AllocateItem(NonPagedPool, DataFormat->FormatSize, TAG_PORTCLASS); if (!m_Format) + { + // release references + m_Port->Release(); + m_Filter->Release(); + + // no dangling pointers + Port = NULL; + Filter = NULL; + + // failed to allocate data format return STATUS_INSUFFICIENT_RESOURCES; - + } + + // copy data format RtlMoveMemory(m_Format, DataFormat, DataFormat->FormatSize); - if (KsPinDescriptor->Communication == KSPIN_COMMUNICATION_SINK && KsPinDescriptor->DataFlow == KSPIN_DATAFLOW_IN) - { - Capture = FALSE; - } - else if (KsPinDescriptor->Communication == KSPIN_COMMUNICATION_SINK && KsPinDescriptor->DataFlow == KSPIN_DATAFLOW_OUT) - { - Capture = TRUE; - } - else - { - DPRINT("Unexpected Communication %u DataFlow %u\n", KsPinDescriptor->Communication, KsPinDescriptor->DataFlow); - DbgBreakPoint(); - while(TRUE); - } - + // allocate new stream Status = m_Miniport->NewStream(&m_Stream, NULL, NonPagedPool, @@ -805,46 +871,80 @@ DPRINT("IPortPinWavePci_fnInit Status %x\n", Status); if (!NT_SUCCESS(Status)) + { + // free references + Port->Release(); + Filter->Release(); + + // free data format + FreeItem(m_Format, TAG_PORTCLASS); + + // no dangling pointers + m_Port = NULL; + m_Filter = NULL; + m_Format = NULL; + + // failed to allocate stream return Status; - - if (m_ServiceGroup) - { - Status = m_ServiceGroup->AddMember(PSERVICESINK(this)); - if (!NT_SUCCESS(Status)) - { - DPRINT("Failed to add pin to service group\n"); - return Status; - } - } - - // delay of 10 milisec - m_Delay = Int32x32To64(10, -10000); - + } + + // get allocator requirements for pin Status = m_Stream->GetAllocatorFraming(&m_AllocatorFraming); + if (NT_SUCCESS(Status)) + { + DPRINT("OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n", + m_AllocatorFraming.OptionsFlags, m_AllocatorFraming.RequirementsFlags, m_AllocatorFraming.PoolType, m_AllocatorFraming.Frames, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment); + } + + // allocate new irp queue + Status = NewIrpQueue(&m_IrpQueue); if (!NT_SUCCESS(Status)) { - DPRINT("GetAllocatorFraming failed with %x\n", Status); - } - - DPRINT("OptionFlags %x RequirementsFlag %x PoolType %x Frames %lu FrameSize %lu FileAlignment %lu\n", - m_AllocatorFraming.OptionsFlags, m_AllocatorFraming.RequirementsFlags, m_AllocatorFraming.PoolType, m_AllocatorFraming.Frames, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment); - - ISubdevice * Subdevice = NULL; + // free references + Port->Release(); + Filter->Release(); + m_Stream->Release(); + + // free data format + FreeItem(m_Format, TAG_PORTCLASS); + + // no dangling pointers + m_Port = NULL; + m_Filter = NULL; + m_Format = NULL; + m_Stream = NULL; + + // failed to allocate irp queue + return Status; + } + + // initialize irp queue + Status = m_IrpQueue->Init(ConnectDetails, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment, NULL); + if (!NT_SUCCESS(Status)) + { + // this should never happen + ASSERT(0); + } + // get subdevice interface Status = Port->QueryInterface(IID_ISubdevice, (PVOID*)&Subdevice); if (!NT_SUCCESS(Status)) - return Status; - - PSUBDEVICE_DESCRIPTOR SubDeviceDescriptor = NULL; - + { + // this function should never fail + ASSERT(0); + } + + // get subdevice descriptor Status = Subdevice->GetDescriptor(&SubDeviceDescriptor); if (!NT_SUCCESS(Status)) { - // failed to get descriptor - Subdevice->Release(); - return Status; - } + // this function should never fail + ASSERT(0); + } + + // release subdevice + Subdevice->Release(); /* set up subdevice descriptor */ RtlZeroMemory(&m_Descriptor, sizeof(SUBDEVICE_DESCRIPTOR)); @@ -855,21 +955,30 @@ m_Descriptor.UnknownMiniport = SubDeviceDescriptor->UnknownMiniport; m_Descriptor.PortPin = (PVOID)this; - - - Status = NewIrpQueue(&m_IrpQueue); - if (!NT_SUCCESS(Status)) - return Status; - - Status = m_IrpQueue->Init(ConnectDetails, m_AllocatorFraming.FrameSize, m_AllocatorFraming.FileAlignment, NULL); - if (!NT_SUCCESS(Status)) - { - DPRINT("IrpQueue_Init failed with %x\n", Status); - return Status; - } - - m_State = KSSTATE_STOP; - m_Capture = Capture; + if (m_ServiceGroup) + { + Status = m_ServiceGroup->AddMember(PSERVICESINK(this)); + if (!NT_SUCCESS(Status)) + { + // free references + m_Stream->Release(); + Port->Release(); + Filter->Release(); + + // free data format + FreeItem(m_Format, TAG_PORTCLASS); + + // no dangling pointers + m_Stream = NULL; + m_Port = NULL; + m_Filter = NULL; + m_Format = NULL; + + // failed to add to service group + return Status; + } + } + return STATUS_SUCCESS; } Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp [iso-8859-1] (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/port_wavecyclic.cpp [iso-8859-1] Sat Oct 23 12:10:56 2010 @@ -275,12 +275,12 @@ } // create the subdevice descriptor - Status = PcCreateSubdeviceDescriptor(&m_SubDeviceDescriptor, + Status = PcCreateSubdeviceDescriptor(&m_SubDeviceDescriptor, 4, InterfaceGuids, - 0, + 0, NULL, - 2, + 2, WaveCyclicPropertySet, 0, 0,
14 years, 2 months
1
0
0
0
[janderwald] 49237: [KS] - Fix property set support handler for topology nodes - Check if the driver supports a basic support handler. In that case return the basic support handler
by janderwald@svn.reactos.org
Author: janderwald Date: Sat Oct 23 12:00:11 2010 New Revision: 49237 URL:
http://svn.reactos.org/svn/reactos?rev=49237&view=rev
Log: [KS] - Fix property set support handler for topology nodes - Check if the driver supports a basic support handler. In that case return the basic support handler Modified: trunk/reactos/drivers/ksfilter/ks/property.c Modified: trunk/reactos/drivers/ksfilter/ks/property.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/proper…
============================================================================== --- trunk/reactos/drivers/ksfilter/ks/property.c [iso-8859-1] (original) +++ trunk/reactos/drivers/ksfilter/ks/property.c [iso-8859-1] Sat Oct 23 12:00:11 2010 @@ -47,6 +47,25 @@ IoStatus->Information = PropertySet[Index].PropertyItem[ItemIndex].MinData; return STATUS_MORE_ENTRIES; } + + /* store property set */ + *Set = (PKSPROPERTY_SET)&PropertySet[Index]; + + if (Property->Flags & KSPROPERTY_TYPE_SET) + { + /* store property handler */ + *PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SetPropertyHandler; + return STATUS_SUCCESS; + } + + if (Property->Flags & KSPROPERTY_TYPE_GET) + { + /* store property handler */ + *PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].GetPropertyHandler; + return STATUS_SUCCESS; + } + + if (Property->Flags & KSPROPERTY_TYPE_BASICSUPPORT) { PULONG Flags; @@ -64,13 +83,20 @@ /* clear flags */ *Flags = 0; + IoStatus->Information = sizeof(ULONG); + + if (PropertySet[Index].PropertyItem[ItemIndex].SupportHandler) + { + /* use support handler from driver */ + *PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SupportHandler; + return STATUS_SUCCESS; + } + if (PropertySet[Index].PropertyItem[ItemIndex].GetSupported) *Flags |= KSPROPERTY_TYPE_GET; if (PropertySet[Index].PropertyItem[ItemIndex].SetSupported) *Flags |= KSPROPERTY_TYPE_SET; - - IoStatus->Information = sizeof(ULONG); if (OutputBufferLength >= sizeof(KSPROPERTY_DESCRIPTION)) { @@ -89,14 +115,6 @@ } return STATUS_SUCCESS; } - if (Property->Flags & KSPROPERTY_TYPE_SET) - *PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].SetPropertyHandler; - - if (Property->Flags & KSPROPERTY_TYPE_GET) - *PropertyHandler = PropertySet[Index].PropertyItem[ItemIndex].GetPropertyHandler; - - *Set = (PKSPROPERTY_SET)&PropertySet[Index]; - return STATUS_SUCCESS; } } } @@ -171,7 +189,7 @@ } } } - else if (IsEqualGUIDAligned(&Property->Set, &GUID_NULL) && Property->Id == 0 && Property->Flags == KSPROPERTY_TYPE_SETSUPPORT) + else if (IsEqualGUIDAligned(&Property->Set, &GUID_NULL) && Property->Id == 0 && (Property->Flags & KSPROPERTY_TYPE_SETSUPPORT) == KSPROPERTY_TYPE_SETSUPPORT) { // store output size Irp->IoStatus.Information = sizeof(GUID) * PropertySetsCount; @@ -189,7 +207,7 @@ { RtlMoveMemory(&Guid[Index], PropertySet[Index].Set, sizeof(GUID)); } - return STATUS_SUCCESS; + Status = STATUS_SUCCESS; } /* done */
14 years, 2 months
1
0
0
0
[spetreolle] 49236: [CMAKE] Livecd: Add rundll32. Cmake livecd lives !
by spetreolle@svn.reactos.org
Author: spetreolle Date: Sat Oct 23 11:55:36 2010 New Revision: 49236 URL:
http://svn.reactos.org/svn/reactos?rev=49236&view=rev
Log: [CMAKE] Livecd: Add rundll32. Cmake livecd lives ! Modified: branches/cmake-bringup/base/system/rundll32/CMakeLists.txt Modified: branches/cmake-bringup/base/system/rundll32/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/branches/cmake-bringup/base/system/rundl…
============================================================================== --- branches/cmake-bringup/base/system/rundll32/CMakeLists.txt [iso-8859-1] (original) +++ branches/cmake-bringup/base/system/rundll32/CMakeLists.txt [iso-8859-1] Sat Oct 23 11:55:36 2010 @@ -8,3 +8,4 @@ set_module_type(rundll32 win32gui) add_importlibs(rundll32 user32 msvcrt kernel32 ntdll) +add_livecd_target(rundll32 reactos/system32)
14 years, 2 months
1
0
0
0
← Newer
1
...
12
13
14
15
16
17
18
...
44
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
Results per page:
10
25
50
100
200