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
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
List overview
Download
Ros-diffs
September 2005
----- 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
22 participants
582 discussions
Start a n
N
ew thread
[hbirr] 17781: Print only the complete information if the fd is valid itself (in is_valid_fd).
by hbirr@svn.reactos.com
Print only the complete information if the fd is valid itself (in is_valid_fd). Modified: trunk/reactos/lib/crt/io/open.c _____ Modified: trunk/reactos/lib/crt/io/open.c --- trunk/reactos/lib/crt/io/open.c 2005-09-10 15:30:21 UTC (rev 17780) +++ trunk/reactos/lib/crt/io/open.c 2005-09-10 15:36:35 UTC (rev 17781) @@ -99,8 +99,15 @@ BOOL b = (fd >= 0 && fd < g_fdend && (fdinfo(fd)->fdflags & FOPEN)); if (!b){ - DPRINT1("not valid fd %i, g_fdend %i, fdinfo %x, bucket %x, fdflags %x\n", - fd,g_fdend,fdinfo(fd),fdinfo_bucket(fd),fdinfo(fd)->fdflags); + if (fd >= 0 && fd < g_fdend) + { + DPRINT1("not valid fd %i, g_fdend %i, fdinfo %x, bucket %x, fdflags %x\n", + fd,g_fdend,fdinfo(fd),fdinfo_bucket(fd),fdinfo(fd)->fdflags); + } + else + { + DPRINT1("not valid fd %i, g_fdend %i\n",fd,g_fdend); + } }
19 years
1
0
0
0
[hbirr] 17780: Silence two debug messages after they have cried a little bit.
by hbirr@svn.reactos.com
Silence two debug messages after they have cried a little bit. Modified: trunk/reactos/lib/advapi32/sec/lsa.c _____ Modified: trunk/reactos/lib/advapi32/sec/lsa.c --- trunk/reactos/lib/advapi32/sec/lsa.c 2005-09-10 15:21:16 UTC (rev 17779) +++ trunk/reactos/lib/advapi32/sec/lsa.c 2005-09-10 15:30:21 UTC (rev 17780) @@ -28,7 +28,11 @@ NTSTATUS STDCALL LsaClose(LSA_HANDLE ObjectHandle) { - DPRINT1("(%p):LsaClose stub\n",ObjectHandle); + static int count = 0; + if (count++ < 20) + { + DPRINT1("(%p):LsaClose stub\n",ObjectHandle); + } return 0xc0000000; } @@ -217,7 +221,11 @@ ACCESS_MASK access, PLSA_HANDLE PolicyHandle) { - DPRINT1("LsaOpenPolicy - stub\n"); + static int count = 0; + if (count++ < 20) + { + DPRINT1("LsaOpenPolicy - stub\n"); + } return STATUS_SUCCESS; }
19 years
1
0
0
0
[hbirr] 17779: Fixed a typo.
by hbirr@svn.reactos.com
Fixed a typo. Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c _____ Modified: trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c --- trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c 2005-09-10 15:20:10 UTC (rev 17778) +++ trunk/reactos/boot/freeldr/freeldr/arch/i386/hardware.c 2005-09-10 15:21:16 UTC (rev 17779) @@ -562,7 +562,7 @@ Identifier[17] = '-'; Identifier[18] = 'A'; Identifier[19] = 0; - DbgPrint((DPRINT_HWDETECT, "Identifier: %xsn", Identifier)); + DbgPrint((DPRINT_HWDETECT, "Identifier: %x\n", Identifier)); /* Set identifier */ Error = RegSetValue(DiskKey,
19 years
1
0
0
0
[hbirr] 17778: Fixed the allocation of some buffers in Execute.
by hbirr@svn.reactos.com
Fixed the allocation of some buffers in Execute. Modified: trunk/reactos/subsys/system/cmd/cmd.c _____ Modified: trunk/reactos/subsys/system/cmd/cmd.c --- trunk/reactos/subsys/system/cmd/cmd.c 2005-09-10 15:18:42 UTC (rev 17777) +++ trunk/reactos/subsys/system/cmd/cmd.c 2005-09-10 15:20:10 UTC (rev 17778) @@ -299,6 +299,7 @@ TCHAR *first = NULL; TCHAR *rest = NULL; TCHAR *full = NULL; + TCHAR *dot = NULL; TCHAR szWindowTitle[MAX_PATH]; DWORD dwExitCode = 0; @@ -310,14 +311,14 @@ need rewrite some code to use realloc when it need instead of add 512bytes extra */ - first = malloc ( _tcslen(First) + 512 * sizeof(TCHAR)); + first = malloc ( (_tcslen(First) + 512) * sizeof(TCHAR)); if (first == NULL) { error_out_of_memory(); return ; } - rest = malloc ( _tcslen(Rest) + 512 * sizeof(TCHAR)); + rest = malloc ( (_tcslen(Rest) + 512) * sizeof(TCHAR)); if (rest == NULL) { free (full); @@ -325,7 +326,7 @@ return ; } - full = malloc ( _tcslen(Full) + 512 * sizeof(TCHAR)); + full = malloc ( (_tcslen(Full) + 512) * sizeof(TCHAR)); if (full == NULL) { free (full); @@ -411,8 +412,8 @@ GetConsoleTitle (szWindowTitle, MAX_PATH); /* check if this is a .BAT or .CMD file */ - if (!_tcsicmp (_tcsrchr (szFullName, _T('.')), _T(".bat")) || - !_tcsicmp (_tcsrchr (szFullName, _T('.')), _T(".cmd"))) + dot = _tcsrchr (szFullName, _T('.')); + if (dot && (!_tcsicmp (dot, _T(".bat")) || !_tcsicmp (dot, _T(".cmd")))) { #ifdef _DEBUG DebugPrintf (_T("[BATCH: %s %s]\n"), szFullName, rest);
19 years
1
0
0
0
[hbirr] 17777: Fixed GetConsoleTitleA/W.
by hbirr@svn.reactos.com
Fixed GetConsoleTitleA/W. Modified: trunk/reactos/lib/kernel32/misc/console.c _____ Modified: trunk/reactos/lib/kernel32/misc/console.c --- trunk/reactos/lib/kernel32/misc/console.c 2005-09-10 15:17:07 UTC (rev 17776) +++ trunk/reactos/lib/kernel32/misc/console.c 2005-09-10 15:18:42 UTC (rev 17777) @@ -3056,18 +3056,17 @@ return 0; } - if(nSize * sizeof(WCHAR) < Request->Data.GetTitleRequest.Length) + if(nSize * sizeof(WCHAR) <= Request->Data.GetTitleRequest.Length) { - wcsncpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title, nSize - 1); - lpConsoleTitle[nSize--] = L'\0'; + nSize--; } else { nSize = Request->Data.GetTitleRequest.Length / sizeof (WCHAR); - wcscpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title); - lpConsoleTitle[nSize] = L'\0'; } - + memcpy(lpConsoleTitle, Request->Data.GetTitleRequest.Title, nSize * sizeof(WCHAR)); + lpConsoleTitle[nSize] = L'\0'; + RtlFreeHeap(RtlGetProcessHeap(), 0, Request); return nSize; @@ -3088,8 +3087,8 @@ DWORD nSize ) { - wchar_t WideTitle [CSRSS_MAX_TITLE_LENGTH]; - DWORD nWideTitle = sizeof WideTitle; + WCHAR WideTitle [CSRSS_MAX_TITLE_LENGTH + 1]; + DWORD nWideTitle = CSRSS_MAX_TITLE_LENGTH + 1; DWORD nWritten; if (!lpConsoleTitle || !nSize) return 0; @@ -3102,7 +3101,7 @@ (LPWSTR) WideTitle, // address of wide-character string nWideTitle, // number of characters in string lpConsoleTitle, // address of buffer for new string - nSize, // size of buffer + nSize - 1, // size of buffer NULL, // FAST NULL // FAST )))
19 years
1
0
0
0
[hpoussin] 17776: Move common code of USB miniport drivers into drivers/usb/miniport/common library
by hpoussin@svn.reactos.com
Move common code of USB miniport drivers into drivers/usb/miniport/common library Added: trunk/reactos/drivers/usb/miniport/common/ Added: trunk/reactos/drivers/usb/miniport/common/cleanup.c Added: trunk/reactos/drivers/usb/miniport/common/close.c Added: trunk/reactos/drivers/usb/miniport/common/common.xml Added: trunk/reactos/drivers/usb/miniport/common/create.c Added: trunk/reactos/drivers/usb/miniport/common/fdo.c Added: trunk/reactos/drivers/usb/miniport/common/misc.c Added: trunk/reactos/drivers/usb/miniport/common/pdo.c Added: trunk/reactos/drivers/usb/miniport/common/uhci.c Added: trunk/reactos/drivers/usb/miniport/common/uhci.h Modified: trunk/reactos/drivers/usb/miniport/directory.xml Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/cleanup.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/close.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/create.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/fdo.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/misc.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/pdo.c Modified: trunk/reactos/drivers/usb/miniport/usbuhci/uhci.c Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/uhci.h Modified: trunk/reactos/drivers/usb/miniport/usbuhci/usbuhci.xml _____ Copied: trunk/reactos/drivers/usb/miniport/common/cleanup.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/cleanup.c) _____ Copied: trunk/reactos/drivers/usb/miniport/common/close.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/close.c) _____ Added: trunk/reactos/drivers/usb/miniport/common/common.xml --- trunk/reactos/drivers/usb/miniport/common/common.xml 2005-09-10 14:46:06 UTC (rev 17775) +++ trunk/reactos/drivers/usb/miniport/common/common.xml 2005-09-10 15:17:07 UTC (rev 17776) @@ -0,0 +1,13 @@ +<module name="usbminiportcommon" type="objectlibrary"> + <define name="__USE_W32API" /> + <define name="DEBUG_MODE" /> + <include>../linux</include> + <include base="usbport"></include> + <file>cleanup.c</file> + <file>close.c</file> + <file>create.c</file> + <file>fdo.c</file> + <file>misc.c</file> + <file>pdo.c</file> + <file>uhci.c</file> +</module> _____ Copied: trunk/reactos/drivers/usb/miniport/common/create.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/create.c) _____ Copied: trunk/reactos/drivers/usb/miniport/common/fdo.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/fdo.c) --- trunk/reactos/drivers/usb/miniport/usbuhci/fdo.c 2005-09-08 21:54:42 UTC (rev 17754) +++ trunk/reactos/drivers/usb/miniport/common/fdo.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -0,0 +1,350 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS UHCI controller driver (Cromwell type) + * FILE: drivers/usb/cromwell/uhci/fdo.c + * PURPOSE: IRP_MJ_PNP/IRP_MJ_DEVICE_CONTROL operations for FDOs + * + * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com), + * James Tabor (jimtabor(a)adsl-64-217-116-74.dsl.hstntx.swbell.net) + */ + +#define NDEBUG +#include "uhci.h" + +#define IO_METHOD_FROM_CTL_CODE(ctlCode) (ctlCode&0x00000003) + +static VOID +UhciGetUserBuffers( + IN PIRP Irp, + IN ULONG IoControlCode, + OUT PVOID* BufferIn, + OUT PVOID* BufferOut) +{ + ASSERT(Irp); + ASSERT(BufferIn); + ASSERT(BufferOut); + + switch (IO_METHOD_FROM_CTL_CODE(IoControlCode)) + { + case METHOD_BUFFERED: + *BufferIn = *BufferOut = Irp->AssociatedIrp.SystemBuffer; + break; + case METHOD_IN_DIRECT: + case METHOD_OUT_DIRECT: + *BufferIn = Irp->AssociatedIrp.SystemBuffer; + *BufferOut = MmGetSystemAddressForMdl(Irp->MdlAddress); + break; + case METHOD_NEITHER: + *BufferIn = IoGetCurrentIrpStackLocation(Irp)->Parameters.DeviceIoControl.Type3Input Buffer; + *BufferOut = Irp->UserBuffer; + break; + default: + /* Should never happen */ + *BufferIn = NULL; + *BufferOut = NULL; + break; + } +} + +NTSTATUS STDCALL +UhciFdoStartDevice( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION Stack = IoGetCurrentIrpStackLocation(Irp); + PDRIVER_OBJECT DriverObject; + POHCI_DRIVER_EXTENSION DriverExtension; + POHCI_DEVICE_EXTENSION DeviceExtension; + PCM_RESOURCE_LIST AllocatedResources; + + /* + * Get the initialization data we saved in VideoPortInitialize. + */ + DriverObject = DeviceObject->DriverObject; + DriverExtension = IoGetDriverObjectExtension(DriverObject, DriverObject); + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + /* + * Store some resources in the DeviceExtension. + */ + AllocatedResources = Stack->Parameters.StartDevice.AllocatedResources; + if (AllocatedResources != NULL) + { + CM_FULL_RESOURCE_DESCRIPTOR *FullList; + CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor; + ULONG ResourceCount; + ULONG ResourceListSize; + + /* Save the resource list */ + ResourceCount = AllocatedResources->List[0].PartialResourceList.Count; + + ResourceListSize = FIELD_OFFSET(CM_RESOURCE_LIST, List[0].PartialResourceList. + PartialDescriptors[ResourceCount]); + + DeviceExtension->AllocatedResources = ExAllocatePool(PagedPool, ResourceListSize); + if (DeviceExtension->AllocatedResources == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + RtlCopyMemory(DeviceExtension->AllocatedResources, + AllocatedResources, + ResourceListSize); + + /* Get the interrupt level/vector - needed by HwFindAdapter sometimes */ + for (FullList = AllocatedResources->List; + FullList < AllocatedResources->List + AllocatedResources->Count; + FullList++) + { + /* FIXME: Is this ASSERT ok for resources from the PNP manager? */ + /*ASSERT(FullList->InterfaceType == PCIBus && + FullList->BusNumber == DeviceExtension->SystemIoBusNumber && + 1 == FullList->PartialResourceList.Version && + 1 == FullList->PartialResourceList.Revision);*/ + for (Descriptor = FullList->PartialResourceList.PartialDescriptors; + Descriptor < FullList->PartialResourceList.PartialDescriptors + FullList->PartialResourceList.Count; + Descriptor++) + { + if (Descriptor->Type == CmResourceTypeInterrupt) + { + DeviceExtension->InterruptLevel = Descriptor->u.Interrupt.Level; + DeviceExtension->InterruptVector = Descriptor->u.Interrupt.Vector; + } + else if (Descriptor->Type == CmResourceTypePort) + { + DeviceExtension->BaseAddress = Descriptor->u.Port.Start; + DeviceExtension->BaseAddrLength = Descriptor->u.Port.Length; + DeviceExtension->Flags = Descriptor->Flags; + + ((struct hc_driver *)(*pci_ids)->driver_data)->flags &= ~HCD_MEMORY; + } + else if (Descriptor->Type == CmResourceTypeMemory) + { + DeviceExtension->BaseAddress = Descriptor->u.Memory.Start; + DeviceExtension->BaseAddrLength = Descriptor->u.Memory.Length; + DeviceExtension->Flags = Descriptor->Flags; + + ((struct hc_driver *)(*pci_ids)->driver_data)->flags |= HCD_MEMORY; + } + } + } + } + + /* Print assigned resources */ + DPRINT("UHCI: Interrupt Vector 0x%lx, %S base 0x%lx, Length 0x%lx\n", + DeviceExtension->InterruptVector, + ((struct hc_driver *)(*pci_ids)->driver_data)->flags & HCD_MEMORY ? L"Memory" : L"I/O", + DeviceExtension->BaseAddress, + DeviceExtension->BaseAddrLength); + + /* Init wrapper with this object */ + return InitLinuxWrapper(DeviceObject); +} + +static NTSTATUS +UhciFdoQueryBusRelations( + IN PDEVICE_OBJECT DeviceObject, + OUT PDEVICE_RELATIONS* pDeviceRelations) +{ + POHCI_DEVICE_EXTENSION DeviceExtension; + PDEVICE_RELATIONS DeviceRelations; + NTSTATUS Status = STATUS_SUCCESS; + + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + /* Handling this IRP is easy, as we only + * have one child: the root hub + */ + DeviceRelations = (PDEVICE_RELATIONS)ExAllocatePool( + PagedPool, + sizeof(DEVICE_RELATIONS)); + if (!DeviceRelations) + return STATUS_INSUFFICIENT_RESOURCES; + + /* Fill returned structure */ + DeviceRelations->Count = 1; + ObReferenceObject(DeviceExtension->RootHubPdo); + DeviceRelations->Objects[0] = DeviceExtension->RootHubPdo; + + *pDeviceRelations = DeviceRelations; + return Status; +} + +NTSTATUS STDCALL +UhciPnpFdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION IrpSp; + NTSTATUS Status; + ULONG MinorFunction; + ULONG_PTR Information = 0; + + IrpSp = IoGetCurrentIrpStackLocation(Irp); + MinorFunction = IrpSp->MinorFunction; + + switch (MinorFunction) + { + case IRP_MN_START_DEVICE: + { + Status = ForwardIrpAndWait(DeviceObject, Irp); + if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status)) + Status = UhciFdoStartDevice(DeviceObject, Irp); + break; + } + + case IRP_MN_REMOVE_DEVICE: + case IRP_MN_QUERY_REMOVE_DEVICE: + case IRP_MN_CANCEL_REMOVE_DEVICE: + case IRP_MN_SURPRISE_REMOVAL: + + case IRP_MN_STOP_DEVICE: + { + Status = ForwardIrpAndWait(DeviceObject, Irp); + if (NT_SUCCESS(Status) && NT_SUCCESS(Irp->IoStatus.Status)) + Status = STATUS_SUCCESS; + IoDeleteDevice(DeviceObject); // just delete device for now + break; + } + case IRP_MN_QUERY_STOP_DEVICE: + case IRP_MN_CANCEL_STOP_DEVICE: + { + Status = STATUS_SUCCESS; + break; + } + case IRP_MN_QUERY_DEVICE_RELATIONS: /* (optional) 0x7 */ + { + switch (IrpSp->Parameters.QueryDeviceRelations.Type) + { + case BusRelations: + { + PDEVICE_RELATIONS DeviceRelations; + DPRINT("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / BusRelations\n"); + Status = UhciFdoQueryBusRelations(DeviceObject, &DeviceRelations); + Information = (ULONG_PTR)DeviceRelations; + break; + } + case RemovalRelations: + { + DPRINT1("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / RemovalRelations\n"); + return ForwardIrpAndForget(DeviceObject, Irp); + } + default: + DPRINT1("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_DEVICE_RELATIONS / Unknown type 0x%lx\n", + IrpSp->Parameters.QueryDeviceRelations.Type); + return ForwardIrpAndForget(DeviceObject, Irp); + } + break; + } + + default: + { + DPRINT1("UHCI: unknown minor function 0x%lx\n", MinorFunction); + return ForwardIrpAndForget(DeviceObject, Irp); + } + } + Irp->IoStatus.Information = Information; + Irp->IoStatus.Status = Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} + +NTSTATUS +UhciDeviceControlFdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION Stack; + ULONG IoControlCode; + POHCI_DEVICE_EXTENSION DeviceExtension; + ULONG LengthIn, LengthOut; + ULONG_PTR Information = 0; + PVOID BufferIn, BufferOut; + NTSTATUS Status; + + DPRINT("UHCI: UsbDeviceControlFdo() called\n"); + + Stack = IoGetCurrentIrpStackLocation(Irp); + LengthIn = Stack->Parameters.DeviceIoControl.InputBufferLength; + LengthOut = Stack->Parameters.DeviceIoControl.OutputBufferLength; + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + IoControlCode = Stack->Parameters.DeviceIoControl.IoControlCode; + UhciGetUserBuffers(Irp, IoControlCode, &BufferIn, &BufferOut); + + switch (IoControlCode) + { + case IOCTL_GET_HCD_DRIVERKEY_NAME: + { + DPRINT("UHCI: IOCTL_GET_HCD_DRIVERKEY_NAME\n"); + if (LengthOut < sizeof(USB_HCD_DRIVERKEY_NAME)) + Status = STATUS_BUFFER_TOO_SMALL; + else if (BufferOut == NULL) + Status = STATUS_INVALID_PARAMETER; + else + { + PUSB_HCD_DRIVERKEY_NAME StringDescriptor; + ULONG StringSize; + StringDescriptor = (PUSB_HCD_DRIVERKEY_NAME)BufferOut; + Status = IoGetDeviceProperty( + ((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->PhysicalDeviceO bject, + DevicePropertyDriverKeyName, + LengthOut - FIELD_OFFSET(USB_HCD_DRIVERKEY_NAME, DriverKeyName), + StringDescriptor->DriverKeyName, + &StringSize); + if (NT_SUCCESS(Status) || Status == STATUS_BUFFER_TOO_SMALL) + { + StringDescriptor->ActualLength = StringSize + FIELD_OFFSET(USB_HCD_DRIVERKEY_NAME, DriverKeyName); + Information = LengthOut; + Status = STATUS_SUCCESS; + } + } + break; + } + case IOCTL_USB_GET_ROOT_HUB_NAME: + { + DPRINT("UHCI: IOCTL_USB_GET_ROOT_HUB_NAME\n"); + if (LengthOut < sizeof(USB_ROOT_HUB_NAME)) + Status = STATUS_BUFFER_TOO_SMALL; + else if (BufferOut == NULL) + Status = STATUS_INVALID_PARAMETER; + else + { + PUSB_ROOT_HUB_NAME StringDescriptor; + PUNICODE_STRING RootHubInterfaceName; + StringDescriptor = (PUSB_ROOT_HUB_NAME)BufferOut; + DeviceObject = ((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->RootHubPdo; + RootHubInterfaceName = &((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->HcdInterfaceNa me; + + StringDescriptor->ActualLength = RootHubInterfaceName->Length + sizeof(WCHAR) + FIELD_OFFSET(USB_ROOT_HUB_NAME, RootHubName); + if (StringDescriptor->ActualLength <= LengthOut) + { + /* Copy root hub name */ + RtlCopyMemory( + StringDescriptor->RootHubName, + RootHubInterfaceName->Buffer, + RootHubInterfaceName->Length); + StringDescriptor->RootHubName[RootHubInterfaceName->Length / sizeof(WCHAR)] = UNICODE_NULL; + DPRINT("UHCI: IOCTL_USB_GET_ROOT_HUB_NAME returns '%S'\n", StringDescriptor->RootHubName); + Information = StringDescriptor->ActualLength; + } + else + Information = sizeof(USB_ROOT_HUB_NAME); + Status = STATUS_SUCCESS; + } + break; + } + + default: + { + /* Pass Irp to lower driver */ + DPRINT1("UHCI: Unknown IOCTL code 0x%lx\n", Stack->Parameters.DeviceIoControl.IoControlCode); + IoSkipCurrentIrpStackLocation(Irp); + return IoCallDriver(DeviceExtension->NextDeviceObject, Irp); + } + } + + Irp->IoStatus.Information = Information; + Irp->IoStatus.Status = Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} _____ Copied: trunk/reactos/drivers/usb/miniport/common/misc.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/misc.c) --- trunk/reactos/drivers/usb/miniport/usbuhci/misc.c 2005-09-08 21:54:42 UTC (rev 17754) +++ trunk/reactos/drivers/usb/miniport/common/misc.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -0,0 +1,170 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS UHCI controller driver (Cromwell type) + * FILE: drivers/usb/cromwell/uhci/misc.c + * PURPOSE: Misceallenous operations + * + * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com), + */ + +#define NDEBUG +#include "uhci.h" +#include <stdarg.h> + +NTSTATUS STDCALL +ForwardIrpAndWaitCompletion( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + IN PVOID Context) +{ + if (Irp->PendingReturned) + KeSetEvent((PKEVENT)Context, IO_NO_INCREMENT, FALSE); + return STATUS_MORE_PROCESSING_REQUIRED; +} + +NTSTATUS +ForwardIrpAndWait( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PDEVICE_OBJECT LowerDevice = ((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->NextDeviceObjec t; + KEVENT Event; + NTSTATUS Status; + + ASSERT(LowerDevice); + + KeInitializeEvent(&Event, NotificationEvent, FALSE); + IoCopyCurrentIrpStackLocationToNext(Irp); + + DPRINT("UHCI: Calling lower device %p [%wZ]\n", LowerDevice, &LowerDevice->DriverObject->DriverName); + IoSetCompletionRoutine(Irp, ForwardIrpAndWaitCompletion, &Event, TRUE, TRUE, TRUE); + + Status = IoCallDriver(LowerDevice, Irp); + if (Status == STATUS_PENDING) + { + Status = KeWaitForSingleObject(&Event, Suspended, KernelMode, FALSE, NULL); + if (NT_SUCCESS(Status)) + Status = Irp->IoStatus.Status; + } + + return Status; +} + +NTSTATUS STDCALL +ForwardIrpAndForget( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PDEVICE_OBJECT LowerDevice = ((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->NextDeviceObjec t; + + ASSERT(LowerDevice); + + IoSkipCurrentIrpStackLocation(Irp); + return IoCallDriver(LowerDevice, Irp); +} + +/* I really want PCSZ strings as last arguments because + * PnP ids are ANSI-encoded in PnP device string + * identification */ +NTSTATUS +UhciInitMultiSzString( + OUT PUNICODE_STRING Destination, + ... /* list of PCSZ */) +{ + va_list args; + PCSZ Source; + ANSI_STRING AnsiString; + UNICODE_STRING UnicodeString; + ULONG DestinationSize = 0; + NTSTATUS Status = STATUS_SUCCESS; + + ASSERT(Destination); + + /* Calculate length needed for destination unicode string */ + va_start(args, Destination); + Source = va_arg(args, PCSZ); + while (Source != NULL) + { + DPRINT1("Source = %s\n", Source); + RtlInitAnsiString(&AnsiString, Source); + DPRINT1("AnsiString = %Z\n", &AnsiString); + DPRINT1("NLS_MB_CODE_PAGE_TAG = %lu\n", (ULONG)NLS_MB_CODE_PAGE_TAG); + DestinationSize += RtlAnsiStringToUnicodeSize(&AnsiString) + + sizeof(WCHAR) /* final NULL */; + DPRINT1("DestinationSize = %lu\n", DestinationSize); + Source = va_arg(args, PCSZ); + } + va_end(args); + if (DestinationSize == 0) + { + RtlInitUnicodeString(Destination, NULL); + return STATUS_SUCCESS; + } + + /* Initialize destination string */ + DestinationSize += sizeof(WCHAR); // final NULL + Destination->Buffer = (PWSTR)ExAllocatePoolWithTag(PagedPool, DestinationSize, USB_UHCI_TAG); + if (!Destination->Buffer) + return STATUS_INSUFFICIENT_RESOURCES; + Destination->Length = 0; + Destination->MaximumLength = (USHORT)DestinationSize; + + /* Copy arguments to destination string */ + /* Use a temporary unicode string, which buffer is shared with + * destination string, to copy arguments */ + UnicodeString.Length = Destination->Length; + UnicodeString.MaximumLength = Destination->MaximumLength; + UnicodeString.Buffer = Destination->Buffer; + va_start(args, Destination); + Source = va_arg(args, PCSZ); + while (Source != NULL) + { + RtlInitAnsiString(&AnsiString, Source); + Status = RtlAnsiStringToUnicodeString(&UnicodeString, &AnsiString, FALSE); + if (!NT_SUCCESS(Status)) + { + ExFreePoolWithTag(Destination->Buffer, USB_UHCI_TAG); + break; + } + Destination->Length += UnicodeString.Length + sizeof(WCHAR); + UnicodeString.MaximumLength -= UnicodeString.Length + sizeof(WCHAR); + UnicodeString.Buffer += UnicodeString.Length / sizeof(WCHAR) + 1; + UnicodeString.Length = 0; + Source = va_arg(args, PCSZ); + } + va_end(args); + if (NT_SUCCESS(Status)) + { + /* Finish multi-sz string */ + Destination->Buffer[Destination->Length / sizeof(WCHAR)] = L'\0'; + Destination->Length += sizeof(WCHAR); + } + return Status; +} + +NTSTATUS +UhciDuplicateUnicodeString( + OUT PUNICODE_STRING Destination, + IN PUNICODE_STRING Source, + IN POOL_TYPE PoolType) +{ + ASSERT(Destination); + + if (Source == NULL) + { + RtlInitUnicodeString(Destination, NULL); + return STATUS_SUCCESS; + } + + Destination->Buffer = ExAllocatePool(PoolType, Source->MaximumLength); + if (Destination->Buffer == NULL) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + Destination->MaximumLength = Source->MaximumLength; + Destination->Length = Source->Length; + RtlCopyMemory(Destination->Buffer, Source->Buffer, Source->MaximumLength); + + return STATUS_SUCCESS; +} _____ Copied: trunk/reactos/drivers/usb/miniport/common/pdo.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/pdo.c) _____ Copied: trunk/reactos/drivers/usb/miniport/common/uhci.c (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/uhci.c) --- trunk/reactos/drivers/usb/miniport/usbuhci/uhci.c 2005-09-08 21:54:42 UTC (rev 17754) +++ trunk/reactos/drivers/usb/miniport/common/uhci.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -0,0 +1,274 @@ +/* + ReactOS specific functions for UHCI module + by Aleksey Bragin (aleksey(a)reactos.com) + and HervÚ Poussineau (hpoussin(a)reactos.com) + Some parts of code are inspired (or even just copied) from ReactOS Videoport driver +*/ +#define NDEBUG +#define INITGUID +#include "uhci.h" + +static ULONG DeviceNumber = 0; /* FIXME: what is that? */ + +static NTSTATUS +CreateRootHubPdo( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT Fdo, + OUT PDEVICE_OBJECT* pPdo) +{ + PDEVICE_OBJECT Pdo; + POHCI_DEVICE_EXTENSION DeviceExtension; + NTSTATUS Status; + + DPRINT("UHCI: CreateRootHubPdo()\n"); + + Status = IoCreateDevice( + DriverObject, + sizeof(OHCI_DEVICE_EXTENSION), + NULL, /* DeviceName */ + FILE_DEVICE_BUS_EXTENDER, + FILE_DEVICE_SECURE_OPEN | FILE_AUTOGENERATED_DEVICE_NAME, + FALSE, + &Pdo); + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: IoCreateDevice() call failed with status 0x%08x\n", Status); + return Status; + } + + Pdo->Flags |= DO_BUS_ENUMERATED_DEVICE; + Pdo->Flags |= DO_POWER_PAGABLE; + + // zerofill device extension + DeviceExtension = (POHCI_DEVICE_EXTENSION)Pdo->DeviceExtension; + RtlZeroMemory(DeviceExtension, sizeof(OHCI_DEVICE_EXTENSION)); + + DeviceExtension->IsFDO = FALSE; + DeviceExtension->FunctionalDeviceObject = Fdo; + + Pdo->Flags &= ~DO_DEVICE_INITIALIZING; + + *pPdo = Pdo; + return STATUS_SUCCESS; +} + +NTSTATUS STDCALL +AddDevice( + IN PDRIVER_OBJECT DriverObject, + IN PDEVICE_OBJECT pdo) +{ + PDEVICE_OBJECT fdo; + NTSTATUS Status; + WCHAR DeviceBuffer[20]; + WCHAR LinkDeviceBuffer[20]; + UNICODE_STRING DeviceName; + UNICODE_STRING LinkDeviceName; + POHCI_DRIVER_EXTENSION DriverExtension; + POHCI_DEVICE_EXTENSION DeviceExtension; + + DPRINT("UHCI: AddDevice called\n"); + + // Allocate driver extension now + DriverExtension = IoGetDriverObjectExtension(DriverObject, DriverObject); + if (DriverExtension == NULL) + { + Status = IoAllocateDriverObjectExtension( + DriverObject, + DriverObject, + sizeof(OHCI_DRIVER_EXTENSION), + (PVOID *)&DriverExtension); + + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: Allocating DriverObjectExtension failed.\n"); + return Status; + } + } + + // Create a unicode device name +// DeviceNumber = 0; //TODO: Allocate new device number every time + swprintf(DeviceBuffer, L"\\Device\\USBFDO-%lu", DeviceNumber); + RtlInitUnicodeString(&DeviceName, DeviceBuffer); + + Status = IoCreateDevice(DriverObject, + sizeof(OHCI_DEVICE_EXTENSION), + &DeviceName, + FILE_DEVICE_BUS_EXTENDER, + 0, + FALSE, + &fdo); + + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: IoCreateDevice call failed with status 0x%08lx\n", Status); + return Status; + } + + // zerofill device extension + DeviceExtension = (POHCI_DEVICE_EXTENSION)fdo->DeviceExtension; + RtlZeroMemory(DeviceExtension, sizeof(OHCI_DEVICE_EXTENSION)); + + /* Create root hub Pdo */ + Status = CreateRootHubPdo(DriverObject, fdo, &DeviceExtension->RootHubPdo); + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: CreateRootHubPdo() failed with status 0x%08lx\n", Status); + IoDeleteDevice(fdo); + return Status; + } + + /* Register device interface for controller */ + Status = IoRegisterDeviceInterface( + pdo, + &GUID_DEVINTERFACE_USB_HOST_CONTROLLER, + NULL, + &DeviceExtension->HcdInterfaceName); + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: IoRegisterDeviceInterface() failed with status 0x%08lx\n", Status); + IoDeleteDevice(DeviceExtension->RootHubPdo); + IoDeleteDevice(fdo); + return Status; + } + + DeviceExtension->NextDeviceObject = IoAttachDeviceToDeviceStack(fdo, pdo); + + fdo->Flags &= ~DO_DEVICE_INITIALIZING; + + // Initialize device extension + DeviceExtension->IsFDO = TRUE; + DeviceExtension->DeviceNumber = DeviceNumber; + DeviceExtension->PhysicalDeviceObject = pdo; + DeviceExtension->FunctionalDeviceObject = fdo; + DeviceExtension->DriverExtension = DriverExtension; + + /* FIXME: do a loop to find an available number */ + swprintf(LinkDeviceBuffer, L"\\??\\HCD%lu", 0); + + RtlInitUnicodeString(&LinkDeviceName, LinkDeviceBuffer); + + Status = IoCreateSymbolicLink(&LinkDeviceName, &DeviceName); + + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: IoCreateSymbolicLink call failed with status 0x%08x\n", Status); + IoDeleteDevice(DeviceExtension->RootHubPdo); + IoDeleteDevice(fdo); + return Status; + } + + return STATUS_SUCCESS; +} + +NTSTATUS STDCALL +IrpStub( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + NTSTATUS Status = STATUS_NOT_SUPPORTED; + + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + { + DPRINT1("UHCI: FDO stub for major function 0x%lx\n", + IoGetCurrentIrpStackLocation(Irp)->MajorFunction); +#ifndef NDEBUG + DbgBreakPoint(); +#endif + return ForwardIrpAndForget(DeviceObject, Irp); + } + else + { + /* We can't forward request to the lower driver, because + * we are a Pdo, so we don't have lower driver... + */ + DPRINT1("UHCI: PDO stub for major function 0x%lx\n", + IoGetCurrentIrpStackLocation(Irp)->MajorFunction); +#ifndef NDEBUG + DbgBreakPoint(); +#endif + } + + Status = Irp->IoStatus.Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} + +static NTSTATUS STDCALL +DispatchCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + return UhciCreate(DeviceObject, Irp); + else + return IrpStub(DeviceObject, Irp); +} + +static NTSTATUS STDCALL +DispatchClose(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + return UhciClose(DeviceObject, Irp); + else + return IrpStub(DeviceObject, Irp); +} + +static NTSTATUS STDCALL +DispatchCleanup(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + return UhciCleanup(DeviceObject, Irp); + else + return IrpStub(DeviceObject, Irp); +} + +static NTSTATUS STDCALL +DispatchDeviceControl(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + return UhciDeviceControlFdo(DeviceObject, Irp); + else + return UhciDeviceControlPdo(DeviceObject, Irp); +} + +static NTSTATUS STDCALL +DispatchPnp(PDEVICE_OBJECT DeviceObject, PIRP Irp) +{ + if (((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->IsFDO) + return UhciPnpFdo(DeviceObject, Irp); + else + return UhciPnpPdo(DeviceObject, Irp); +} + +static NTSTATUS STDCALL +DispatchPower(PDEVICE_OBJECT fido, PIRP Irp) +{ + DPRINT1("UHCI: IRP_MJ_POWER unimplemented\n"); + Irp->IoStatus.Information = 0; + Irp->IoStatus.Status = STATUS_SUCCESS; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_SUCCESS; +} + +/* + * Standard DriverEntry method. + */ +NTSTATUS STDCALL +DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegPath) +{ + ULONG i; + DPRINT("********* Cromwell UHCI *********\n"); + + DriverObject->DriverUnload = DriverUnload; + DriverObject->DriverExtension->AddDevice = AddDevice; + + for (i = 0; i < IRP_MJ_MAXIMUM_FUNCTION; i++) + DriverObject->MajorFunction[i] = IrpStub; + + DriverObject->MajorFunction[IRP_MJ_CREATE] = DispatchCreate; + DriverObject->MajorFunction[IRP_MJ_CLOSE] = DispatchClose; + DriverObject->MajorFunction[IRP_MJ_CLEANUP] = DispatchCleanup; + DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DispatchDeviceControl; + DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; + DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; + + return STATUS_SUCCESS; +} _____ Copied: trunk/reactos/drivers/usb/miniport/common/uhci.h (from rev 17754, trunk/reactos/drivers/usb/miniport/usbuhci/uhci.h) --- trunk/reactos/drivers/usb/miniport/usbuhci/uhci.h 2005-09-08 21:54:42 UTC (rev 17754) +++ trunk/reactos/drivers/usb/miniport/common/uhci.h 2005-09-10 15:17:07 UTC (rev 17776) @@ -0,0 +1,84 @@ +//#include <ddk/ntddk.h> +// config and include core/hcd.h, for hc_device struct struct usb_interface *usb_ifnum_to_if(struct usb_device *dev, unsigned ifnum) + +#include "../usb_wrapper.h" +#include <ddk/usbdi.h> +#include <ddk/usbiodef.h> +#include <initguid.h> + +#include "hcd.h" + +#include "../usbohci/ohci_main.h" + +#define USB_UHCI_TAG TAG('u','s','b','u') + +/* cleanup.c */ +NTSTATUS STDCALL +UhciCleanup( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +/* close.c */ +NTSTATUS STDCALL +UhciClose( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +/* create.c */ +NTSTATUS STDCALL +UhciCreate( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +/* fdo.c */ +NTSTATUS STDCALL +UhciPnpFdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +UhciDeviceControlFdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +/* misc.c */ +NTSTATUS +ForwardIrpAndWait( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS STDCALL +ForwardIrpAndForget( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +UhciDuplicateUnicodeString( + OUT PUNICODE_STRING Destination, + IN PUNICODE_STRING Source, + IN POOL_TYPE PoolType); + +NTSTATUS +UhciInitMultiSzString( + OUT PUNICODE_STRING Destination, + ... /* list of PCSZ */); + +/* pdo.c */ +NTSTATUS STDCALL +UhciPnpPdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +UhciDeviceControlPdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +/* Needed by this object library */ +VOID STDCALL +DriverUnload(PDRIVER_OBJECT DriverObject); + +NTSTATUS +InitLinuxWrapper(PDEVICE_OBJECT DeviceObject); + +extern struct pci_device_id** pci_ids; _____ Modified: trunk/reactos/drivers/usb/miniport/directory.xml --- trunk/reactos/drivers/usb/miniport/directory.xml 2005-09-10 14:46:06 UTC (rev 17775) +++ trunk/reactos/drivers/usb/miniport/directory.xml 2005-09-10 15:17:07 UTC (rev 17776) @@ -1,3 +1,6 @@ +<directory name="common"> + <xi:include href="common/common.xml" /> +</directory> <directory name="sys"> <xi:include href="sys/sys.xml" /> </directory> _____ Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/cleanup.c --- trunk/reactos/drivers/usb/miniport/usbuhci/cleanup.c 2005-09-10 14:46:06 UTC (rev 17775) +++ trunk/reactos/drivers/usb/miniport/usbuhci/cleanup.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -1,24 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS UHCI controller driver (Cromwell type) - * FILE: drivers/usb/cromwell/uhci/cleanup.c - * PURPOSE: IRP_MJ_CLEANUP operations - * - * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com) - */ - -#define NDEBUG -#include "uhci.h" - -NTSTATUS STDCALL -UhciCleanup( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp) -{ - DPRINT("UHCI: IRP_MJ_CLEANUP\n"); - - Irp->IoStatus.Information = 0; - Irp->IoStatus.Status = STATUS_SUCCESS; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return STATUS_SUCCESS; -} _____ Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/close.c --- trunk/reactos/drivers/usb/miniport/usbuhci/close.c 2005-09-10 14:46:06 UTC (rev 17775) +++ trunk/reactos/drivers/usb/miniport/usbuhci/close.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -1,28 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS UHCI controller driver (Cromwell type) - * FILE: drivers/usb/cromwell/uhci/close.c - * PURPOSE: IRP_MJ_CLOSE operations - * - * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com) - */ - -#define NDEBUG -#include "uhci.h" - -NTSTATUS STDCALL -UhciClose( - IN PDEVICE_OBJECT DeviceObject, - IN PIRP Irp) -{ - POHCI_DEVICE_EXTENSION pDeviceExtension; - - DPRINT("UHCI: IRP_MJ_CLOSE\n"); - pDeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; - InterlockedDecrement((PLONG)&pDeviceExtension->DeviceOpened); - - Irp->IoStatus.Information = 0; - Irp->IoStatus.Status = STATUS_SUCCESS; - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return STATUS_SUCCESS; -} _____ Deleted: trunk/reactos/drivers/usb/miniport/usbuhci/create.c --- trunk/reactos/drivers/usb/miniport/usbuhci/create.c 2005-09-10 14:46:06 UTC (rev 17775) +++ trunk/reactos/drivers/usb/miniport/usbuhci/create.c 2005-09-10 15:17:07 UTC (rev 17776) @@ -1,41 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory [truncated at 1000 lines; 1350 more skipped]
19 years
1
0
0
0
[ea] 17775: <module warnings=...>
by ea@svn.reactos.com
<module warnings=...> <module allowwarnings=...> Modified: trunk/rosapps/games/solitaire/solitaire.xml Modified: trunk/rosapps/mc/mc.xml Modified: trunk/rosapps/net/ncftp/ncftp.xml Modified: trunk/rosapps/templates/dialog/dialog.xml _____ Modified: trunk/rosapps/games/solitaire/solitaire.xml --- trunk/rosapps/games/solitaire/solitaire.xml 2005-09-10 13:03:17 UTC (rev 17774) +++ trunk/rosapps/games/solitaire/solitaire.xml 2005-09-10 14:46:06 UTC (rev 17775) @@ -1,4 +1,4 @@ -<module name="sol" type="win32gui" installbase="system32" installname="solitaire.exe" warnings="true"> +<module name="sol" type="win32gui" installbase="system32" installname="solitaire.exe" allowwarnings="true"> <include base="sol">.</include> <include base="sol">cardlib</include> <linkerflag>-lstdc++</linkerflag> _____ Modified: trunk/rosapps/mc/mc.xml --- trunk/rosapps/mc/mc.xml 2005-09-10 13:03:17 UTC (rev 17774) +++ trunk/rosapps/mc/mc.xml 2005-09-10 14:46:06 UTC (rev 17775) @@ -1,4 +1,4 @@ -<module name="mc" type="win32cui" installbase="system32" installname="mc.exe" warnings="true"> +<module name="mc" type="win32cui" installbase="system32" installname="mc.exe" allowwarnings="true"> <include base="mc">src</include> <include base="mc">pc</include> <include base="mc">slang</include> @@ -80,4 +80,4 @@ </directory> <file>mc.rc</file> -</module> \ No newline at end of file +</module> _____ Modified: trunk/rosapps/net/ncftp/ncftp.xml --- trunk/rosapps/net/ncftp/ncftp.xml 2005-09-10 13:03:17 UTC (rev 17774) +++ trunk/rosapps/net/ncftp/ncftp.xml 2005-09-10 14:46:06 UTC (rev 17775) @@ -1,4 +1,4 @@ -<module name="ncftp" type="win32cui" installbase="system32" installname="ncftp.exe" warnings="true"> +<module name="ncftp" type="win32cui" installbase="system32" installname="ncftp.exe" allowwarnings="true"> <include base="ncftp">.</include> <include base="ncftp">sio</include> <include base="ncftp">Strn</include> _____ Modified: trunk/rosapps/templates/dialog/dialog.xml --- trunk/rosapps/templates/dialog/dialog.xml 2005-09-10 13:03:17 UTC (rev 17774) +++ trunk/rosapps/templates/dialog/dialog.xml 2005-09-10 14:46:06 UTC (rev 17775) @@ -1,4 +1,4 @@ -<module name="template_dialog" type="win32cui" installname="dialog.exe" warnings="true"> +<module name="template_dialog" type="win32cui" installname="dialog.exe" allowwarnings="true"> <include base="template_dialog">.</include> <define name="__USE_W32API" /> <define name="_WIN32_IE">0x0501</define>
19 years
1
0
0
0
[hpoussin] 17774: Add USB drivers to bootcd
by hpoussin@svn.reactos.com
Add USB drivers to bootcd Modified: trunk/reactos/bootdata/packages/reactos.dff _____ Modified: trunk/reactos/bootdata/packages/reactos.dff --- trunk/reactos/bootdata/packages/reactos.dff 2005-09-10 13:02:02 UTC (rev 17773) +++ trunk/reactos/bootdata/packages/reactos.dff 2005-09-10 13:03:17 UTC (rev 17774) @@ -54,6 +54,10 @@ drivers\net\wshtcpip\wshtcpip.dll 1 drivers\net\dd\ne2000\ne2000.sys 2 drivers\net\dd\pcnet\pcnet.sys 2 +drivers\usb\miniport\usbohci\usbohci.sys 2 +drivers\usb\miniport\usbuhci\usbuhci.sys 2 +drivers\usb\usbhub\usbhub.sys 2 +drivers\usb\usbport\usbport.sys 2 lib\advapi32\advapi32.dll 1 lib\advpack\advpack.dll 1 lib\aclui\aclui.dll 1
19 years
1
0
0
0
[ekohl] 17773: Implement CM_Delete_Class_Key[_Ex].
by ekohl@svn.reactos.com
Implement CM_Delete_Class_Key[_Ex]. Modified: trunk/reactos/include/idl/pnp.idl Modified: trunk/reactos/include/wine/cfgmgr32.h Modified: trunk/reactos/lib/setupapi/cfgmgr.c Modified: trunk/reactos/lib/setupapi/setupapi.spec Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.xml Modified: trunk/reactos/w32api/include/ddk/cfgmgr32.h _____ Modified: trunk/reactos/include/idl/pnp.idl --- trunk/reactos/include/idl/pnp.idl 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/include/idl/pnp.idl 2005-09-10 13:02:02 UTC (rev 17773) @@ -75,6 +75,10 @@ [in, out] unsigned long *Length, [in] unsigned long Flags); + CONFIGRET PNP_DeleteClassKey(handle_t BindingHandle, + [in, string] wchar_t *ClassGuid, + [in] unsigned long Flags); + CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle, [in, string] wchar_t *DeviceInstance, [out] unsigned long *Status, _____ Modified: trunk/reactos/include/wine/cfgmgr32.h --- trunk/reactos/include/wine/cfgmgr32.h 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/include/wine/cfgmgr32.h 2005-09-10 13:02:02 UTC (rev 17773) @@ -123,11 +123,17 @@ #define CM_DRP_MIN 0x00000001 #define CM_DRP_MAX 0x00000017 +/* ulFlags for CM_Delete_Class_Key[_Ex] */ +#define CM_DELETE_CLASS_ONLY 0x00000000 +#define CM_DELETE_CLASS_SUBKEYS 0x00000001 +#define CM_DELETE_CLASS_BITS 0x00000001 CONFIGRET WINAPI CM_Connect_MachineA( PCSTR, PHMACHINE ); CONFIGRET WINAPI CM_Connect_MachineW( PCWSTR, PHMACHINE ); #define CM_Connect_Machine WINELIB_NAME_AW(CM_Connect_Machine) +CONFIGRET WINAPI CM_Delete_Class_Key( LPGUID, ULONG ); +CONFIGRET WINAPI CM_Delete_Class_Key_Ex( LPGUID, ULONG, HANDLE ); CONFIGRET WINAPI CM_Disconnect_Machine( HMACHINE ); CONFIGRET WINAPI CM_Enumerate_Classes( ULONG, LPGUID, ULONG ); CONFIGRET WINAPI CM_Enumerate_Classes_Ex( ULONG, LPGUID, ULONG, HMACHINE ); @@ -140,7 +146,7 @@ CONFIGRET WINAPI CM_Get_Class_Key_Name_ExW( LPGUID, LPWSTR, PULONG, ULONG, HMACHINE ); #define CM_Get_Class_Key_Name_Ex WINELIB_NAME_AW(CM_Get_Class_Key_Name_Ex) CONFIGRET WINAPI CM_Get_Class_NameA( LPGUID, PCHAR, PULONG, ULONG ); -CONFIGRET WINAPI CM_Get_Class_NameW( LPGUID, PWCHAR, PULONG, ULONG); +CONFIGRET WINAPI CM_Get_Class_NameW( LPGUID, PWCHAR, PULONG, ULONG ); #define CM_Get_Class_Name WINELIB_NAME_AW(CM_Get_Class_Name) CONFIGRET WINAPI CM_Get_Class_Name_ExA( LPGUID, PCHAR, PULONG, ULONG, HMACHINE ); CONFIGRET WINAPI CM_Get_Class_Name_ExW( LPGUID, PWCHAR, PULONG, ULONG, HMACHINE ); _____ Modified: trunk/reactos/lib/setupapi/cfgmgr.c --- trunk/reactos/lib/setupapi/cfgmgr.c 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/lib/setupapi/cfgmgr.c 2005-09-10 13:02:02 UTC (rev 17773) @@ -62,6 +62,25 @@ } MACHINE_INFO, *PMACHINE_INFO; +static BOOL GuidToString(LPGUID Guid, LPWSTR String) +{ + LPWSTR lpString; + + if (UuidToStringW(Guid, &lpString) != RPC_S_OK) + return FALSE; + + lstrcpyW(&String[1], lpString); + + String[0] = L'{'; + String[MAX_GUID_STRING_LEN - 2] = L'}'; + String[MAX_GUID_STRING_LEN - 1] = 0; + + RpcStringFree(&lpString); + + return TRUE; +} + + /*********************************************************************** * CM_Connect_MachineA [SETUPAPI.@] */ @@ -124,6 +143,54 @@ /*********************************************************************** + * CM_Delete_Class_Key [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Delete_Class_Key(LPGUID ClassGuid, ULONG ulFlags) +{ + TRACE("%p %lx\n", ClassGuid, ulFlags); + return CM_Delete_Class_Key_Ex(ClassGuid, ulFlags, NULL); +} + + +/********************************************************************** * + * CM_Delete_Class_Key_Ex [SETUPAPI.@] + */ +CONFIGRET WINAPI CM_Delete_Class_Key_Ex( + LPGUID ClassGuid, ULONG ulFlags, HANDLE hMachine) +{ + WCHAR szGuidString[MAX_GUID_STRING_LEN]; + RPC_BINDING_HANDLE BindingHandle = NULL; + + TRACE("%p %lx %lx\n", ClassGuid, ulFlags, hMachine); + + if (ClassGuid == NULL) + return CR_INVALID_POINTER; + + if (ulFlags & ~CM_DELETE_CLASS_BITS) + return CR_INVALID_FLAG; + + if (!GuidToString(ClassGuid, szGuidString)) + return CR_INVALID_DATA; + + if (hMachine != NULL) + { + BindingHandle = ((PMACHINE_INFO)hMachine)->BindingHandle; + if (BindingHandle == NULL) + return CR_FAILURE; + } + else + { + if (!PnpGetLocalHandles(&BindingHandle, NULL)) + return CR_FAILURE; + } + + return PNP_DeleteClassKey(BindingHandle, + szGuidString, + ulFlags); +} + + +/********************************************************************** * * CM_Disconnect_Machine [SETUPAPI.@] */ CONFIGRET WINAPI CM_Disconnect_Machine(HMACHINE hMachine) @@ -393,25 +460,6 @@ } -static BOOL GuidToString(LPGUID Guid, LPWSTR String) -{ - LPWSTR lpString; - - if (UuidToStringW(Guid, &lpString) != RPC_S_OK) - return FALSE; - - lstrcpyW(&String[1], lpString); - - String[0] = L'{'; - String[MAX_GUID_STRING_LEN - 2] = L'}'; - String[MAX_GUID_STRING_LEN - 1] = 0; - - RpcStringFree(&lpString); - - return TRUE; -} - - /*********************************************************************** * CM_Get_Class_Key_Name_ExW [SETUPAPI.@] */ _____ Modified: trunk/reactos/lib/setupapi/setupapi.spec --- trunk/reactos/lib/setupapi/setupapi.spec 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/lib/setupapi/setupapi.spec 2005-09-10 13:02:02 UTC (rev 17773) @@ -25,8 +25,8 @@ @ stub CM_Create_DevNode_ExA @ stub CM_Create_DevNode_ExW @ stub CM_Create_Range_List -@ stub CM_Delete_Class_Key -@ stub CM_Delete_Class_Key_Ex +@ stdcall CM_Delete_Class_Key(ptr long) +@ stdcall CM_Delete_Class_Key_Ex(ptr long long) @ stub CM_Delete_DevNode_Key @ stub CM_Delete_DevNode_Key_Ex @ stub CM_Delete_Range _____ Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.c --- trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/services/umpnpmgr/umpnpmgr.c 2005-09-10 13:02:02 UTC (rev 17773) @@ -636,9 +636,9 @@ CONFIGRET PNP_GetClassName(handle_t BindingHandle, - wchar_t *ClassGuid, /* in */ - wchar_t *Buffer, /* out */ - unsigned long *Length, /* in out */ + wchar_t *ClassGuid, + wchar_t *Buffer, + unsigned long *Length, unsigned long Flags) { WCHAR szKeyName[MAX_PATH]; @@ -646,7 +646,7 @@ HKEY hKey = NULL; ULONG ulSize; - DPRINT1("PNP_GetClassName() called\n"); + DPRINT("PNP_GetClassName() called\n"); lstrcpyW(szKeyName, L"System\\CurrentControlSet\\Control\\Class"); lstrcatW(szKeyName, L"\\"); @@ -677,13 +677,39 @@ RegCloseKey(hKey); - DPRINT1("PNP_GetClassName() done (returns %lx)\n", ret); + DPRINT("PNP_GetClassName() done (returns %lx)\n", ret); return ret; } CONFIGRET +PNP_DeleteClassKey(handle_t BindingHandle, + wchar_t *ClassGuid, + unsigned long Flags) +{ + CONFIGRET ret = CR_SUCCESS; + + DPRINT("PNP_GetClassName(%S, %lx) called\n", ClassGuid, Flags); + + if (Flags & CM_DELETE_CLASS_SUBKEYS) + { + if (RegDeleteTreeW(hClassKey, ClassGuid) != ERROR_SUCCESS) + ret = CR_REGISTRY_ERROR; + } + else + { + if (RegDeleteKeyW(hClassKey, ClassGuid) != ERROR_SUCCESS) + ret = CR_REGISTRY_ERROR; + } + + DPRINT("PNP_DeleteClassKey() done (returns %lx)\n", ret); + + return ret; +} + + +CONFIGRET PNP_GetDeviceStatus(handle_t BindingHandle, wchar_t *DeviceInstance, unsigned long *pStatus, _____ Modified: trunk/reactos/services/umpnpmgr/umpnpmgr.xml --- trunk/reactos/services/umpnpmgr/umpnpmgr.xml 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/services/umpnpmgr/umpnpmgr.xml 2005-09-10 13:02:02 UTC (rev 17773) @@ -3,6 +3,9 @@ <include base="pnp_server">.</include> <include base="pnp_client">.</include> <define name="__USE_W32API" /> + <define name="WINVER">0x600</define> + <define name="_WIN32_IE">0x0500</define> + <define name="_WIN32_WINNT">0x0600</define> <define name="UNICODE" /> <define name="_UNICODE" /> <library>pnp_server</library> _____ Modified: trunk/reactos/w32api/include/ddk/cfgmgr32.h --- trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-09-10 10:31:22 UTC (rev 17772) +++ trunk/reactos/w32api/include/ddk/cfgmgr32.h 2005-09-10 13:02:02 UTC (rev 17773) @@ -708,8 +708,27 @@ /* FIXME: Obsolete CM_Create_DevNode */ /* FIXME: Obsolete CM_Create_DevNodeEx */ /* FIXME: Obsolete CM_Create_Range_List */ -/* FIXME: Obsolete CM_Delete_Class_Key */ -/* FIXME: Obsolete CM_Delete_Class_Key_Ex */ + +/* Flags for CM_Delete_Class_Key.ulFlags constants */ +#define CM_DELETE_CLASS_ONLY 0x00000000 +#define CM_DELETE_CLASS_SUBKEYS 0x00000001 +#define CM_DELETE_CLASS_BITS 0x00000001 + +CMAPI +CONFIGRET +WINAPI +CM_Delete_Class_Key( + IN LPGUID ClassGuid, + IN ULONG ulFlags); + +CMAPI +CONFIGRET +WINAPI +CM_Delete_Class_Key_Ex( + IN LPGUID ClassGuid, + IN ULONG ulFlags, + IN HANDLE hMachine); + /* FIXME: Obsolete CM_Delete_DevNode_Key */ /* FIXME: Obsolete CM_Delete_DevNode_Key_Ex */ /* FIXME: Obsolete CM_Delete_Range */
19 years
1
0
0
0
[ekohl] 17772: Add RegDeleteTreeA/W prototype.
by ekohl@svn.reactos.com
Add RegDeleteTreeA/W prototype. Modified: trunk/reactos/w32api/include/winreg.h _____ Modified: trunk/reactos/w32api/include/winreg.h --- trunk/reactos/w32api/include/winreg.h 2005-09-10 08:22:03 UTC (rev 17771) +++ trunk/reactos/w32api/include/winreg.h 2005-09-10 10:31:22 UTC (rev 17772) @@ -7,13 +7,13 @@ #ifdef __cplusplus extern "C" { #endif -#define HKEY_CLASSES_ROOT ((HKEY)0x80000000) -#define HKEY_CURRENT_USER ((HKEY)0x80000001) -#define HKEY_LOCAL_MACHINE ((HKEY)0x80000002) -#define HKEY_USERS ((HKEY)0x80000003) -#define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004) -#define HKEY_CURRENT_CONFIG ((HKEY)0x80000005) -#define HKEY_DYN_DATA ((HKEY)0x80000006) +#define HKEY_CLASSES_ROOT ((HKEY)0x80000000) +#define HKEY_CURRENT_USER ((HKEY)0x80000001) +#define HKEY_LOCAL_MACHINE ((HKEY)0x80000002) +#define HKEY_USERS ((HKEY)0x80000003) +#define HKEY_PERFORMANCE_DATA ((HKEY)0x80000004) +#define HKEY_CURRENT_CONFIG ((HKEY)0x80000005) +#define HKEY_DYN_DATA ((HKEY)0x80000006) #define REG_OPTION_VOLATILE 1 #define REG_OPTION_NON_VOLATILE 0 #define REG_CREATED_NEW_KEY 1 @@ -64,6 +64,10 @@ LONG WINAPI RegCreateKeyW(HKEY,LPCWSTR,PHKEY); LONG WINAPI RegDeleteKeyA(HKEY,LPCSTR); LONG WINAPI RegDeleteKeyW(HKEY,LPCWSTR); +#if (_WIN32_WINNT >= 0x0600) +LONG WINAPI RegDeleteTreeA(HKEY,LPCSTR); +LONG WINAPI RegDeleteTreeW(HKEY,LPCWSTR); +#endif LONG WINAPI RegDeleteValueA(HKEY,LPCSTR); LONG WINAPI RegDeleteValueW(HKEY,LPCWSTR); LONG WINAPI RegEnumKeyA(HKEY,DWORD,LPSTR,DWORD); @@ -111,6 +115,9 @@ #define RegCreateKey RegCreateKeyW #define RegCreateKeyEx RegCreateKeyExW #define RegDeleteKey RegDeleteKeyW +#if (_WIN32_WINNT >= 0x0600) +#define RegDeleteTree RegDeleteTreeW +#endif #define RegDeleteValue RegDeleteValueW #define RegEnumKey RegEnumKeyW #define RegEnumKeyEx RegEnumKeyExW @@ -136,6 +143,9 @@ #define RegCreateKey RegCreateKeyA #define RegCreateKeyEx RegCreateKeyExA #define RegDeleteKey RegDeleteKeyA +#if (_WIN32_WINNT >= 0x0600) +#define RegDeleteTree RegDeleteTreeA +#endif #define RegDeleteValue RegDeleteValueA #define RegEnumKey RegEnumKeyA #define RegEnumKeyEx RegEnumKeyExA
19 years
1
0
0
0
← Newer
1
...
38
39
40
41
42
43
44
...
59
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
Results per page:
10
25
50
100
200