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
June 2005
----- 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
22 participants
649 discussions
Start a n
N
ew thread
[navaraf] 15909: A bit of W32API magic.
by navaraf@svn.reactos.com
A bit of W32API magic. Modified: trunk/reactos/ntoskrnl/include/internal/ke.h _____ Modified: trunk/reactos/ntoskrnl/include/internal/ke.h --- trunk/reactos/ntoskrnl/include/internal/ke.h 2005-06-14 13:46:32 UTC (rev 15908) +++ trunk/reactos/ntoskrnl/include/internal/ke.h 2005-06-14 13:50:23 UTC (rev 15909) @@ -35,9 +35,12 @@ #ifndef __USE_W32API -typedef struct _KPROCESS *PKPROCESS; typedef struct _DISPATCHER_HEADER *PDISPATCHER_HEADER; +#else + +typedef struct _KEVENT_PAIR *PKEVENT_PAIR; + #endif /* __USE_W32API */ typedef struct _HARDWARE_PTE_X86 {
19 years, 6 months
1
0
0
0
[navaraf] 15908: Fix compilation error (try 2).
by navaraf@svn.reactos.com
Fix compilation error (try 2). Modified: trunk/reactos/drivers/video/videoprt/dispatch.c _____ Modified: trunk/reactos/drivers/video/videoprt/dispatch.c --- trunk/reactos/drivers/video/videoprt/dispatch.c 2005-06-14 13:45:31 UTC (rev 15907) +++ trunk/reactos/drivers/video/videoprt/dispatch.c 2005-06-14 13:46:32 UTC (rev 15908) @@ -115,7 +115,7 @@ */ DPRINT("Referencing CSRSS\n"); - Csrss = &PsGetCurrentProcess()->Pcb; + Csrss = (PKPROCESS)PsGetCurrentProcess(); DPRINT("Csrss %p\n", Csrss); CsrssInitialized = TRUE;
19 years, 6 months
1
0
0
0
[navaraf] 15907: Fix compilation error.
by navaraf@svn.reactos.com
Fix compilation error. Modified: trunk/reactos/drivers/video/videoprt/dispatch.c _____ Modified: trunk/reactos/drivers/video/videoprt/dispatch.c --- trunk/reactos/drivers/video/videoprt/dispatch.c 2005-06-14 13:10:40 UTC (rev 15906) +++ trunk/reactos/drivers/video/videoprt/dispatch.c 2005-06-14 13:45:31 UTC (rev 15907) @@ -115,7 +115,7 @@ */ DPRINT("Referencing CSRSS\n"); - Csrss = PsGetCurrentProcess(); + Csrss = &PsGetCurrentProcess()->Pcb; DPRINT("Csrss %p\n", Csrss); CsrssInitialized = TRUE;
19 years, 6 months
1
0
0
0
[navaraf] 15906: - Fix the declarations of PDRIVER_CANCEL, KeGetCurrentProcessorNumber and KPCR in ROS headers.
by navaraf@svn.reactos.com
- Fix the declarations of PDRIVER_CANCEL, KeGetCurrentProcessorNumber and KPCR in ROS headers. - Fix the declarations of KeGetCurrentProcessorNumber, PIO_QUERY_DEVICE_ROUTINE, THREAD_STATE, KPCR and KeAttachProcess in W32API headers. - Remove KeInitializeApc, KEVENT_PAIR and TERMINATION_PORT declarations from W32API, they don't belong there. - Correct the STDCALL order in callback declarations in winddk.h. Modified: trunk/reactos/drivers/video/videoprt/int10.c Modified: trunk/reactos/drivers/video/videoprt/videoprt.c Modified: trunk/reactos/drivers/video/videoprt/videoprt.h Modified: trunk/reactos/include/ddk/iotypes.h Modified: trunk/reactos/include/ddk/kefuncs.h Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c Modified: trunk/reactos/ntoskrnl/include/internal/debug.h Modified: trunk/reactos/ntoskrnl/include/internal/i386/ps.h Modified: trunk/reactos/ntoskrnl/include/internal/ke.h Modified: trunk/reactos/ntoskrnl/ke/device.c Modified: trunk/reactos/ntoskrnl/ke/gmutex.c Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c Modified: trunk/reactos/ntoskrnl/ke/i386/kernel.c Modified: trunk/reactos/ntoskrnl/ke/kthread.c Modified: trunk/reactos/w32api/include/ddk/ntapi.h Modified: trunk/reactos/w32api/include/ddk/ntifs.h Modified: trunk/reactos/w32api/include/ddk/winddk.h _____ Modified: trunk/reactos/drivers/video/videoprt/int10.c --- trunk/reactos/drivers/video/videoprt/int10.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/drivers/video/videoprt/int10.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -35,8 +35,8 @@ { PVOID MemoryAddress; NTSTATUS Status; - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("IntInt10AllocateBuffer\n"); @@ -82,8 +82,8 @@ { PVOID MemoryAddress = (PVOID)((Seg << 4) | Off); NTSTATUS Status; - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("IntInt10FreeBuffer\n"); DPRINT("- Segment: %x\n", Seg); @@ -105,8 +105,8 @@ OUT PVOID Buffer, IN ULONG Length) { - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("IntInt10ReadMemory\n"); DPRINT("- Segment: %x\n", Seg); @@ -129,8 +129,8 @@ IN PVOID Buffer, IN ULONG Length) { - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("IntInt10WriteMemory\n"); DPRINT("- Segment: %x\n", Seg); @@ -152,8 +152,8 @@ { KV86M_REGISTERS Regs; NTSTATUS Status; - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("IntInt10CallBios\n"); @@ -207,8 +207,8 @@ { KV86M_REGISTERS Regs; NTSTATUS Status; - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("VideoPortInt10\n"); _____ Modified: trunk/reactos/drivers/video/videoprt/videoprt.c --- trunk/reactos/drivers/video/videoprt/videoprt.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/drivers/video/videoprt/videoprt.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -27,7 +27,7 @@ /* GLOBAL VARIABLES ***********************************************************/ ULONG CsrssInitialized = FALSE; -PEPROCESS Csrss = NULL; +PKPROCESS Csrss = NULL; /* PRIVATE FUNCTIONS **********************************************************/ @@ -495,12 +495,12 @@ } VOID FASTCALL -IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess) +IntAttachToCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess) { - *CallingProcess = PsGetCurrentProcess(); + *CallingProcess = &PsGetCurrentProcess()->Pcb; if (*CallingProcess != Csrss) { - if (PsGetCurrentThread()->ThreadsProcess != *CallingProcess) + if (&PsGetCurrentThread()->ThreadsProcess->Pcb != *CallingProcess) { *PrevAttachedProcess = *CallingProcess; KeDetachProcess(); @@ -514,7 +514,7 @@ } VOID FASTCALL -IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess) +IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess) { if (*CallingProcess != Csrss) { @@ -852,8 +852,8 @@ IN ULONG Length) { static PVOID RomImageBuffer = NULL; - PEPROCESS CallingProcess; - PEPROCESS PrevAttachedProcess; + PKPROCESS CallingProcess; + PKPROCESS PrevAttachedProcess; DPRINT("VideoPortGetRomImage(HwDeviceExtension 0x%X Length 0x%X)\n", HwDeviceExtension, Length); _____ Modified: trunk/reactos/drivers/video/videoprt/videoprt.h --- trunk/reactos/drivers/video/videoprt/videoprt.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/drivers/video/videoprt/videoprt.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -188,7 +188,7 @@ /* videoprt.c */ extern ULONG CsrssInitialized; -extern PEPROCESS Csrss; +extern PKPROCESS Csrss; VP_STATUS STDCALL VideoPortEnumerateChildren( @@ -201,10 +201,10 @@ IN PUCHAR FunctionName); VOID FASTCALL -IntAttachToCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess); +IntAttachToCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess); VOID FASTCALL -IntDetachFromCSRSS(PEPROCESS *CallingProcess, PEPROCESS *PrevAttachedProcess); +IntDetachFromCSRSS(PKPROCESS *CallingProcess, PKPROCESS *PrevAttachedProcess); NTSTATUS STDCALL IntVideoPortCreateAdapterDeviceObject( _____ Modified: trunk/reactos/include/ddk/iotypes.h --- trunk/reactos/include/ddk/iotypes.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/include/ddk/iotypes.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -650,7 +650,7 @@ /* * Driver cancel declaration */ -typedef NTSTATUS STDCALL_FUNC +typedef VOID STDCALL_FUNC (*PDRIVER_CANCEL)(struct _DEVICE_OBJECT* DeviceObject, struct _IRP* RegistryPath); _____ Modified: trunk/reactos/include/ddk/kefuncs.h --- trunk/reactos/include/ddk/kefuncs.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/include/ddk/kefuncs.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -124,7 +124,7 @@ KIRQL STDCALL KeGetCurrentIrql (VOID); #ifndef __USE_W32API -#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber) +#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number) ULONG KeGetDcacheFillSize(VOID); KPROCESSOR_MODE STDCALL KeGetPreviousMode (VOID); #endif _____ Modified: trunk/reactos/ntoskrnl/ex/sysinfo.c --- trunk/reactos/ntoskrnl/ex/sysinfo.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ex/sysinfo.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -78,7 +78,7 @@ *ThreadKernelTime = Prcb->KernelTime + Prcb->UserTime; *TotalCpuTime = Prcb->CurrentThread->KernelTime; - *ProcessorNumber = KeGetCurrentKPCR()->ProcessorNumber; + *ProcessorNumber = KeGetCurrentKPCR()->Number; } /* _____ Modified: trunk/reactos/ntoskrnl/include/internal/debug.h --- trunk/reactos/ntoskrnl/include/internal/debug.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/include/internal/debug.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -31,6 +31,7 @@ #undef assert #endif +#ifndef __USE_W32API #ifdef DBG /* Assert only on "checked" version */ @@ -65,6 +66,7 @@ #define ASSERTMSG(_c_, _m_) #endif +#endif /* Print if using a "checked" version */ #ifdef __GNUC__ /* using GNU C/C99 macro ellipsis */ @@ -83,10 +85,6 @@ #define CPRINT(args...) #define DPRINT1(args...) -#define assert(x) -#define ASSERT(x) -#define assertmsg(_c_, _m_) -#define ASSERTMSG(_c_, _m_) #endif /* DBG */ _____ Modified: trunk/reactos/ntoskrnl/include/internal/i386/ps.h --- trunk/reactos/ntoskrnl/include/internal/i386/ps.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/include/internal/i386/ps.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -238,7 +238,7 @@ KAFFINITY SetMember; /* 48 */ ULONG StallScaleFactor; /* 4C */ UCHAR DebugActive; /* 50 */ - UCHAR ProcessorNumber; /* 51 */ + UCHAR Number; /* 51 */ UCHAR Reserved; /* 52 */ UCHAR L2CacheAssociativity; /* 53 */ ULONG VdmAlert; /* 54 */ _____ Modified: trunk/reactos/ntoskrnl/include/internal/ke.h --- trunk/reactos/ntoskrnl/include/internal/ke.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/include/internal/ke.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -266,7 +266,7 @@ } #ifndef __USE_W32API -#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->ProcessorNumber) +#define KeGetCurrentProcessorNumber() (KeGetCurrentKPCR()->Number) #endif /* threadsch.c ********************************************************************/ _____ Modified: trunk/reactos/ntoskrnl/ke/device.c --- trunk/reactos/ntoskrnl/ke/device.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ke/device.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -13,36 +13,36 @@ #include <internal/debug.h> /* - * @implemented + * @unimplemented */ STDCALL PVOID -KeFindConfigurationEntry( +KeFindConfigurationNextEntry( IN PVOID Unknown, IN ULONG Class, IN CONFIGURATION_TYPE Type, - IN PULONG RegKey + IN PULONG RegKey, + IN PVOID *NextLink ) { - /* Start Search at Root */ - return KeFindConfigurationNextEntry(Unknown, Class, Type, RegKey, NULL); + UNIMPLEMENTED; + return 0; } /* - * @unimplemented + * @implemented */ STDCALL PVOID -KeFindConfigurationNextEntry( +KeFindConfigurationEntry( IN PVOID Unknown, IN ULONG Class, IN CONFIGURATION_TYPE Type, - IN PULONG RegKey, - IN PVOID *NextLink + IN PULONG RegKey ) { - UNIMPLEMENTED; - return 0; + /* Start Search at Root */ + return KeFindConfigurationNextEntry(Unknown, Class, Type, RegKey, NULL); } /* _____ Modified: trunk/reactos/ntoskrnl/ke/gmutex.c --- trunk/reactos/ntoskrnl/ke/gmutex.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ke/gmutex.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -132,17 +132,6 @@ VOID FASTCALL -KeAcquireGuardedMutex(PKGUARDED_MUTEX GuardedMutex) -{ - /* Disable Special APCs */ - KeEnterGuardedRegion(); - - /* Do the Unsafe Acquire */ - KeAcquireGuardedMutexUnsafe(GuardedMutex); -} - -VOID -FASTCALL KeAcquireGuardedMutexUnsafe(PKGUARDED_MUTEX GuardedMutex) { /* Remove the lock */ @@ -187,6 +176,17 @@ VOID FASTCALL +KeAcquireGuardedMutex(PKGUARDED_MUTEX GuardedMutex) +{ + /* Disable Special APCs */ + KeEnterGuardedRegion(); + + /* Do the Unsafe Acquire */ + KeAcquireGuardedMutexUnsafe(GuardedMutex); +} + +VOID +FASTCALL KeReleaseGuardedMutex(PKGUARDED_MUTEX GuardedMutex) { /* Do the actual release */ _____ Modified: trunk/reactos/ntoskrnl/ke/i386/gdt.c --- trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ke/i386/gdt.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -72,10 +72,10 @@ /* * Allocate a GDT */ - Gdt = KiGdtArray[Pcr->ProcessorNumber]; + Gdt = KiGdtArray[Pcr->Number]; if (Gdt == NULL) { - DbgPrint("No GDT (%d)\n", Pcr->ProcessorNumber); + DbgPrint("No GDT (%d)\n", Pcr->Number); KEBUGCHECK(0); } _____ Modified: trunk/reactos/ntoskrnl/ke/i386/kernel.c --- trunk/reactos/ntoskrnl/ke/i386/kernel.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ke/i386/kernel.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -181,7 +181,7 @@ * Create a PCR for this processor */ memset(Pcr, 0, PAGE_SIZE); - Pcr->ProcessorNumber = Id; + Pcr->Number = Id; Pcr->Tib.Self = &Pcr->Tib; Pcr->Self = Pcr; Pcr->Prcb = &Pcr->PrcbData; @@ -283,7 +283,7 @@ KPCR->GDT = KiBootGdt; KPCR->IDT = (PUSHORT)KiIdt; KPCR->TSS = &KiBootTss; - KPCR->ProcessorNumber = 0; + KPCR->Number = 0; KiPcrInitDone = 1; PcrsAllocated++; _____ Modified: trunk/reactos/ntoskrnl/ke/kthread.c --- trunk/reactos/ntoskrnl/ke/kthread.c 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/ntoskrnl/ke/kthread.c 2005-06-14 13:10:40 UTC (rev 15906) @@ -1090,7 +1090,7 @@ if (Thread->State == Running) { - ProcessorMask = 1 << KeGetCurrentKPCR()->ProcessorNumber; + ProcessorMask = 1 << KeGetCurrentKPCR()->Number; if (Thread == KeGetCurrentThread()) { if (!(Affinity & ProcessorMask)) { _____ Modified: trunk/reactos/w32api/include/ddk/ntapi.h --- trunk/reactos/w32api/include/ddk/ntapi.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/w32api/include/ddk/ntapi.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -269,7 +269,7 @@ Running, Standby, Terminated, - Wait, + Waiting, Transition, DeferredReady } THREAD_STATE; _____ Modified: trunk/reactos/w32api/include/ddk/ntifs.h --- trunk/reactos/w32api/include/ddk/ntifs.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/w32api/include/ddk/ntifs.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -469,7 +469,6 @@ typedef struct _EPROCESS_QUOTA_BLOCK *PEPROCESS_QUOTA_BLOCK; typedef struct _FILE_GET_QUOTA_INFORMATION *PFILE_GET_QUOTA_INFORMATION; typedef struct _HANDLE_TABLE *PHANDLE_TABLE; -typedef struct _KEVENT_PAIR *PKEVENT_PAIR; typedef struct _KPROCESS *PKPROCESS; typedef struct _KQUEUE *PKQUEUE; typedef struct _KTRAP_FRAME *PKTRAP_FRAME; @@ -481,7 +480,6 @@ typedef struct _PS_IMPERSONATION_INFORMATION *PPS_IMPERSONATION_INFORMATION; typedef struct _SECTION_OBJECT *PSECTION_OBJECT; typedef struct _SHARED_CACHE_MAP *PSHARED_CACHE_MAP; -typedef struct _TERMINATION_PORT *PTERMINATION_PORT; typedef struct _VACB *PVACB; typedef struct _VAD_HEADER *PVAD_HEADER; @@ -1208,13 +1206,6 @@ LONG Depth; } IO_COMPLETION_BASIC_INFORMATION, *PIO_COMPLETION_BASIC_INFORMATION; -typedef struct _KEVENT_PAIR { - USHORT Type; - USHORT Size; - KEVENT Event1; - KEVENT Event2; -} KEVENT_PAIR, *PKEVENT_PAIR; - typedef struct _KQUEUE { DISPATCHER_HEADER Header; LIST_ENTRY EntryListHead; @@ -1527,11 +1518,6 @@ ULONG Unused[4]; } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION; -typedef struct _TERMINATION_PORT { - struct _TERMINATION_PORT* Next; - PVOID Port; -} TERMINATION_PORT, *PTERMINATION_PORT; - typedef struct _SECURITY_CLIENT_CONTEXT { SECURITY_QUALITY_OF_SERVICE SecurityQos; PACCESS_TOKEN ClientToken; @@ -2977,7 +2963,7 @@ VOID NTAPI KeAttachProcess ( - IN PEPROCESS Process + IN PKPROCESS Process ); NTKERNELAPI _____ Modified: trunk/reactos/w32api/include/ddk/winddk.h --- trunk/reactos/w32api/include/ddk/winddk.h 2005-06-14 12:31:51 UTC (rev 15905) +++ trunk/reactos/w32api/include/ddk/winddk.h 2005-06-14 13:10:40 UTC (rev 15906) @@ -159,6 +159,7 @@ /* Structures not exposed to drivers */ typedef struct _IO_TIMER *PIO_TIMER; +typedef struct _KPROCESS *PKPROCESS; typedef struct _EPROCESS *PEPROCESS; typedef struct _ETHREAD *PETHREAD; typedef struct _KINTERRUPT *PKINTERRUPT; @@ -548,30 +549,30 @@ ** Plug and Play structures */ -typedef VOID DDKAPI -(*PINTERFACE_REFERENCE)( +typedef VOID +(DDKAPI *PINTERFACE_REFERENCE)( PVOID Context); -typedef VOID DDKAPI -(*PINTERFACE_DEREFERENCE)( +typedef VOID +(DDKAPI *PINTERFACE_DEREFERENCE)( PVOID Context); -typedef BOOLEAN DDKAPI -(*PTRANSLATE_BUS_ADDRESS)( +typedef BOOLEAN +(DDKAPI *PTRANSLATE_BUS_ADDRESS)( IN PVOID Context, IN PHYSICAL_ADDRESS BusAddress, IN ULONG Length, IN OUT PULONG AddressSpace, OUT PPHYSICAL_ADDRESS TranslatedAddress); -typedef struct _DMA_ADAPTER* DDKAPI -(*PGET_DMA_ADAPTER)( +typedef struct _DMA_ADAPTER* +(DDKAPI *PGET_DMA_ADAPTER)( IN PVOID Context, IN struct _DEVICE_DESCRIPTION *DeviceDescriptor, OUT PULONG NumberOfMapRegisters); -typedef ULONG DDKAPI -(*PGET_SET_DEVICE_DATA)( +typedef ULONG +(DDKAPI *PGET_SET_DEVICE_DATA)( IN PVOID Context, IN ULONG DataType, IN PVOID Buffer, @@ -747,13 +748,13 @@ #define PNPNOTIFY_DEVICE_INTERFACE_INCLUDE_EXISTING_INTERFACES 0x00000001 -typedef NTSTATUS DDKAPI -(*PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)( +typedef NTSTATUS +(DDKAPI *PDRIVER_NOTIFICATION_CALLBACK_ROUTINE)( IN PVOID NotificationStructure, IN PVOID Context); -typedef VOID DDKAPI -(*PDEVICE_CHANGE_COMPLETE_CALLBACK)( +typedef VOID +(DDKAPI *PDEVICE_CHANGE_COMPLETE_CALLBACK)( IN PVOID Context); @@ -774,8 +775,8 @@ UNICODE_STRING Name; } OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION; -typedef VOID DDKAPI -(*PIO_APC_ROUTINE)( +typedef VOID +(DDKAPI *PIO_APC_ROUTINE)( IN PVOID ApcContext, IN PIO_STATUS_BLOCK IoStatusBlock, IN ULONG Reserved); @@ -788,26 +789,26 @@ ULONG_PTR Information; } IO_STATUS_BLOCK; -typedef VOID DDKAPI -(*PKNORMAL_ROUTINE)( +typedef VOID +(DDKAPI *PKNORMAL_ROUTINE)( IN PVOID NormalContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2); -typedef VOID DDKAPI -(*PKKERNEL_ROUTINE)( +typedef VOID +(DDKAPI *PKKERNEL_ROUTINE)( IN struct _KAPC *Apc, IN OUT PKNORMAL_ROUTINE *NormalRoutine, IN OUT PVOID *NormalContext, IN OUT PVOID *SystemArgument1, IN OUT PVOID *SystemArgument2); -typedef VOID DDKAPI -(*PKRUNDOWN_ROUTINE)( +typedef VOID +(DDKAPI *PKRUNDOWN_ROUTINE)( IN struct _KAPC *Apc); -typedef BOOLEAN DDKAPI -(*PKTRANSFER_ROUTINE)( +typedef BOOLEAN +(DDKAPI *PKTRANSFER_ROUTINE)( VOID); typedef struct _KAPC { @@ -883,7 +884,7 @@ PVOID DeferredContext; PVOID SystemArgument1; PVOID SystemArgument2; - PULONG_PTR Lock; + PVOID DpcData; } KDPC, *PKDPC, *RESTRICTED_POINTER PRKDPC; typedef struct _KDPC_DATA { @@ -1824,35 +1825,35 @@ MDL_SYSTEM_VA | \ MDL_IO_SPACE) -typedef VOID DDKAPI -(*PPUT_DMA_ADAPTER)( +typedef VOID +(DDKAPI *PPUT_DMA_ADAPTER)( IN PDMA_ADAPTER DmaAdapter); -typedef PVOID DDKAPI -(*PALLOCATE_COMMON_BUFFER)( +typedef PVOID +(DDKAPI *PALLOCATE_COMMON_BUFFER)( IN PDMA_ADAPTER DmaAdapter, IN ULONG Length, OUT PPHYSICAL_ADDRESS LogicalAddress, IN BOOLEAN CacheEnabled); -typedef VOID DDKAPI -(*PFREE_COMMON_BUFFER)( +typedef VOID +(DDKAPI *PFREE_COMMON_BUFFER)( IN PDMA_ADAPTER DmaAdapter, IN ULONG Length, IN PHYSICAL_ADDRESS LogicalAddress, IN PVOID VirtualAddress, IN BOOLEAN CacheEnabled); -typedef NTSTATUS DDKAPI -(*PALLOCATE_ADAPTER_CHANNEL)( +typedef NTSTATUS +(DDKAPI *PALLOCATE_ADAPTER_CHANNEL)( IN PDMA_ADAPTER DmaAdapter, IN PDEVICE_OBJECT DeviceObject, IN ULONG NumberOfMapRegisters, IN PDRIVER_CONTROL ExecutionRoutine, IN PVOID Context); -typedef BOOLEAN DDKAPI -(*PFLUSH_ADAPTER_BUFFERS)( +typedef BOOLEAN +(DDKAPI *PFLUSH_ADAPTER_BUFFERS)( IN PDMA_ADAPTER DmaAdapter, IN PMDL Mdl, IN PVOID MapRegisterBase, @@ -1860,18 +1861,18 @@ IN ULONG Length, IN BOOLEAN WriteToDevice); -typedef VOID DDKAPI -(*PFREE_ADAPTER_CHANNEL)( +typedef VOID +(DDKAPI *PFREE_ADAPTER_CHANNEL)( IN PDMA_ADAPTER DmaAdapter); -typedef VOID DDKAPI -(*PFREE_MAP_REGISTERS)( +typedef VOID +(DDKAPI *PFREE_MAP_REGISTERS)( IN PDMA_ADAPTER DmaAdapter, PVOID MapRegisterBase, ULONG NumberOfMapRegisters); -typedef PHYSICAL_ADDRESS DDKAPI -(*PMAP_TRANSFER)( +typedef PHYSICAL_ADDRESS +(DDKAPI *PMAP_TRANSFER)( IN PDMA_ADAPTER DmaAdapter, IN PMDL Mdl, IN PVOID MapRegisterBase, @@ -1879,16 +1880,16 @@ IN OUT PULONG Length, IN BOOLEAN WriteToDevice); -typedef ULONG DDKAPI -(*PGET_DMA_ALIGNMENT)( +typedef ULONG +(DDKAPI *PGET_DMA_ALIGNMENT)( IN PDMA_ADAPTER DmaAdapter); -typedef ULONG DDKAPI -(*PREAD_DMA_COUNTER)( +typedef ULONG +(DDKAPI *PREAD_DMA_COUNTER)( IN PDMA_ADAPTER DmaAdapter); -typedef NTSTATUS DDKAPI -(*PGET_SCATTER_GATHER_LIST)( +typedef NTSTATUS +(DDKAPI *PGET_SCATTER_GATHER_LIST)( IN PDMA_ADAPTER DmaAdapter, IN PDEVICE_OBJECT DeviceObject, IN PMDL Mdl, @@ -1898,14 +1899,14 @@ IN PVOID Context, IN BOOLEAN WriteToDevice); -typedef VOID DDKAPI -(*PPUT_SCATTER_GATHER_LIST)( +typedef VOID +(DDKAPI *PPUT_SCATTER_GATHER_LIST)( IN PDMA_ADAPTER DmaAdapter, IN PSCATTER_GATHER_LIST ScatterGather, IN BOOLEAN WriteToDevice); -typedef NTSTATUS DDKAPI -(*PCALCULATE_SCATTER_GATHER_LIST_SIZE)( +typedef NTSTATUS +(DDKAPI *PCALCULATE_SCATTER_GATHER_LIST_SIZE)( IN PDMA_ADAPTER DmaAdapter, IN PMDL Mdl OPTIONAL, IN PVOID CurrentVa, @@ -1913,8 +1914,8 @@ OUT PULONG ScatterGatherListSize, OUT PULONG pNumberOfMapRegisters OPTIONAL); -typedef NTSTATUS DDKAPI -(*PBUILD_SCATTER_GATHER_LIST)( +typedef NTSTATUS +(DDKAPI *PBUILD_SCATTER_GATHER_LIST)( IN PDMA_ADAPTER DmaAdapter, IN PDEVICE_OBJECT DeviceObject, IN PMDL Mdl, @@ -1926,8 +1927,8 @@ IN PVOID ScatterGatherBuffer, IN ULONG ScatterGatherLength); -typedef NTSTATUS DDKAPI -(*PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( +typedef NTSTATUS +(DDKAPI *PBUILD_MDL_FROM_SCATTER_GATHER_LIST)( IN PDMA_ADAPTER DmaAdapter, IN PSCATTER_GATHER_LIST ScatterGather, IN PMDL OriginalMdl, @@ -2275,8 +2276,8 @@ UNICODE_STRING ServiceKeyName; } DRIVER_EXTENSION, *PDRIVER_EXTENSION; -typedef BOOLEAN DDKAPI -(*PFAST_IO_CHECK_IF_POSSIBLE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_CHECK_IF_POSSIBLE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2286,8 +2287,8 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_READ)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_READ)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2297,8 +2298,8 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_WRITE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_WRITE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2308,24 +2309,24 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_QUERY_BASIC_INFO)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_QUERY_BASIC_INFO)( IN struct _FILE_OBJECT *FileObject, IN BOOLEAN Wait, OUT PFILE_BASIC_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_QUERY_STANDARD_INFO)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_QUERY_STANDARD_INFO)( IN struct _FILE_OBJECT *FileObject, IN BOOLEAN Wait, OUT PFILE_STANDARD_INFORMATION Buffer, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_LOCK)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_LOCK)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, @@ -2336,8 +2337,8 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_UNLOCK_SINGLE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_UNLOCK_SINGLE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN PLARGE_INTEGER Length, @@ -2346,23 +2347,23 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_UNLOCK_ALL)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_UNLOCK_ALL)( IN struct _FILE_OBJECT *FileObject, PEPROCESS ProcessId, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_UNLOCK_ALL_BY_KEY)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_UNLOCK_ALL_BY_KEY)( IN struct _FILE_OBJECT *FileObject, PEPROCESS ProcessId, ULONG Key, OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_DEVICE_CONTROL)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_DEVICE_CONTROL)( IN struct _FILE_OBJECT *FileObject, IN BOOLEAN Wait, IN PVOID InputBuffer OPTIONAL, @@ -2373,36 +2374,36 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef VOID DDKAPI -(*PFAST_IO_ACQUIRE_FILE)( +typedef VOID +(DDKAPI *PFAST_IO_ACQUIRE_FILE)( IN struct _FILE_OBJECT *FileObject); -typedef VOID DDKAPI -(*PFAST_IO_RELEASE_FILE)( +typedef VOID +(DDKAPI *PFAST_IO_RELEASE_FILE)( IN struct _FILE_OBJECT *FileObject); -typedef VOID DDKAPI -(*PFAST_IO_DETACH_DEVICE)( +typedef VOID +(DDKAPI *PFAST_IO_DETACH_DEVICE)( IN struct _DEVICE_OBJECT *SourceDevice, IN struct _DEVICE_OBJECT *TargetDevice); -typedef BOOLEAN DDKAPI -(*PFAST_IO_QUERY_NETWORK_OPEN_INFO)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_QUERY_NETWORK_OPEN_INFO)( IN struct _FILE_OBJECT *FileObject, IN BOOLEAN Wait, OUT struct _FILE_NETWORK_OPEN_INFORMATION *Buffer, OUT struct _IO_STATUS_BLOCK *IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef NTSTATUS DDKAPI -(*PFAST_IO_ACQUIRE_FOR_MOD_WRITE)( +typedef NTSTATUS +(DDKAPI *PFAST_IO_ACQUIRE_FOR_MOD_WRITE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER EndingOffset, OUT struct _ERESOURCE **ResourceToRelease, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_MDL_READ)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_MDL_READ)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2411,14 +2412,14 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_MDL_READ_COMPLETE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_MDL_READ_COMPLETE)( IN struct _FILE_OBJECT *FileObject, IN PMDL MdlChain, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_PREPARE_MDL_WRITE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_PREPARE_MDL_WRITE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2427,15 +2428,15 @@ OUT PIO_STATUS_BLOCK IoStatus, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_MDL_WRITE_COMPLETE)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_READ_COMPRESSED)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_READ_COMPRESSED)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2447,8 +2448,8 @@ IN ULONG CompressedDataInfoLength, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_WRITE_COMPRESSED)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_WRITE_COMPRESSED)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, @@ -2460,38 +2461,38 @@ IN ULONG CompressedDataInfoLength, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_MDL_READ_COMPLETE_COMPRESSED)( IN struct _FILE_OBJECT *FileObject, IN PMDL MdlChain, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_MDL_WRITE_COMPLETE_COMPRESSED)( IN struct _FILE_OBJECT *FileObject, IN PLARGE_INTEGER FileOffset, IN PMDL MdlChain, IN struct _DEVICE_OBJECT *DeviceObject); -typedef BOOLEAN DDKAPI -(*PFAST_IO_QUERY_OPEN)( +typedef BOOLEAN +(DDKAPI *PFAST_IO_QUERY_OPEN)( IN struct _IRP *Irp, OUT PFILE_NETWORK_OPEN_INFORMATION NetworkInformation, IN struct _DEVICE_OBJECT *DeviceObject); -typedef NTSTATUS DDKAPI -(*PFAST_IO_RELEASE_FOR_MOD_WRITE)( +typedef NTSTATUS +(DDKAPI *PFAST_IO_RELEASE_FOR_MOD_WRITE)( IN struct _FILE_OBJECT *FileObject, IN struct _ERESOURCE *ResourceToRelease, IN struct _DEVICE_OBJECT *DeviceObject); -typedef NTSTATUS DDKAPI -(*PFAST_IO_ACQUIRE_FOR_CCFLUSH)( +typedef NTSTATUS +(DDKAPI *PFAST_IO_ACQUIRE_FOR_CCFLUSH)( IN struct _FILE_OBJECT *FileObject, IN struct _DEVICE_OBJECT *DeviceObject); -typedef NTSTATUS DDKAPI -(*PFAST_IO_RELEASE_FOR_CCFLUSH) ( +typedef NTSTATUS +(DDKAPI *PFAST_IO_RELEASE_FOR_CCFLUSH) ( IN struct _FILE_OBJECT *FileObject, IN struct _DEVICE_OBJECT *DeviceObject); @@ -2677,34 +2678,34 @@ struct _IO_CSQ *Csq; } IO_CSQ_IRP_CONTEXT, *PIO_CSQ_IRP_CONTEXT; -typedef VOID DDKAPI -(*PIO_CSQ_INSERT_IRP)( +typedef VOID +(DDKAPI *PIO_CSQ_INSERT_IRP)( IN struct _IO_CSQ *Csq, IN PIRP Irp); -typedef VOID DDKAPI -(*PIO_CSQ_REMOVE_IRP)( +typedef VOID +(DDKAPI *PIO_CSQ_REMOVE_IRP)( IN struct _IO_CSQ *Csq, IN PIRP Irp); -typedef PIRP DDKAPI -(*PIO_CSQ_PEEK_NEXT_IRP)( +typedef PIRP +(DDKAPI *PIO_CSQ_PEEK_NEXT_IRP)( IN struct _IO_CSQ *Csq, IN PIRP Irp, IN PVOID PeekContext); -typedef VOID DDKAPI -(*PIO_CSQ_ACQUIRE_LOCK)( +typedef VOID +(DDKAPI *PIO_CSQ_ACQUIRE_LOCK)( IN struct _IO_CSQ *Csq, [truncated at 1000 lines; 463 more skipped]
19 years, 6 months
1
0
0
0
[hpoussin] 15905: Enumerate root hub connected to UHCI controller
by hpoussin@svn.reactos.com
Enumerate root hub connected to UHCI controller Use Cromwell USB stack to initialize UHCI controller Added: trunk/reactos/drivers/usb/cromwell/uhci/close.c Added: trunk/reactos/drivers/usb/cromwell/uhci/create.c Added: trunk/reactos/drivers/usb/cromwell/uhci/fdo.c Added: trunk/reactos/drivers/usb/cromwell/uhci/misc.c Added: trunk/reactos/drivers/usb/cromwell/uhci/pdo.c Added: trunk/reactos/drivers/usb/cromwell/uhci/uhci.c Deleted: trunk/reactos/drivers/usb/cromwell/uhci/uhci.def Added: trunk/reactos/drivers/usb/cromwell/uhci/uhci.h Modified: trunk/reactos/drivers/usb/cromwell/uhci/uhci.xml Deleted: trunk/reactos/drivers/usb/cromwell/uhci/uhci_main.c _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/close.c --- trunk/reactos/drivers/usb/cromwell/uhci/close.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/close.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,28 @@ +/* + * 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; +} Property changes on: trunk/reactos/drivers/usb/cromwell/uhci/close.c ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/create.c --- trunk/reactos/drivers/usb/cromwell/uhci/create.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/create.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,41 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS UHCI controller driver (Cromwell type) + * FILE: drivers/usb/cromwell/uhci/create.c + * PURPOSE: IRP_MJ_CREATE operations + * + * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com) + */ + +#define NDEBUG +#include "uhci.h" + +NTSTATUS STDCALL +UhciCreate( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION Stack; + POHCI_DEVICE_EXTENSION DeviceExtension; + NTSTATUS Status; + + DPRINT("UHCI: IRP_MJ_CREATE\n"); + Stack = IoGetCurrentIrpStackLocation(Irp); + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + if (Stack->Parameters.Create.Options & FILE_DIRECTORY_FILE) + { + CHECKPOINT; + Status = STATUS_NOT_A_DIRECTORY; + goto ByeBye; + } + + InterlockedIncrement((PLONG)&DeviceExtension->DeviceOpened); + Status = STATUS_SUCCESS; + +ByeBye: + Irp->IoStatus.Status = Status; + Irp->IoStatus.Information = 0; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} Property changes on: trunk/reactos/drivers/usb/cromwell/uhci/create.c ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/fdo.c --- trunk/reactos/drivers/usb/cromwell/uhci/fdo.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/fdo.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,422 @@ +/* + * 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" + +/* declare basic init functions and structures */ +int uhci_hcd_init(void); +int STDCALL usb_init(void); + +extern struct pci_driver uhci_pci_driver; +extern struct pci_device_id uhci_pci_ids[]; + +static NTSTATUS +InitLinuxWrapper(PDEVICE_OBJECT DeviceObject) +{ + NTSTATUS Status = STATUS_SUCCESS; + + POHCI_DEVICE_EXTENSION DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + /* Create generic linux structure */ + struct pci_dev *dev; + dev = ExAllocatePoolWithTag(PagedPool, sizeof(struct pci_dev), USB_UHCI_TAG); + DeviceExtension->pdev = dev; + + /* Initialize generic linux structure */ + init_wrapper(dev); + dev->irq = DeviceExtension->InterruptVector; + dev->dev_ext = (PVOID)DeviceExtension; + dev->slot_name = ExAllocatePoolWithTag(NonPagedPool, 128, USB_UHCI_TAG); // 128 max len for slot name + + strcpy(dev->dev.name, "UnivHCI PCI-USB Controller"); + strcpy(dev->slot_name, "UHCD PCI Slot"); + + /* Init the OHCI HCD. Probe will be called automatically, but will fail because id=NULL */ + Status = uhci_hcd_init(); + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: uhci_hcd_init() failed with status 0x%08lx\n", Status); + /* FIXME: deinitialize linux wrapper */ + ExFreePoolWithTag(dev, USB_UHCI_TAG); + return Status; + } + + /* Init core usb */ + usb_init(); + + /* Probe device with real id now */ + uhci_pci_driver.probe(dev, uhci_pci_ids); + +// DPRINT1("UHCI :SysIoBusNumA %d\n",DeviceExtension->SystemIoBusNumber); +// DeviceExtension->SystemIoBusNumber = dev->bus->number; +// DPRINT1("UHCI: SysIoBusNumB %d\n",DeviceExtension->SystemIoBusNumber); + + return Status; +} + +#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 *)uhci_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 *)uhci_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 *)uhci_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: + { + DPRINT1("UHCI: IOCTL_GET_HCD_DRIVERKEY_NAME does not return correct string\n"); + /* FIXME: should return sth like {36FC9E60-C465-11CF-8056-444553540000}\0000 */ + if (LengthOut < sizeof(USB_HCD_DRIVERKEY_NAME)) + { + Status = STATUS_BUFFER_TOO_SMALL; + } + else + { + PUSB_HCD_DRIVERKEY_NAME StringDescriptor; + ULONG StringSize; + StringDescriptor = (PUSB_HCD_DRIVERKEY_NAME)BufferOut; + Status = IoGetDeviceProperty( + ((POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension)->PhysicalDeviceO bject, + DevicePropertyDeviceDescription, + LengthOut - FIELD_OFFSET(USB_HCD_DRIVERKEY_NAME, DriverKeyName), + StringDescriptor->DriverKeyName, + &StringSize); + if (NT_SUCCESS(Status) || Status == STATUS_BUFFER_TOO_SMALL) + { + DPRINT("UHCI: IOCTL_GET_HCD_DRIVERKEY_NAME returns '%S'\n", StringDescriptor->DriverKeyName); + 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_HCD_DRIVERKEY_NAME)) + { + Status = STATUS_BUFFER_TOO_SMALL; + } + else + { + PUSB_HCD_DRIVERKEY_NAME StringDescriptor; + PUNICODE_STRING RootHubInterfaceName; + StringDescriptor = (PUSB_HCD_DRIVERKEY_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_HCD_DRIVERKEY_NAME, DriverKeyName); + if (StringDescriptor->ActualLength <= LengthOut) + { + /* Copy root hub name */ + RtlCopyMemory( + StringDescriptor->DriverKeyName, + RootHubInterfaceName->Buffer, + RootHubInterfaceName->Length); + StringDescriptor->DriverKeyName[RootHubInterfaceName->Length / sizeof(WCHAR)] = '\0'; + DPRINT("UHCI: IOCTL_USB_GET_ROOT_HUB_NAME returns '%S'\n", StringDescriptor->DriverKeyName); + Information = StringDescriptor->ActualLength; + } + else + Information = sizeof(USB_HCD_DRIVERKEY_NAME); + Status = STATUS_SUCCESS; + } + break; + } + + /*case IOCTL_USB_GET_NODE_INFORMATION: + { + DPRINT1("UHCI: IOCTL_USB_GET_NODE_INFORMATION\n"); + Status = STATUS_NOT_IMPLEMENTED; + break; + }*/ + case IOCTL_USB_GET_NODE_CONNECTION_INFORMATION: + { + DPRINT1("UHCI: IOCTL_USB_GET_NODE_CONNECTION_INFORMATION\n"); + Status = STATUS_NOT_IMPLEMENTED; + break; + } + case IOCTL_USB_GET_NODE_CONNECTION_NAME: + { + DPRINT1("UHCI: IOCTL_USB_GET_NODE_CONNECTION_NAME\n"); + Status = STATUS_NOT_IMPLEMENTED; + 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; +} Property changes on: trunk/reactos/drivers/usb/cromwell/uhci/fdo.c ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/misc.c --- trunk/reactos/drivers/usb/cromwell/uhci/misc.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/misc.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,166 @@ +/* + * 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) + { + RtlInitAnsiString(&AnsiString, Source); + DestinationSize += RtlAnsiStringToUnicodeSize(&AnsiString) + + sizeof(WCHAR) /* final NULL */; + 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; +} Property changes on: trunk/reactos/drivers/usb/cromwell/uhci/misc.c ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/pdo.c --- trunk/reactos/drivers/usb/cromwell/uhci/pdo.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/pdo.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,196 @@ +/* + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS UHCI controller driver (Cromwell type) + * FILE: drivers/usb/cromwell/uhci/pdo.c + * PURPOSE: IRP_MJ_PNP/IRP_MJ_DEVICE_CONTROL operations for PDOs + * + * 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" + +extern struct usb_driver hub_driver; + +#define IO_METHOD_FROM_CTL_CODE(ctlCode) (ctlCode&0x00000003) + +NTSTATUS +UhciDeviceControlPdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PIO_STACK_LOCATION Stack; + ULONG_PTR Information = 0; + NTSTATUS Status; + + DPRINT("UHCI: UhciDeviceControlPdo() called\n"); + + Stack = IoGetCurrentIrpStackLocation(Irp); + Status = Irp->IoStatus.Status; + + switch (Stack->Parameters.DeviceIoControl.IoControlCode) + { + case IOCTL_INTERNAL_USB_GET_ROOT_USB_DEVICE: + { + POHCI_DEVICE_EXTENSION DeviceExtension; + + DPRINT("UHCI: IOCTL_INTERNAL_USB_GET_ROOT_USB_DEVICE\n"); + if (Irp->AssociatedIrp.SystemBuffer == NULL + || Stack->Parameters.DeviceIoControl.OutputBufferLength != sizeof(PVOID)) + { + Status = STATUS_INVALID_PARAMETER; + } + else + { + PVOID* pRootHubPointer; + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceExtension->FunctionalDeviceObject->DeviceE xtension; + + pRootHubPointer = (PVOID*)Irp->AssociatedIrp.SystemBuffer; + *pRootHubPointer = (PVOID)DeviceExtension->pdev->bus; /* struct usb_device* */ + Information = sizeof(PVOID); + Status = STATUS_SUCCESS; + } + break; + } + default: + { + DPRINT1("UHCI: Unknown IOCTL code 0x%lx\n", Stack->Parameters.DeviceIoControl.IoControlCode); + Information = Irp->IoStatus.Information; + Status = Irp->IoStatus.Status; + } + } + + Irp->IoStatus.Information = Information; + Irp->IoStatus.Status = Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} + +static NTSTATUS +UhciPdoQueryId( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + OUT ULONG_PTR* Information) +{ + POHCI_DEVICE_EXTENSION DeviceExtension; + ULONG IdType; + UNICODE_STRING SourceString; + UNICODE_STRING String; + NTSTATUS Status; + + IdType = IoGetCurrentIrpStackLocation(Irp)->Parameters.QueryId.IdType; + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + RtlInitUnicodeString(&String, NULL); + + switch (IdType) + { + case BusQueryDeviceID: + { + DPRINT("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_ID / BusQueryDeviceID\n"); + RtlInitUnicodeString(&SourceString, L"USB\\ROOT_HUB"); + break; + } + case BusQueryHardwareIDs: + { + DPRINT("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_ID / BusQueryHardwareIDs\n"); + /* FIXME: Should return + USB\ROOT_HUB&VID????&PID????&REV???? + USB\ROOT_HUB&VID????&PID???? + USB\ROOT_HUB + */ + UhciInitMultiSzString(&SourceString, "USB\\ROOT_HUB", NULL); + break; + } + case BusQueryCompatibleIDs: + DPRINT("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_ID / BusQueryCompatibleIDs\n"); + /* No compatible ID */ + *Information = 0; + return STATUS_NOT_SUPPORTED; + case BusQueryInstanceID: + { + DPRINT("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_ID / BusQueryInstanceID\n"); + RtlInitUnicodeString(&SourceString, L"0000"); /* FIXME */ + break; + } + default: + DPRINT1("UHCI: IRP_MJ_PNP / IRP_MN_QUERY_ID / unknown query id type 0x%lx\n", IdType); + return STATUS_NOT_SUPPORTED; + } + + Status = UhciDuplicateUnicodeString( + &String, + &SourceString, + PagedPool); + *Information = (ULONG_PTR)String.Buffer; + return Status; +} + +static NTSTATUS +UhciPnpStartDevice( + IN PDEVICE_OBJECT DeviceObject) +{ + POHCI_DEVICE_EXTENSION DeviceExtension; + NTSTATUS Status; + + DeviceExtension = (POHCI_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + + /* Register device interface for root hub */ + Status = IoRegisterDeviceInterface( + DeviceObject, + &GUID_DEVINTERFACE_USB_HUB, + NULL, + &DeviceExtension->HcdInterfaceName); + if (!NT_SUCCESS(Status)) + { + DPRINT("UHCI: IoRegisterDeviceInterface() failed with status 0x%08lx\n", Status); + return Status; + } + + return Status; +} + +NTSTATUS STDCALL +UhciPnpPdo( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + ULONG MinorFunction; + PIO_STACK_LOCATION Stack; + ULONG_PTR Information = 0; + NTSTATUS Status; + + Stack = IoGetCurrentIrpStackLocation(Irp); + MinorFunction = Stack->MinorFunction; + + switch (MinorFunction) + { + case IRP_MN_START_DEVICE: /* 0x00 */ + { + DPRINT("UHCI: IRP_MJ_PNP/IRP_MN_START_DEVICE\n"); + Status = UhciPnpStartDevice(DeviceObject); + break; + } + case IRP_MN_QUERY_ID: /* 0x13 */ + { + Status = UhciPdoQueryId(DeviceObject, Irp, &Information); + break; + } + default: + { + /* We can't forward request to the lower driver, because + * we are a Pdo, so we don't have lower driver... + */ + DPRINT1("UHCI: IRP_MJ_PNP / unknown minor function 0x%lx\n", MinorFunction); + Information = Irp->IoStatus.Information; + Status = Irp->IoStatus.Status; + } + } + + Irp->IoStatus.Information = Information; + Irp->IoStatus.Status = Status; + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Status; +} + Property changes on: trunk/reactos/drivers/usb/cromwell/uhci/pdo.c ___________________________________________________________________ Name: svn:eol-style + native _____ Added: trunk/reactos/drivers/usb/cromwell/uhci/uhci.c --- trunk/reactos/drivers/usb/cromwell/uhci/uhci.c 2005-06-14 03:35:23 UTC (rev 15904) +++ trunk/reactos/drivers/usb/cromwell/uhci/uhci.c 2005-06-14 12:31:51 UTC (rev 15905) @@ -0,0 +1,297 @@ +/* + 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" + +/* declare basic init functions and structures */ +void uhci_hcd_cleanup(void); +void STDCALL usb_exit(void); + +extern struct pci_driver uhci_pci_driver; + +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); [truncated at 1000 lines; 696 more skipped]
19 years, 6 months
1
0
0
0
[ion] 15904: Remove excessive debugging messages used during testing
by ion@svn.reactos.com
Remove excessive debugging messages used during testing Modified: trunk/reactos/ntoskrnl/ob/object.c _____ Modified: trunk/reactos/ntoskrnl/ob/object.c --- trunk/reactos/ntoskrnl/ob/object.c 2005-06-14 03:33:21 UTC (rev 15903) +++ trunk/reactos/ntoskrnl/ob/object.c 2005-06-14 03:35:23 UTC (rev 15904) @@ -451,19 +451,17 @@ PWCH ObjectName; NTSTATUS Status; - DPRINT1("ObQueryNameString: %x, %x\n", Object, ObjectNameInfo); + DPRINT("ObQueryNameString: %x, %x\n", Object, ObjectNameInfo); /* Get the Kernel Meta-Structures */ ObjectHeader = BODY_TO_HEADER(Object); LocalInfo = HEADER_TO_OBJECT_NAME(ObjectHeader); - DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %x\n", - LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); /* Check if a Query Name Procedure is available */ if (ObjectHeader->Type->TypeInfo.QueryNameProcedure) { /* Call the procedure */ - DPRINT1("Calling Object's Procedure\n"); + DPRINT("Calling Object's Procedure\n"); Status = ObjectHeader->Type->TypeInfo.QueryNameProcedure(Object, ObjectNameInfo, Length, @@ -477,7 +475,7 @@ if (!LocalInfo || !LocalInfo->Name.Buffer) { /* We're returning the name structure */ - DPRINT1("Nameless Object\n"); + DPRINT("Nameless Object\n"); *ReturnLength = sizeof(OBJECT_NAME_INFORMATION); /* Check if we were given enough space */ @@ -505,32 +503,26 @@ if (Object == NameSpaceRoot) { /* Size of the '\' string */ - DPRINT1("Object is Root\n"); + DPRINT("Object is Root\n"); NameSize = sizeof(UNICODE_PATH_SEP); } else { /* Get the Object Directory and add name of Object */ ParentDirectory = LocalInfo->Directory; - DPRINT1("LocalInfo->Name.Length %d\n", LocalInfo->Name.Length); - DPRINT1("LocalInfo->Name %S\n", LocalInfo->Name.Buffer); NameSize = sizeof(UNICODE_PATH_SEP) + LocalInfo->Name.Length; - DPRINT1("Parent: %x, Size: %d\n", ParentDirectory, NameSize); /* Loop inside the directory to get the top-most one (meaning root) */ while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) { /* Get the Name Information */ LocalInfo = HEADER_TO_OBJECT_NAME(BODY_TO_HEADER(ParentDirectory)); - DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %x\n", - LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); /* Add the size of the Directory Name */ if (LocalInfo && LocalInfo->Directory) { /* Size of the '\' string + Directory Name */ NameSize += sizeof(UNICODE_PATH_SEP) + LocalInfo->Name.Length; - DPRINT1("Directory: %x. NameSize: %d\n", ParentDirectory, NameSize); /* Move to next parent Directory */ ParentDirectory = LocalInfo->Directory; @@ -538,7 +530,7 @@ else { /* Directory with no name. We append "...\" */ - DPRINT1("Nameless Directory\n"); + DPRINT("Nameless Directory\n"); NameSize += sizeof(UNICODE_NO_PATH) + sizeof(UNICODE_PATH_SEP); break; } @@ -547,7 +539,7 @@ /* Finally, add the name of the structure and the null char */ *ReturnLength = NameSize + sizeof(OBJECT_NAME_INFORMATION) + sizeof(UNICODE_NULL); - DPRINT1("Final Length: %x\n", *ReturnLength); + DPRINT("Final Length: %x\n", *ReturnLength); /* Check if we were given enough space */ if (*ReturnLength > Length) @@ -563,13 +555,12 @@ */ LocalInfo = HEADER_TO_OBJECT_NAME(ObjectHeader); ObjectName = (PWCH)((ULONG_PTR)ObjectNameInfo + *ReturnLength); - DPRINT1("ObjectName : %x, NameInfo: %x LocalInfo %x\n", ObjectName, ObjectNameInfo, LocalInfo); *--ObjectName = UNICODE_NULL; if (Object == NameSpaceRoot) { /* This is already the Root Directory, return "\\" */ - DPRINT1("Returning Root Dir\n"); + DPRINT("Returning Root Dir\n"); *--ObjectName = UNICODE_PATH_SEP; ObjectNameInfo->Name.Length = (USHORT)NameSize; ObjectNameInfo->Name.MaximumLength = (USHORT)(NameSize + sizeof(UNICODE_NULL)); @@ -580,37 +571,25 @@ else { /* Start by adding the Object's Name */ - DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %d\n", - LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); - DPRINT1("ObjectName: %x, Length %d\n", ObjectName, LocalInfo->Name.Length); ObjectName = (PWCH)((ULONG_PTR)ObjectName - LocalInfo->Name.Length); - DPRINT1("ObjectName: %x\n", ObjectName); RtlMoveMemory(ObjectName, LocalInfo->Name.Buffer, LocalInfo->Name.Length); - DPRINT1("Current Buffer: %S\n", ObjectName); - DPRINT1("Object Name: %S\n", LocalInfo->Name.Buffer); /* Now parse the Parent directories until we reach the top */ ParentDirectory = LocalInfo->Directory; - DPRINT1("Parent: %x\n", ParentDirectory); while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) { /* Get the name information */ LocalInfo = HEADER_TO_OBJECT_NAME(BODY_TO_HEADER(ParentDirectory)); - DPRINT1("Scanning: %x\n", ParentDirectory); /* Add the "\" */ - DPRINT1("ObjectName: %x\n", ObjectName); *(--ObjectName) = UNICODE_PATH_SEP; - DPRINT1("Current Buffer: %S\n", ObjectName); /* Add the Parent Directory's Name */ if (LocalInfo && LocalInfo->Name.Buffer) { /* Add the name */ ObjectName = (PWCH)((ULONG_PTR)ObjectName - LocalInfo->Name.Length); - DPRINT1("ObjectName: %x, Length %d\n", ObjectName, LocalInfo->Name.Length); RtlMoveMemory(ObjectName, LocalInfo->Name.Buffer, LocalInfo->Name.Length); - DPRINT1("Current Buffer: %S\n", ObjectName); /* Move to next parent */ ParentDirectory = LocalInfo->Directory; @@ -618,7 +597,7 @@ else { /* Directory without a name, we add "..." */ - DPRINT1("Nameless Directory\n"); + DPRINT("Nameless Directory\n"); ObjectName -= sizeof(UNICODE_NO_PATH); ObjectName = UNICODE_NO_PATH; break; @@ -627,11 +606,11 @@ /* Add Root Directory Name */ *(--ObjectName) = UNICODE_PATH_SEP; - DPRINT1("Current Buffer: %S\n", ObjectName); + DPRINT("Current Buffer: %S\n", ObjectName); ObjectNameInfo->Name.Length = (USHORT)NameSize; ObjectNameInfo->Name.MaximumLength = (USHORT)(NameSize + sizeof(UNICODE_NULL)); ObjectNameInfo->Name.Buffer = ObjectName; - DPRINT1("Complete: %wZ\n", ObjectNameInfo); + DPRINT("Complete: %wZ\n", ObjectNameInfo); } return STATUS_SUCCESS;
19 years, 6 months
1
0
0
0
[ion] 15903: Fix OB Bug and port ObQueryNameString from my branch so Herve can get back to working on USB. Sorry for taking so long, hpoussin\!
by ion@svn.reactos.com
Fix OB Bug and port ObQueryNameString from my branch so Herve can get back to working on USB. Sorry for taking so long, hpoussin\! Modified: trunk/reactos/ntoskrnl/ob/handle.c Modified: trunk/reactos/ntoskrnl/ob/object.c _____ Modified: trunk/reactos/ntoskrnl/ob/handle.c --- trunk/reactos/ntoskrnl/ob/handle.c 2005-06-13 22:27:09 UTC (rev 15902) +++ trunk/reactos/ntoskrnl/ob/handle.c 2005-06-14 03:33:21 UTC (rev 15903) @@ -1022,6 +1022,8 @@ if (BufferPos[0] == L'\\') { BufferPos++; + RemainingPath.Length -= 2; + RemainingPath.MaximumLength -= 2; } RtlMoveMemory(NewName, BufferPos, RemainingPath.MaximumLength); _____ Modified: trunk/reactos/ntoskrnl/ob/object.c --- trunk/reactos/ntoskrnl/ob/object.c 2005-06-13 22:27:09 UTC (rev 15902) +++ trunk/reactos/ntoskrnl/ob/object.c 2005-06-14 03:33:21 UTC (rev 15903) @@ -15,6 +15,8 @@ #define NDEBUG #include <internal/debug.h> +#define UNICODE_PATH_SEP L'\\' +#define UNICODE_NO_PATH L"..." typedef struct _RETENTION_CHECK_PARAMS { @@ -435,109 +437,204 @@ * * @implemented */ -NTSTATUS STDCALL -ObQueryNameString (IN PVOID Object, - OUT POBJECT_NAME_INFORMATION ObjectNameInfo, - IN ULONG Length, - OUT PULONG ReturnLength) +NTSTATUS +STDCALL +ObQueryNameString(IN PVOID Object, + OUT POBJECT_NAME_INFORMATION ObjectNameInfo, + IN ULONG Length, + OUT PULONG ReturnLength) { - POBJECT_NAME_INFORMATION LocalInfo; - POBJECT_HEADER ObjectHeader; - ULONG LocalReturnLength; - NTSTATUS Status; + POBJECT_HEADER_NAME_INFO LocalInfo; + POBJECT_HEADER ObjectHeader; + PDIRECTORY_OBJECT ParentDirectory; + ULONG NameSize; + PWCH ObjectName; + NTSTATUS Status; - PAGED_CODE(); + DPRINT1("ObQueryNameString: %x, %x\n", Object, ObjectNameInfo); - *ReturnLength = 0; + /* Get the Kernel Meta-Structures */ + ObjectHeader = BODY_TO_HEADER(Object); + LocalInfo = HEADER_TO_OBJECT_NAME(ObjectHeader); + DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %x\n", + LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); - if (Length < sizeof(OBJECT_NAME_INFORMATION) + sizeof(WCHAR)) - return STATUS_INVALID_BUFFER_SIZE; + /* Check if a Query Name Procedure is available */ + if (ObjectHeader->Type->TypeInfo.QueryNameProcedure) + { + /* Call the procedure */ + DPRINT1("Calling Object's Procedure\n"); + Status = ObjectHeader->Type->TypeInfo.QueryNameProcedure(Object, + ObjectNameInfo, + Length, + ReturnLength); - ObjectNameInfo->Name.MaximumLength = (USHORT)(Length - sizeof(OBJECT_NAME_INFORMATION)); - ObjectNameInfo->Name.Length = 0; - ObjectNameInfo->Name.Buffer = - (PWCHAR)((ULONG_PTR)ObjectNameInfo + sizeof(OBJECT_NAME_INFORMATION)); - ObjectNameInfo->Name.Buffer[0] = 0; + /* Return the status */ + return Status; + } - ObjectHeader = BODY_TO_HEADER(Object); + /* Check if the object doesn't even have a name */ + if (!LocalInfo || !LocalInfo->Name.Buffer) + { + /* We're returning the name structure */ + DPRINT1("Nameless Object\n"); + *ReturnLength = sizeof(OBJECT_NAME_INFORMATION); - if (ObjectHeader->Type != NULL && - ObjectHeader->Type->TypeInfo.QueryNameProcedure != NULL) - { - DPRINT ("Calling %x\n", ObjectHeader->Type->TypeInfo.QueryNameProcedure); - Status = ObjectHeader->Type->TypeInfo.QueryNameProcedure (Object, - ObjectNameInfo, - Length, - ReturnLength); + /* Check if we were given enough space */ + if (*ReturnLength > Length) + { + DPRINT1("Not enough buffer space\n"); + return STATUS_INFO_LENGTH_MISMATCH; + } + + /* Return an empty buffer */ + ObjectNameInfo->Name.Length = 0; + ObjectNameInfo->Name.MaximumLength = 0; + ObjectNameInfo->Name.Buffer = NULL; + + return STATUS_SUCCESS; } - else if (HEADER_TO_OBJECT_NAME(ObjectHeader)->Name.Length > 0 && HEADER_TO_OBJECT_NAME(ObjectHeader)->Name.Buffer != NULL) + + /* + * Find the size needed for the name. We won't do + * this during the Name Creation loop because we want + * to let the caller know that the buffer isn't big + * enough right at the beginning, not work our way through + * and find out at the end + */ + if (Object == NameSpaceRoot) { - DPRINT ("Object does not have a 'QueryName' function\n"); + /* Size of the '\' string */ + DPRINT1("Object is Root\n"); + NameSize = sizeof(UNICODE_PATH_SEP); + } + else + { + /* Get the Object Directory and add name of Object */ + ParentDirectory = LocalInfo->Directory; + DPRINT1("LocalInfo->Name.Length %d\n", LocalInfo->Name.Length); + DPRINT1("LocalInfo->Name %S\n", LocalInfo->Name.Buffer); + NameSize = sizeof(UNICODE_PATH_SEP) + LocalInfo->Name.Length; + DPRINT1("Parent: %x, Size: %d\n", ParentDirectory, NameSize); - if (HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory == NameSpaceRoot) - { - DPRINT ("Reached the root directory\n"); - ObjectNameInfo->Name.Length = 0; - ObjectNameInfo->Name.Buffer[0] = 0; - Status = STATUS_SUCCESS; - } - else if (HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory != NULL) - { - LocalInfo = ExAllocatePool (NonPagedPool, - sizeof(OBJECT_NAME_INFORMATION) + - MAX_PATH * sizeof(WCHAR)); - if (LocalInfo == NULL) - return STATUS_INSUFFICIENT_RESOURCES; + /* Loop inside the directory to get the top-most one (meaning root) */ + while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) + { + /* Get the Name Information */ + LocalInfo = HEADER_TO_OBJECT_NAME(BODY_TO_HEADER(ParentDirectory)); + DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %x\n", + LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); - Status = ObQueryNameString (HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory, - LocalInfo, - MAX_PATH * sizeof(WCHAR), - &LocalReturnLength); - if (!NT_SUCCESS (Status)) - { - ExFreePool (LocalInfo); - return Status; - } + /* Add the size of the Directory Name */ + if (LocalInfo && LocalInfo->Directory) + { + /* Size of the '\' string + Directory Name */ + NameSize += sizeof(UNICODE_PATH_SEP) + LocalInfo->Name.Length; + DPRINT1("Directory: %x. NameSize: %d\n", ParentDirectory, NameSize); - Status = RtlAppendUnicodeStringToString (&ObjectNameInfo->Name, - &LocalInfo->Name); + /* Move to next parent Directory */ + ParentDirectory = LocalInfo->Directory; + } + else + { + /* Directory with no name. We append "...\" */ + DPRINT1("Nameless Directory\n"); + NameSize += sizeof(UNICODE_NO_PATH) + sizeof(UNICODE_PATH_SEP); + break; + } + } + } - ExFreePool (LocalInfo); + /* Finally, add the name of the structure and the null char */ + *ReturnLength = NameSize + sizeof(OBJECT_NAME_INFORMATION) + sizeof(UNICODE_NULL); + DPRINT1("Final Length: %x\n", *ReturnLength); - if (!NT_SUCCESS (Status)) - return Status; - } + /* Check if we were given enough space */ + if (*ReturnLength > Length) + { + DPRINT1("Not enough buffer space\n"); + return STATUS_INFO_LENGTH_MISMATCH; + } - DPRINT ("Object path %wZ\n", &HEADER_TO_OBJECT_NAME(ObjectHeader)->Name); - Status = RtlAppendUnicodeToString (&ObjectNameInfo->Name, - L"\\"); - if (!NT_SUCCESS (Status)) - return Status; + /* + * Now we will actually create the name. We work backwards because + * it's easier to start off from the Name we have and walk up the + * parent directories. We use the same logic as Name Length calculation. + */ + LocalInfo = HEADER_TO_OBJECT_NAME(ObjectHeader); + ObjectName = (PWCH)((ULONG_PTR)ObjectNameInfo + *ReturnLength); + DPRINT1("ObjectName : %x, NameInfo: %x LocalInfo %x\n", ObjectName, ObjectNameInfo, LocalInfo); + *--ObjectName = UNICODE_NULL; - Status = RtlAppendUnicodeStringToString (&ObjectNameInfo->Name, - &HEADER_TO_OBJECT_NAME(ObjectHeader)->Name); - } - else + if (Object == NameSpaceRoot) { - DPRINT ("Object is unnamed\n"); + /* This is already the Root Directory, return "\\" */ + DPRINT1("Returning Root Dir\n"); + *--ObjectName = UNICODE_PATH_SEP; + ObjectNameInfo->Name.Length = (USHORT)NameSize; + ObjectNameInfo->Name.MaximumLength = (USHORT)(NameSize + sizeof(UNICODE_NULL)); + ObjectNameInfo->Name.Buffer = ObjectName; - ObjectNameInfo->Name.MaximumLength = 0; - ObjectNameInfo->Name.Length = 0; - ObjectNameInfo->Name.Buffer = NULL; + return STATUS_SUCCESS; + } + else + { + /* Start by adding the Object's Name */ + DPRINT1("LocalInfo %x, Name Buffer %x, Name Size %d\n", + LocalInfo, LocalInfo->Name.Buffer, LocalInfo->Name.Length); + DPRINT1("ObjectName: %x, Length %d\n", ObjectName, LocalInfo->Name.Length); + ObjectName = (PWCH)((ULONG_PTR)ObjectName - LocalInfo->Name.Length); + DPRINT1("ObjectName: %x\n", ObjectName); + RtlMoveMemory(ObjectName, LocalInfo->Name.Buffer, LocalInfo->Name.Length); + DPRINT1("Current Buffer: %S\n", ObjectName); + DPRINT1("Object Name: %S\n", LocalInfo->Name.Buffer); - Status = STATUS_SUCCESS; - } + /* Now parse the Parent directories until we reach the top */ + ParentDirectory = LocalInfo->Directory; + DPRINT1("Parent: %x\n", ParentDirectory); + while ((ParentDirectory != NameSpaceRoot) && (ParentDirectory)) + { + /* Get the name information */ + LocalInfo = HEADER_TO_OBJECT_NAME(BODY_TO_HEADER(ParentDirectory)); + DPRINT1("Scanning: %x\n", ParentDirectory); - if (NT_SUCCESS (Status)) - { - ObjectNameInfo->Name.MaximumLength = - (ObjectNameInfo->Name.Length) ? ObjectNameInfo->Name.Length + sizeof(WCHAR) : 0; - *ReturnLength = - sizeof(OBJECT_NAME_INFORMATION) + ObjectNameInfo->Name.MaximumLength; - DPRINT ("Returned object path: %wZ\n", &ObjectNameInfo->Name); + /* Add the "\" */ + DPRINT1("ObjectName: %x\n", ObjectName); + *(--ObjectName) = UNICODE_PATH_SEP; + DPRINT1("Current Buffer: %S\n", ObjectName); + + /* Add the Parent Directory's Name */ + if (LocalInfo && LocalInfo->Name.Buffer) + { + /* Add the name */ + ObjectName = (PWCH)((ULONG_PTR)ObjectName - LocalInfo->Name.Length); + DPRINT1("ObjectName: %x, Length %d\n", ObjectName, LocalInfo->Name.Length); + RtlMoveMemory(ObjectName, LocalInfo->Name.Buffer, LocalInfo->Name.Length); + DPRINT1("Current Buffer: %S\n", ObjectName); + + /* Move to next parent */ + ParentDirectory = LocalInfo->Directory; + } + else + { + /* Directory without a name, we add "..." */ + DPRINT1("Nameless Directory\n"); + ObjectName -= sizeof(UNICODE_NO_PATH); + ObjectName = UNICODE_NO_PATH; + break; + } + } + + /* Add Root Directory Name */ + *(--ObjectName) = UNICODE_PATH_SEP; + DPRINT1("Current Buffer: %S\n", ObjectName); + ObjectNameInfo->Name.Length = (USHORT)NameSize; + ObjectNameInfo->Name.MaximumLength = (USHORT)(NameSize + sizeof(UNICODE_NULL)); + ObjectNameInfo->Name.Buffer = ObjectName; + DPRINT1("Complete: %wZ\n", ObjectNameInfo); } - return Status; + return STATUS_SUCCESS; } NTSTATUS
19 years, 6 months
1
0
0
0
[gvg] 15902: Re-apply r15878 as it wasn't the cause of the problems
by gvg@svn.reactos.com
Re-apply r15878 as it wasn't the cause of the problems Modified: trunk/reactos/subsys/win32k/eng/lineto.c _____ Modified: trunk/reactos/subsys/win32k/eng/lineto.c --- trunk/reactos/subsys/win32k/eng/lineto.c 2005-06-13 22:24:28 UTC (rev 15901) +++ trunk/reactos/subsys/win32k/eng/lineto.c 2005-06-13 22:27:09 UTC (rev 15902) @@ -486,7 +486,7 @@ BOOL STDCALL IntEngLineTo(BITMAPOBJ *DestObj, - CLIPOBJ *Clip, + CLIPOBJ *ClipObj, BRUSHOBJ *Brush, LONG x1, LONG y1, @@ -517,6 +517,26 @@ /* No success yet */ ret = FALSE; + /* Clip lines totally outside the clip region. This is not done as an + * optimization (there are very few lines drawn outside the region) but + * as a workaround for what seems to be a problem in the CL54XX driver */ + if (NULL == ClipObj || DC_TRIVIAL == ClipObj->iDComplexity) + { + b.left = 0; + b.right = DestSurf->sizlBitmap.cx; + b.top = 0; + b.bottom = DestSurf->sizlBitmap.cy; + } + else + { + b = ClipObj->rclBounds; + } + if ((x1 < b.left && x2 < b.left) || (b.right <= x1 && b.right <= x2) || + (y1 < b.top && y2 < b.top) || (b.bottom <= y1 && b.bottom <= y2)) + { + return TRUE; + } + b.left = min(x1, x2); b.right = max(x1, x2); b.top = min(y1, y2); @@ -529,7 +549,7 @@ { /* Call the driver's DrvLineTo */ ret = GDIDEVFUNCS(DestSurf).LineTo( - DestSurf, Clip, Brush, x1, y1, x2, y2, /*RectBounds*/&b, Mix); + DestSurf, ClipObj, Brush, x1, y1, x2, y2, &b, Mix); } #if 0 @@ -541,7 +561,7 @@ if (! ret) { - ret = EngLineTo(DestSurf, Clip, Brush, x1, y1, x2, y2, RectBounds, Mix); + ret = EngLineTo(DestSurf, ClipObj, Brush, x1, y1, x2, y2, RectBounds, Mix); } MouseSafetyOnDrawEnd(DestSurf);
19 years, 6 months
1
0
0
0
[gvg] 15901: We were changing the edi register, but not informing the compiler about this.
by gvg@svn.reactos.com
We were changing the edi register, but not informing the compiler about this. For certain optimization combinations, the compiler would assume edi was unchanged. Fixed by adding %edi to the clobber list. Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c _____ Modified: trunk/reactos/subsys/win32k/dib/dib16bpp.c --- trunk/reactos/subsys/win32k/dib/dib16bpp.c 2005-06-13 21:51:42 UTC (rev 15900) +++ trunk/reactos/subsys/win32k/dib/dib16bpp.c 2005-06-13 22:24:28 UTC (rev 15901) @@ -17,6 +17,7 @@ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* $Id$ */ + #include <w32k.h> VOID @@ -53,6 +54,7 @@ " shl $16, %%eax\n" " andl $0xffff, %0\n" /* If the pixel value is "abcd", put "abcdabcd" in %eax */ " or %0, %%eax\n" +" mov %2, %%edi\n" " test $0x03, %%edi\n" /* Align to fullword boundary */ " jz .L1\n" " stosw\n" @@ -67,8 +69,8 @@ " stosw\n" ".L2:\n" : /* no output */ - : "r"(c), "r"(Count), "D"(addr) - : "%eax", "%ecx"); + : "r"(c), "r"(Count), "m"(addr) + : "%eax", "%ecx", "%edi"); #else /* _M_IX86 */ LONG cx = x1; DWORD cc; @@ -443,8 +445,8 @@ { __asm__ __volatile__ ( " cld\n" - " mov %0,%%eax\n" " mov %1,%%ebx\n" + " mov %2,%%edi\n" " test $0x03, %%edi\n" /* Align to fullword boundary */ " jz .FL1\n" " stosw\n" @@ -458,9 +460,9 @@ " jz .FL2\n" " stosw\n" ".FL2:\n" - : - : "r" (color), "r" (width), "D" (pos) - : "%eax", "%ecx","%ebx"); + : + : "a" (color), "r" (width), "m" (pos) + : "%ecx", "%ebx", "%edi"); pos =(PULONG)((ULONG_PTR)pos + delta); } _____ Modified: trunk/reactos/subsys/win32k/dib/dib32bpp.c --- trunk/reactos/subsys/win32k/dib/dib32bpp.c 2005-06-13 21:51:42 UTC (rev 15900) +++ trunk/reactos/subsys/win32k/dib/dib32bpp.c 2005-06-13 22:24:28 UTC (rev 15901) @@ -52,6 +52,7 @@ __asm__ __volatile__ ( " cld\n" " mov %0, %%eax\n" +" mov %2, %%edi\n" " test $0x03, %%edi\n" /* Align to fullword boundary */ " jnz .L1\n" " mov %1,%%ecx\n" /* Setup count of fullwords to fill */ @@ -67,8 +68,8 @@ " stosw\n" ".L2:\n" : /* no output */ - : "r"(c), "r"(cx), "D"(addr) - : "%eax", "%ecx"); + : "m"(c), "r"(cx), "m"(addr) + : "%eax", "%ecx", "%edi"); }
19 years, 6 months
1
0
0
0
[hpoussin] 15900: Handle DeviceId property
by hpoussin@svn.reactos.com
Handle DeviceId property Change InstanceId to Serenum\Mouse Modified: trunk/reactos/drivers/bus/serenum/detect.c Modified: trunk/reactos/drivers/bus/serenum/pdo.c Modified: trunk/reactos/drivers/bus/serenum/serenum.c Modified: trunk/reactos/drivers/bus/serenum/serenum.h _____ Modified: trunk/reactos/drivers/bus/serenum/detect.c --- trunk/reactos/drivers/bus/serenum/detect.c 2005-06-13 21:44:32 UTC (rev 15899) +++ trunk/reactos/drivers/bus/serenum/detect.c 2005-06-13 21:51:42 UTC (rev 15900) @@ -141,6 +141,7 @@ IN PDEVICE_OBJECT DeviceObject, IN PUNICODE_STRING DeviceDescription, IN PUNICODE_STRING DeviceId, + IN PUNICODE_STRING InstanceId, IN PUNICODE_STRING HardwareIds, IN PUNICODE_STRING CompatibleIds) { @@ -149,7 +150,7 @@ PFDO_DEVICE_EXTENSION FdoDeviceExtension; NTSTATUS Status; - DPRINT("Serenum: SerenumReportDetectedDevice() called with %wZ (%wZ) detected\n", DeviceId, DeviceDescription); + DPRINT("Serenum: ReportDetectedDevice() called with %wZ (%wZ) detected\n", DeviceId, DeviceDescription); Status = IoCreateDevice( DeviceObject->DriverObject, @@ -171,6 +172,8 @@ if (!NT_SUCCESS(Status)) goto ByeBye; Status = SerenumDuplicateUnicodeString(&PdoDeviceExtension->DeviceId, DeviceId, PagedPool); if (!NT_SUCCESS(Status)) goto ByeBye; + Status = SerenumDuplicateUnicodeString(&PdoDeviceExtension->InstanceId, InstanceId, PagedPool); + if (!NT_SUCCESS(Status)) goto ByeBye; Status = SerenumDuplicateUnicodeString(&PdoDeviceExtension->HardwareIds, HardwareIds, PagedPool); if (!NT_SUCCESS(Status)) goto ByeBye; Status = SerenumDuplicateUnicodeString(&PdoDeviceExtension->CompatibleIds, CompatibleIds, PagedPool); @@ -195,6 +198,8 @@ RtlFreeUnicodeString(&PdoDeviceExtension->DeviceDescription); if (PdoDeviceExtension->DeviceId.Buffer) RtlFreeUnicodeString(&PdoDeviceExtension->DeviceId); + if (PdoDeviceExtension->InstanceId.Buffer) + RtlFreeUnicodeString(&PdoDeviceExtension->InstanceId); if (PdoDeviceExtension->HardwareIds.Buffer) RtlFreeUnicodeString(&PdoDeviceExtension->HardwareIds); if (PdoDeviceExtension->CompatibleIds.Buffer) @@ -472,6 +477,7 @@ UCHAR Buffer[16]; UNICODE_STRING DeviceDescription; UNICODE_STRING DeviceId; + UNICODE_STRING InstanceId; UNICODE_STRING HardwareIds; UNICODE_STRING CompatibleIds; NTSTATUS Status; @@ -546,6 +552,8 @@ Status = ReadBytes(LowerDevice, Buffer, sizeof(Buffer)/sizeof(Buffer[0]), &Count); if (!NT_SUCCESS(Status)) goto ByeBye; + RtlInitUnicodeString(&DeviceId, L"Serenum\\Mouse"); + RtlInitUnicodeString(&InstanceId, L"0000"); /* FIXME */ for (i = 0; i < Count; i++) { if (Buffer[i] == 'B') @@ -555,11 +563,10 @@ * Compatible id: *PNP0F0F, SERIAL_MOUSE */ RtlInitUnicodeString(&DeviceDescription, L"Microsoft Ballpoint device"); - RtlInitUnicodeString(&DeviceId, L"*PNP0F09"); SerenumInitMultiSzString(&HardwareIds, "*PNP0F09", NULL); SerenumInitMultiSzString(&CompatibleIds, "*PNP0F0F", "SERIAL_MOUSE", NULL); Status = ReportDetectedDevice(DeviceObject, - &DeviceDescription, &DeviceId, &HardwareIds, &CompatibleIds); + &DeviceDescription, &DeviceId, &InstanceId, &HardwareIds, &CompatibleIds); RtlFreeUnicodeString(&HardwareIds); RtlFreeUnicodeString(&CompatibleIds); goto ByeBye; @@ -580,7 +587,6 @@ * Compatible id: SERIAL_MOUSE */ RtlInitUnicodeString(&DeviceDescription, L"Microsoft Mouse with 3-buttons"); - RtlInitUnicodeString(&DeviceId, L"*PNP0F08"); SerenumInitMultiSzString(&HardwareIds, "*PNP0F08", NULL); SerenumInitMultiSzString(&CompatibleIds, "SERIAL_MOUSE", NULL); default: @@ -588,12 +594,11 @@ * Compatible id: SERIAL_MOUSE */ RtlInitUnicodeString(&DeviceDescription, L"Microsoft Mouse with 2-buttons or Microsoft Wheel Mouse"); - RtlInitUnicodeString(&DeviceId, L"*PNP0F01"); SerenumInitMultiSzString(&HardwareIds, "*PNP0F01", NULL); SerenumInitMultiSzString(&CompatibleIds, "SERIAL_MOUSE", NULL); } Status = ReportDetectedDevice(DeviceObject, - &DeviceDescription, &DeviceId, &HardwareIds, &CompatibleIds); + &DeviceDescription, &DeviceId, &InstanceId, &HardwareIds, &CompatibleIds); RtlFreeUnicodeString(&HardwareIds); RtlFreeUnicodeString(&CompatibleIds); goto ByeBye; _____ Modified: trunk/reactos/drivers/bus/serenum/pdo.c --- trunk/reactos/drivers/bus/serenum/pdo.c 2005-06-13 21:44:32 UTC (rev 15899) +++ trunk/reactos/drivers/bus/serenum/pdo.c 2005-06-13 21:51:42 UTC (rev 15900) @@ -61,11 +61,9 @@ break; case BusQueryInstanceID: { - /* We don't have any instance id to report, and - * this query is optional, so ignore it. - */ - *Information = Irp->IoStatus.Information; - return Irp->IoStatus.Status; + DPRINT("Serenum: IRP_MJ_PNP / IRP_MN_QUERY_ID / BusQueryInstanceID\n"); + SourceString = &DeviceExtension->InstanceId; + break; } default: DPRINT1("Serenum: IRP_MJ_PNP / IRP_MN_QUERY_ID / unknown query id type 0x%lx\n", IdType); _____ Modified: trunk/reactos/drivers/bus/serenum/serenum.c --- trunk/reactos/drivers/bus/serenum/serenum.c 2005-06-13 21:44:32 UTC (rev 15899) +++ trunk/reactos/drivers/bus/serenum/serenum.c 2005-06-13 21:51:42 UTC (rev 15900) @@ -3,7 +3,7 @@ * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS Serial enumerator driver * FILE: drivers/bus/serenum/serenum.c - * PURPOSE: Serial enumeration driver entry point + * PURPOSE: Serial enumerator driver entry point * * PROGRAMMERS: HervÚ Poussineau (hpoussin(a)reactos.com) */ _____ Modified: trunk/reactos/drivers/bus/serenum/serenum.h --- trunk/reactos/drivers/bus/serenum/serenum.h 2005-06-13 21:44:32 UTC (rev 15899) +++ trunk/reactos/drivers/bus/serenum/serenum.h 2005-06-13 21:51:42 UTC (rev 15900) @@ -79,6 +79,7 @@ UNICODE_STRING DeviceDescription; // REG_SZ UNICODE_STRING DeviceId; // REG_SZ + UNICODE_STRING InstanceId; // REG_SZ UNICODE_STRING HardwareIds; // REG_MULTI_SZ UNICODE_STRING CompatibleIds; // REG_MULTI_SZ } PDO_DEVICE_EXTENSION, *PPDO_DEVICE_EXTENSION;
19 years, 6 months
1
0
0
0
← Newer
1
...
43
44
45
46
47
48
49
...
65
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
Results per page:
10
25
50
100
200