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
July 2007
----- 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
707 discussions
Start a n
N
ew thread
[cwittich] 27476: -release spinlocks before calling IoCompleteRequest -fix some format strings
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Jul 8 18:27:17 2007 New Revision: 27476 URL:
http://svn.reactos.org/svn/reactos?rev=27476&view=rev
Log: -release spinlocks before calling IoCompleteRequest -fix some format strings Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 18:27:17 2007 @@ -1568,7 +1568,7 @@ if (ConfigInfo.Parameter != NULL) ExFreePool(ConfigInfo.Parameter); - DPRINT("ScsiPortInitialize() done, Status = 0x%08X, DeviceFound = %b!\n", + DPRINT("ScsiPortInitialize() done, Status = 0x%08X, DeviceFound = %d!\n", Status, DeviceFound); return (DeviceFound == FALSE) ? Status : STATUS_SUCCESS; @@ -2524,6 +2524,7 @@ { /* Get next logical unit request */ SpiGetNextRequestFromLun(DeviceExtension, LunExtension); + KeReleaseSpinLock(&DeviceExtension->SpinLock, Irql); /* SpiGetNextRequestFromLun() releases the spinlock */ KeLowerIrql(Irql); @@ -4157,6 +4158,7 @@ { /* Start the next packet */ SpiGetNextRequestFromLun(DeviceExtension, LunExtension); + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); } else { @@ -4164,7 +4166,7 @@ KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); } - DPRINT("IoCompleting request IRP 0x%08X\n", Irp); + DPRINT("IoCompleting request IRP 0x%08p\n", Irp); IoCompleteRequest(Irp, IO_DISK_INCREMENT); @@ -4272,7 +4274,10 @@ && (Srb->SrbFlags & SRB_FLAGS_NO_QUEUE_FREEZE)) { if (LunExtension->RequestTimeout == -1) + { SpiGetNextRequestFromLun(DeviceExtension, LunExtension); + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + } else KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); }
17 years, 5 months
1
0
0
0
[silverblade] 27475: Missed a file on last commit...
by silverblade@svn.reactos.org
Author: silverblade Date: Sun Jul 8 17:58:51 2007 New Revision: 27475 URL:
http://svn.reactos.org/svn/reactos?rev=27475&view=rev
Log: Missed a file on last commit... Added: trunk/reactos/include/psdk/ksmedia.h Added: 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 (added) +++ trunk/reactos/include/psdk/ksmedia.h Sun Jul 8 17:58:51 2007 @@ -1,0 +1,18 @@ +/* + KS Media + (c) Andrew Greenwood, 2007. + + Please see COPYING in the top level directory for license information. +*/ + +#ifndef KSMEDIA_H +#define KSMEDIA_H + +#include <ks.h> + +#define STATIC_KSCATEGORY_WDMAUD \ + 0x3e227e76L, 0x690d, 0x11d2, 0x81, 0x61, 0x00, 0x00, 0xf8, 0x77, 0x5b, 0xf1 +DEFINE_GUIDSTRUCT("3E227E76-690D-11D2-8161-0000F8775BF1", KSCATEGORY_WDMAUD); +#define KSCATEGORY_WDMAUD DEFINE_GUIDNAMED(KSCATEGORY_WDMAUD) + +#endif
17 years, 5 months
1
0
0
0
[silverblade] 27474: A few modifications necessary to get PortCls and KS to build. PortCls needs restructuring but that will be done later.
by silverblade@svn.reactos.org
Author: silverblade Date: Sun Jul 8 17:53:39 2007 New Revision: 27474 URL:
http://svn.reactos.org/svn/reactos?rev=27474&view=rev
Log: A few modifications necessary to get PortCls and KS to build. PortCls needs restructuring but that will be done later. Added: trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.cpp - copied unchanged from r26560, trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.c trunk/reactos/drivers/wdm/wdm.rbuild - copied unchanged from r26560, trunk/reactos/drivers/wdm/directory.rbuild Removed: trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.c trunk/reactos/drivers/wdm/directory.rbuild Modified: trunk/reactos/drivers/ksfilter/ks/irp.c trunk/reactos/drivers/ksfilter/ks/ks.def trunk/reactos/drivers/ksfilter/ks/ks.rbuild trunk/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c trunk/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c trunk/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild trunk/reactos/drivers/wdm/audio/backpln/stdunk/stdunk.cpp trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/adapter.cpp trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/mpu401.rbuild trunk/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild trunk/reactos/include/ddk/drmk.h trunk/reactos/include/ddk/kcom.h trunk/reactos/include/ddk/portcls.h trunk/reactos/include/ddk/stdunk.h trunk/reactos/include/ddk/winddk.h trunk/reactos/include/psdk/ks.h Modified: trunk/reactos/drivers/ksfilter/ks/irp.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/irp.c?…
============================================================================== --- trunk/reactos/drivers/ksfilter/ks/irp.c (original) +++ trunk/reactos/drivers/ksfilter/ks/irp.c Sun Jul 8 17:53:39 2007 @@ -280,6 +280,13 @@ IN PIRP Irp) { /* Calls a dispatch routine corresponding to the function code of the IRP */ + + /* + First we need to get the dispatch table. An opaque header is pointed to by + FsContext. The first element points to this table. This table is the key + to dispatching the IRP correctly. + */ + UNIMPLEMENTED; return STATUS_UNSUCCESSFUL; } Modified: trunk/reactos/drivers/ksfilter/ks/ks.def URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/ks.def…
============================================================================== --- trunk/reactos/drivers/ksfilter/ks/ks.def (original) +++ trunk/reactos/drivers/ksfilter/ks/ks.def Sun Jul 8 17:53:39 2007 @@ -110,3 +110,6 @@ KsSetTargetState@8 KsSynchronousIoControlDevice@32 KsInitializeDriver@12 + +; Kernel COM +KoCreateInstance@20 Modified: trunk/reactos/drivers/ksfilter/ks/ks.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/ksfilter/ks/ks.rbu…
============================================================================== --- trunk/reactos/drivers/ksfilter/ks/ks.rbuild (original) +++ trunk/reactos/drivers/ksfilter/ks/ks.rbuild Sun Jul 8 17:53:39 2007 @@ -7,6 +7,7 @@ <define name="__USE_W32API" /> <define name="BUILDING_KS" /> <define name="_NTDDK_" /> + <define name="_COMDDK_" /> <file>ks.rc</file> <file>allocators.c</file> <file>clocks.c</file> @@ -18,4 +19,5 @@ <file>properties.c</file> <file>topology.c</file> <file>worker.c</file> + <file>kcom.c</file> </module> Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/helper/ResourceList.c Sun Jul 8 17:53:39 2007 @@ -51,7 +51,8 @@ { struct CUnknown* this = CONTAINING_RECORD(this_container, struct CUnknown, IUnknown); - InterlockedIncrement(&this->m_ref_count); +/* fixme */ +/* ExInterlockedIncrement(&this->m_ref_count); */ return this->m_ref_count; } @@ -62,7 +63,8 @@ { struct CUnknown* this = CONTAINING_RECORD(this_container, struct CUnknown, IUnknown); - InterlockedDecrement(&this->m_ref_count); +/* fixme */ +/* ExInterlockedDecrement(&this->m_ref_count); */ if ( this->m_ref_count == 0 ) { Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/port/factory.c Sun Jul 8 17:53:39 2007 @@ -5,8 +5,12 @@ by Andrew Greenwood */ +#define INITGUID + #include "../private.h" #include <portcls.h> +#include <ks.h> +#include <kcom.h> #include "port.h" /* @@ -19,14 +23,17 @@ { /* ClassId can be one of the following: - CLSID_PortDMus -> IPortDMus (dmusicks.h) + CLSID_PortDMus -> IPortDMus (dmusicks.h) -- TODO CLSID_PortMidi -> IPortMidi CLSID_PortTopology -> IPortTopology CLSID_PortWaveCyclic -> IPortWaveCyclic CLSID_PortWavePci -> IPortWavePci + + TODO: What about PortWavePciStream? */ PPORT new_port = NULL; + NTSTATUS status = STATUS_UNSUCCESSFUL; if ( ! OutPort ) { @@ -34,26 +41,32 @@ return STATUS_INVALID_PARAMETER; } - /* FIXME - do not hack, for it is bad */ - //new_port = new PPortMidi; + if ( ( IsEqualGUIDAligned(ClassId, &CLSID_PortMidi) ) || + ( IsEqualGUIDAligned(ClassId, &CLSID_PortTopology) ) || + ( IsEqualGUIDAligned(ClassId, &CLSID_PortWaveCyclic) ) || + ( IsEqualGUIDAligned(ClassId, &CLSID_PortWavePci) ) ) + { + DPRINT("Calling KoCreateInstance\n"); + /* Call KS.SYS's Kernel-mode COM function */ + status = KoCreateInstance(ClassId, NULL, CLSCTX_KERNEL_SERVER, &IID_IPort, &new_port); + } + else + { -// STD_CREATE_BODY_(CPortMidi, (PUNKNOWN) &new_port, NULL, 0, PUNKNOWN); + DPRINT("PcNewPort received a CLSID it does not deal with\n"); + status = STATUS_NOT_SUPPORTED; + } -/* - if ( ClassId == CLSID_PortMidi ) - new_port = new IPortMidi; - else if ( ClassId == CLSID_PortTopology ) - new_port = new IPortTopology; - else if ( ClassId == CLSID_PortWaveCyclic ) - new_port = new IPortWaveCyclic; - else if ( ClassId == CLSID_PortWavePci ) - new_port = new IPortWavePci; - else -*/ - return STATUS_NOT_SUPPORTED; + /* If an unsupported CLSID was handed to us, or the creation failed, we fail */ + if ( status != STATUS_SUCCESS ) + { + return status; + } /* Fill the caller's PPORT* to point to the new port */ *OutPort = new_port; + DPRINT("PcNewPort succeeded\n"); + return STATUS_SUCCESS; } Modified: trunk/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild (original) +++ trunk/reactos/drivers/wdm/audio/backpln/portcls/portcls.rbuild Sun Jul 8 17:53:39 2007 @@ -4,6 +4,7 @@ <importlibrary definition="portcls.def" /> <define name="__USE_W32API" /> <define name="_NTDDK_" /> + <define name="DBG" /> <include base="portcls">../include</include> <library>ntoskrnl</library> <library>ks</library> Modified: trunk/reactos/drivers/wdm/audio/backpln/stdunk/stdunk.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/backpln/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/backpln/stdunk/stdunk.cpp (original) +++ trunk/reactos/drivers/wdm/audio/backpln/stdunk/stdunk.cpp Sun Jul 8 17:53:39 2007 @@ -17,12 +17,13 @@ This is a little bit of a hack, but ReactOS doesn't seem to have this defined. TODO: Make the aligned test truly aligned. */ - +#if 0 #define IsEqualGUID(a, b) \ RtlEqualMemory(&a, &b, sizeof(GUID)) #define IsEqualGUIDAligned(a, b) \ IsEqualGUID(a, b) +#endif /* Shut the linker up - can also pass -defsym ___cxa_pure_virtual=0 @@ -43,7 +44,7 @@ } else { - m_outer_unknown = PUNKNOWN(dynamic_cast<PNONDELEGATINGUNKNOWN>(this)); + m_outer_unknown = PUNKNOWN(static_cast<PNONDELEGATINGUNKNOWN>(this)); } } Modified: trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/adapter.cpp URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/adapter.cpp (original) +++ trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/adapter.cpp Sun Jul 8 17:53:39 2007 @@ -15,6 +15,9 @@ #define PUT_GUIDS_HERE #define INITGUID +#include <debug.h> +#include <ntddk.h> + #include <portcls.h> extern "C" @@ -24,6 +27,8 @@ IN PIRP pIrp, IN PRESOURCELIST ResourceList) { + DPRINT1("MPU401_KS StartDevice called\n"); + if ( ! ResourceList ) return STATUS_INVALID_PARAMETER; @@ -32,41 +37,53 @@ return STATUS_INSUFFICIENT_RESOURCES; } + DPRINT1("Sufficient resources available :)\n"); + PPORT port; PMINIPORT miniport; NTSTATUS status; + DPRINT1("Calling PcNewPort with CLSID_PortMidi\n"); status = PcNewPort(&port, CLSID_PortMidi); if ( ! NT_SUCCESS(status) ) { + DPRINT("PcNewPort FAILED with status 0x%08x\n", status); return status; } + DPRINT1("Calling PcNewMiniport with CLSID_MiniportDriverUart\n"); status = PcNewMiniport(&miniport, CLSID_MiniportDriverUart); if ( ! NT_SUCCESS(status) ) { + DPRINT1("PcNewMiniport FAILED with status 0x%08x\n", status); return status; } + DPRINT1("Calling Init of port object\n"); status = port->Init(pDeviceObject, pIrp, miniport, NULL, ResourceList); if ( ! NT_SUCCESS(status) ) { + DPRINT1("Init FAILED with status 0x%08x\n", status); return status; } + DPRINT1("Registering subdevice via PcRegisterSubdevice\n"); status = PcRegisterSubdevice(pDeviceObject, L"Uart", port); if ( ! NT_SUCCESS(status) ) { /* just print an error here */ + DPRINT1("PcRegisterSubdevice FAILED with status 0x%08x\n", status); } miniport->Release(); port->Release(); + + DPRINT1("Device started\n"); return status; } @@ -78,6 +95,7 @@ IN PVOID Context1, IN PVOID Context2) { + DPRINT1("MPU401_KS AddDevice called, redirecting to PcAddAdapterDevice\n"); return PcAddAdapterDevice((PDRIVER_OBJECT) Context1, (PDEVICE_OBJECT) Context2, StartDevice, @@ -85,14 +103,41 @@ 0); } +extern "C" +{ -extern "C" -NTSTATUS +NTSTATUS NTAPI DriverEntry( - IN PVOID Context1, - IN PVOID Context2) + IN PDRIVER_OBJECT Context1, + IN PUNICODE_STRING Context2) { - return PcInitializeAdapterDriver((PDRIVER_OBJECT) Context1, + PDEVICE_OBJECT DeviceObject; + UNICODE_STRING DeviceName = RTL_CONSTANT_STRING(L"\\Device\\MPU401Static"); + +// KeBugCheck(0x0000007F); + DPRINT1("MPU401_KS DriverEntry called, redirecting to PcInitializeAdapterDriver\n"); + + NTSTATUS status = PcInitializeAdapterDriver((PDRIVER_OBJECT) Context1, (PUNICODE_STRING) Context2, (PDRIVER_ADD_DEVICE) AddDevice); + DPRINT1("Result was 0x%08x\n", status); + + /* Create a device (this will be handled by PnP manager really but we fake for now */ + +/* + DPRINT1("Creating device\n"); + status = IoCreateDevice(Context1, + 0, + &DeviceName, + FILE_DEVICE_SOUND, + 0, + FALSE, + &DeviceObject); + + DPRINT1("Result was 0x%08x\n", status); +*/ + + return status; }; + +} Modified: trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/mpu401.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drivers/…
============================================================================== --- trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/mpu401.rbuild (original) +++ trunk/reactos/drivers/wdm/audio/drivers/mpu401_ks/mpu401.rbuild Sun Jul 8 17:53:39 2007 @@ -1,10 +1,11 @@ -<module name="mpu401_ks" type="exportdriver" installbase="system32/drivers" installname="mpu401_ks.sys" allowwarnings="true"> +<module name="mpu401" type="kernelmodedriver" installbase="system32/drivers" installname="mpu401.sys" allowwarnings="true" entrypoint="DriverEntry"> + <linkerflag>-Wl,--entry,_DriverEntry@8</linkerflag> <include base="mpu401">.</include> <include base="mpu401">..</include> - <importlibrary definition="mpu401.def" /> - <library>ntoskrnl</library> - <library>portcls</library> + <library>ntoskrnl</library> + <library>portcls</library> + <define name="DBG" /> <define name="__USE_W32API" /> - <file>mpu401.rc</file> + <!--file>mpu401.rc</file--> <file>adapter.cpp</file> </module> Modified: trunk/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drm/drmk…
============================================================================== --- trunk/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild (original) +++ trunk/reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild Sun Jul 8 17:53:39 2007 @@ -7,5 +7,5 @@ <define name="__USE_W32API" /> <define name="BUILDING_DRMK" /> <file>drmk.rc</file> - <file>stubs.c</file> + <file>stubs.cpp</file> </module> Removed: trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/audio/drm/drmk…
============================================================================== --- trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.c (original) +++ trunk/reactos/drivers/wdm/audio/drm/drmk/stubs.c (removed) @@ -1,131 +1,0 @@ -/* - ReactOS Kernel Streaming - Digital Rights Management - - Please see COPYING in the top-level directory for license information. - - Author: Andrew Greenwood - - Notes: - This is just a file containing stub functions. The DRMK kernel library - deals with Digital Rights Management. This is not essential for the - operation of audio/video (except in the cases where content has digital - rights information) but is needed for linking with PORTCLS. -*/ - -#include <drmk.h> - -/* - Provide a driver interface consisting of functions for handling DRM - protected content -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmAddContentHandlers( - IN ULONG ContentId, - IN PVOID *paHandlers, - IN ULONG NumHandlers) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Creates a DRM content ID to identify a KS audio stream containing - mixed content from several input streams. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmCreateContentMixed( - IN PULONG paContentId, - IN ULONG cContentId, - OUT PULONG pMixedContentId) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Deletes a DRM content ID. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmDestroyContent( - IN ULONG ContentId) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Authenticates a driver, then passes it the DRM content ID, along with - the content rights which have been assigned to a stream. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmForwardContentToDeviceObject( - IN ULONG ContentId, - IN PVOID Reserved, - IN PCDRMFORWARD DrmForward) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Obsolete because it forces the system to run at a lower DRM security - level. Returns STATUS_NOT_IMPLEMENTED if a pin associated with - FileObject doesnt support the rights assigned to ContentId. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmForwardContentToFileObject( - IN ULONG ContentId, - IN PFILE_OBJECT FileObject) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Similar to DrmForwardContentToDeviceObject, except this works with a driver - object rather than just a driver. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmForwardContentToInterface( - IN ULONG ContentId, - IN PUNKNOWN pUnknown, - IN ULONG NumMethods) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - -/* - Retrieves DRM Content rights that have been assigend to a DRM Content ID. -*/ -/* - * @unimplemented - */ -NTAPI NTSTATUS -DrmGetContentRights( - IN ULONG ContentId, - OUT PDRMRIGHTS DrmRights) -{ - UNIMPLEMENTED; - return STATUS_UNSUCCESSFUL; -} - Removed: trunk/reactos/drivers/wdm/directory.rbuild URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/wdm/directory.rbui…
============================================================================== --- trunk/reactos/drivers/wdm/directory.rbuild (original) +++ trunk/reactos/drivers/wdm/directory.rbuild (removed) @@ -1,3 +1,0 @@ -<directory name="audio"> - <xi:include href="audio/directory.rbuild" /> -</directory> Modified: trunk/reactos/include/ddk/drmk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/drmk.h?rev=274…
============================================================================== --- trunk/reactos/include/ddk/drmk.h (original) +++ trunk/reactos/include/ddk/drmk.h Sun Jul 8 17:53:39 2007 @@ -7,6 +7,10 @@ #ifndef DRMK_H #define DRMK_H + +#include <ntddk.h> +#include <debug.h> +#include <punknown.h> typedef struct { @@ -28,6 +32,11 @@ Digital Rights Management Functions TODO: Check calling convention */ + +#ifdef __cplusplus +extern "C" +{ +#endif NTAPI NTSTATUS DrmAddContentHandlers( @@ -67,5 +76,8 @@ IN ULONG ContentId, OUT PDRMRIGHTS DrmRights); +#ifdef __cplusplus +} +#endif #endif Modified: trunk/reactos/include/ddk/kcom.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/kcom.h?rev=274…
============================================================================== --- trunk/reactos/include/ddk/kcom.h (original) +++ trunk/reactos/include/ddk/kcom.h Sun Jul 8 17:53:39 2007 @@ -1,5 +1,3 @@ - - #if !defined(_KS_) #error KS.H must be included before KCOM.H #endif Modified: trunk/reactos/include/ddk/portcls.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/portcls.h?rev=…
============================================================================== --- trunk/reactos/include/ddk/portcls.h (original) +++ trunk/reactos/include/ddk/portcls.h Sun Jul 8 17:53:39 2007 @@ -123,11 +123,19 @@ #ifndef PORTCLS_H #define PORTCLS_H -#include <wdm.h> - -#include <windef.h> +#ifdef __cplusplus +extern "C" +{ + #include <wdm.h> +} +#else + #include <wdm.h> +#endif + +//#include <windef.h> #include <ks.h> #include <punknown.h> +#include <ntddk.h> #include <drmk.h> /* TODO */ @@ -400,7 +408,7 @@ IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated) PURE; STDMETHOD_(NTSTATUS, AddEntryFromParent)( THIS_ - IN struct IResourceList* Parent, + IN IResourceList* Parent, IN CM_RESOURCE_TYPE Type, IN ULONG Index) PURE; @@ -427,7 +435,7 @@ IN PCM_PARTIAL_RESOURCE_DESCRIPTOR Untranslated); \ \ STDMETHODIMP_(NTSTATUS) AddEntryFromParent( \ - IN struct IResourceList* Parent, \ + IN IResourceList* Parent, \ IN CM_RESOURCE_TYPE Type, \ IN ULONG Index); \ \ @@ -893,6 +901,11 @@ IPort Interface */ +#if 0 +#define STATIC_IPort 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 +DEFINE_GUIDSTRUCT("0xB4C90A25-5791-11d0-86f9-00a0c911b544", IID_IPort); +#define IID_IPort DEFINE_GUIDNAMED(IID_IPort) +#endif DEFINE_GUID(IID_IPort, 0xb4c90a25L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); @@ -955,6 +968,15 @@ IPortMidi Interface */ +#if 0 +#define STATIC_IID_IPortMidi \ + 0xb4c90a43L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 +DEFINE_GUIDSTRUCT("0xB4C90A43-5791-11d0-86f9-00a0c911b544", IID_IPortMidi); +#define IID_IPortMidi DEFINE_GUIDNAMED(IID_IPortMidi) +#endif + +DEFINE_GUID(IID_IPortMidi, + 0xb4c90a40L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); DEFINE_GUID(CLSID_PortMidi, 0xb4c90a43L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); @@ -984,6 +1006,18 @@ /* =============================================================== IPortWaveCyclic Interface */ + +#if 0 +#define STATIC_IPortWaveCyclic \ + 0xb4c90a26L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 +DEFINE_GUIDSTRUCT("0xB4C90A26-5791-11d0-86f9-00a0c911b544", IID_IPortWaveCyclic); +#define IID_IPortWaveCyclic DEFINE_GUIDNAMED(IID_IPortWaveCyclic) +#endif + +DEFINE_GUID(IID_IPortWaveCyclic, + 0xb4c90a26L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); +DEFINE_GUID(CLSID_PortWaveCyclic, + 0xb4c90a2aL, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); DECLARE_INTERFACE_(IPortWaveCyclic, IPort) { @@ -1019,6 +1053,18 @@ /* =============================================================== IPortWavePci Interface */ + +#if 0 +#define STATIC_IID_IPortWavePci \ + 0xb4c90a50L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 +DEFINE_GUIDSTRUCT("0xB4C90A50-5791-11d0-86f9-00a0c911b544", IID_IPortWavePci); +#define IID_IPortWavePci DEFINE_GUIDNAMED(IID_IPortWavePci) +#endif + +DEFINE_GUID(IID_IPortWavePci, + 0xb4c90a50L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); +DEFINE_GUID(CLSID_PortWavePci, + 0xb4c90a54L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); DECLARE_INTERFACE_(IPortWavePci, IPort) { @@ -1049,6 +1095,14 @@ IPortWavePciStream Interface */ +#define STATIC_IPortWavePciStream \ + 0xb4c90a51L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 + +DEFINE_GUIDSTRUCT("0xB4C90A51-5791-11d0-86f9-00a0c911b544", IID_IPortWavePciStream); + +/* ... */ + + /* =============================================================== IMiniPort Interface @@ -1133,12 +1187,25 @@ IMiniportDriverUart Interface */ +DEFINE_GUID(IID_MiniportDriverUart, + 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); DEFINE_GUID(CLSID_MiniportDriverUart, 0xb4c90ae1L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); /* =============================================================== IPortTopology Interface */ +#if 0 +#define STATIC_IPortTopology \ + 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44 +DEFINE_GUIDSTRUCT("0xB4C90A30-5791-11d0-86f9-00a0c911b544", IID_IPortTopology); +#define IID_IPortTopology DEFINE_GUIDNAMED(IID_IPortTopology) +#endif + +DEFINE_GUID(IID_IPortTopology, + 0xb4c90a30L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); +DEFINE_GUID(CLSID_PortTopology, + 0xb4c90a32L, 0x5791, 0x11d0, 0x86, 0xf9, 0x00, 0xa0, 0xc9, 0x11, 0xb5, 0x44); DECLARE_INTERFACE_(IPortTopology, IPort) { Modified: trunk/reactos/include/ddk/stdunk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/stdunk.h?rev=2…
============================================================================== --- trunk/reactos/include/ddk/stdunk.h (original) +++ trunk/reactos/include/ddk/stdunk.h Sun Jul 8 17:53:39 2007 @@ -90,7 +90,7 @@ : CUnknown(outer_unknown) \ { } -#else /* Not C++ */ +#else /* Not C++ - this is probably very buggy... */ STDMETHODCALLTYPE NTSTATUS Modified: trunk/reactos/include/ddk/winddk.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/ddk/winddk.h?rev=2…
============================================================================== --- trunk/reactos/include/ddk/winddk.h (original) +++ trunk/reactos/include/ddk/winddk.h Sun Jul 8 17:53:39 2007 @@ -110,6 +110,18 @@ #define ALIGN_UP_POINTER(p, t) \ (ALIGN_DOWN_POINTER(((ULONG_PTR)(p) + sizeof(t) - 1), t)) + +/* + * GUID Comparison + */ + +#ifndef __IID_ALIGNED__ + #define __IID_ALIGNED__ + + #define IsEqualGUIDAligned(guid1, guid2) \ + ( (*(PLONGLONG)(guid1) == *(PLONGLONG)(guid2)) && \ + (*((PLONGLONG)(guid1) + 1) == *((PLONGLONG)(guid2) + 1)) ) +#endif /* ** Forward declarations @@ -5726,7 +5738,7 @@ return Entry; } -#if !defined(_WINBASE_H) || _WIN32_WINNT < 0x0501 +#if !defined(_WINBASE_) || _WIN32_WINNT < 0x0501 NTKERNELAPI PSLIST_ENTRY Modified: trunk/reactos/include/psdk/ks.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/ks.h?rev=2747…
============================================================================== --- trunk/reactos/include/psdk/ks.h (original) +++ trunk/reactos/include/psdk/ks.h Sun Jul 8 17:53:39 2007 @@ -30,6 +30,8 @@ #ifndef KS_H #define KS_H +#define _KS_ + #if __GNUC__ >=3 #pragma GCC system_header #endif @@ -37,6 +39,12 @@ #ifdef __cplusplus extern "C" { #endif + +/* +Not sure if this is correct but it causes problems if not included. Can't +seem to compile without this... +*/ +#include "ntddk.h" #ifdef BUILDING_KS #define KSDDKAPI @@ -49,6 +57,36 @@ typedef PVOID PKSWORKER; + +/* =============================================================== + GUID definition helpers +*/ + +#ifndef _NTRTL_ + #ifndef DEFINE_GUIDEX + /* CDECL is used here in MS DDK but does this really work?? */ + #define DEFINE_GUIDEX(name) EXTERN_C const CDECL GUID name + #endif + + #ifndef STATICGUIDOF + #define STATICGUIDOF(guid) STATIC_##guid + #endif +#endif + +#if defined(__cplusplus) && _MSC_VER >= 1100 + #define DEFINE_GUIDSTRUCT(guid, name) struct __declspec(uuid(guid)) name + #define DEFINE_GUIDNAMED(name) __uidof(struct name) +#else + #define DEFINE_GUIDSTRUCT(guid, name) DEFINE_GUIDEX(name) + #define DEFINE_GUIDNAMED(name) name +#endif + + +#define STATIC_GUID_NULL \ +0x00000000L, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +DEFINE_GUIDSTRUCT("00000000-0000-0000-0000-000000000000", GUID_NULL); +#define GUID_NULL DEFINE_GUIDNAMED(GUID_NULL) + /* =============================================================== I/O Control Codes @@ -102,6 +140,86 @@ 0x006, \ METHOD_NEITHER, \ FILE_ANY_ACCESS) + + +/* =============================================================== + Categories +*/ + +#define STATIC_KSCATEGORY_BRIDGE \ + 0x085AFF00L, 0x62CE, 0x11CF, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("085AFF00-62CE-11CF-A5D6-28DB04C10000", KSCATEGORY_BRIDGE); +#define KSCATEGORY_BRIDGE DEFINE_GUIDNAMED(KSCATEGORY_BRIDGE) + +#define STATIC_KSCATEGORY_CAPTURE \ + 0x65E8773DL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65E8773D-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_CAPTURE); +#define KSCATEGORY_CAPTURE DEFINE_GUIDNAMED(KSCATEGORY_CAPTURE) + +#define STATIC_KSCATEGORY_RENDER \ + 0x65E8773EL, 0x8F56, 0x11D0, 0xA3, 0xB9, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("65E8773E-8F56-11D0-A3B9-00A0C9223196", KSCATEGORY_RENDER); +#define KSCATEGORY_RENDER DEFINE_GUIDNAMED(KSCATEGORY_RENDER) + +#define STATIC_KSCATEGORY_MIXER \ + 0xAD809C00L, 0x7B88, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("AD809C00-7B88-11D0-A5D6-28DB04C10000", KSCATEGORY_MIXER); +#define KSCATEGORY_MIXER DEFINE_GUIDNAMED(KSCATEGORY_MIXER) + +#define STATIC_KSCATEGORY_SPLITTER \ + 0x0A4252A0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("0A4252A0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_SPLITTER); +#define KSCATEGORY_SPLITTER DEFINE_GUIDNAMED(KSCATEGORY_SPLITTER) + +#define STATIC_KSCATEGORY_DATACOMPRESSOR \ + 0x1E84C900L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("1E84C900-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATACOMPRESSOR); +#define KSCATEGORY_DATACOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATACOMPRESSOR) + +#define STATIC_KSCATEGORY_DATADECOMPRESSOR \ + 0x2721AE20L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("2721AE20-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATADECOMPRESSOR); +#define KSCATEGORY_DATADECOMPRESSOR DEFINE_GUIDNAMED(KSCATEGORY_DATADECOMPRESSOR) + +#define STATIC_KSCATEGORY_DATATRANSFORM \ + 0x2EB07EA0L, 0x7E70, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("2EB07EA0-7E70-11D0-A5D6-28DB04C10000", KSCATEGORY_DATATRANSFORM); +#define KSCATEGORY_DATATRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_DATATRANSFORM) + +#define STATIC_KSCATEGORY_COMMUNICATIONSTRANSFORM \ + 0xCF1DDA2CL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2C-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_COMMUNICATIONSTRANSFORM); +#define KSCATEGORY_COMMUNICATIONSTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_COMMUNICATIONSTRANSFORM) + +#define STATIC_KSCATEGORY_INTERFACETRANSFORM \ + 0xCF1DDA2DL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2D-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_INTERFACETRANSFORM); +#define KSCATEGORY_INTERFACETRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_INTERFACETRANSFORM) + +#define STATIC_KSCATEGORY_MEDIUMTRANSFORM \ + 0xCF1DDA2EL, 0x9743, 0x11D0, 0xA3, 0xEE, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("CF1DDA2E-9743-11D0-A3EE-00A0C9223196", KSCATEGORY_MEDIUMTRANSFORM); +#define KSCATEGORY_MEDIUMTRANSFORM DEFINE_GUIDNAMED(KSCATEGORY_MEDIUMTRANSFORM) + +#define STATIC_KSCATEGORY_FILESYSTEM \ + 0x760FED5EL, 0x9357, 0x11D0, 0xA3, 0xCC, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("760FED5E-9357-11D0-A3CC-00A0C9223196", KSCATEGORY_FILESYSTEM); +#define KSCATEGORY_FILESYSTEM DEFINE_GUIDNAMED(KSCATEGORY_FILESYSTEM) + +#define STATIC_KSCATEGORY_CLOCK \ + 0x53172480L, 0x4791, 0x11D0, 0xA5, 0xD6, 0x28, 0xDB, 0x04, 0xC1, 0x00, 0x00 +DEFINE_GUIDSTRUCT("53172480-4791-11D0-A5D6-28DB04C10000", KSCATEGORY_CLOCK); +#define KSCATEGORY_CLOCK DEFINE_GUIDNAMED(KSCATEGORY_CLOCK) + +#define STATIC_KSCATEGORY_PROXY \ + 0x97EBAACAL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("97EBAACA-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_PROXY); +#define KSCATEGORY_PROXY DEFINE_GUIDNAMED(KSCATEGORY_PROXY) + +#define STATIC_KSCATEGORY_QUALITY \ + 0x97EBAACBL, 0x95BD, 0x11D0, 0xA3, 0xEA, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96 +DEFINE_GUIDSTRUCT("97EBAACB-95BD-11D0-A3EA-00A0C9223196", KSCATEGORY_QUALITY); +#define KSCATEGORY_QUALITY DEFINE_GUIDNAMED(KSCATEGORY_QUALITY) /* =============================================================== @@ -2315,12 +2433,13 @@
http://www.osronline.com/ddkx/stream/avstream_5q9f.htm
*/ +#if defined(_NTDDK_) KSDDKAPI NTSTATUS NTAPI KsInitializeDriver( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath, - IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL - ); + IN const KSDEVICE_DESCRIPTOR *Descriptor OPTIONAL); +#endif #if 0 typedef void (*PFNKSFILTERFACTORYPOWER)(
17 years, 5 months
1
0
0
0
[cwittich] 27473: -avoid dereferencing of NULL pointers
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Jul 8 17:38:08 2007 New Revision: 27473 URL:
http://svn.reactos.org/svn/reactos?rev=27473&view=rev
Log: -avoid dereferencing of NULL pointers Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 17:38:08 2007 @@ -3087,6 +3087,9 @@ /* Build the actual SG list */ while (TotalLength < Srb->DataTransferLength) { + if (!ScatterGatherList) + break; + ScatterGatherList->Length = Srb->DataTransferLength - TotalLength; ScatterGatherList->PhysicalAddress = IoMapTransfer(DeviceExtension->AdapterObject, Irp->MdlAddress, @@ -3649,7 +3652,7 @@ /* Scan all logical units */ for (Lun = 0; Lun < SCSI_MAXIMUM_LOGICAL_UNITS; Lun++) { - if (!LunExtension) + if ((!LunExtension) || (!LunInfo)) break; /* Add extension to the list */ @@ -3934,6 +3937,12 @@ TRUE, TRUE, TRUE); + + if (!Srb) + { + DPRINT("SpiSendRequestSense() failed, Srb %p\n", Srb); + return; + } IrpStack = IoGetNextIrpStackLocation(Irp); IrpStack->MajorFunction = IRP_MJ_SCSI;
17 years, 5 months
1
0
0
0
[cwittich] 27472: -use ExAllocatePoolWithTag instead of ExAllocatePool -IoMapTransfer should not called without an AdapterObject
by cwittich@svn.reactos.org
Author: cwittich Date: Sun Jul 8 17:24:53 2007 New Revision: 27472 URL:
http://svn.reactos.org/svn/reactos?rev=27472&view=rev
Log: -use ExAllocatePoolWithTag instead of ExAllocatePool -IoMapTransfer should not called without an AdapterObject Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 17:24:53 2007 @@ -698,7 +698,7 @@ if (!DeviceExtension->AdapterObject) { /* From nonpaged pool if there is no DMA */ - CommonBuffer = ExAllocatePool(NonPagedPool, CommonBufferLength); + CommonBuffer = ExAllocatePoolWithTag(NonPagedPool, CommonBufferLength, TAG_SCSIPORT); } else { @@ -3058,8 +3058,8 @@ either from NonPagedPool, or from our static list */ if (SrbInfo->NumberOfMapRegisters > MAX_SG_LIST) { - SrbInfo->ScatterGather = ExAllocatePool( - NonPagedPool, SrbInfo->NumberOfMapRegisters * sizeof(SCSI_SG_ADDRESS)); + SrbInfo->ScatterGather = ExAllocatePoolWithTag( + NonPagedPool, SrbInfo->NumberOfMapRegisters * sizeof(SCSI_SG_ADDRESS), TAG_SCSIPORT); if (SrbInfo->ScatterGather == NULL) ASSERT(FALSE); @@ -3088,7 +3088,7 @@ while (TotalLength < Srb->DataTransferLength) { ScatterGatherList->Length = Srb->DataTransferLength - TotalLength; - ScatterGatherList->PhysicalAddress = IoMapTransfer(NULL, + ScatterGatherList->PhysicalAddress = IoMapTransfer(DeviceExtension->AdapterObject, Irp->MdlAddress, MapRegisterBase, DataVA + TotalLength,
17 years, 5 months
1
0
0
0
[fireball] 27471: - Delete unneeded fields from DeviceExtension. - Reformat ScsiPortGetVirtualAddress(), and make it using SrbExtensionBuffer pointer instead of a removed VirtualAddress.
by fireball@svn.reactos.org
Author: fireball Date: Sun Jul 8 16:32:02 2007 New Revision: 27471 URL:
http://svn.reactos.org/svn/reactos?rev=27471&view=rev
Log: - Delete unneeded fields from DeviceExtension. - Reformat ScsiPortGetVirtualAddress(), and make it using SrbExtensionBuffer pointer instead of a removed VirtualAddress. Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c trunk/reactos/drivers/storage/scsiport/scsiport_int.h Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 16:32:02 2007 @@ -522,7 +522,7 @@ /* Simply look it up in the allocated common buffer */ Offset = (PUCHAR)VirtualAddress - (PUCHAR)DeviceExtension->SrbExtensionBuffer; - BufferLength = DeviceExtension->CommonBufferSize - Offset; + BufferLength = DeviceExtension->CommonBufferLength - Offset; PhysicalAddress.QuadPart = DeviceExtension->PhysicalAddress.QuadPart + Offset; } else if (DeviceExtension->MapRegisters) @@ -763,26 +763,27 @@ */ PVOID STDCALL ScsiPortGetVirtualAddress(IN PVOID HwDeviceExtension, - IN SCSI_PHYSICAL_ADDRESS PhysicalAddress) + IN SCSI_PHYSICAL_ADDRESS PhysicalAddress) { - PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; - ULONG Offset; - - DPRINT("ScsiPortGetVirtualAddress(%p %I64x)\n", - HwDeviceExtension, PhysicalAddress.QuadPart); - - DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, - SCSI_PORT_DEVICE_EXTENSION, - MiniPortDeviceExtension); - - if (DeviceExtension->PhysicalAddress.QuadPart > PhysicalAddress.QuadPart) - return NULL; - - Offset = (ULONG)(PhysicalAddress.QuadPart - DeviceExtension->PhysicalAddress.QuadPart); - if (Offset >= DeviceExtension->CommonBufferLength) - return NULL; - - return (PVOID)((ULONG_PTR)DeviceExtension->VirtualAddress + Offset); + PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; + ULONG Offset; + + DPRINT("ScsiPortGetVirtualAddress(%p %I64x)\n", + HwDeviceExtension, PhysicalAddress.QuadPart); + + DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, + SCSI_PORT_DEVICE_EXTENSION, + MiniPortDeviceExtension); + + if (DeviceExtension->PhysicalAddress.QuadPart > PhysicalAddress.QuadPart) + return NULL; + + Offset = (ULONG)(PhysicalAddress.QuadPart - DeviceExtension->PhysicalAddress.QuadPart); + + if (Offset >= DeviceExtension->CommonBufferLength) + return NULL; + + return (PVOID)((ULONG_PTR)DeviceExtension->SrbExtensionBuffer + Offset); } static VOID @@ -1633,7 +1634,7 @@ /* Free common buffer (if it exists) */ if (DeviceExtension->SrbExtensionBuffer != NULL && - DeviceExtension->CommonBufferSize != 0) + DeviceExtension->CommonBufferLength != 0) { if (!DeviceExtension->AdapterObject) { @@ -1643,7 +1644,7 @@ { #if 0 HalFreeCommonBuffer(DeviceExtension->AdapterObject, - DeviceExtension->CommonBufferSize, + DeviceExtension->CommonBufferLength, DeviceExtension->PhysicalCommonBuffer, DeviceExtension->SrbExtensionBuffer, FALSE); Modified: trunk/reactos/drivers/storage/scsiport/scsiport_int.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport_int.h (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport_int.h Sun Jul 8 16:32:02 2007 @@ -238,7 +238,6 @@ SCSI_PORT_INTERRUPT_DATA InterruptData; - ULONG CommonBufferSize; /* SRB extension stuff*/ ULONG SrbExtensionSize; PVOID SrbExtensionBuffer; @@ -279,7 +278,6 @@ BOOLEAN ReceiveEvent; PHYSICAL_ADDRESS PhysicalAddress; - PVOID VirtualAddress; ULONG CommonBufferLength; ULONG InterruptLevel; ULONG IoAddress;
17 years, 5 months
1
0
0
0
[fireball] 27470: - Enable DMA support, this time properly. - Fix ScsiPortGetPhysicalAddress() function to use scatter-gather list, if needed. - Now BusLogic initializes succesfully, but BSODs later.
by fireball@svn.reactos.org
Author: fireball Date: Sun Jul 8 16:21:18 2007 New Revision: 27470 URL:
http://svn.reactos.org/svn/reactos?rev=27470&view=rev
Log: - Enable DMA support, this time properly. - Fix ScsiPortGetPhysicalAddress() function to use scatter-gather list, if needed. - Now BusLogic initializes succesfully, but BSODs later. Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c trunk/reactos/drivers/storage/scsiport/scsiport_int.h Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 16:21:18 2007 @@ -85,6 +85,10 @@ static BOOLEAN STDCALL ScsiPortStartPacket(IN OUT PVOID Context); +IO_ALLOCATION_ACTION +STDCALL +SpiAdapterControl(PDEVICE_OBJECT DeviceObject, PIRP Irp, + PVOID MapRegisterBase, PVOID Context); static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension); @@ -94,6 +98,11 @@ IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun); + +static PSCSI_REQUEST_BLOCK_INFO +SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, + PSCSI_PORT_LUN_EXTENSION LunExtension, + PSCSI_REQUEST_BLOCK Srb); static NTSTATUS SpiSendInquiry (IN PDEVICE_OBJECT DeviceObject, @@ -490,92 +499,64 @@ */ SCSI_PHYSICAL_ADDRESS STDCALL ScsiPortGetPhysicalAddress(IN PVOID HwDeviceExtension, - IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, - IN PVOID VirtualAddress, - OUT ULONG *Length) + IN PSCSI_REQUEST_BLOCK Srb OPTIONAL, + IN PVOID VirtualAddress, + OUT ULONG *Length) { - PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; - SCSI_PHYSICAL_ADDRESS PhysicalAddress; - SCSI_PHYSICAL_ADDRESS NextPhysicalAddress; - ULONG BufferLength = 0; - ULONG Offset; - PVOID EndAddress; - - DPRINT("ScsiPortGetPhysicalAddress(%p %p %p %p)\n", - HwDeviceExtension, Srb, VirtualAddress, Length); - - DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, - SCSI_PORT_DEVICE_EXTENSION, - MiniPortDeviceExtension); - - *Length = 0; - - if (Srb == NULL) - { - if ((ULONG_PTR)DeviceExtension->VirtualAddress > (ULONG_PTR)VirtualAddress) - { - PhysicalAddress.QuadPart = 0ULL; - return PhysicalAddress; - } - - Offset = (ULONG_PTR)VirtualAddress - (ULONG_PTR)DeviceExtension->VirtualAddress; - if (Offset >= DeviceExtension->CommonBufferLength) - { - PhysicalAddress.QuadPart = 0ULL; - return PhysicalAddress; - } - - PhysicalAddress.QuadPart = - DeviceExtension->PhysicalAddress.QuadPart + (ULONGLONG)Offset; - BufferLength = DeviceExtension->CommonBufferLength - Offset; - } - else - { - EndAddress = (PVOID)((ULONG_PTR)Srb->DataBuffer + Srb->DataTransferLength); - if (VirtualAddress == NULL) - { - VirtualAddress = Srb->DataBuffer; - } - else if (VirtualAddress < Srb->DataBuffer || VirtualAddress >= EndAddress) - { - PhysicalAddress.QuadPart = 0LL; - return PhysicalAddress; - } - - PhysicalAddress = MmGetPhysicalAddress(VirtualAddress); - if (PhysicalAddress.QuadPart == 0LL) - { - return PhysicalAddress; - } - - Offset = (ULONG_PTR)VirtualAddress & (PAGE_SIZE - 1); -#if 1 - /* - * FIXME: - * MmGetPhysicalAddress doesn't return the offset within the page. - * We must set the correct offset. - */ - PhysicalAddress.u.LowPart = (PhysicalAddress.u.LowPart & ~(PAGE_SIZE - 1)) + Offset; -#endif - BufferLength += PAGE_SIZE - Offset; - while ((ULONG_PTR)VirtualAddress + BufferLength < (ULONG_PTR)EndAddress) - { - NextPhysicalAddress = MmGetPhysicalAddress((PVOID)((ULONG_PTR)VirtualAddress + BufferLength)); - if (PhysicalAddress.QuadPart + (ULONGLONG)BufferLength != NextPhysicalAddress.QuadPart) - { - break; - } - BufferLength += PAGE_SIZE; - } - if ((ULONG_PTR)VirtualAddress + BufferLength >= (ULONG_PTR)EndAddress) - { - BufferLength = (ULONG_PTR)EndAddress - (ULONG_PTR)VirtualAddress; - } - } - - *Length = BufferLength; - - return PhysicalAddress; + PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; + SCSI_PHYSICAL_ADDRESS PhysicalAddress; + ULONG BufferLength = 0; + ULONG Offset; + PSCSI_SG_ADDRESS SGList; + PSCSI_REQUEST_BLOCK_INFO SrbInfo; + + DPRINT("ScsiPortGetPhysicalAddress(%p %p %p %p)\n", + HwDeviceExtension, Srb, VirtualAddress, Length); + + DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, + SCSI_PORT_DEVICE_EXTENSION, + MiniPortDeviceExtension); + + if (Srb == NULL || Srb->SenseInfoBuffer == VirtualAddress) + { + /* Simply look it up in the allocated common buffer */ + Offset = (PUCHAR)VirtualAddress - (PUCHAR)DeviceExtension->SrbExtensionBuffer; + + BufferLength = DeviceExtension->CommonBufferSize - Offset; + PhysicalAddress.QuadPart = DeviceExtension->PhysicalAddress.QuadPart + Offset; + } + else if (DeviceExtension->MapRegisters) + { + /* Scatter-gather list must be used */ + SrbInfo = SpiGetSrbData(DeviceExtension, + Srb->PathId, + Srb->TargetId, + Srb->Lun, + Srb->QueueTag); + + SGList = SrbInfo->ScatterGather; + + /* Find needed item in the SG list */ + Offset = (PCHAR)VirtualAddress - (PCHAR)Srb->DataBuffer; + while (Offset >= SGList->Length) + { + Offset -= SGList->Length; + SGList++; + } + + /* We're done, store length and physical address */ + BufferLength = SGList->Length - Offset; + PhysicalAddress.QuadPart = SGList->PhysicalAddress.QuadPart + Offset; + } + else + { + /* Nothing */ + *Length = 0; + PhysicalAddress.QuadPart = (LONGLONG)(SP_UNINITIALIZED_VALUE); + } + + *Length = BufferLength; + return PhysicalAddress; } @@ -2727,6 +2708,7 @@ PSCSI_REQUEST_BLOCK Srb; PSCSI_REQUEST_BLOCK_INFO SrbInfo; LONG CounterResult; + NTSTATUS Status; DPRINT("ScsiPortStartIo() called!\n"); @@ -2749,9 +2731,21 @@ if (DeviceExtension->NeedSrbDataAlloc || DeviceExtension->NeedSrbExtensionAlloc) { - /* TODO: Implement */ - ASSERT(FALSE); - SrbInfo = NULL; + /* Allocate them */ + SrbInfo = SpiAllocateSrbStructures(DeviceExtension, + LunExtension, + Srb); + + /* Couldn't alloc one or both data structures, return */ + if (SrbInfo == NULL) + { + /* We have to call IoStartNextPacket, because this request + was not started */ + if (LunExtension->Flags & LUNEX_REQUEST_PENDING) + IoStartNextPacket(DeviceObject, FALSE); + + return; + } } else { @@ -2806,7 +2800,6 @@ if (DeviceExtension->MapRegisters) { -#if 0 /* Calculate number of needed map registers */ SrbInfo->NumberOfMapRegisters = ADDRESS_AND_SIZE_TO_SPAN_PAGES( Srb->DataBuffer, @@ -2837,9 +2830,6 @@ /* Control goes to SpiAdapterControl */ return; -#else - ASSERT(FALSE); -#endif } } @@ -3038,6 +3028,87 @@ return Result; } +IO_ALLOCATION_ACTION +STDCALL +SpiAdapterControl(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + PVOID MapRegisterBase, + PVOID Context) +{ + PSCSI_REQUEST_BLOCK Srb; + PSCSI_SG_ADDRESS ScatterGatherList; + KIRQL CurrentIrql; + PIO_STACK_LOCATION IrpStack; + ULONG TotalLength = 0; + PSCSI_REQUEST_BLOCK_INFO SrbInfo; + PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; + PUCHAR DataVA; + BOOLEAN WriteToDevice; + + /* Get pointers to SrbInfo and DeviceExtension */ + SrbInfo = (PSCSI_REQUEST_BLOCK_INFO)Context; + DeviceExtension = DeviceObject->DeviceExtension; + + /* Get pointer to SRB */ + IrpStack = IoGetCurrentIrpStackLocation(Irp); + Srb = (PSCSI_REQUEST_BLOCK)IrpStack->Parameters.Others.Argument1; + + /* Depending on the map registers number, we allocate + either from NonPagedPool, or from our static list */ + if (SrbInfo->NumberOfMapRegisters > MAX_SG_LIST) + { + SrbInfo->ScatterGather = ExAllocatePool( + NonPagedPool, SrbInfo->NumberOfMapRegisters * sizeof(SCSI_SG_ADDRESS)); + + if (SrbInfo->ScatterGather == NULL) + ASSERT(FALSE); + + Srb->SrbFlags |= SRB_FLAGS_SGLIST_FROM_POOL; + } + else + { + SrbInfo->ScatterGather = SrbInfo->ScatterGatherList; + } + + /* Use chosen SG list source */ + ScatterGatherList = SrbInfo->ScatterGather; + + /* Save map registers base */ + SrbInfo->BaseOfMapRegister = MapRegisterBase; + + /* Determine WriteToDevice flag */ + WriteToDevice = Srb->SrbFlags & SRB_FLAGS_DATA_OUT ? TRUE : FALSE; + + /* Get virtual address of the data buffer */ + DataVA = (PUCHAR)MmGetMdlVirtualAddress(Irp->MdlAddress) + + ((PCHAR)Srb->DataBuffer - SrbInfo->DataOffset); + + /* Build the actual SG list */ + while (TotalLength < Srb->DataTransferLength) + { + ScatterGatherList->Length = Srb->DataTransferLength - TotalLength; + ScatterGatherList->PhysicalAddress = IoMapTransfer(NULL, + Irp->MdlAddress, + MapRegisterBase, + DataVA + TotalLength, + &ScatterGatherList->Length, + WriteToDevice); + + TotalLength += ScatterGatherList->Length; + ScatterGatherList++; + } + + /* Schedule an active request */ + InterlockedIncrement(&DeviceExtension->ActiveRequestCounter ); + KeAcquireSpinLock(&DeviceExtension->SpinLock, &CurrentIrql); + KeSynchronizeExecution(DeviceExtension->Interrupt, + ScsiPortStartPacket, + DeviceObject); + KeReleaseSpinLock(&DeviceExtension->SpinLock, CurrentIrql); + + return DeallocateObjectKeepRegisters; +} + static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension) { @@ -3111,6 +3182,155 @@ /* We did not find anything */ DPRINT("Nothing found\n"); return NULL; +} + +static PSCSI_REQUEST_BLOCK_INFO +SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, + PSCSI_PORT_LUN_EXTENSION LunExtension, + PSCSI_REQUEST_BLOCK Srb) +{ + PCHAR SrbExtension; + PSCSI_REQUEST_BLOCK_INFO SrbInfo; + + /* Spinlock must be held while this function executes */ + KeAcquireSpinLockAtDpcLevel(&DeviceExtension->SpinLock); + + /* Allocate SRB data structure */ + if (DeviceExtension->NeedSrbDataAlloc) + { + /* Treat the abort request in a special way */ + if (Srb->Function == SRB_FUNCTION_ABORT_COMMAND) + { + SrbInfo = SpiGetSrbData(DeviceExtension, + Srb->PathId, + Srb->TargetId, + Srb->Lun, + Srb->QueueTag); + } + else if (Srb->SrbFlags & + (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE) && + !(Srb->SrbFlags & SRB_FLAGS_DISABLE_DISCONNECT) + ) + { + /* Do not process tagged commands if need request sense is set */ + if (LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) + { + ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); + + LunExtension->PendingRequest = Srb->OriginalRequest; + LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; + + /* Relese the spinlock and return */ + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + ASSERT(LunExtension->SrbInfo.Srb == NULL); + SrbInfo = DeviceExtension->FreeSrbInfo; + + if (SrbInfo == NULL) + { + /* No SRB structures left in the list. We have to leave + and wait while we are called again */ + + DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + DeviceExtension->FreeSrbInfo = (PSCSI_REQUEST_BLOCK_INFO)SrbInfo->Requests.Flink; + + /* QueueTag must never be 0, so +1 to it */ + Srb->QueueTag = (UCHAR)(SrbInfo - DeviceExtension->SrbInfo) + 1; + } + else + { + /* Usual untagged command */ + if ( + (!IsListEmpty(&LunExtension->SrbInfo.Requests) || + LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) && + !(Srb->SrbFlags & SRB_FLAGS_BYPASS_FROZEN_QUEUE) + ) + { + /* Mark it as pending and leave */ + ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); + LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; + LunExtension->PendingRequest = Srb->OriginalRequest; + + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return(NULL); + } + + Srb->QueueTag = SP_UNTAGGED; + SrbInfo = &LunExtension->SrbInfo; + } + } + else + { + Srb->QueueTag = SP_UNTAGGED; + SrbInfo = &LunExtension->SrbInfo; + } + + /* Allocate SRB extension structure */ + if (DeviceExtension->NeedSrbExtensionAlloc) + { + /* Check the list of free extensions */ + SrbExtension = DeviceExtension->FreeSrbExtensions; + + /* If no free extensions... */ + if (SrbExtension == NULL) + { + /* Free SRB data */ + if (Srb->Function != SRB_FUNCTION_ABORT_COMMAND && + Srb->QueueTag != SP_UNTAGGED) + { + SrbInfo->Requests.Blink = NULL; + SrbInfo->Requests.Flink = (PLIST_ENTRY)DeviceExtension->FreeSrbInfo; + DeviceExtension->FreeSrbInfo = SrbInfo; + } + + /* Return, in order to be called again later */ + DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + /* Remove that free SRB extension from the list (since + we're going to use it) */ + DeviceExtension->FreeSrbExtensions = *((PVOID *)SrbExtension); + + /* Spinlock can be released now */ + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + + Srb->SrbExtension = SrbExtension; + + if (Srb->SenseInfoBuffer != NULL && + DeviceExtension->SupportsAutoSense) + { + /* Store pointer to the SenseInfo buffer */ + SrbInfo->SaveSenseRequest = Srb->SenseInfoBuffer; + + /* Does data fit the buffer? */ + if (Srb->SenseInfoBufferLength > sizeof(SENSE_DATA)) + { + /* No, disabling autosense at all */ + Srb->SrbFlags |= SRB_FLAGS_DISABLE_AUTOSENSE; + } + else + { + /* Yes, update the buffer pointer */ + Srb->SenseInfoBuffer = SrbExtension + DeviceExtension->SrbExtensionSize; + } + } + } + else + { + /* Cleanup... */ + Srb->SrbExtension = NULL; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + } + + return SrbInfo; } Modified: trunk/reactos/drivers/storage/scsiport/scsiport_int.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport_int.h (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport_int.h Sun Jul 8 16:21:18 2007 @@ -19,6 +19,8 @@ /* Defines how many logical unit arrays will be in a device extension */ #define LUS_NUMBER 8 + +#define MAX_SG_LIST 17 /* Flags */ #define SCSI_PORT_DEVICE_BUSY 0x0001 @@ -85,6 +87,12 @@ ULONG SystemIoBusNumber; } SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE; +typedef struct _SCSI_SG_ADDRESS +{ + PHYSICAL_ADDRESS PhysicalAddress; + ULONG Length; +} SCSI_SG_ADDRESS, *PSCSI_SG_ADDRESS; + typedef struct _SCSI_REQUEST_BLOCK_INFO { LIST_ENTRY Requests; @@ -99,6 +107,10 @@ ULONG NumberOfMapRegisters; struct _SCSI_REQUEST_BLOCK_INFO *CompletedRequests; + + /* Scatter-gather list */ + PSCSI_SG_ADDRESS ScatterGather; + SCSI_SG_ADDRESS ScatterGatherList[MAX_SG_LIST]; } SCSI_REQUEST_BLOCK_INFO, *PSCSI_REQUEST_BLOCK_INFO; typedef struct _SCSI_PORT_LUN_EXTENSION
17 years, 5 months
1
0
0
0
[fireball] 27469: Reverting last commit, sorry it makes scsiport hanging.
by fireball@svn.reactos.org
Author: fireball Date: Sun Jul 8 15:47:28 2007 New Revision: 27469 URL:
http://svn.reactos.org/svn/reactos?rev=27469&view=rev
Log: Reverting last commit, sorry it makes scsiport hanging. Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c trunk/reactos/drivers/storage/scsiport/scsiport_int.h Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 15:47:28 2007 @@ -85,10 +85,6 @@ static BOOLEAN STDCALL ScsiPortStartPacket(IN OUT PVOID Context); -IO_ALLOCATION_ACTION -STDCALL -SpiAdapterControl(PDEVICE_OBJECT DeviceObject, PIRP Irp, - PVOID MapRegisterBase, PVOID Context); static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension); @@ -98,11 +94,6 @@ IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun); - -static PSCSI_REQUEST_BLOCK_INFO -SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, - PSCSI_PORT_LUN_EXTENSION LunExtension, - PSCSI_REQUEST_BLOCK Srb); static NTSTATUS SpiSendInquiry (IN PDEVICE_OBJECT DeviceObject, @@ -2736,7 +2727,6 @@ PSCSI_REQUEST_BLOCK Srb; PSCSI_REQUEST_BLOCK_INFO SrbInfo; LONG CounterResult; - NTSTATUS Status; DPRINT("ScsiPortStartIo() called!\n"); @@ -2759,21 +2749,9 @@ if (DeviceExtension->NeedSrbDataAlloc || DeviceExtension->NeedSrbExtensionAlloc) { - /* Allocate them */ - SrbInfo = SpiAllocateSrbStructures(DeviceExtension, - LunExtension, - Srb); - - /* Couldn't alloc one or both data structures, return */ - if (SrbInfo == NULL) - { - /* We have to call IoStartNextPacket, because this request - was not started */ - if (LunExtension->Flags & LUNEX_REQUEST_PENDING) - IoStartNextPacket(DeviceObject, FALSE); - - return; - } + /* TODO: Implement */ + ASSERT(FALSE); + SrbInfo = NULL; } else { @@ -2828,6 +2806,7 @@ if (DeviceExtension->MapRegisters) { +#if 0 /* Calculate number of needed map registers */ SrbInfo->NumberOfMapRegisters = ADDRESS_AND_SIZE_TO_SPAN_PAGES( Srb->DataBuffer, @@ -2858,6 +2837,9 @@ /* Control goes to SpiAdapterControl */ return; +#else + ASSERT(FALSE); +#endif } } @@ -3056,123 +3038,6 @@ return Result; } -IO_ALLOCATION_ACTION -STDCALL -SpiAdapterControl(PDEVICE_OBJECT DeviceObject, - PIRP Irp, - PVOID MapRegisterBase, - PVOID Context) -{ - BOOLEAN writeToDevice; - PIO_STACK_LOCATION irpStack; - PSCSI_REQUEST_BLOCK srb; - PSCSI_SG_ADDRESS scatterList; - PCCHAR dataVirtualAddress; - ULONG totalLength; - KIRQL currentIrql; - PSCSI_REQUEST_BLOCK_INFO srbData = Context; - PSCSI_PORT_DEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension; - - irpStack = IoGetCurrentIrpStackLocation(Irp); - srb = (PSCSI_REQUEST_BLOCK)irpStack->Parameters.Others.Argument1; - - // - // Determine if scatter/gather list must come from pool. - // - - if (srbData->NumberOfMapRegisters > MAX_SG_LIST) { - - // - // Allocate scatter/gather list from pool. - // - - srbData->ScatterGather = - ExAllocatePool(NonPagedPool, - srbData->NumberOfMapRegisters * sizeof(SCSI_SG_ADDRESS)); - - if (srbData->ScatterGather == NULL) - ASSERT(FALSE); - - srb->SrbFlags |= SRB_FLAGS_SGLIST_FROM_POOL; - } - else - { - // - // Use embedded scatter/gather list. - // - - srbData->ScatterGather = srbData->ScatterGatherList; - } - - scatterList = srbData->ScatterGather; - totalLength = 0; - - // - // Determine the virtual address of the buffer for the Io map transfers. - // - - dataVirtualAddress = (PCCHAR)MmGetMdlVirtualAddress(Irp->MdlAddress) + - ((PCCHAR)srb->DataBuffer - srbData->DataOffset); - - // - // Save the MapRegisterBase for later use to deallocate the map registers. - // - - srbData->BaseOfMapRegister = MapRegisterBase; - - // - // Build the scatter/gather list by looping throught the transfer calling - // I/O map transfer. - // - - writeToDevice = srb->SrbFlags & SRB_FLAGS_DATA_OUT ? TRUE : FALSE; - - while (totalLength < srb->DataTransferLength) { - - // - // Request that the rest of the transfer be mapped. - // - - scatterList->Length = srb->DataTransferLength - totalLength; - - // - // Since we are a master call I/O map transfer with a NULL adapter. - // - - scatterList->PhysicalAddress = IoMapTransfer(NULL, - Irp->MdlAddress, - MapRegisterBase, - (PCCHAR) dataVirtualAddress + totalLength, - &scatterList->Length, - writeToDevice).LowPart; - - totalLength += scatterList->Length; - scatterList++; - } - - // - // Update the active request count. - // - - InterlockedIncrement( &deviceExtension->ActiveRequestCounter ); - - // - // Acquire the spinlock to protect the various structures. - // - - KeAcquireSpinLock(&deviceExtension->SpinLock, ¤tIrql); - - KeSynchronizeExecution( - deviceExtension->Interrupt, - ScsiPortStartPacket, - DeviceObject - ); - - KeReleaseSpinLock(&deviceExtension->SpinLock, currentIrql); - - return DeallocateObjectKeepRegisters; -} - static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension) { @@ -3246,155 +3111,6 @@ /* We did not find anything */ DPRINT("Nothing found\n"); return NULL; -} - -static PSCSI_REQUEST_BLOCK_INFO -SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, - PSCSI_PORT_LUN_EXTENSION LunExtension, - PSCSI_REQUEST_BLOCK Srb) -{ - PCHAR SrbExtension; - PSCSI_REQUEST_BLOCK_INFO SrbInfo; - - /* Spinlock must be held while this function executes */ - KeAcquireSpinLockAtDpcLevel(&DeviceExtension->SpinLock); - - /* Allocate SRB data structure */ - if (DeviceExtension->NeedSrbDataAlloc) - { - /* Treat the abort request in a special way */ - if (Srb->Function == SRB_FUNCTION_ABORT_COMMAND) - { - SrbInfo = SpiGetSrbData(DeviceExtension, - Srb->PathId, - Srb->TargetId, - Srb->Lun, - Srb->QueueTag); - } - else if (Srb->SrbFlags & - (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE) && - !(Srb->SrbFlags & SRB_FLAGS_DISABLE_DISCONNECT) - ) - { - /* Do not process tagged commands if need request sense is set */ - if (LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) - { - ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); - - LunExtension->PendingRequest = Srb->OriginalRequest; - LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; - - /* Relese the spinlock and return */ - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - return NULL; - } - - ASSERT(LunExtension->SrbInfo.Srb == NULL); - SrbInfo = DeviceExtension->FreeSrbInfo; - - if (SrbInfo == NULL) - { - /* No SRB structures left in the list. We have to leave - and wait while we are called again */ - - DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - return NULL; - } - - DeviceExtension->FreeSrbInfo = (PSCSI_REQUEST_BLOCK_INFO)SrbInfo->Requests.Flink; - - /* QueueTag must never be 0, so +1 to it */ - Srb->QueueTag = (UCHAR)(SrbInfo - DeviceExtension->SrbInfo) + 1; - } - else - { - /* Usual untagged command */ - if ( - (!IsListEmpty(&LunExtension->SrbInfo.Requests) || - LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) && - !(Srb->SrbFlags & SRB_FLAGS_BYPASS_FROZEN_QUEUE) - ) - { - /* Mark it as pending and leave */ - ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); - LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; - LunExtension->PendingRequest = Srb->OriginalRequest; - - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - return(NULL); - } - - Srb->QueueTag = SP_UNTAGGED; - SrbInfo = &LunExtension->SrbInfo; - } - } - else - { - Srb->QueueTag = SP_UNTAGGED; - SrbInfo = &LunExtension->SrbInfo; - } - - /* Allocate SRB extension structure */ - if (DeviceExtension->NeedSrbExtensionAlloc) - { - /* Check the list of free extensions */ - SrbExtension = DeviceExtension->FreeSrbExtensions; - - /* If no free extensions... */ - if (SrbExtension == NULL) - { - /* Free SRB data */ - if (Srb->Function != SRB_FUNCTION_ABORT_COMMAND && - Srb->QueueTag != SP_UNTAGGED) - { - SrbInfo->Requests.Blink = NULL; - SrbInfo->Requests.Flink = (PLIST_ENTRY)DeviceExtension->FreeSrbInfo; - DeviceExtension->FreeSrbInfo = SrbInfo; - } - - /* Return, in order to be called again later */ - DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - return NULL; - } - - /* Remove that free SRB extension from the list (since - we're going to use it) */ - DeviceExtension->FreeSrbExtensions = *((PVOID *)SrbExtension); - - /* Spinlock can be released now */ - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - - Srb->SrbExtension = SrbExtension; - - if (Srb->SenseInfoBuffer != NULL && - DeviceExtension->SupportsAutoSense) - { - /* Store pointer to the SenseInfo buffer */ - SrbInfo->SaveSenseRequest = Srb->SenseInfoBuffer; - - /* Does data fit the buffer? */ - if (Srb->SenseInfoBufferLength > sizeof(SENSE_DATA)) - { - /* No, disabling autosense at all */ - Srb->SrbFlags |= SRB_FLAGS_DISABLE_AUTOSENSE; - } - else - { - /* Yes, update the buffer pointer */ - Srb->SenseInfoBuffer = SrbExtension + DeviceExtension->SrbExtensionSize; - } - } - } - else - { - /* Cleanup... */ - Srb->SrbExtension = NULL; - KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); - } - - return SrbInfo; } Modified: trunk/reactos/drivers/storage/scsiport/scsiport_int.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport_int.h (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport_int.h Sun Jul 8 15:47:28 2007 @@ -19,8 +19,6 @@ /* Defines how many logical unit arrays will be in a device extension */ #define LUS_NUMBER 8 - -#define MAX_SG_LIST 17 /* Flags */ #define SCSI_PORT_DEVICE_BUSY 0x0001 @@ -87,12 +85,6 @@ ULONG SystemIoBusNumber; } SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE; -typedef struct _SCSI_SG_ADDRESS -{ - ULONGLONG PhysicalAddress; - ULONG Length; -} SCSI_SG_ADDRESS, *PSCSI_SG_ADDRESS; - typedef struct _SCSI_REQUEST_BLOCK_INFO { LIST_ENTRY Requests; @@ -107,10 +99,6 @@ ULONG NumberOfMapRegisters; struct _SCSI_REQUEST_BLOCK_INFO *CompletedRequests; - - /* Scatter-gather list */ - PSCSI_SG_ADDRESS ScatterGather; - SCSI_SG_ADDRESS ScatterGatherList[MAX_SG_LIST]; } SCSI_REQUEST_BLOCK_INFO, *PSCSI_REQUEST_BLOCK_INFO; typedef struct _SCSI_PORT_LUN_EXTENSION
17 years, 5 months
1
0
0
0
[fireball] 27468: - Start adding DMA support (still not finished, so BusLogic fails).
by fireball@svn.reactos.org
Author: fireball Date: Sun Jul 8 15:44:42 2007 New Revision: 27468 URL:
http://svn.reactos.org/svn/reactos?rev=27468&view=rev
Log: - Start adding DMA support (still not finished, so BusLogic fails). Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c trunk/reactos/drivers/storage/scsiport/scsiport_int.h Modified: trunk/reactos/drivers/storage/scsiport/scsiport.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport.c (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport.c Sun Jul 8 15:44:42 2007 @@ -85,6 +85,10 @@ static BOOLEAN STDCALL ScsiPortStartPacket(IN OUT PVOID Context); +IO_ALLOCATION_ACTION +STDCALL +SpiAdapterControl(PDEVICE_OBJECT DeviceObject, PIRP Irp, + PVOID MapRegisterBase, PVOID Context); static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension); @@ -94,6 +98,11 @@ IN UCHAR PathId, IN UCHAR TargetId, IN UCHAR Lun); + +static PSCSI_REQUEST_BLOCK_INFO +SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, + PSCSI_PORT_LUN_EXTENSION LunExtension, + PSCSI_REQUEST_BLOCK Srb); static NTSTATUS SpiSendInquiry (IN PDEVICE_OBJECT DeviceObject, @@ -2727,6 +2736,7 @@ PSCSI_REQUEST_BLOCK Srb; PSCSI_REQUEST_BLOCK_INFO SrbInfo; LONG CounterResult; + NTSTATUS Status; DPRINT("ScsiPortStartIo() called!\n"); @@ -2749,9 +2759,21 @@ if (DeviceExtension->NeedSrbDataAlloc || DeviceExtension->NeedSrbExtensionAlloc) { - /* TODO: Implement */ - ASSERT(FALSE); - SrbInfo = NULL; + /* Allocate them */ + SrbInfo = SpiAllocateSrbStructures(DeviceExtension, + LunExtension, + Srb); + + /* Couldn't alloc one or both data structures, return */ + if (SrbInfo == NULL) + { + /* We have to call IoStartNextPacket, because this request + was not started */ + if (LunExtension->Flags & LUNEX_REQUEST_PENDING) + IoStartNextPacket(DeviceObject, FALSE); + + return; + } } else { @@ -2806,7 +2828,6 @@ if (DeviceExtension->MapRegisters) { -#if 0 /* Calculate number of needed map registers */ SrbInfo->NumberOfMapRegisters = ADDRESS_AND_SIZE_TO_SPAN_PAGES( Srb->DataBuffer, @@ -2837,9 +2858,6 @@ /* Control goes to SpiAdapterControl */ return; -#else - ASSERT(FALSE); -#endif } } @@ -3038,6 +3056,123 @@ return Result; } +IO_ALLOCATION_ACTION +STDCALL +SpiAdapterControl(PDEVICE_OBJECT DeviceObject, + PIRP Irp, + PVOID MapRegisterBase, + PVOID Context) +{ + BOOLEAN writeToDevice; + PIO_STACK_LOCATION irpStack; + PSCSI_REQUEST_BLOCK srb; + PSCSI_SG_ADDRESS scatterList; + PCCHAR dataVirtualAddress; + ULONG totalLength; + KIRQL currentIrql; + PSCSI_REQUEST_BLOCK_INFO srbData = Context; + PSCSI_PORT_DEVICE_EXTENSION deviceExtension = DeviceObject->DeviceExtension; + + irpStack = IoGetCurrentIrpStackLocation(Irp); + srb = (PSCSI_REQUEST_BLOCK)irpStack->Parameters.Others.Argument1; + + // + // Determine if scatter/gather list must come from pool. + // + + if (srbData->NumberOfMapRegisters > MAX_SG_LIST) { + + // + // Allocate scatter/gather list from pool. + // + + srbData->ScatterGather = + ExAllocatePool(NonPagedPool, + srbData->NumberOfMapRegisters * sizeof(SCSI_SG_ADDRESS)); + + if (srbData->ScatterGather == NULL) + ASSERT(FALSE); + + srb->SrbFlags |= SRB_FLAGS_SGLIST_FROM_POOL; + } + else + { + // + // Use embedded scatter/gather list. + // + + srbData->ScatterGather = srbData->ScatterGatherList; + } + + scatterList = srbData->ScatterGather; + totalLength = 0; + + // + // Determine the virtual address of the buffer for the Io map transfers. + // + + dataVirtualAddress = (PCCHAR)MmGetMdlVirtualAddress(Irp->MdlAddress) + + ((PCCHAR)srb->DataBuffer - srbData->DataOffset); + + // + // Save the MapRegisterBase for later use to deallocate the map registers. + // + + srbData->BaseOfMapRegister = MapRegisterBase; + + // + // Build the scatter/gather list by looping throught the transfer calling + // I/O map transfer. + // + + writeToDevice = srb->SrbFlags & SRB_FLAGS_DATA_OUT ? TRUE : FALSE; + + while (totalLength < srb->DataTransferLength) { + + // + // Request that the rest of the transfer be mapped. + // + + scatterList->Length = srb->DataTransferLength - totalLength; + + // + // Since we are a master call I/O map transfer with a NULL adapter. + // + + scatterList->PhysicalAddress = IoMapTransfer(NULL, + Irp->MdlAddress, + MapRegisterBase, + (PCCHAR) dataVirtualAddress + totalLength, + &scatterList->Length, + writeToDevice).LowPart; + + totalLength += scatterList->Length; + scatterList++; + } + + // + // Update the active request count. + // + + InterlockedIncrement( &deviceExtension->ActiveRequestCounter ); + + // + // Acquire the spinlock to protect the various structures. + // + + KeAcquireSpinLock(&deviceExtension->SpinLock, ¤tIrql); + + KeSynchronizeExecution( + deviceExtension->Interrupt, + ScsiPortStartPacket, + DeviceObject + ); + + KeReleaseSpinLock(&deviceExtension->SpinLock, currentIrql); + + return DeallocateObjectKeepRegisters; +} + static PSCSI_PORT_LUN_EXTENSION SpiAllocateLunExtension (IN PSCSI_PORT_DEVICE_EXTENSION DeviceExtension) { @@ -3111,6 +3246,155 @@ /* We did not find anything */ DPRINT("Nothing found\n"); return NULL; +} + +static PSCSI_REQUEST_BLOCK_INFO +SpiAllocateSrbStructures(PSCSI_PORT_DEVICE_EXTENSION DeviceExtension, + PSCSI_PORT_LUN_EXTENSION LunExtension, + PSCSI_REQUEST_BLOCK Srb) +{ + PCHAR SrbExtension; + PSCSI_REQUEST_BLOCK_INFO SrbInfo; + + /* Spinlock must be held while this function executes */ + KeAcquireSpinLockAtDpcLevel(&DeviceExtension->SpinLock); + + /* Allocate SRB data structure */ + if (DeviceExtension->NeedSrbDataAlloc) + { + /* Treat the abort request in a special way */ + if (Srb->Function == SRB_FUNCTION_ABORT_COMMAND) + { + SrbInfo = SpiGetSrbData(DeviceExtension, + Srb->PathId, + Srb->TargetId, + Srb->Lun, + Srb->QueueTag); + } + else if (Srb->SrbFlags & + (SRB_FLAGS_QUEUE_ACTION_ENABLE | SRB_FLAGS_NO_QUEUE_FREEZE) && + !(Srb->SrbFlags & SRB_FLAGS_DISABLE_DISCONNECT) + ) + { + /* Do not process tagged commands if need request sense is set */ + if (LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) + { + ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); + + LunExtension->PendingRequest = Srb->OriginalRequest; + LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; + + /* Relese the spinlock and return */ + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + ASSERT(LunExtension->SrbInfo.Srb == NULL); + SrbInfo = DeviceExtension->FreeSrbInfo; + + if (SrbInfo == NULL) + { + /* No SRB structures left in the list. We have to leave + and wait while we are called again */ + + DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + DeviceExtension->FreeSrbInfo = (PSCSI_REQUEST_BLOCK_INFO)SrbInfo->Requests.Flink; + + /* QueueTag must never be 0, so +1 to it */ + Srb->QueueTag = (UCHAR)(SrbInfo - DeviceExtension->SrbInfo) + 1; + } + else + { + /* Usual untagged command */ + if ( + (!IsListEmpty(&LunExtension->SrbInfo.Requests) || + LunExtension->Flags & LUNEX_NEED_REQUEST_SENSE) && + !(Srb->SrbFlags & SRB_FLAGS_BYPASS_FROZEN_QUEUE) + ) + { + /* Mark it as pending and leave */ + ASSERT(!(LunExtension->Flags & LUNEX_REQUEST_PENDING)); + LunExtension->Flags |= LUNEX_REQUEST_PENDING | SCSI_PORT_LU_ACTIVE; + LunExtension->PendingRequest = Srb->OriginalRequest; + + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return(NULL); + } + + Srb->QueueTag = SP_UNTAGGED; + SrbInfo = &LunExtension->SrbInfo; + } + } + else + { + Srb->QueueTag = SP_UNTAGGED; + SrbInfo = &LunExtension->SrbInfo; + } + + /* Allocate SRB extension structure */ + if (DeviceExtension->NeedSrbExtensionAlloc) + { + /* Check the list of free extensions */ + SrbExtension = DeviceExtension->FreeSrbExtensions; + + /* If no free extensions... */ + if (SrbExtension == NULL) + { + /* Free SRB data */ + if (Srb->Function != SRB_FUNCTION_ABORT_COMMAND && + Srb->QueueTag != SP_UNTAGGED) + { + SrbInfo->Requests.Blink = NULL; + SrbInfo->Requests.Flink = (PLIST_ENTRY)DeviceExtension->FreeSrbInfo; + DeviceExtension->FreeSrbInfo = SrbInfo; + } + + /* Return, in order to be called again later */ + DeviceExtension->Flags |= SCSI_PORT_REQUEST_PENDING; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + return NULL; + } + + /* Remove that free SRB extension from the list (since + we're going to use it) */ + DeviceExtension->FreeSrbExtensions = *((PVOID *)SrbExtension); + + /* Spinlock can be released now */ + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + + Srb->SrbExtension = SrbExtension; + + if (Srb->SenseInfoBuffer != NULL && + DeviceExtension->SupportsAutoSense) + { + /* Store pointer to the SenseInfo buffer */ + SrbInfo->SaveSenseRequest = Srb->SenseInfoBuffer; + + /* Does data fit the buffer? */ + if (Srb->SenseInfoBufferLength > sizeof(SENSE_DATA)) + { + /* No, disabling autosense at all */ + Srb->SrbFlags |= SRB_FLAGS_DISABLE_AUTOSENSE; + } + else + { + /* Yes, update the buffer pointer */ + Srb->SenseInfoBuffer = SrbExtension + DeviceExtension->SrbExtensionSize; + } + } + } + else + { + /* Cleanup... */ + Srb->SrbExtension = NULL; + KeReleaseSpinLockFromDpcLevel(&DeviceExtension->SpinLock); + } + + return SrbInfo; } Modified: trunk/reactos/drivers/storage/scsiport/scsiport_int.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/storage/scsiport/s…
============================================================================== --- trunk/reactos/drivers/storage/scsiport/scsiport_int.h (original) +++ trunk/reactos/drivers/storage/scsiport/scsiport_int.h Sun Jul 8 15:44:42 2007 @@ -19,6 +19,8 @@ /* Defines how many logical unit arrays will be in a device extension */ #define LUS_NUMBER 8 + +#define MAX_SG_LIST 17 /* Flags */ #define SCSI_PORT_DEVICE_BUSY 0x0001 @@ -85,6 +87,12 @@ ULONG SystemIoBusNumber; } SCSI_PORT_DEVICE_BASE, *PSCSI_PORT_DEVICE_BASE; +typedef struct _SCSI_SG_ADDRESS +{ + ULONGLONG PhysicalAddress; + ULONG Length; +} SCSI_SG_ADDRESS, *PSCSI_SG_ADDRESS; + typedef struct _SCSI_REQUEST_BLOCK_INFO { LIST_ENTRY Requests; @@ -99,6 +107,10 @@ ULONG NumberOfMapRegisters; struct _SCSI_REQUEST_BLOCK_INFO *CompletedRequests; + + /* Scatter-gather list */ + PSCSI_SG_ADDRESS ScatterGather; + SCSI_SG_ADDRESS ScatterGatherList[MAX_SG_LIST]; } SCSI_REQUEST_BLOCK_INFO, *PSCSI_REQUEST_BLOCK_INFO; typedef struct _SCSI_PORT_LUN_EXTENSION
17 years, 5 months
1
0
0
0
[greatlrd] 27467: patch from Daniel Reimer reimer.daniel at freenet dot de fixed some sublang mess
by greatlrd@svn.reactos.org
Author: greatlrd Date: Sun Jul 8 15:33:54 2007 New Revision: 27467 URL:
http://svn.reactos.org/svn/reactos?rev=27467&view=rev
Log: patch from Daniel Reimer reimer.daniel at freenet dot de fixed some sublang mess Modified: trunk/reactos/dll/cpl/access/lang/hu-HU.rc trunk/reactos/dll/cpl/access/lang/ru-RU.rc trunk/reactos/dll/cpl/appwiz/lang/hu-HU.rc trunk/reactos/dll/cpl/appwiz/lang/ru-RU.rc trunk/reactos/dll/cpl/appwiz/lang/uk-UA.rc trunk/reactos/dll/cpl/desk/lang/hu-HU.rc trunk/reactos/dll/cpl/desk/lang/uk-UA.rc trunk/reactos/dll/cpl/hdwwiz/lang/hu-HU.rc trunk/reactos/dll/cpl/hdwwiz/lang/ru-RU.rc trunk/reactos/dll/cpl/hdwwiz/lang/uk-UA.rc trunk/reactos/dll/cpl/liccpa/lang/ru-RU.rc trunk/reactos/dll/cpl/main/lang/hu-HU.rc trunk/reactos/dll/cpl/mmsys/lang/ru-RU.rc trunk/reactos/dll/cpl/mmsys/lang/uk-UA.rc trunk/reactos/dll/cpl/powercfg/lang/nl-NL.rc trunk/reactos/dll/cpl/powercfg/lang/ru-RU.rc trunk/reactos/dll/cpl/sysdm/lang/cs-CZ.rc trunk/reactos/dll/cpl/sysdm/lang/hu-HU.rc trunk/reactos/dll/cpl/sysdm/lang/uk-UA.rc trunk/reactos/dll/cpl/timedate/lang/hu-HU.rc Modified: trunk/reactos/dll/cpl/access/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/access/lang/hu-HU.…
============================================================================== --- trunk/reactos/dll/cpl/access/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/access/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Peter Lukacs -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_PROPPAGEKEYBOARD DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT Modified: trunk/reactos/dll/cpl/access/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/access/lang/ru-RU.…
============================================================================== --- trunk/reactos/dll/cpl/access/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/access/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_PROPPAGEKEYBOARD DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT Modified: trunk/reactos/dll/cpl/appwiz/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz/lang/hu-HU.…
============================================================================== --- trunk/reactos/dll/cpl/appwiz/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/appwiz/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Robert Horvath - talley at cubeclub.hu -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_PROPPAGEINSTALL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/appwiz/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz/lang/ru-RU.…
============================================================================== --- trunk/reactos/dll/cpl/appwiz/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/appwiz/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_PROPPAGEINSTALL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/appwiz/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/appwiz/lang/uk-UA.…
============================================================================== --- trunk/reactos/dll/cpl/appwiz/lang/uk-UA.rc (original) +++ trunk/reactos/dll/cpl/appwiz/lang/uk-UA.rc Sun Jul 8 15:33:54 2007 @@ -6,7 +6,7 @@ * PROGRAMMERS: Artem Reznikov */ -LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT IDD_PROPPAGEINSTALL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/desk/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/hu-HU.rc…
============================================================================== --- trunk/reactos/dll/cpl/desk/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/desk/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Peter Lukacs -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_BACKGROUND DIALOGEX DISCARDABLE 0, 0, 246, 188 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/desk/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/desk/lang/uk-UA.rc…
============================================================================== --- trunk/reactos/dll/cpl/desk/lang/uk-UA.rc (original) +++ trunk/reactos/dll/cpl/desk/lang/uk-UA.rc Sun Jul 8 15:33:54 2007 @@ -6,7 +6,7 @@ * TRANSLATOR: Artem Reznikov */ -LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT IDD_BACKGROUND DIALOGEX DISCARDABLE 0, 0, 246, 205 STYLE DS_SHELLFONT | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/hdwwiz/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/hdwwiz/lang/hu-HU.…
============================================================================== --- trunk/reactos/dll/cpl/hdwwiz/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/hdwwiz/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Peter Lukacs -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT STRINGTABLE BEGIN Modified: trunk/reactos/dll/cpl/hdwwiz/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/hdwwiz/lang/ru-RU.…
============================================================================== --- trunk/reactos/dll/cpl/hdwwiz/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/hdwwiz/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT STRINGTABLE BEGIN @@ -6,3 +6,4 @@ IDS_CPLDESCRIPTION "Äîáàâèòü îáîðóäîâàíèå â êîìïüþòåð" END + Modified: trunk/reactos/dll/cpl/hdwwiz/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/hdwwiz/lang/uk-UA.…
============================================================================== --- trunk/reactos/dll/cpl/hdwwiz/lang/uk-UA.rc (original) +++ trunk/reactos/dll/cpl/hdwwiz/lang/uk-UA.rc Sun Jul 8 15:33:54 2007 @@ -6,7 +6,7 @@ * PROGRAMMERS: Artem Reznikov */ -LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT STRINGTABLE BEGIN Modified: trunk/reactos/dll/cpl/liccpa/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/liccpa/lang/ru-RU.…
============================================================================== --- trunk/reactos/dll/cpl/liccpa/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/liccpa/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_PROPPAGE1 DIALOG DISCARDABLE 20, 40, 315, 104 STYLE DS_MODALFRAME | WS_OVERLAPPED | WS_CAPTION | WS_VISIBLE | WS_SYSMENU Modified: trunk/reactos/dll/cpl/main/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/main/lang/hu-HU.rc…
============================================================================== --- trunk/reactos/dll/cpl/main/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/main/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_KEYBSPEED DIALOGEX 0, 0, 246, 228 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/mmsys/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/mmsys/lang/ru-RU.r…
============================================================================== --- trunk/reactos/dll/cpl/mmsys/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/mmsys/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,4 +1,4 @@ -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_HARDWARE DIALOGEX 0, 0, 246, 228 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION @@ -13,3 +13,4 @@ IDS_CPLDESCRIPTION "Èçìåíåíèå çâóêîâûõ ñõåì âàøåãî êîìïüþòåðà, íàñòðîéêà êîëîíîê è çàïèñûâàþùèõ óñòðîéñòâ." END + Modified: trunk/reactos/dll/cpl/mmsys/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/mmsys/lang/uk-UA.r…
============================================================================== --- trunk/reactos/dll/cpl/mmsys/lang/uk-UA.rc (original) +++ trunk/reactos/dll/cpl/mmsys/lang/uk-UA.rc Sun Jul 8 15:33:54 2007 @@ -6,7 +6,7 @@ * PROGRAMMERS: Artem Reznikov */ -LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT IDD_HARDWARE DIALOGEX 0, 0, 246, 228 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION @@ -22,3 +22,4 @@ IDS_CPLDESCRIPTION "Çì³íà çâóêîâèõ ñõåì âàøîãî êîìï'þòåðà, íàñòðîþâàííÿ êîëîíîê ³ çàïèñóþ÷èõ ïðèñòðî¿â." END + Modified: trunk/reactos/dll/cpl/powercfg/lang/nl-NL.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/powercfg/lang/nl-N…
============================================================================== --- trunk/reactos/dll/cpl/powercfg/lang/nl-NL.rc (original) +++ trunk/reactos/dll/cpl/powercfg/lang/nl-NL.rc Sun Jul 8 15:33:54 2007 @@ -1,6 +1,6 @@ // Vertaling door Joost de Meij -LANGUAGE LANG_DUTCH, SUBLANG_DUTCH +LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL IDD_PROPPAGEPOWERSHEMES DIALOGEX 0, 0, 250, 220 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION @@ -160,3 +160,4 @@ IDS_TIMEOUT16 "Nooit" END + Modified: trunk/reactos/dll/cpl/powercfg/lang/ru-RU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/powercfg/lang/ru-R…
============================================================================== --- trunk/reactos/dll/cpl/powercfg/lang/ru-RU.rc (original) +++ trunk/reactos/dll/cpl/powercfg/lang/ru-RU.rc Sun Jul 8 15:33:54 2007 @@ -1,6 +1,6 @@ // Russian (ru) resources by Andrey Korotaev (unC0Rr(a)gmail.com) -LANGUAGE LANG_RUSSIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT IDD_PROPPAGEPOWERSHEMES DIALOGEX 0, 0, 250, 220 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION @@ -160,3 +160,4 @@ IDS_TIMEOUT16 "íèêîãäà" END + Modified: trunk/reactos/dll/cpl/sysdm/lang/cs-CZ.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/lang/cs-CZ.r…
============================================================================== --- trunk/reactos/dll/cpl/sysdm/lang/cs-CZ.rc (original) +++ trunk/reactos/dll/cpl/sysdm/lang/cs-CZ.rc Sun Jul 8 15:33:54 2007 @@ -1,6 +1,6 @@ LANGUAGE LANG_CZECH, SUBLANG_DEFAULT -RC_LICENSE RTDATA "resources/gpl.txt" + IDD_PROPPAGEGENERAL DIALOGEX 0, 0, PROPSHEETWIDTH, PROPSHEETHEIGHT STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION Modified: trunk/reactos/dll/cpl/sysdm/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/lang/hu-HU.r…
============================================================================== --- trunk/reactos/dll/cpl/sysdm/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/sysdm/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Peter Lukacs -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT RC_LICENSE RTDATA "resources/gpl.txt" Modified: trunk/reactos/dll/cpl/sysdm/lang/uk-UA.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/sysdm/lang/uk-UA.r…
============================================================================== --- trunk/reactos/dll/cpl/sysdm/lang/uk-UA.rc (original) +++ trunk/reactos/dll/cpl/sysdm/lang/uk-UA.rc Sun Jul 8 15:33:54 2007 @@ -6,7 +6,7 @@ * TRANSLATOR: Artem Reznikov */ -LANGUAGE LANG_UKRAINIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT RC_LICENSE RTDATA "resources/gpl.txt" Modified: trunk/reactos/dll/cpl/timedate/lang/hu-HU.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/cpl/timedate/lang/hu-H…
============================================================================== --- trunk/reactos/dll/cpl/timedate/lang/hu-HU.rc (original) +++ trunk/reactos/dll/cpl/timedate/lang/hu-HU.rc Sun Jul 8 15:33:54 2007 @@ -1,5 +1,5 @@ // Hungarian resource file by Robert Horvath - talley at cubeclub.hu -LANGUAGE LANG_HUNGARIAN, SUBLANG_NEUTRAL +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT IDD_DATETIMEPAGE DIALOGEX 0, 0, 252, 146 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD | WS_DISABLED | WS_CAPTION
17 years, 5 months
1
0
0
0
← Newer
1
...
56
57
58
59
60
61
62
...
71
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Results per page:
10
25
50
100
200