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
September 2013
----- 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
16 participants
554 discussions
Start a n
N
ew thread
[akhaldi] 59996: [NPFS_NEW] * Beginnings of windows-compatible NPFS driver. Still rough WIP, supports CreateNamedPipe and Create IRPs for now only. This is mainly to lay out all the structures (VCB...
by akhaldi@svn.reactos.org
Author: akhaldi Date: Sat Sep 7 15:32:29 2013 New Revision: 59996 URL:
http://svn.reactos.org/svn/reactos?rev=59996&view=rev
Log: [NPFS_NEW] * Beginnings of windows-compatible NPFS driver. Still rough WIP, supports CreateNamedPipe and Create IRPs for now only. This is mainly to lay out all the structures (VCB, DCB, FCB and CCB). Work on read/write (and hence data queue management) is next. Brought to you by Alex Ionescu. Added: trunk/reactos/drivers/filesystems/npfs_new/ (with props) trunk/reactos/drivers/filesystems/npfs_new/CMakeLists.txt (with props) trunk/reactos/drivers/filesystems/npfs_new/create.c (with props) trunk/reactos/drivers/filesystems/npfs_new/datasup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/fileobsup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/main.c (with props) trunk/reactos/drivers/filesystems/npfs_new/npfs.h (with props) trunk/reactos/drivers/filesystems/npfs_new/prefxsup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/secursup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/statesup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/strucsup.c (with props) trunk/reactos/drivers/filesystems/npfs_new/waitsup.c (with props) Modified: trunk/reactos/drivers/filesystems/CMakeLists.txt Modified: trunk/reactos/drivers/filesystems/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/CMakeL…
============================================================================== --- trunk/reactos/drivers/filesystems/CMakeLists.txt [iso-8859-1] (original) +++ trunk/reactos/drivers/filesystems/CMakeLists.txt [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -7,4 +7,5 @@ add_subdirectory(msfs) add_subdirectory(mup) add_subdirectory(npfs) +add_subdirectory(npfs_new) add_subdirectory(ntfs) Propchange: trunk/reactos/drivers/filesystems/npfs_new/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Sat Sep 7 15:32:29 2013 @@ -0,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/drivers/filesystems/npfs_new/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/drivers/filesystems/npfs_new/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/drivers/filesystems/npfs_new/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Added: trunk/reactos/drivers/filesystems/npfs_new/CMakeLists.txt URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/CMakeLists.txt (added) +++ trunk/reactos/drivers/filesystems/npfs_new/CMakeLists.txt [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,17 @@ + +list(APPEND SOURCE + create.c + datasup.c + fileobsup.c + main.c + prefxsup.c + secursup.c + statesup.c + strucsup.c + waitsup.c) + +add_library(npfs_new SHARED ${SOURCE}) +set_module_type(npfs_new kernelmodedriver) +add_importlibs(npfs_new ntoskrnl hal) +add_pch(npfs_new npfs.h) +add_cd_file(TARGET npfs_new DESTINATION reactos/system32/drivers FOR all) Propchange: trunk/reactos/drivers/filesystems/npfs_new/CMakeLists.txt ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/create.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/create.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/create.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,726 @@ +#include "npfs.h" + +VOID +NTAPI +NpCheckForNotify(IN PNP_DCB Dcb, + IN BOOLEAN SecondList, + IN PLIST_ENTRY List) +{ + PLIST_ENTRY NextEntry, ListHead; + PIRP Irp; + ULONG i; + PAGED_CODE(); + + ListHead = &Dcb->NotifyList; + for (i = 0; i < 2; i++) + { + while (!IsListEmpty(ListHead)) + { + NextEntry = RemoveHeadList(ListHead); + + Irp = CONTAINING_RECORD(NextEntry, IRP, Tail.Overlay.ListEntry); + + if (IoSetCancelRoutine(Irp, NULL)) + { + Irp->IoStatus.Status = STATUS_SUCCESS; + InsertTailList(List, NextEntry); + } + else + { + InitializeListHead(NextEntry); + } + } + + if (!SecondList) break; + ListHead = &Dcb->NotifyList2; + } +} + +IO_STATUS_BLOCK +NTAPI +NpOpenNamedPipeFileSystem(IN PFILE_OBJECT FileObject, + IN ACCESS_MASK DesiredAccess) +{ + IO_STATUS_BLOCK Status; + PAGED_CODE(); + + NpSetFileObject(FileObject, NpVcb, NULL, FALSE); + ++NpVcb->ReferenceCount; + + Status.Information = 1; + Status.Status = STATUS_SUCCESS; + return Status; +} + +IO_STATUS_BLOCK +NTAPI +NpOpenNamedPipeRootDirectory(IN PNP_DCB Dcb, + IN PFILE_OBJECT FileObject, + IN ACCESS_MASK DesiredAccess, + IN PLIST_ENTRY List) +{ + IO_STATUS_BLOCK Status; + PNP_ROOT_DCB_FCB Ccb; + PAGED_CODE(); + + Status.Status = NpCreateRootDcbCcb(&Ccb); + if (NT_SUCCESS(Status.Status)) + { + NpSetFileObject(FileObject, Dcb, Ccb, FALSE); + ++Dcb->CurrentInstances; + + Status.Information = 1; + Status.Status = STATUS_SUCCESS; + } + else + { + Status.Information = 0; + } + + return Status; +} + +IO_STATUS_BLOCK +NTAPI +NpCreateClientEnd(IN PNP_FCB Fcb, + IN PFILE_OBJECT FileObject, + IN ACCESS_MASK DesiredAccess, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN PACCESS_STATE AccessState, + IN KPROCESSOR_MODE PreviousMode, + IN PETHREAD Thread, + IN PLIST_ENTRY List) +{ + PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext; + BOOLEAN AccessGranted; + ACCESS_MASK GrantedAccess; + PPRIVILEGE_SET Privileges; + UNICODE_STRING ObjectTypeName; + IO_STATUS_BLOCK IoStatus; + USHORT NamedPipeConfiguration; + PLIST_ENTRY NextEntry, ListHead; + PNP_CCB Ccb = NULL; + + IoStatus.Status = STATUS_SUCCESS; + IoStatus.Information = 0; + Privileges = NULL; + + NamedPipeConfiguration = Fcb->NamedPipeConfiguration; + + SubjectSecurityContext = &AccessState->SubjectSecurityContext; + SeLockSubjectContext(SubjectSecurityContext); + + AccessGranted = SeAccessCheck(Fcb->SecurityDescriptor, + SubjectSecurityContext, + TRUE, + DesiredAccess & ~4, + 0, + &Privileges, + IoGetFileObjectGenericMapping(), + PreviousMode, + &GrantedAccess, + &IoStatus.Status); + + if (Privileges) + { + SeAppendPrivileges(AccessState, Privileges); + SeFreePrivileges(Privileges); + } + + if (AccessGranted) + { + AccessState->PreviouslyGrantedAccess |= GrantedAccess; + AccessState->RemainingDesiredAccess &= ~(GrantedAccess | 0x2000000); + } + + ObjectTypeName.Buffer = L"NamedPipe"; + ObjectTypeName.Length = 18; + SeOpenObjectAuditAlarm(&ObjectTypeName, + NULL, + &FileObject->FileName, + Fcb->SecurityDescriptor, + AccessState, + FALSE, + AccessGranted, + PreviousMode, + &AccessState->GenerateOnClose); + SeUnlockSubjectContext(SubjectSecurityContext); + if (!AccessGranted) return IoStatus; + + if (((GrantedAccess & 1) && (NamedPipeConfiguration == FILE_PIPE_INBOUND)) || + ((GrantedAccess & 2) && (NamedPipeConfiguration == FILE_PIPE_OUTBOUND))) + { + IoStatus.Status = STATUS_ACCESS_DENIED; + return IoStatus; + } + + if (!(GrantedAccess & 3)) SecurityQos = NULL; + + ListHead = &Fcb->CcbList; + NextEntry = ListHead->Flink; + while (NextEntry != ListHead) + { + Ccb = CONTAINING_RECORD(NextEntry, NP_CCB, CcbEntry); + if (Ccb->NamedPipeState == FILE_PIPE_LISTENING_STATE) break; + + NextEntry = NextEntry->Flink; + } + + if (NextEntry == ListHead) + { + IoStatus.Status = STATUS_PIPE_NOT_AVAILABLE; + return IoStatus; + } + + IoStatus.Status = NpInitializeSecurity(Ccb, SecurityQos, Thread); + if (!NT_SUCCESS(IoStatus.Status)) return IoStatus; + + IoStatus.Status = NpSetConnectedPipeState(Ccb, FileObject, List); + if (!NT_SUCCESS(IoStatus.Status)) + { + NpUninitializeSecurity(Ccb); + return IoStatus; + } + + Ccb->ClientSession = NULL; + Ccb->Process = IoThreadToProcess(Thread); + + IoStatus.Information = 1; + IoStatus.Status = STATUS_SUCCESS; + return IoStatus; +} + +NTSTATUS +NTAPI +NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PEXTENDED_IO_STACK_LOCATION IoStack; + UNICODE_STRING FileName; + PFILE_OBJECT FileObject; + PFILE_OBJECT RelatedFileObject; + NODE_TYPE_CODE Type; + PNP_CCB Ccb; + PNP_FCB Fcb; + PNP_DCB Dcb; + ACCESS_MASK DesiredAccess; + LIST_ENTRY List; + UNICODE_STRING Prefix; + + InitializeListHead(&List); + IoStack = (PEXTENDED_IO_STACK_LOCATION)IoGetCurrentIrpStackLocation(Irp); + FileObject = IoStack->FileObject; + RelatedFileObject = FileObject->RelatedFileObject; + FileName = FileObject->FileName; + DesiredAccess = IoStack->Parameters.CreatePipe.SecurityContext->DesiredAccess; + + DPRINT1("NpfsCreate(DeviceObject %p Irp %p)\n", DeviceObject, Irp); + DPRINT1("FileObject %p\n", FileObject); + DPRINT1("FileName %wZ\n", &FileObject->FileName); + DPRINT1("FileName->Length: %hu RelatedFileObject: %p\n", FileName.Length, RelatedFileObject); + + FsRtlEnterFileSystem(); + ExAcquireResourceExclusiveLite(&NpVcb->Lock, TRUE); + + if (RelatedFileObject) + { + Type = NpDecodeFileObject(RelatedFileObject, (PVOID*)&Fcb, &Ccb, FALSE); + } + else + { + Type = 0; + Fcb = NULL; + Ccb = NULL; + } + + if (FileName.Length) + { + if ((FileName.Length == sizeof(WCHAR)) && + (FileName.Buffer[0] == OBJ_NAME_PATH_SEPARATOR) && + !(RelatedFileObject)) + { + Irp->IoStatus = NpOpenNamedPipeRootDirectory(NpVcb->RootDcb, + FileObject, + DesiredAccess, + &List); + } + } + else if (!(RelatedFileObject) || (Type == NPFS_NTC_VCB)) + { + Irp->IoStatus = NpOpenNamedPipeFileSystem(FileObject, + DesiredAccess); + } + else if (Type == NPFS_NTC_ROOT_DCB) + { + Irp->IoStatus = NpOpenNamedPipeRootDirectory(NpVcb->RootDcb, + FileObject, + DesiredAccess, + &List); + } + else + { + // Status = NpTranslateAlias(&FileName);; // ignore this for now + // if (!NT_SUCCESS(Status)) goto Quickie; + + if (RelatedFileObject) + { + if (Type == NPFS_NTC_ROOT_DCB) + { + Dcb = (PNP_DCB)Ccb; + Irp->IoStatus.Status = NpFindRelativePrefix(Dcb, + &FileName, + 1, + &Prefix, + &Fcb); + if (!NT_SUCCESS(Irp->IoStatus.Status)) goto Quickie; + } + else if ((Type != NPFS_NTC_CCB) || (FileName.Length)) + { + Irp->IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + else + { + Prefix.Length = 0; + } + } + else + { + if ((FileName.Length <= sizeof(WCHAR)) || + (FileName.Buffer[0] != OBJ_NAME_PATH_SEPARATOR)) + { + Irp->IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + + Fcb = NpFindPrefix(&FileName, 1, &Prefix); + } + + if (Prefix.Length) + { + Irp->IoStatus.Status = Fcb->NodeType != NPFS_NTC_FCB ? + STATUS_OBJECT_NAME_NOT_FOUND : + STATUS_OBJECT_NAME_INVALID; + } + + if (!Fcb->CurrentInstances) + { + Irp->IoStatus.Status = STATUS_OBJECT_NAME_NOT_FOUND; + } + else + { + Irp->IoStatus = NpCreateClientEnd(Fcb, + FileObject, + DesiredAccess, + IoStack->Parameters.CreatePipe. + SecurityContext->SecurityQos, + IoStack->Parameters.CreatePipe. + SecurityContext->AccessState, + IoStack->Flags & + SL_FORCE_ACCESS_CHECK ? + UserMode : Irp->RequestorMode, + Irp->Tail.Overlay.Thread, + &List); + } + } + +Quickie: + ExReleaseResourceLite(&NpVcb->Lock); + ASSERT(IsListEmpty(&List) == TRUE); + FsRtlExitFileSystem(); + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return Irp->IoStatus.Status; +} + +IO_STATUS_BLOCK +NTAPI +NpCreateExistingNamedPipe(IN PNP_FCB Fcb, + IN PFILE_OBJECT FileObject, + IN ACCESS_MASK DesiredAccess, + IN PACCESS_STATE AccessState, + IN KPROCESSOR_MODE PreviousMode, + IN ULONG Disposition, + IN ULONG ShareAccess, + IN PNAMED_PIPE_CREATE_PARAMETERS Parameters, + IN PEPROCESS Process, + OUT PLIST_ENTRY List) +{ + PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext; + IO_STATUS_BLOCK IoStatus; + UNICODE_STRING ObjectTypeName; + ACCESS_MASK GrantedAccess; + PNP_CCB Ccb; + PPRIVILEGE_SET Privileges; + USHORT NamedPipeConfiguration, CheckShareAccess; + BOOLEAN AccessGranted; + PAGED_CODE(); + + Privileges = NULL; + + NamedPipeConfiguration = Fcb->NamedPipeConfiguration; + + SubjectSecurityContext = &AccessState->SubjectSecurityContext; + SeLockSubjectContext(SubjectSecurityContext); + + AccessGranted = SeAccessCheck(Fcb->SecurityDescriptor, + SubjectSecurityContext, + TRUE, + DesiredAccess | 4, + 0, + &Privileges, + IoGetFileObjectGenericMapping(), + PreviousMode, + &GrantedAccess, + &IoStatus.Status); + + if (Privileges) + { + SeAppendPrivileges(AccessState, Privileges); + SeFreePrivileges(Privileges); + } + + if (AccessGranted) + { + AccessState->PreviouslyGrantedAccess |= GrantedAccess; + AccessState->RemainingDesiredAccess &= ~(GrantedAccess | 0x2000000); + } + + + ObjectTypeName.Buffer = L"NamedPipe"; + ObjectTypeName.Length = 18; + SeOpenObjectAuditAlarm(&ObjectTypeName, + NULL, + &FileObject->FileName, + Fcb->SecurityDescriptor, + AccessState, + FALSE, + AccessGranted, + PreviousMode, + &AccessState->GenerateOnClose); + + SeUnlockSubjectContext(SubjectSecurityContext); + if ( !AccessGranted ) return IoStatus; + + if ( Fcb->CurrentInstances >= Fcb->MaximumInstances ) + { + IoStatus.Status = STATUS_INSTANCE_NOT_AVAILABLE; + return IoStatus; + } + + if ( Disposition == FILE_CREATE ) + { + IoStatus.Status = STATUS_ACCESS_DENIED; + return IoStatus; + } + + CheckShareAccess = 0; + if (NamedPipeConfiguration == FILE_PIPE_FULL_DUPLEX) + { + CheckShareAccess = FILE_SHARE_READ | FILE_SHARE_WRITE; + } + else if (NamedPipeConfiguration == FILE_PIPE_OUTBOUND) + { + CheckShareAccess = FILE_SHARE_READ; + } + else if (NamedPipeConfiguration == FILE_PIPE_INBOUND) + { + CheckShareAccess = FILE_SHARE_WRITE; + } + + if ( CheckShareAccess != ShareAccess ) + { + IoStatus.Status = STATUS_ACCESS_DENIED; + return IoStatus; + } + + IoStatus.Status = NpCreateCcb(Fcb, + FileObject, + FILE_PIPE_LISTENING_STATE, + Parameters->ReadMode & 0xFF, + Parameters->CompletionMode & 0xFF, + Parameters->InboundQuota, + Parameters->OutboundQuota, + &Ccb); + if (!NT_SUCCESS(IoStatus.Status)) return IoStatus; + + IoStatus.Status = NpCancelWaiter(&NpVcb->WaitQueue, + &Fcb->FullName, + FALSE, + List); + if (!NT_SUCCESS(IoStatus.Status)) + { + --Ccb->Fcb->CurrentInstances; + NpDeleteCcb(Ccb, List); + return IoStatus; + } + + NpSetFileObject(FileObject, Ccb, Ccb->NonPagedCcb, TRUE); + Ccb->ServerFileObject = FileObject; + NpCheckForNotify(Fcb->ParentDcb, 0, List); + + IoStatus.Status = STATUS_SUCCESS; + IoStatus.Information = 1; + return IoStatus; +} + +NTSTATUS +NTAPI +NpCreateNewNamedPipe(IN PNP_DCB Dcb, + IN PFILE_OBJECT FileObject, + IN UNICODE_STRING PipeName, + IN ACCESS_MASK DesiredAccess, + IN PACCESS_STATE AccessState, + IN USHORT Disposition, + IN USHORT ShareAccess, + IN PNAMED_PIPE_CREATE_PARAMETERS Parameters, + IN PEPROCESS Process, + IN PLIST_ENTRY List, + IN PIO_STATUS_BLOCK IoStatus) +{ + NTSTATUS Status; + USHORT NamedPipeConfiguration; + PSECURITY_SUBJECT_CONTEXT SecurityContext; + PSECURITY_DESCRIPTOR SecurityDescriptor, CachedSecurityDescriptor; + PNP_CCB Ccb; + PNP_FCB Fcb; + PAGED_CODE(); + + if (!(Parameters->TimeoutSpecified) || + !(Parameters->MaximumInstances) || + (Parameters->DefaultTimeout.HighPart >= 0)) + { + Status = STATUS_INVALID_PARAMETER; + goto Quickie; + } + + if (Disposition == FILE_OPEN) + { + Status = STATUS_OBJECT_NAME_NOT_FOUND; + goto Quickie; + } + + if (ShareAccess == (FILE_SHARE_READ | FILE_SHARE_WRITE)) + { + NamedPipeConfiguration = FILE_PIPE_FULL_DUPLEX; + } + else if (ShareAccess == FILE_SHARE_READ) + { + NamedPipeConfiguration = FILE_PIPE_OUTBOUND; + } + else if (ShareAccess == FILE_SHARE_WRITE) + { + NamedPipeConfiguration = FILE_PIPE_INBOUND; + } + else + { + Status = STATUS_INVALID_PARAMETER; + goto Quickie; + } + + if ( !Parameters->NamedPipeType && Parameters->ReadMode == 1 ) + { + Status = STATUS_INVALID_PARAMETER; + goto Quickie; + } + + Status = NpCreateFcb(Dcb, + &PipeName, + Parameters->MaximumInstances, + Parameters->DefaultTimeout, + NamedPipeConfiguration, + Parameters->NamedPipeType & 0xFFFF, + &Fcb); + if (!NT_SUCCESS(Status)) goto Quickie; + + Status = NpCreateCcb(Fcb, + FileObject, + FILE_PIPE_LISTENING_STATE, + Parameters->ReadMode & 0xFF, + Parameters->CompletionMode & 0xFF, + Parameters->InboundQuota, + Parameters->OutboundQuota, + &Ccb); + if (!NT_SUCCESS(Status)) + { + NpDeleteFcb(Fcb, List); + goto Quickie; + } + + SecurityContext = &AccessState->SubjectSecurityContext; + SeLockSubjectContext(&AccessState->SubjectSecurityContext); + + Status = SeAssignSecurity(0, + AccessState->SecurityDescriptor, + &SecurityDescriptor, + 0, + SecurityContext, + IoGetFileObjectGenericMapping(), + PagedPool); + SeUnlockSubjectContext(SecurityContext); + if (!NT_SUCCESS(Status)) + { + NpDeleteCcb(Ccb, List); + NpDeleteFcb(Fcb, List); + goto Quickie; + } + + Status = ObLogSecurityDescriptor(SecurityDescriptor, + &CachedSecurityDescriptor, + 1); + ExFreePool(SecurityDescriptor); + + if (!NT_SUCCESS(Status)) + { + NpDeleteCcb(Ccb, List); + NpDeleteFcb(Fcb, List); + goto Quickie; + } + + Fcb->SecurityDescriptor = CachedSecurityDescriptor; + + NpSetFileObject(FileObject, Ccb, Ccb->NonPagedCcb, TRUE); + Ccb->ServerFileObject = FileObject; + + NpCheckForNotify(Dcb, 1, List); + + IoStatus->Status = 0; + IoStatus->Information = 2; + return STATUS_SUCCESS; + +Quickie: + IoStatus->Information = 0; + IoStatus->Status = Status; + return Status; +} + +NTSTATUS +NTAPI +NpFsdCreateNamedPipe(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + PEXTENDED_IO_STACK_LOCATION IoStack; + PFILE_OBJECT FileObject; + PFILE_OBJECT RelatedFileObject; + USHORT Disposition, ShareAccess; + PEPROCESS Process; + LIST_ENTRY LocalList; + UNICODE_STRING FileName; + PNP_FCB Fcb; + UNICODE_STRING Prefix; + PNAMED_PIPE_CREATE_PARAMETERS Parameters; + IO_STATUS_BLOCK IoStatus; + + DPRINT1("NpFsdCreateNamedPipe(DeviceObject %p Irp %p)\n", DeviceObject, Irp); + + InitializeListHead(&LocalList); + Process = IoGetRequestorProcess(Irp); + + IoStack = (PEXTENDED_IO_STACK_LOCATION) IoGetCurrentIrpStackLocation(Irp); + FileObject = IoStack->FileObject; + RelatedFileObject = FileObject->RelatedFileObject; + + Disposition = (IoStack->Parameters.CreatePipe.Options >> 24) & 0xFF; + ShareAccess = IoStack->Parameters.CreatePipe.ShareAccess & 0xFFFF; + Parameters = IoStack->Parameters.CreatePipe.Parameters; + + FileName.Buffer = FileObject->FileName.Buffer; + FileName.Length = FileObject->FileName.Length; + FileName.MaximumLength = FileObject->FileName.MaximumLength; + + IoStatus.Status = STATUS_SUCCESS; + IoStatus.Information = 0; + + FsRtlEnterFileSystem(); + ExAcquireResourceExclusiveLite(&NpVcb->Lock, TRUE); + + DPRINT1("FileObject %p\n", FileObject); + DPRINT1("FileName %wZ\n", &FileObject->FileName); + DPRINT1("FileName->Length: %hu RelatedFileObject: %p\n", FileName.Length, RelatedFileObject); + + if ( RelatedFileObject ) + { + Fcb = (PNP_FCB)((ULONG_PTR)RelatedFileObject->FsContext & ~1); + if (!(Fcb) || + (Fcb->NodeType != NPFS_NTC_ROOT_DCB) || + (FileName.Length < sizeof(WCHAR)) || + (FileName.Buffer[0] == OBJ_NAME_PATH_SEPARATOR)) + { + IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + + IoStatus.Status = NpFindRelativePrefix(RelatedFileObject->FsContext, + &FileName, + TRUE, + &Prefix, + &Fcb); + if (!NT_SUCCESS(IoStatus.Status)) goto Quickie; + } + else + { + if ( FileName.Length <= 2u || *FileName.Buffer != '\\' ) + { + IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + Fcb = NpFindPrefix(&FileName, 1u, &Prefix); + } + + if ( Prefix.Length ) + { + if (Fcb->NodeType == NPFS_NTC_ROOT_DCB ) + { + IoStatus.Status = NpCreateNewNamedPipe((PNP_DCB)Fcb, + FileObject, + FileName, + IoStack->Parameters.CreatePipe. + SecurityContext->DesiredAccess, + IoStack->Parameters.CreatePipe. + SecurityContext->AccessState, + Disposition, + ShareAccess, + Parameters, + Process, + &LocalList, + &Irp->IoStatus); + goto Quickie; + } + else + { + IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + } + if (Fcb->NodeType != NPFS_NTC_FCB ) + { + IoStatus.Status = STATUS_OBJECT_NAME_INVALID; + goto Quickie; + } + + Irp->IoStatus = NpCreateExistingNamedPipe(Fcb, + FileObject, + IoStack->Parameters.CreatePipe. + SecurityContext->DesiredAccess, + IoStack->Parameters.CreatePipe. + SecurityContext->AccessState, + IoStack->Flags & + SL_FORCE_ACCESS_CHECK ? + UserMode : Irp->RequestorMode, + Disposition, + ShareAccess, + Parameters, + Process, + &LocalList); + +Quickie: + ExReleaseResourceLite(&NpVcb->Lock); + ASSERT(IsListEmpty(&LocalList)); + + FsRtlExitFileSystem(); + + Irp->IoStatus = IoStatus; + IoCompleteRequest(Irp, IO_DISK_INCREMENT); + return IoStatus.Status; +} + Propchange: trunk/reactos/drivers/filesystems/npfs_new/create.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/datasup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/datasup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/datasup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,30 @@ +#include "npfs.h" + +NTSTATUS +NTAPI +NpUninitializeDataQueue(IN PNP_DATA_QUEUE DataQueue) +{ + PAGED_CODE(); + + ASSERT(DataQueue->QueueState == Empty); + + RtlZeroMemory(DataQueue, sizeof(*DataQueue)); + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +NpInitializeDataQueue(IN PNP_DATA_QUEUE DataQueue, + IN ULONG Quota) +{ + PAGED_CODE(); + + DataQueue->BytesInQueue = 0; + DataQueue->EntriesInQueue = 0; + DataQueue->QuotaUsed = 0; + DataQueue->ByteOffset = 0; + DataQueue->QueueState = Empty; + DataQueue->Quota = Quota; + InitializeListHead(&DataQueue->List); + return STATUS_SUCCESS; +} Propchange: trunk/reactos/drivers/filesystems/npfs_new/datasup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/fileobsup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/fileobsup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/fileobsup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,72 @@ +#include "npfs.h" + +NODE_TYPE_CODE +NTAPI +NpDecodeFileObject(IN PFILE_OBJECT FileObject, + OUT PVOID* PrimaryContext OPTIONAL, + OUT PNP_CCB* Ccb, + OUT PBOOLEAN ServerSide OPTIONAL) +{ + ULONG_PTR Context; + PNP_CCB Node; + PAGED_CODE(); + + Context = (ULONG_PTR)FileObject->FsContext; + if ((Context) && (Context != 1)) + { + if (ServerSide) *ServerSide = Context & 1; + + Node = (PVOID)(Context & ~1); + + switch (Node->NodeType) + { + case NPFS_NTC_VCB: + return NPFS_NTC_VCB; + + case NPFS_NTC_ROOT_DCB: + *Ccb = FileObject->FsContext2; + if (PrimaryContext) *PrimaryContext = Node; + return NPFS_NTC_ROOT_DCB; + + case NPFS_NTC_CCB: + *Ccb = Node; + if (PrimaryContext) *PrimaryContext = Node->Fcb; + return NPFS_NTC_CCB; + + default: + KeBugCheckEx(NPFS_FILE_SYSTEM, 0xB0108, Node->NodeType, 0, 0); + break; + } + } + + return 0; +} + +VOID +NTAPI +NpSetFileObject(IN PFILE_OBJECT FileObject, + IN PVOID PrimaryContext, + IN PVOID Ccb, + IN BOOLEAN ServerSide) +{ + BOOLEAN FileIsPipe; + PAGED_CODE(); + + if (!FileObject) return; + + if ((PrimaryContext) && (((PNP_CCB)PrimaryContext)->NodeType == NPFS_NTC_CCB)) + { + FileIsPipe = TRUE; + if (ServerSide) PrimaryContext = (PVOID)((ULONG_PTR)PrimaryContext | 1); + } + else + { + FileIsPipe = FALSE; + } + + FileObject->FsContext = PrimaryContext; + FileObject->FsContext2 = Ccb; + FileObject->PrivateCacheMap = (PVOID)1; + if (FileIsPipe) FileObject->Flags |= FO_NAMED_PIPE; +} + Propchange: trunk/reactos/drivers/filesystems/npfs_new/fileobsup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/main.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/main.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/main.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,201 @@ +#include "npfs.h" + +PDEVICE_OBJECT NpfsDeviceObject; + +NTSTATUS +NTAPI +NpFsdClose(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdRead(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdWrite(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdQueryInformation(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdSetInformation(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdQueryVolumeInformation(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdCleanup(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdFlushBuffers(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdDirectoryControl(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +NpFsdFileSystemControl(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp) +{ + UNIMPLEMENTED; + + Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED; + Irp->IoStatus.Information = 0; + + IoCompleteRequest(Irp, IO_NO_INCREMENT); + return STATUS_NOT_IMPLEMENTED; +} + +NTSTATUS +NTAPI +DriverEntry(IN PDRIVER_OBJECT DriverObject, + IN PUNICODE_STRING RegistryPath) +{ + PDEVICE_OBJECT DeviceObject; + UNICODE_STRING DeviceName; + NTSTATUS Status; + UNREFERENCED_PARAMETER(RegistryPath); + + DPRINT1("Next-Generation NPFS-Lite\n"); + + DriverObject->MajorFunction[IRP_MJ_CREATE] = NpFsdCreate; + DriverObject->MajorFunction[IRP_MJ_CREATE_NAMED_PIPE] = NpFsdCreateNamedPipe; + DriverObject->MajorFunction[IRP_MJ_CLOSE] = NpFsdClose; + DriverObject->MajorFunction[IRP_MJ_READ] = NpFsdRead; + DriverObject->MajorFunction[IRP_MJ_WRITE] = NpFsdWrite; + DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NpFsdQueryInformation; + DriverObject->MajorFunction[IRP_MJ_SET_INFORMATION] = NpFsdSetInformation; + DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NpFsdQueryVolumeInformation; + DriverObject->MajorFunction[IRP_MJ_CLEANUP] = NpFsdCleanup; + DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = NpFsdFlushBuffers; + DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NpFsdDirectoryControl; + DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NpFsdFileSystemControl; + // DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] = + // NpfsQuerySecurity; + // DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = + // NpfsSetSecurity; + + DriverObject->DriverUnload = NULL; + + RtlInitUnicodeString(&DeviceName, L"\\Device\\NamedPipe"); + Status = IoCreateDevice(DriverObject, + sizeof(NP_VCB), + &DeviceName, + FILE_DEVICE_NAMED_PIPE, + 0, + FALSE, + &DeviceObject); + if (!NT_SUCCESS(Status)) + { + DPRINT1("Failed to create named pipe device! (Status %lx)\n", Status); + return Status; + } + + /* Initialize the device object */ + NpfsDeviceObject = DeviceObject; + DeviceObject->Flags |= DO_DIRECT_IO; + DeviceObject->Flags &= ~DO_DEVICE_INITIALIZING; + + /* Initialize the Volume Control Block (VCB) */ + NpVcb = DeviceObject->DeviceExtension; + NpInitializeVcb(); + Status = NpCreateRootDcb(); + ASSERT(Status == STATUS_SUCCESS); + return STATUS_SUCCESS; +} Propchange: trunk/reactos/drivers/filesystems/npfs_new/main.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/npfs.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/npfs.h (added) +++ trunk/reactos/drivers/filesystems/npfs_new/npfs.h [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,318 @@ +// +// System Headers +// +#include <ntifs.h> +#include <ntndk.h> +#define UNIMPLEMENTED +#define DPRINT1 DbgPrint + +// +// Allow Microsoft Extensions +// +#ifdef _MSC_VER +#pragma warning(disable:4201) +#pragma warning(disable:4214) +#pragma warning(disable:4100) +#endif + +// +// Node Type Codes for NPFS +// +#define NPFS_NTC_VCB 1 +#define NPFS_NTC_ROOT_DCB 2 +#define NPFS_NTC_FCB 4 +#define NPFS_NTC_CCB 6 +#define NPFS_NTC_NONPAGED_CCB 7 +#define NPFS_NTC_ROOT_DCB_CCB 8 +typedef USHORT NODE_TYPE_CODE, *PNODE_TYPE_CODE; + +// +// Data Queue States +// +typedef enum _NP_DATA_QUEUE_STATE +{ + Empty = 2 +} NP_DATA_QUEUE_STATE; + +// +// An Input or Output Data Queue. Each CCB has two of these. +// +typedef struct _NP_DATA_QUEUE +{ + LIST_ENTRY List; + ULONG QueueState; + ULONG BytesInQueue; + ULONG EntriesInQueue; + ULONG QuotaUsed; + ULONG ByteOffset; + ULONG Quota; +} NP_DATA_QUEUE, *PNP_DATA_QUEUE; + +// +// A Wait Queue. Only the VCB has one of these. +// +typedef struct _NP_WAIT_QUEUE +{ + LIST_ENTRY WaitList; + KSPIN_LOCK WaitLock; +} NP_WAIT_QUEUE, *PNP_WAIT_QUEUE; + +// +// The CCB for the Root DCB +// +typedef struct _NP_ROOT_DCB_CCB +{ + NODE_TYPE_CODE NodeType; + PVOID Unknown; + ULONG Unknown2; +} NP_ROOT_DCB_CCB, *PNP_ROOT_DCB_FCB; + +// +// The header that both FCB and DCB share +// +typedef struct _NP_CB_HEADER +{ + NODE_TYPE_CODE NodeType; + LIST_ENTRY DcbEntry; + PVOID ParentDcb; + ULONG CurrentInstances; + ULONG OtherCount; + PSECURITY_DESCRIPTOR SecurityDescriptor; +} NP_CB_HEADER, *PNP_CB_HEADER; + +// +// The footer that both FCB and DCB share +// +typedef struct _NP_CB_FOOTER +{ + UNICODE_STRING FullName; + UNICODE_STRING ShortName; + UNICODE_PREFIX_TABLE_ENTRY PrefixTableEntry; +} NP_CB_FOOTER; + +// +// A Directory Control Block (DCB) +// +typedef struct _NP_DCB +{ + // + // Common Header + // + NP_CB_HEADER; + + // + // DCB-specific data + // + LIST_ENTRY NotifyList; + LIST_ENTRY NotifyList2; + LIST_ENTRY FcbList; + + // + // Common Footer + // + NP_CB_FOOTER; +} NP_DCB, *PNP_DCB; + +// +// A File Control BLock (FCB) +// +typedef struct _NP_FCB +{ + // + // Common Header + // + NP_CB_HEADER; + + // + // FCB-specific fields + // + ULONG MaximumInstances; + USHORT NamedPipeConfiguration; + USHORT NamedPipeType; + LARGE_INTEGER Timeout; + LIST_ENTRY CcbList; + + // + // Common Footer + // + NP_CB_FOOTER; +} NP_FCB, *PNP_FCB; + +// +// The nonpaged portion of the CCB +// +typedef struct _NP_NONPAGED_CCB +{ + NODE_TYPE_CODE NodeType; + PVOID EventBufferClient; + PVOID EventBufferServer; + ERESOURCE Lock; +} NP_NONPAGED_CCB, *PNP_NONPAGED_CCB; + +// +// A Client Control Block (CCB) +// +typedef struct _NP_CCB +{ + NODE_TYPE_CODE NodeType; + UCHAR NamedPipeState; + UCHAR ClientReadMode:1; + UCHAR ClientCompletionMode:1; + UCHAR ServerReadMode:1; + UCHAR ClientReservedFlags:6; + UCHAR ServerCompletionMode:1; + UCHAR ServerReservedFlags:6; + SECURITY_QUALITY_OF_SERVICE ClientQos; + LIST_ENTRY CcbEntry; + PNP_FCB Fcb; + PFILE_OBJECT ClientFileObject; + PFILE_OBJECT ServerFileObject; + PEPROCESS Process; + PVOID ClientSession; + PNP_NONPAGED_CCB NonPagedCcb; + NP_DATA_QUEUE InQueue; + NP_DATA_QUEUE OutQueue; + PSECURITY_CLIENT_CONTEXT ClientContext; + LIST_ENTRY IrpList; +} NP_CCB, *PNP_CCB; + +// +// A Volume Control Block (VCB) +// +typedef struct _NP_VCB +{ + NODE_TYPE_CODE NodeType; + ULONG ReferenceCount; + PNP_DCB RootDcb; + UNICODE_PREFIX_TABLE PrefixTable; + ERESOURCE Lock; + RTL_GENERIC_TABLE EventTable; + NP_WAIT_QUEUE WaitQueue; +} NP_VCB, *PNP_VCB; + +extern PNP_VCB NpVcb; + +VOID +NTAPI +NpInitializeWaitQueue(IN PNP_WAIT_QUEUE WaitQueue); + + +NTSTATUS +NTAPI +NpUninitializeDataQueue(IN PNP_DATA_QUEUE DataQueue); + +NTSTATUS +NTAPI +NpInitializeDataQueue(IN PNP_DATA_QUEUE DataQueue, + IN ULONG Quota); + +NTSTATUS +NTAPI +NpCreateCcb(IN PNP_FCB Fcb, + IN PFILE_OBJECT FileObject, + IN UCHAR State, + IN UCHAR ReadMode, + IN UCHAR CompletionMode, + IN ULONG InQuota, + IN ULONG OutQuota, + OUT PNP_CCB* NewCcb); + +NTSTATUS +NTAPI +NpCreateFcb(IN PNP_DCB Dcb, + IN PUNICODE_STRING PipeName, + IN ULONG MaximumInstances, + IN LARGE_INTEGER Timeout, + IN USHORT NamedPipeConfiguration, + IN USHORT NamedPipeType, + OUT PNP_FCB *NewFcb); + +NTSTATUS +NTAPI +NpCreateRootDcb(VOID); + +NTSTATUS +NTAPI +NpCreateRootDcbCcb(IN PNP_ROOT_DCB_FCB* NewRootCcb); + +VOID +NTAPI +NpInitializeVcb(VOID); + +VOID +NTAPI +NpDeleteCcb(IN PNP_CCB Ccb, + IN PLIST_ENTRY ListEntry); + +VOID +NTAPI +NpDeleteFcb(IN PNP_FCB Fcb, + IN PLIST_ENTRY ListEntry); + +NTSTATUS +NTAPI +NpFsdCreateNamedPipe(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +NTAPI +NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp); + +NTSTATUS +NTAPI +NpSetConnectedPipeState(IN PNP_CCB Ccb, + IN PFILE_OBJECT FileObject, + IN PLIST_ENTRY List); + +VOID +NTAPI +NpUninitializeSecurity(IN PNP_CCB Ccb); + +NTSTATUS +NTAPI +NpInitializeSecurity(IN PNP_CCB Ccb, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN PETHREAD Thread); + +VOID +NTAPI +NpSetFileObject(IN PFILE_OBJECT FileObject, + IN PVOID PrimaryContext, + IN PVOID Ccb, + IN BOOLEAN ServerSide); + +NODE_TYPE_CODE +NTAPI +NpDecodeFileObject(IN PFILE_OBJECT FileObject, + OUT PVOID* PrimaryContext OPTIONAL, + OUT PNP_CCB* Ccb, + OUT PBOOLEAN ServerSide OPTIONAL); + +PNP_FCB +NTAPI +NpFindPrefix(IN PUNICODE_STRING Name, + IN ULONG CaseInsensitiveIndex, + IN PUNICODE_STRING Prefix); + +NTSTATUS +NTAPI +NpFindRelativePrefix(IN PNP_DCB Dcb, + IN PUNICODE_STRING Name, + IN ULONG CaseInsensitiveIndex, + IN PUNICODE_STRING Prefix, + OUT PNP_FCB *FoundFcb); + +VOID +NTAPI +NpCheckForNotify(IN PNP_DCB Dcb, + IN BOOLEAN SecondList, + IN PLIST_ENTRY List); + +NTSTATUS +NTAPI +NpCancelWaiter(IN PNP_WAIT_QUEUE WaitQueue, + IN PUNICODE_STRING PipeName, + IN NTSTATUS Status, + IN PLIST_ENTRY ListEntry); + Propchange: trunk/reactos/drivers/filesystems/npfs_new/npfs.h ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/prefxsup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/prefxsup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/prefxsup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,77 @@ +#include "npfs.h" + +PNP_FCB +NTAPI +NpFindPrefix(IN PUNICODE_STRING Name, + IN ULONG CaseInsensitiveIndex, + IN PUNICODE_STRING Prefix) +{ + PUNICODE_PREFIX_TABLE_ENTRY Entry; + PNP_FCB Fcb; + PAGED_CODE(); + + Entry = RtlFindUnicodePrefix(&NpVcb->PrefixTable, + Name, + CaseInsensitiveIndex); + if (!Entry) KeBugCheckEx(NPFS_FILE_SYSTEM, 0x100065u, 0, 0, 0); + + Fcb = CONTAINING_RECORD(Entry, NP_FCB, PrefixTableEntry); + + Prefix->Length = Name->Length - Fcb->FullName.Length; + Prefix->MaximumLength = Prefix->Length; + Prefix->Buffer = &Name->Buffer[Fcb->FullName.Length / sizeof(WCHAR)]; + + if ((Prefix->Length) && (Prefix->Buffer[0] == OBJ_NAME_PATH_SEPARATOR)) + { + Prefix->Length -= sizeof(WCHAR); + Prefix->MaximumLength -= sizeof(WCHAR); + ++Prefix->Buffer; + } + + return Fcb; +} + +NTSTATUS +NTAPI +NpFindRelativePrefix(IN PNP_DCB Dcb, + IN PUNICODE_STRING Name, + IN ULONG CaseInsensitiveIndex, + IN PUNICODE_STRING Prefix, + OUT PNP_FCB *FoundFcb) +{ + PWCHAR Buffer; + PNP_FCB Fcb; + UNICODE_STRING RootName; + USHORT Length, MaximumLength; + PAGED_CODE(); + + Length = Name->Length; + MaximumLength = Length + sizeof(OBJ_NAME_PATH_SEPARATOR) + sizeof(UNICODE_NULL); + if (MaximumLength < Length) return STATUS_INVALID_PARAMETER; + + ASSERT(Dcb->NodeType == NPFS_NTC_ROOT_DCB); + + Buffer = ExAllocatePoolWithTag(PagedPool, MaximumLength, 'nFpN'); + if (!Buffer) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + *Buffer = OBJ_NAME_PATH_SEPARATOR; + RtlCopyMemory(Buffer + 1, Name->Buffer, Length); + Buffer[(Length / sizeof(WCHAR)) + 1] = UNICODE_NULL; + + RootName.Length = Length + sizeof(OBJ_NAME_PATH_SEPARATOR); + RootName.MaximumLength = MaximumLength; + RootName.Buffer = Buffer; + + Fcb = NpFindPrefix(&RootName, CaseInsensitiveIndex, Prefix); + + ExFreePool(Buffer); + + Prefix->Buffer = &Name->Buffer[(Length - Prefix->Length) / sizeof(WCHAR)]; + *FoundFcb = Fcb; + + return STATUS_SUCCESS; +} + Propchange: trunk/reactos/drivers/filesystems/npfs_new/prefxsup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/secursup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/secursup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/secursup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,65 @@ +#include "npfs.h" + +VOID +NTAPI +NpUninitializeSecurity(IN PNP_CCB Ccb) +{ + PACCESS_TOKEN ClientToken; + PSECURITY_CLIENT_CONTEXT ClientContext; + TOKEN_TYPE TokenType; + PAGED_CODE(); + + ClientContext = Ccb->ClientContext; + if (!ClientContext) return; + + TokenType = SeTokenType(ClientContext->ClientToken); + ClientToken = Ccb->ClientContext->ClientToken; + if ((TokenType == TokenPrimary) || (ClientToken)) + { + ObfDereferenceObject(ClientToken); + } + ExFreePool(Ccb->ClientContext); + Ccb->ClientContext = 0; +} + +NTSTATUS +NTAPI +NpInitializeSecurity(IN PNP_CCB Ccb, + IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, + IN PETHREAD Thread) +{ + PSECURITY_CLIENT_CONTEXT ClientContext; + NTSTATUS Status; + PAGED_CODE(); + + if (SecurityQos) + { + Ccb->ClientQos = *SecurityQos; + } + else + { + Ccb->ClientQos.Length = 12; + Ccb->ClientQos.ImpersonationLevel = 2; + Ccb->ClientQos.ContextTrackingMode = 1; + Ccb->ClientQos.EffectiveOnly = 1; + } + + NpUninitializeSecurity(Ccb); + + if (Ccb->ClientQos.ContextTrackingMode) + { + Status = 0; + Ccb->ClientContext = 0; + return Status; + } + + ClientContext = ExAllocatePoolWithTag(PagedPool, sizeof(*ClientContext), 'sFpN'); + Ccb->ClientContext = ClientContext; + if (!ClientContext) return STATUS_INSUFFICIENT_RESOURCES; + + Status = SeCreateClientSecurity(Thread, &Ccb->ClientQos, 0, ClientContext); + if (Status >= 0) return Status; + ExFreePool(Ccb->ClientContext); + Ccb->ClientContext = 0; + return Status; +} Propchange: trunk/reactos/drivers/filesystems/npfs_new/secursup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/statesup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/statesup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/statesup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,39 @@ +#include "npfs.h" + +NTSTATUS +NTAPI +NpSetConnectedPipeState(IN PNP_CCB Ccb, + IN PFILE_OBJECT FileObject, + IN PLIST_ENTRY List) +{ + PLIST_ENTRY NextEntry; + PIRP Irp; + + ASSERT(Ccb->NamedPipeState == FILE_PIPE_LISTENING_STATE); + + Ccb->ClientReadMode = FILE_PIPE_BYTE_STREAM_MODE; + Ccb->ClientCompletionMode = FILE_PIPE_QUEUE_OPERATION; + Ccb->NamedPipeState = FILE_PIPE_CONNECTED_STATE; + Ccb->ClientFileObject = FileObject; + + NpSetFileObject(FileObject, Ccb, Ccb->NonPagedCcb, FALSE); + + while (!IsListEmpty(&Ccb->IrpList)) + { + NextEntry = RemoveHeadList(&Ccb->IrpList); + + Irp = CONTAINING_RECORD(NextEntry, IRP, Tail.Overlay.ListEntry); + + if (IoSetCancelRoutine(Irp, NULL)) + { + Irp->IoStatus.Status = STATUS_SUCCESS; + InsertTailList(List, NextEntry); + } + else + { + InitializeListHead(NextEntry); + } + } + + return STATUS_SUCCESS; +} Propchange: trunk/reactos/drivers/filesystems/npfs_new/statesup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/strucsup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/strucsup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/strucsup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,339 @@ +#include "npfs.h" + +#define UNIMPLEMENTED + +PWCHAR NpRootDCBName = L"\\"; +PNP_VCB NpVcb; + +RTL_GENERIC_COMPARE_RESULTS +NTAPI +NpEventTableCompareRoutine(IN PRTL_GENERIC_TABLE Table, + IN PVOID FirstStruct, + IN PVOID SecondStruct) +{ + UNIMPLEMENTED; + return GenericEqual; +} + +PVOID +NTAPI +NpEventTableAllocate(IN PRTL_GENERIC_TABLE Table, + IN CLONG ByteSize) +{ + UNIMPLEMENTED; + return NULL; +} + +VOID +NTAPI +NpEventTableDeallocate(IN PRTL_GENERIC_TABLE Table, + IN PVOID Buffer) +{ + UNIMPLEMENTED; +} + +BOOLEAN +NTAPI +NpDeleteEventTableEntry(IN PRTL_GENERIC_TABLE Table, + IN PVOID Buffer) +{ + UNIMPLEMENTED; + return FALSE; +} + +VOID +NTAPI +NpDeleteFcb(IN PNP_FCB Fcb, + IN PLIST_ENTRY ListEntry) +{ + PNP_DCB Dcb; + + PAGED_CODE(); + + Dcb = Fcb->ParentDcb; + if (!Fcb->CurrentInstances) KeBugCheckEx(NPFS_FILE_SYSTEM, 0x17025F, 0, 0, 0); + + NpCancelWaiter(&NpVcb->WaitQueue, + &Fcb->FullName, + STATUS_OBJECT_NAME_NOT_FOUND, + ListEntry); + + RemoveEntryList(&Fcb->DcbEntry); + + if ( Fcb->SecurityDescriptor ) + { + ObDereferenceSecurityDescriptor(Fcb->SecurityDescriptor, 1); + } + + RtlRemoveUnicodePrefix(&NpVcb->PrefixTable, &Fcb->PrefixTableEntry); + ExFreePool(Fcb->FullName.Buffer); + ExFreePool(Fcb); + NpCheckForNotify(Dcb, TRUE, ListEntry); +} + +VOID +NTAPI +NpDeleteCcb(IN PNP_CCB Ccb, + IN PLIST_ENTRY ListEntry) +{ + PNP_ROOT_DCB_FCB RootDcbCcb; + PAGED_CODE(); + + RootDcbCcb = (PNP_ROOT_DCB_FCB)Ccb; + if ( Ccb->NodeType == NPFS_NTC_CCB ) + { + RemoveEntryList(&Ccb->CcbEntry); + --Ccb->Fcb->CurrentInstances; + + NpDeleteEventTableEntry(&NpVcb->EventTable, + Ccb->NonPagedCcb->EventBufferClient); + NpDeleteEventTableEntry(&NpVcb->EventTable, + Ccb->NonPagedCcb->EventBufferServer); + NpUninitializeDataQueue(&Ccb->InQueue); + NpUninitializeDataQueue(&Ccb->OutQueue); + NpCheckForNotify(Ccb->Fcb->ParentDcb, 0, ListEntry); + ExDeleteResourceLite(&Ccb->NonPagedCcb->Lock); + NpUninitializeSecurity(Ccb); + if ( Ccb->ClientSession ) + { + ExFreePool(Ccb->ClientSession); + Ccb->ClientSession = 0; + } + ExFreePool(Ccb->NonPagedCcb); + } + else if ( RootDcbCcb->NodeType == NPFS_NTC_ROOT_DCB_CCB && RootDcbCcb->Unknown) + { + ExFreePool(RootDcbCcb->Unknown); + } + + ExFreePool(Ccb); +} + +VOID +NTAPI +NpInitializeVcb(VOID) +{ + PAGED_CODE(); + + RtlZeroMemory(NpVcb, sizeof(*NpVcb)); + + NpVcb->NodeType = NPFS_NTC_VCB; + RtlInitializeUnicodePrefix(&NpVcb->PrefixTable); + ExInitializeResourceLite(&NpVcb->Lock); + RtlInitializeGenericTable(&NpVcb->EventTable, + NpEventTableCompareRoutine, + NpEventTableAllocate, + NpEventTableDeallocate, + 0); + NpInitializeWaitQueue(&NpVcb->WaitQueue); +} + +NTSTATUS +NTAPI +NpCreateRootDcbCcb(IN PNP_ROOT_DCB_FCB* NewRootCcb) +{ + PNP_ROOT_DCB_FCB RootCcb; + PAGED_CODE(); + + RootCcb = ExAllocatePoolWithTag(PagedPool, sizeof(*RootCcb), 'CFpN'); + if (!RootCcb) return STATUS_INSUFFICIENT_RESOURCES; + + RtlZeroMemory(RootCcb, sizeof(*RootCcb)); + RootCcb->NodeType = NPFS_NTC_ROOT_DCB_CCB; + *NewRootCcb = RootCcb; + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +NpCreateRootDcb(VOID) +{ + PNP_DCB Dcb; + PAGED_CODE(); + + if (NpVcb->RootDcb) + { + KeBugCheckEx(0x25, 0x1700F3, 0, 0, 0); + } + + NpVcb->RootDcb = ExAllocatePoolWithTag(PagedPool, sizeof(*Dcb), 'DFpN'); + if (!NpVcb->RootDcb) + { + return STATUS_INSUFFICIENT_RESOURCES; + } + + Dcb = NpVcb->RootDcb; + RtlZeroMemory(Dcb, sizeof(*Dcb)); + Dcb->NodeType = NPFS_NTC_ROOT_DCB; + + InitializeListHead(&Dcb->DcbEntry); + InitializeListHead(&Dcb->NotifyList); + InitializeListHead(&Dcb->NotifyList2); + InitializeListHead(&Dcb->FcbList); + + Dcb->FullName.Buffer = NpRootDCBName; + Dcb->FullName.Length = 2; + Dcb->FullName.MaximumLength = 4; + + Dcb->ShortName.Length = Dcb->FullName.Length; + Dcb->ShortName.MaximumLength = Dcb->FullName.MaximumLength; + Dcb->ShortName.Buffer = Dcb->FullName.Buffer; + + if (!RtlInsertUnicodePrefix(&NpVcb->PrefixTable, + &Dcb->FullName, + &Dcb->PrefixTableEntry)) + { + KeBugCheckEx(0x25u, 0x170128, 0, 0, 0); + } + + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +NpCreateFcb(IN PNP_DCB Dcb, + IN PUNICODE_STRING PipeName, + IN ULONG MaximumInstances, + IN LARGE_INTEGER Timeout, + IN USHORT NamedPipeConfiguration, + IN USHORT NamedPipeType, + OUT PNP_FCB *NewFcb) +{ + PNP_FCB Fcb; + BOOLEAN RootPipe; + PWCHAR NameBuffer; + ULONG BufferOffset; + USHORT PipeNameLength; + PAGED_CODE(); + + PipeNameLength = PipeName->Length; + + if ((PipeNameLength < sizeof(WCHAR)) || + ((PipeNameLength + sizeof(WCHAR)) < PipeNameLength) || + (PipeName->Buffer[0] != OBJ_NAME_PATH_SEPARATOR)) + { + return STATUS_INVALID_PARAMETER; + } + + RootPipe = FALSE; + if (PipeNameLength == sizeof(WCHAR)) + { + RootPipe = TRUE; + PipeNameLength += sizeof(WCHAR); + } + + Fcb = ExAllocatePoolWithTag(PagedPool, sizeof(*Fcb), 'FfpN'); + if (!Fcb) return STATUS_INSUFFICIENT_RESOURCES; + + RtlZeroMemory(Fcb, sizeof(*Fcb)); + Fcb->MaximumInstances = MaximumInstances; + Fcb->Timeout = Timeout; + Fcb->NodeType = NPFS_NTC_FCB; + Fcb->ParentDcb = Dcb; + InitializeListHead(&Fcb->CcbList); + + NameBuffer = ExAllocatePoolWithTag(PagedPool, + PipeName->Length + (RootPipe ? 4 : 2), + 'nFpN'); + if (!NameBuffer) + { + ExFreePool(Fcb); + return STATUS_INSUFFICIENT_RESOURCES; + } + + InsertTailList(&Dcb->FcbList, &Fcb->DcbEntry); + + BufferOffset = 0; + if (RootPipe) + { + *NameBuffer = OBJ_NAME_PATH_SEPARATOR; + BufferOffset = 1; + } + + RtlCopyMemory(NameBuffer + BufferOffset, PipeName->Buffer, PipeNameLength); + NameBuffer[BufferOffset + (PipeNameLength / sizeof(WCHAR))] = UNICODE_NULL; + + Fcb->FullName.Length = PipeNameLength - sizeof(WCHAR); + Fcb->FullName.MaximumLength = PipeNameLength; + Fcb->FullName.Buffer = NameBuffer; + + Fcb->ShortName.MaximumLength = PipeNameLength - sizeof(WCHAR); + Fcb->ShortName.Length = PipeNameLength - 2 * sizeof(WCHAR); + Fcb->ShortName.Buffer = NameBuffer + 1; + + if (!RtlInsertUnicodePrefix(&NpVcb->PrefixTable, + &Fcb->FullName, + &Fcb->PrefixTableEntry)) + { + KeBugCheckEx(NPFS_FILE_SYSTEM, 0x170222, 0, 0, 0); + } + + Fcb->NamedPipeConfiguration = NamedPipeConfiguration; + Fcb->NamedPipeType = NamedPipeType; + *NewFcb = Fcb; + return STATUS_SUCCESS; +} + +NTSTATUS +NTAPI +NpCreateCcb(IN PNP_FCB Fcb, + IN PFILE_OBJECT FileObject, + IN UCHAR State, + IN UCHAR ReadMode, + IN UCHAR CompletionMode, + IN ULONG InQuota, + IN ULONG OutQuota, + OUT PNP_CCB* NewCcb) +{ + PNP_CCB Ccb; + PNP_NONPAGED_CCB CcbNonPaged; + NTSTATUS Status; + PAGED_CODE(); + + Ccb = ExAllocatePoolWithTag(PagedPool, sizeof(*Ccb), 'cFpN'); + if (!Ccb) return STATUS_INSUFFICIENT_RESOURCES; + + CcbNonPaged = ExAllocatePoolWithTag(NonPagedPool, sizeof(*CcbNonPaged), 'cFpN'); + if (!CcbNonPaged) + { + ExFreePool(Ccb); + return STATUS_INSUFFICIENT_RESOURCES; + } + + RtlZeroMemory(CcbNonPaged, sizeof(*CcbNonPaged)); + CcbNonPaged->NodeType = NPFS_NTC_NONPAGED_CCB; + + RtlZeroMemory(Ccb, sizeof(*Ccb)); + Ccb->NodeType = NPFS_NTC_CCB; + Ccb->NonPagedCcb = CcbNonPaged; + Ccb->ServerFileObject = FileObject; + Ccb->Fcb = Fcb; + Ccb->NamedPipeState = State; + Ccb->ServerReadMode = ReadMode; + Ccb->ServerCompletionMode = CompletionMode; + + Status = NpInitializeDataQueue(&Ccb->InQueue, InQuota); + if (!NT_SUCCESS(Status)) + { + ExFreePool(CcbNonPaged); + ExFreePool(Ccb); + return STATUS_INSUFFICIENT_RESOURCES; + } + + Status = NpInitializeDataQueue(&Ccb->OutQueue, InQuota); + if (!NT_SUCCESS(Status)) + { + NpUninitializeDataQueue(&Ccb->InQueue); + ExFreePool(CcbNonPaged); + ExFreePool(Ccb); + return STATUS_INSUFFICIENT_RESOURCES; + } + + InsertTailList(&Fcb->CcbList, &Ccb->CcbEntry); + + InitializeListHead(&Ccb->IrpList); + ExInitializeResourceLite(&Ccb->NonPagedCcb->Lock); + *NewCcb = Ccb; + return STATUS_SUCCESS; +} + Propchange: trunk/reactos/drivers/filesystems/npfs_new/strucsup.c ------------------------------------------------------------------------------ svn:eol-style = native Added: trunk/reactos/drivers/filesystems/npfs_new/waitsup.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/npfs_n…
============================================================================== --- trunk/reactos/drivers/filesystems/npfs_new/waitsup.c (added) +++ trunk/reactos/drivers/filesystems/npfs_new/waitsup.c [iso-8859-1] Sat Sep 7 15:32:29 2013 @@ -0,0 +1,35 @@ +#include "npfs.h" + +VOID +NTAPI +NpInitializeWaitQueue(IN PNP_WAIT_QUEUE WaitQueue) +{ + InitializeListHead(&WaitQueue->WaitList); + KeInitializeSpinLock(&WaitQueue->WaitLock); +} + +NTSTATUS +NTAPI +NpCancelWaiter(IN PNP_WAIT_QUEUE WaitQueue, + IN PUNICODE_STRING PipeName, + IN NTSTATUS Status, + IN PLIST_ENTRY ListEntry) +{ + UNICODE_STRING DestinationString; + KIRQL OldIrql; + PWCHAR Buffer; + + Buffer = ExAllocatePoolWithTag(NonPagedPool, PipeName->Length,'tFpN'); + if (!Buffer) return STATUS_INSUFFICIENT_RESOURCES; + + RtlInitEmptyUnicodeString(&DestinationString, Buffer, PipeName->Length); + RtlUpcaseUnicodeString(&DestinationString, PipeName, FALSE); + + OldIrql = KfAcquireSpinLock(&WaitQueue->WaitLock); + + ASSERT(IsListEmpty(&WaitQueue->WaitList) == TRUE); + + KfReleaseSpinLock(&WaitQueue->WaitLock, OldIrql); + ExFreePool(DestinationString.Buffer); + return STATUS_SUCCESS; +} Propchange: trunk/reactos/drivers/filesystems/npfs_new/waitsup.c ------------------------------------------------------------------------------ svn:eol-style = native
11 years, 3 months
1
0
0
0
[aandrejevic] 59995: [SOFT386] Add the instructions implemented in the previous commit to the opcode table.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Thu Sep 5 23:50:42 2013 New Revision: 59995 URL:
http://svn.reactos.org/svn/reactos?rev=59995&view=rev
Log: [SOFT386] Add the instructions implemented in the previous commit to the opcode table. Modified: branches/ntvdm/lib/soft386/opcodes.c Modified: branches/ntvdm/lib/soft386/opcodes.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.c?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] Thu Sep 5 23:50:42 2013 @@ -156,10 +156,10 @@ NULL, // TODO: OPCODE 0x81 NOT SUPPORTED NULL, // TODO: OPCODE 0x82 NOT SUPPORTED NULL, // TODO: OPCODE 0x83 NOT SUPPORTED - NULL, // TODO: OPCODE 0x84 NOT SUPPORTED - NULL, // TODO: OPCODE 0x85 NOT SUPPORTED - NULL, // TODO: OPCODE 0x86 NOT SUPPORTED - NULL, // TODO: OPCODE 0x87 NOT SUPPORTED + Soft386OpcodeTestByteModrm, + Soft386OpcodeTestModrm, + Soft386OpcodeXchgByteModrm, + Soft386OpcodeXchgModrm, NULL, // TODO: OPCODE 0x88 NOT SUPPORTED NULL, // TODO: OPCODE 0x89 NOT SUPPORTED NULL, // TODO: OPCODE 0x8A NOT SUPPORTED
11 years, 3 months
1
0
0
0
[aandrejevic] 59994: [SOFT386] Implement the TEST instruction, and the XCHG instruction which uses MOD-REG-R/M for operands.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Thu Sep 5 23:48:07 2013 New Revision: 59994 URL:
http://svn.reactos.org/svn/reactos?rev=59994&view=rev
Log: [SOFT386] Implement the TEST instruction, and the XCHG instruction which uses MOD-REG-R/M for operands. Modified: branches/ntvdm/lib/soft386/opcodes.c branches/ntvdm/lib/soft386/opcodes.h Modified: branches/ntvdm/lib/soft386/opcodes.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.c?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] Thu Sep 5 23:48:07 2013 @@ -2290,3 +2290,323 @@ return TRUE; } + +SOFT386_OPCODE_HANDLER(Soft386OpcodeTestByteModrm) +{ + UCHAR FirstValue, SecondValue, Result; + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x84); + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the size */ + AddressSize = !AddressSize; + } + else if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + if (!Soft386ReadModrmByteOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* The result is discarded */ + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeTestModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x85); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + } + else + { + USHORT FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + } + + /* The result is discarded */ + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXchgByteModrm) +{ + UCHAR FirstValue, SecondValue; + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x86); + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the size */ + AddressSize = !AddressSize; + } + else if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + if (!Soft386ReadModrmByteOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the register to the R/M */ + if (!Soft386WriteModrmByteOperands(State, + &ModRegRm, + FALSE, + FirstValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the R/M to the register */ + if (!Soft386WriteModrmByteOperands(State, + &ModRegRm, + TRUE, + SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXchgModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x87); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the register to the R/M */ + if (!Soft386WriteModrmDwordOperands(State, + &ModRegRm, + FALSE, + FirstValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the R/M to the register */ + if (!Soft386WriteModrmDwordOperands(State, + &ModRegRm, + TRUE, + SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + } + else + { + USHORT FirstValue, SecondValue; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the register to the R/M */ + if (!Soft386WriteModrmWordOperands(State, + &ModRegRm, + FALSE, + FirstValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Write the value from the R/M to the register */ + if (!Soft386WriteModrmWordOperands(State, + &ModRegRm, + TRUE, + SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + } + + /* The result is discarded */ + return TRUE; +} Modified: branches/ntvdm/lib/soft386/opcodes.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.h?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] Thu Sep 5 23:48:07 2013 @@ -66,5 +66,9 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeXorModrm); SOFT386_OPCODE_HANDLER(Soft386OpcodeXorAl); SOFT386_OPCODE_HANDLER(Soft386OpcodeXorEax); +SOFT386_OPCODE_HANDLER(Soft386OpcodeTestByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeTestModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXchgByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXchgModrm); #endif // _OPCODES_H_
11 years, 3 months
1
0
0
0
[hbelusca] 59993: [SOFT386]: Fix build (addendum to revision 59990).
by hbelusca@svn.reactos.org
Author: hbelusca Date: Wed Sep 4 20:40:43 2013 New Revision: 59993 URL:
http://svn.reactos.org/svn/reactos?rev=59993&view=rev
Log: [SOFT386]: Fix build (addendum to revision 59990). Modified: branches/ntvdm/lib/soft386/common.c Modified: branches/ntvdm/lib/soft386/common.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/common.c?rev=…
============================================================================== --- branches/ntvdm/lib/soft386/common.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/common.c [iso-8859-1] Wed Sep 4 20:40:43 2013 @@ -1243,7 +1243,7 @@ inline BOOLEAN -Soft386WriteModrnDwordOperands(PSOFT386_STATE State, +Soft386WriteModrmDwordOperands(PSOFT386_STATE State, PSOFT386_MOD_REG_RM ModRegRm, BOOLEAN WriteRegister, ULONG Value)
11 years, 3 months
1
0
0
0
[tfaber] 59992: [KERNEL32] - Fix LoaderLock assert in TerminateThread. Spotted by Amine
by tfaber@svn.reactos.org
Author: tfaber Date: Wed Sep 4 19:53:59 2013 New Revision: 59992 URL:
http://svn.reactos.org/svn/reactos?rev=59992&view=rev
Log: [KERNEL32] - Fix LoaderLock assert in TerminateThread. Spotted by Amine Modified: trunk/reactos/dll/win32/kernel32/client/thread.c Modified: trunk/reactos/dll/win32/kernel32/client/thread.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/…
============================================================================== --- trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/thread.c [iso-8859-1] Wed Sep 4 19:53:59 2013 @@ -571,8 +571,10 @@ IN DWORD dwExitCode) { NTSTATUS Status; +#if DBG PRTL_CRITICAL_SECTION LoaderLock; THREAD_BASIC_INFORMATION ThreadInfo; +#endif /* DBG */ /* Check for invalid thread handle */ if (!hThread) @@ -582,6 +584,7 @@ return FALSE; } +#if DBG /* Get the loader lock */ LoaderLock = NtCurrentPeb()->LoaderLock; if (LoaderLock) @@ -592,13 +595,14 @@ &ThreadInfo, sizeof(ThreadInfo), NULL); - if (!NT_SUCCESS(Status)) - { - /* Assert that we don't hold the loader lock */ - ASSERT(NtCurrentTeb()->ClientId.UniqueThread != ThreadInfo.ClientId.UniqueThread); - ASSERT(NtCurrentTeb()->ClientId.UniqueThread != LoaderLock->OwningThread); - } - } + if (NT_SUCCESS(Status)) + { + /* If terminating the current thread, we must not hold the loader lock */ + if (NtCurrentTeb()->ClientId.UniqueThread == ThreadInfo.ClientId.UniqueThread) + ASSERT(NtCurrentTeb()->ClientId.UniqueThread != LoaderLock->OwningThread); + } + } +#endif /* DBG */ /* Now terminate the thread */ Status = NtTerminateThread(hThread, dwExitCode);
11 years, 3 months
1
0
0
0
[aandrejevic] 59991: [SOFT386] Implement the OR, AND and XOR instructions.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Wed Sep 4 18:28:58 2013 New Revision: 59991 URL:
http://svn.reactos.org/svn/reactos?rev=59991&view=rev
Log: [SOFT386] Implement the OR, AND and XOR instructions. Modified: branches/ntvdm/lib/soft386/opcodes.c branches/ntvdm/lib/soft386/opcodes.h Modified: branches/ntvdm/lib/soft386/opcodes.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.c?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] Wed Sep 4 18:28:58 2013 @@ -32,12 +32,12 @@ Soft386OpcodeAddEax, NULL, // TODO: OPCODE 0x06 NOT SUPPORTED NULL, // TODO: OPCODE 0x07 NOT SUPPORTED - NULL, // TODO: OPCODE 0x08 NOT SUPPORTED - NULL, // TODO: OPCODE 0x09 NOT SUPPORTED - NULL, // TODO: OPCODE 0x0A NOT SUPPORTED - NULL, // TODO: OPCODE 0x0B NOT SUPPORTED - NULL, // TODO: OPCODE 0x0C NOT SUPPORTED - NULL, // TODO: OPCODE 0x0D NOT SUPPORTED + Soft386OpcodeOrByteModrm, + Soft386OpcodeOrModrm, + Soft386OpcodeOrByteModrm, + Soft386OpcodeOrModrm, + Soft386OpcodeOrAl, + Soft386OpcodeOrEax, NULL, // TODO: OPCODE 0x0E NOT SUPPORTED NULL, // TODO: OPCODE 0x0F NOT SUPPORTED NULL, // TODO: OPCODE 0x10 NOT SUPPORTED @@ -56,12 +56,12 @@ NULL, // TODO: OPCODE 0x1D NOT SUPPORTED NULL, // TODO: OPCODE 0x1E NOT SUPPORTED NULL, // TODO: OPCODE 0x1F NOT SUPPORTED - NULL, // TODO: OPCODE 0x20 NOT SUPPORTED - NULL, // TODO: OPCODE 0x21 NOT SUPPORTED - NULL, // TODO: OPCODE 0x22 NOT SUPPORTED - NULL, // TODO: OPCODE 0x23 NOT SUPPORTED - NULL, // TODO: OPCODE 0x24 NOT SUPPORTED - NULL, // TODO: OPCODE 0x25 NOT SUPPORTED + Soft386OpcodeAndByteModrm, + Soft386OpcodeAndModrm, + Soft386OpcodeAndByteModrm, + Soft386OpcodeAndModrm, + Soft386OpcodeAndAl, + Soft386OpcodeAndEax, Soft386OpcodePrefix, NULL, // TODO: OPCODE 0x27 NOT SUPPORTED NULL, // TODO: OPCODE 0x28 NOT SUPPORTED @@ -72,12 +72,12 @@ NULL, // TODO: OPCODE 0x2D NOT SUPPORTED Soft386OpcodePrefix, NULL, // TODO: OPCODE 0x2F NOT SUPPORTED - NULL, // TODO: OPCODE 0x30 NOT SUPPORTED - NULL, // TODO: OPCODE 0x31 NOT SUPPORTED - NULL, // TODO: OPCODE 0x32 NOT SUPPORTED - NULL, // TODO: OPCODE 0x33 NOT SUPPORTED - NULL, // TODO: OPCODE 0x34 NOT SUPPORTED - NULL, // TODO: OPCODE 0x35 NOT SUPPORTED + Soft386OpcodeXorByteModrm, + Soft386OpcodeXorModrm, + Soft386OpcodeXorByteModrm, + Soft386OpcodeXorModrm, + Soft386OpcodeXorAl, + Soft386OpcodeXorEax, Soft386OpcodePrefix, NULL, // TODO: OPCODE 0x37 NOT SUPPORTED NULL, // TODO: OPCODE 0x38 NOT SUPPORTED @@ -282,6 +282,8 @@ NULL, // TODO: OPCODE 0xFF NOT SUPPORTED }; +/* PUBLIC FUNCTIONS ***********************************************************/ + SOFT386_OPCODE_HANDLER(Soft386OpcodePrefix) { BOOLEAN Valid = FALSE; @@ -1490,3 +1492,801 @@ return TRUE; } + +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrByteModrm) +{ + UCHAR FirstValue, SecondValue, Result; + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x08); + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the size */ + AddressSize = !AddressSize; + } + else if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + if (!Soft386ReadModrmByteOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmByteOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x09); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmDwordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } + else + { + USHORT FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmWordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrAl) +{ + UCHAR FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowByte; + UCHAR SecondValue, Result; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x0C); + + if (State->PrefixFlags) + { + /* This opcode doesn't take any prefixes */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (!Soft386FetchByte(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowByte = Result; + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrEax) +{ + BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x0D); + + if (State->PrefixFlags == SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the size */ + Size = !Size; + } + else + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (Size) + { + ULONG FirstValue = State->GeneralRegs[SOFT386_REG_EAX].Long; + ULONG SecondValue, Result; + + if (!Soft386FetchDword(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].Long = Result; + } + else + { + USHORT FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowWord; + USHORT SecondValue, Result; + + if (!Soft386FetchWord(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue | SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowWord = Result; + } + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndByteModrm) +{ + UCHAR FirstValue, SecondValue, Result; + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x20); + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the size */ + AddressSize = !AddressSize; + } + else if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + if (!Soft386ReadModrmByteOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmByteOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x21); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmDwordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } + else + { + USHORT FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmWordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndAl) +{ + UCHAR FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowByte; + UCHAR SecondValue, Result; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x24); + + if (State->PrefixFlags) + { + /* This opcode doesn't take any prefixes */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (!Soft386FetchByte(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowByte = Result; + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndEax) +{ + BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x25); + + if (State->PrefixFlags == SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the size */ + Size = !Size; + } + else + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (Size) + { + ULONG FirstValue = State->GeneralRegs[SOFT386_REG_EAX].Long; + ULONG SecondValue, Result; + + if (!Soft386FetchDword(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].Long = Result; + } + else + { + USHORT FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowWord; + USHORT SecondValue, Result; + + if (!Soft386FetchWord(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue & SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowWord = Result; + } + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorByteModrm) +{ + UCHAR FirstValue, SecondValue, Result; + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x30); + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the size */ + AddressSize = !AddressSize; + } + else if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + if (!Soft386ReadModrmByteOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmByteOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x31); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmDwordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } + else + { + USHORT FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmWordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorAl) +{ + UCHAR FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowByte; + UCHAR SecondValue, Result; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x34); + + if (State->PrefixFlags) + { + /* This opcode doesn't take any prefixes */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (!Soft386FetchByte(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowByte = Result; + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorEax) +{ + BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x35); + + if (State->PrefixFlags == SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the size */ + Size = !Size; + } + else + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (Size) + { + ULONG FirstValue = State->GeneralRegs[SOFT386_REG_EAX].Long; + ULONG SecondValue, Result; + + if (!Soft386FetchDword(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].Long = Result; + } + else + { + USHORT FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowWord; + USHORT SecondValue, Result; + + if (!Soft386FetchWord(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue ^ SecondValue; + + /* Update the flags */ + State->Flags.Cf = FALSE; + State->Flags.Of = FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowWord = Result; + } + + return TRUE; +} Modified: branches/ntvdm/lib/soft386/opcodes.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.h?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] Wed Sep 4 18:28:58 2013 @@ -54,5 +54,17 @@ SOFT386_OPCODE_HANDLER(Soft386OpcodeAddModrm); SOFT386_OPCODE_HANDLER(Soft386OpcodeAddAl); SOFT386_OPCODE_HANDLER(Soft386OpcodeAddEax); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrAl); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOrEax); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndAl); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAndEax); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorAl); +SOFT386_OPCODE_HANDLER(Soft386OpcodeXorEax); #endif // _OPCODES_H_
11 years, 3 months
1
0
0
0
[aandrejevic] 59990: [SOFT386] Fix a typo. Use a macro (SOFT386_OPCODE_HANDLER) for function definitions of opcode handlers. Implement the rest of the ADD opcodes.
by aandrejevic@svn.reactos.org
Author: aandrejevic Date: Wed Sep 4 16:36:39 2013 New Revision: 59990 URL:
http://svn.reactos.org/svn/reactos?rev=59990&view=rev
Log: [SOFT386] Fix a typo. Use a macro (SOFT386_OPCODE_HANDLER) for function definitions of opcode handlers. Implement the rest of the ADD opcodes. Modified: branches/ntvdm/lib/soft386/common.h branches/ntvdm/lib/soft386/opcodes.c branches/ntvdm/lib/soft386/opcodes.h Modified: branches/ntvdm/lib/soft386/common.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/common.h?rev=…
============================================================================== --- branches/ntvdm/lib/soft386/common.h [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/common.h [iso-8859-1] Wed Sep 4 16:36:39 2013 @@ -201,7 +201,7 @@ inline BOOLEAN -Soft386WriteModrnDwordOperands +Soft386WriteModrmDwordOperands ( PSOFT386_STATE State, PSOFT386_MOD_REG_RM ModRegRm, Modified: branches/ntvdm/lib/soft386/opcodes.c URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.c?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.c [iso-8859-1] Wed Sep 4 16:36:39 2013 @@ -24,12 +24,12 @@ SOFT386_OPCODE_HANDLER_PROC Soft386OpcodeHandlers[SOFT386_NUM_OPCODE_HANDLERS] = { - Soft386OpcodeAddByteModrm, // TODO: OPCODE 0x00 NOT SUPPORTED - NULL, // TODO: OPCODE 0x01 NOT SUPPORTED - Soft386OpcodeAddByteModrm, // TODO: OPCODE 0x02 NOT SUPPORTED - NULL, // TODO: OPCODE 0x03 NOT SUPPORTED - NULL, // TODO: OPCODE 0x04 NOT SUPPORTED - NULL, // TODO: OPCODE 0x05 NOT SUPPORTED + Soft386OpcodeAddByteModrm, + Soft386OpcodeAddModrm, + Soft386OpcodeAddByteModrm, + Soft386OpcodeAddModrm, + Soft386OpcodeAddAl, + Soft386OpcodeAddEax, NULL, // TODO: OPCODE 0x06 NOT SUPPORTED NULL, // TODO: OPCODE 0x07 NOT SUPPORTED NULL, // TODO: OPCODE 0x08 NOT SUPPORTED @@ -282,9 +282,7 @@ NULL, // TODO: OPCODE 0xFF NOT SUPPORTED }; -BOOLEAN -FASTCALL -Soft386OpcodePrefix(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodePrefix) { BOOLEAN Valid = FALSE; @@ -445,9 +443,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeIncrement(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeIncrement) { ULONG Value; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -490,9 +486,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeDecrement(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeDecrement) { ULONG Value; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -535,9 +529,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodePushReg(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodePushReg) { if ((State->PrefixFlags != SOFT386_PREFIX_OPSIZE) && (State->PrefixFlags != 0)) @@ -554,9 +546,7 @@ return Soft386StackPush(State, State->GeneralRegs[Opcode & 0x07].Long); } -BOOLEAN -FASTCALL -Soft386OpcodePopReg(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodePopReg) { ULONG Value; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_SS].Size; @@ -587,9 +577,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeNop(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeNop) { if (State->PrefixFlags & ~(SOFT386_PREFIX_OPSIZE | SOFT386_PREFIX_REP)) { @@ -607,9 +595,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeExchangeEax(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeExchangeEax) { INT Reg = Opcode & 0x07; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -650,9 +636,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeShortConditionalJmp(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeShortConditionalJmp) { BOOLEAN Jump = FALSE; CHAR Offset = 0; @@ -742,9 +726,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeClearCarry(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearCarry) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xF8); @@ -761,9 +743,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeSetCarry(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetCarry) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xF9); @@ -780,9 +760,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeComplCarry(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeComplCarry) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xF5); @@ -799,9 +777,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeClearInt(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearInt) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xFA); @@ -839,9 +815,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeSetInt(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetInt) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xFB); @@ -879,9 +853,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeClearDir(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearDir) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xFC); @@ -898,9 +870,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeSetDir(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetDir) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xFD); @@ -917,9 +887,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeHalt(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeHalt) { /* Make sure this is the right instruction */ ASSERT(Opcode == 0xF4); @@ -945,9 +913,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeInByte(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeInByte) { UCHAR Data; ULONG Port; @@ -982,9 +948,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeIn(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeIn) { ULONG Port; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -1048,9 +1012,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeOutByte(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeOutByte) { UCHAR Data; ULONG Port; @@ -1085,9 +1047,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeOut(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeOut) { ULONG Port; BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -1147,9 +1107,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeShortJump(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeShortJump) { CHAR Offset = 0; @@ -1169,9 +1127,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeMovRegImm(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeMovRegImm) { BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; @@ -1222,9 +1178,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeMovByteRegImm(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeMovByteRegImm) { UCHAR Value; @@ -1259,9 +1213,7 @@ return TRUE; } -BOOLEAN -FASTCALL -Soft386OpcodeAddByteModrm(PSOFT386_STATE State, UCHAR Opcode) +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddByteModrm) { UCHAR FirstValue, SecondValue, Result; SOFT386_MOD_REG_RM ModRegRm; @@ -1319,3 +1271,222 @@ Opcode & SOFT386_OPCODE_WRITE_REG, Result); } + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddModrm) +{ + SOFT386_MOD_REG_RM ModRegRm; + BOOLEAN OperandSize, AddressSize; + + /* Make sure this is the right instruction */ + ASSERT((Opcode & 0xFD) == 0x01); + + OperandSize = AddressSize = State->SegmentRegs[SOFT386_REG_CS].Size; + + if (State->PrefixFlags & SOFT386_PREFIX_ADSIZE) + { + /* The ADSIZE prefix toggles the address size */ + AddressSize = !AddressSize; + } + + if (State->PrefixFlags & SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the operand size */ + OperandSize = !OperandSize; + } + + if (State->PrefixFlags + & ~(SOFT386_PREFIX_ADSIZE + | SOFT386_PREFIX_OPSIZE + | SOFT386_PREFIX_SEG + | SOFT386_PREFIX_LOCK)) + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + /* Get the operands */ + if (!Soft386ParseModRegRm(State, AddressSize, &ModRegRm)) + { + /* Exception occurred */ + return FALSE; + } + + /* Check the operand size */ + if (OperandSize) + { + ULONG FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmDwordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue + SecondValue; + + /* Update the flags */ + State->Flags.Cf = (Result < FirstValue) && (Result < SecondValue); + State->Flags.Of = ((FirstValue & SIGN_FLAG_LONG) == (SecondValue & SIGN_FLAG_LONG)) + && ((FirstValue & SIGN_FLAG_LONG) != (Result & SIGN_FLAG_LONG)); + State->Flags.Af = (((FirstValue & 0x0F) + (SecondValue & 0x0F)) & 0x10) ? TRUE : FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmDwordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } + else + { + USHORT FirstValue, SecondValue, Result; + + if (!Soft386ReadModrmWordOperands(State, + &ModRegRm, + &FirstValue, + &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue + SecondValue; + + /* Update the flags */ + State->Flags.Cf = (Result < FirstValue) && (Result < SecondValue); + State->Flags.Of = ((FirstValue & SIGN_FLAG_WORD) == (SecondValue & SIGN_FLAG_WORD)) + && ((FirstValue & SIGN_FLAG_WORD) != (Result & SIGN_FLAG_WORD)); + State->Flags.Af = (((FirstValue & 0x0F) + (SecondValue & 0x0F)) & 0x10) ? TRUE : FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + return Soft386WriteModrmWordOperands(State, + &ModRegRm, + Opcode & SOFT386_OPCODE_WRITE_REG, + Result); + } +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddAl) +{ + UCHAR FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowByte; + UCHAR SecondValue, Result; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x04); + + if (State->PrefixFlags) + { + /* This opcode doesn't take any prefixes */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (!Soft386FetchByte(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue + SecondValue; + + /* Update the flags */ + State->Flags.Cf = (Result < FirstValue) && (Result < SecondValue); + State->Flags.Of = ((FirstValue & SIGN_FLAG_BYTE) == (SecondValue & SIGN_FLAG_BYTE)) + && ((FirstValue & SIGN_FLAG_BYTE) != (Result & SIGN_FLAG_BYTE)); + State->Flags.Af = (((FirstValue & 0x0F) + (SecondValue & 0x0F)) & 0x10) ? TRUE : FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_BYTE) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowByte = Result; + + return TRUE; +} + +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddEax) +{ + BOOLEAN Size = State->SegmentRegs[SOFT386_REG_CS].Size; + + /* Make sure this is the right instruction */ + ASSERT(Opcode == 0x05); + + if (State->PrefixFlags == SOFT386_PREFIX_OPSIZE) + { + /* The OPSIZE prefix toggles the size */ + Size = !Size; + } + else + { + /* Invalid prefix */ + Soft386Exception(State, SOFT386_EXCEPTION_UD); + return FALSE; + } + + if (Size) + { + ULONG FirstValue = State->GeneralRegs[SOFT386_REG_EAX].Long; + ULONG SecondValue, Result; + + if (!Soft386FetchDword(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue + SecondValue; + + /* Update the flags */ + State->Flags.Cf = (Result < FirstValue) && (Result < SecondValue); + State->Flags.Of = ((FirstValue & SIGN_FLAG_LONG) == (SecondValue & SIGN_FLAG_LONG)) + && ((FirstValue & SIGN_FLAG_LONG) != (Result & SIGN_FLAG_LONG)); + State->Flags.Af = (((FirstValue & 0x0F) + (SecondValue & 0x0F)) & 0x10) ? TRUE : FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_LONG) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].Long = Result; + } + else + { + USHORT FirstValue = State->GeneralRegs[SOFT386_REG_EAX].LowWord; + USHORT SecondValue, Result; + + if (!Soft386FetchWord(State, &SecondValue)) + { + /* Exception occurred */ + return FALSE; + } + + /* Calculate the result */ + Result = FirstValue + SecondValue; + + /* Update the flags */ + State->Flags.Cf = (Result < FirstValue) && (Result < SecondValue); + State->Flags.Of = ((FirstValue & SIGN_FLAG_WORD) == (SecondValue & SIGN_FLAG_WORD)) + && ((FirstValue & SIGN_FLAG_WORD) != (Result & SIGN_FLAG_WORD)); + State->Flags.Af = (((FirstValue & 0x0F) + (SecondValue & 0x0F)) & 0x10) ? TRUE : FALSE; + State->Flags.Zf = (Result == 0) ? TRUE : FALSE; + State->Flags.Sf = (Result & SIGN_FLAG_WORD) ? TRUE : FALSE; + State->Flags.Pf = Soft386CalculateParity(Result); + + /* Write back the result */ + State->GeneralRegs[SOFT386_REG_EAX].LowWord = Result; + } + + return TRUE; +} Modified: branches/ntvdm/lib/soft386/opcodes.h URL:
http://svn.reactos.org/svn/reactos/branches/ntvdm/lib/soft386/opcodes.h?rev…
============================================================================== --- branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] (original) +++ branches/ntvdm/lib/soft386/opcodes.h [iso-8859-1] Wed Sep 4 16:36:39 2013 @@ -17,6 +17,9 @@ #define SOFT386_NUM_OPCODE_HANDLERS 256 #define SOFT386_OPCODE_WRITE_REG (1 << 1) +#define SOFT386_OPCODE_HANDLER(x) BOOLEAN\ + FASTCALL\ + (x)(PSOFT386_STATE State, UCHAR Opcode) typedef BOOLEAN (FASTCALL *SOFT386_OPCODE_HANDLER_PROC)(PSOFT386_STATE, UCHAR); @@ -24,196 +27,32 @@ SOFT386_OPCODE_HANDLER_PROC Soft386OpcodeHandlers[SOFT386_NUM_OPCODE_HANDLERS]; -BOOLEAN -FASTCALL -Soft386OpcodePrefix -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeIncrement -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeDecrement -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodePushReg -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodePopReg -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeNop -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeExchangeEax -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeShortConditionalJmp -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeClearCarry -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeSetCarry -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeComplCarry -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeClearInt -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeSetInt -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeClearDir -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeSetDir -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeHalt -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeInByte -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeIn -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeOutByte -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeOut -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeShortJump -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeMovRegImm -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeMovByteRegImm -( - PSOFT386_STATE State, - UCHAR Opcode -); - -BOOLEAN -FASTCALL -Soft386OpcodeAddByteModrm -( - PSOFT386_STATE State, - UCHAR Opcode -); +SOFT386_OPCODE_HANDLER(Soft386OpcodePrefix); +SOFT386_OPCODE_HANDLER(Soft386OpcodeIncrement); +SOFT386_OPCODE_HANDLER(Soft386OpcodeDecrement); +SOFT386_OPCODE_HANDLER(Soft386OpcodePushReg); +SOFT386_OPCODE_HANDLER(Soft386OpcodePopReg); +SOFT386_OPCODE_HANDLER(Soft386OpcodeNop); +SOFT386_OPCODE_HANDLER(Soft386OpcodeExchangeEax); +SOFT386_OPCODE_HANDLER(Soft386OpcodeShortConditionalJmp); +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearCarry); +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetCarry); +SOFT386_OPCODE_HANDLER(Soft386OpcodeComplCarry); +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearInt); +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetInt); +SOFT386_OPCODE_HANDLER(Soft386OpcodeClearDir); +SOFT386_OPCODE_HANDLER(Soft386OpcodeSetDir); +SOFT386_OPCODE_HANDLER(Soft386OpcodeHalt); +SOFT386_OPCODE_HANDLER(Soft386OpcodeInByte); +SOFT386_OPCODE_HANDLER(Soft386OpcodeIn); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOutByte); +SOFT386_OPCODE_HANDLER(Soft386OpcodeOut); +SOFT386_OPCODE_HANDLER(Soft386OpcodeShortJump); +SOFT386_OPCODE_HANDLER(Soft386OpcodeMovRegImm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeMovByteRegImm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddByteModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddModrm); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddAl); +SOFT386_OPCODE_HANDLER(Soft386OpcodeAddEax); #endif // _OPCODES_H_
11 years, 3 months
1
0
0
0
[akhaldi] 59989: [README.WINE] * Update bcrypt and clusapi sync states.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Wed Sep 4 15:28:22 2013 New Revision: 59989 URL:
http://svn.reactos.org/svn/reactos?rev=59989&view=rev
Log: [README.WINE] * Update bcrypt and clusapi sync states. Modified: trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Wed Sep 4 15:28:22 2013 @@ -45,10 +45,10 @@ reactos/dll/win32/atl # Synced to Wine-1.5.19 reactos/dll/win32/atl100 # Synced to Wine-1.5.19 reactos/dll/win32/avifil32 # Synced to Wine-1.5.26 -reactos/dll/win32/bcrypt # Synced to Wine-1.5.19 +reactos/dll/win32/bcrypt # Synced to Wine-1.5.26 reactos/dll/win32/browseui # Out of sync reactos/dll/win32/cabinet # Synced to Wine-1.5.26 -reactos/dll/win32/clusapi # Synced to Wine-1.5.19 +reactos/dll/win32/clusapi # Synced to Wine-1.5.26 reactos/dll/win32/comcat # Synced to Wine-1.5.4 reactos/dll/win32/comctl32 # Synced to Wine 1.5.26 reactos/dll/win32/comdlg32 # Synced to Wine 1.3.37
11 years, 3 months
1
0
0
0
[akhaldi] 59988: [JSCRIPT] * Move the resource files to the lang folder.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Wed Sep 4 12:27:18 2013 New Revision: 59988 URL:
http://svn.reactos.org/svn/reactos?rev=59988&view=rev
Log: [JSCRIPT] * Move the resource files to the lang folder. Added: trunk/reactos/dll/win32/jscript/lang/ (with props) trunk/reactos/dll/win32/jscript/lang/jscript_Da.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Da.rc trunk/reactos/dll/win32/jscript/lang/jscript_De.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_De.rc trunk/reactos/dll/win32/jscript/lang/jscript_En.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_En.rc trunk/reactos/dll/win32/jscript/lang/jscript_Es.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Es.rc trunk/reactos/dll/win32/jscript/lang/jscript_Fr.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Fr.rc trunk/reactos/dll/win32/jscript/lang/jscript_He.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_He.rc trunk/reactos/dll/win32/jscript/lang/jscript_Hu.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Hu.rc trunk/reactos/dll/win32/jscript/lang/jscript_It.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_It.rc trunk/reactos/dll/win32/jscript/lang/jscript_Ja.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Ja.rc trunk/reactos/dll/win32/jscript/lang/jscript_Ko.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Ko.rc trunk/reactos/dll/win32/jscript/lang/jscript_Lt.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Lt.rc trunk/reactos/dll/win32/jscript/lang/jscript_Nl.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Nl.rc trunk/reactos/dll/win32/jscript/lang/jscript_No.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_No.rc trunk/reactos/dll/win32/jscript/lang/jscript_Pl.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Pl.rc trunk/reactos/dll/win32/jscript/lang/jscript_Pt.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Pt.rc trunk/reactos/dll/win32/jscript/lang/jscript_Ro.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Ro.rc trunk/reactos/dll/win32/jscript/lang/jscript_Ru.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Ru.rc trunk/reactos/dll/win32/jscript/lang/jscript_Si.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Si.rc trunk/reactos/dll/win32/jscript/lang/jscript_Uk.rc - copied unchanged from r59967, trunk/reactos/dll/win32/jscript/jscript_Uk.rc Removed: trunk/reactos/dll/win32/jscript/jscript_Da.rc trunk/reactos/dll/win32/jscript/jscript_De.rc trunk/reactos/dll/win32/jscript/jscript_En.rc trunk/reactos/dll/win32/jscript/jscript_Es.rc trunk/reactos/dll/win32/jscript/jscript_Fr.rc trunk/reactos/dll/win32/jscript/jscript_He.rc trunk/reactos/dll/win32/jscript/jscript_Hu.rc trunk/reactos/dll/win32/jscript/jscript_It.rc trunk/reactos/dll/win32/jscript/jscript_Ja.rc trunk/reactos/dll/win32/jscript/jscript_Ko.rc trunk/reactos/dll/win32/jscript/jscript_Lt.rc trunk/reactos/dll/win32/jscript/jscript_Nl.rc trunk/reactos/dll/win32/jscript/jscript_No.rc trunk/reactos/dll/win32/jscript/jscript_Pl.rc trunk/reactos/dll/win32/jscript/jscript_Pt.rc trunk/reactos/dll/win32/jscript/jscript_Ro.rc trunk/reactos/dll/win32/jscript/jscript_Ru.rc trunk/reactos/dll/win32/jscript/jscript_Si.rc trunk/reactos/dll/win32/jscript/jscript_Uk.rc Modified: trunk/reactos/dll/win32/jscript/rsrc.rc Removed: trunk/reactos/dll/win32/jscript/jscript_Da.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Da.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Da.rc (removed) @@ -1,50 +0,0 @@ -/* - * Copyright 2010 Thomas Larsen - * Paul Vriens - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_DANISH, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Fejl ved konvertering af objekt til primitiv type" - IDS_INVALID_CALL_ARG "Ugyldig procedure kald eller argument" - IDS_CREATE_OBJ_ERROR "Automations-serveren kan ikke oprette objektet" - IDS_NO_PROPERTY "Objektet understøtter ikke denne egenskab eller metode" - IDS_ARG_NOT_OPT "Argument ikke valgfrit" - IDS_SYNTAX_ERROR "Syntaksfejl" - IDS_SEMICOLON "Forventet ';'" - IDS_LBRACKET "Forventet '('" - IDS_RBRACKET "Forventet ')'" - IDS_UNTERMINATED_STR "Uafsluttet streng konstant" - IDS_NOT_FUNC "Funktion forventet" - IDS_NOT_DATE "[objekt]' er ikke en dato objekt" - IDS_NOT_NUM "Nummer forventet" - IDS_OBJECT_EXPECTED "objekt forventet" - IDS_ILLEGAL_ASSIGN "Ulovlig tildeling" - IDS_UNDEFINED "'|' er ikke defineret" - IDS_NOT_BOOL "Boolean objekt forventet" - IDS_JSCRIPT_EXPECTED "JScript objekt forventet" - IDS_REGEXP_SYNTAX_ERROR "Syntax fejl i regulært udtryk" - IDS_URI_INVALID_CHAR "URI, der skal kodes indeholder ugyldige tegn" - IDS_INVALID_LENGTH "Array længde skal være et endeligt positivt heltal" - IDS_ARRAY_EXPECTED "Array objekt forventet" -} Removed: trunk/reactos/dll/win32/jscript/jscript_De.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_De.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_De.rc (removed) @@ -1,49 +0,0 @@ -/* - * Copyright 2009 André Hentschel - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Fehler beim umwandeln des Objektes in einen Grundtyp" - IDS_INVALID_CALL_ARG "Ungültiger Funktionsaufruf oder Argument" - IDS_CREATE_OBJ_ERROR "Automatisierungsserver konnte das Objekt nicht erstellen" - IDS_NO_PROPERTY "Das Objekt unterstützt diese Eigenschaft oder Methode nicht" - IDS_ARG_NOT_OPT "Argument nicht optional" - IDS_SYNTAX_ERROR "Syntax Fehler" - IDS_SEMICOLON "';' erwartet" - IDS_LBRACKET "'(' erwartet" - IDS_RBRACKET "')' erwartet" - IDS_UNTERMINATED_STR "konstante Zeichenkette nicht terminiert" - IDS_NOT_FUNC "Funktion erwartet" - IDS_NOT_DATE "'[Objekt]' ist kein Datums-Objekt" - IDS_NOT_NUM "Nummer erwartet" - IDS_OBJECT_EXPECTED "Objekt erwartet" - IDS_ILLEGAL_ASSIGN "Unzulässige Zuweisung" - IDS_UNDEFINED "'|' nicht definiert" - IDS_NOT_BOOL "Boolisches Objekt erwartet" - IDS_JSCRIPT_EXPECTED "JScript Objekt erwartet" - IDS_REGEXP_SYNTAX_ERROR "Syntax Fehler in regulärem Ausdruck" - IDS_URI_INVALID_CHAR "Zu verschlüsselnde URI enthält ungültige Zeichen" - IDS_INVALID_LENGTH "Array-GröÃe muss eine endliche, positive Ganzzahl sein" - IDS_ARRAY_EXPECTED "Array Objekt erwartet" -} Removed: trunk/reactos/dll/win32/jscript/jscript_En.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_En.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_En.rc (removed) @@ -1,47 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Error converting object to primitive type" - IDS_INVALID_CALL_ARG "Invalid procedure call or argument" - IDS_CREATE_OBJ_ERROR "Automation server can't create object" - IDS_NO_PROPERTY "Object doesn't support this property or method" - IDS_ARG_NOT_OPT "Argument not optional" - IDS_SYNTAX_ERROR "Syntax error" - IDS_SEMICOLON "Expected ';'" - IDS_LBRACKET "Expected '('" - IDS_RBRACKET "Expected ')'" - IDS_UNTERMINATED_STR "Unterminated string constant" - IDS_NOT_FUNC "Function expected" - IDS_NOT_DATE "'[object]' is not a date object" - IDS_NOT_NUM "Number expected" - IDS_OBJECT_EXPECTED "Object expected" - IDS_ILLEGAL_ASSIGN "Illegal assignment" - IDS_UNDEFINED "'|' is undefined" - IDS_NOT_BOOL "Boolean object expected" - IDS_JSCRIPT_EXPECTED "JScript object expected" - IDS_REGEXP_SYNTAX_ERROR "Syntax error in regular expression" - IDS_URI_INVALID_CHAR "URI to be encoded contains invalid characters" - IDS_INVALID_LENGTH "Array length must be a finite positive integer" - IDS_ARRAY_EXPECTED "Array object expected" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Es.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Es.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Es.rc (removed) @@ -1,50 +0,0 @@ -/* - * Copyright 2010 José Rostagno - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/*UTF-8*/ -#pragma code_page(65001) - -LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Error al convertir objeto a tipo primitivo" - IDS_INVALID_CALL_ARG "Llamada a procedimiento no válido o argumento" - IDS_CREATE_OBJ_ERROR "Servidor de automatización no puede crear el objeto" - IDS_NO_PROPERTY "El objeto no acepta esta propiedad o método" - IDS_ARG_NOT_OPT "Argumento no opcional" - IDS_SYNTAX_ERROR "Error de sintaxis" - IDS_SEMICOLON "Esperado ';'" - IDS_LBRACKET "Esperado '('" - IDS_RBRACKET "Esperado ')'" - IDS_UNTERMINATED_STR "Constante de cadena no terminada" - IDS_NOT_FUNC "Función esperada" - IDS_NOT_DATE "'[objeto]' no es un objeto fecha" - IDS_NOT_NUM "Numero esperado" - IDS_OBJECT_EXPECTED "Objeto esperado" - IDS_ILLEGAL_ASSIGN "Asignación ilegal" - IDS_UNDEFINED "'|' no está definido" - IDS_NOT_BOOL "Objeto Booleano esperado" - IDS_JSCRIPT_EXPECTED "Objeto JScript esperado" - IDS_REGEXP_SYNTAX_ERROR "Error de sintaxis en la expresion regular" - IDS_URI_INVALID_CHAR "URI a codificar contiene caracteres no válidos" - IDS_INVALID_LENGTH "La longitud del arreglo debe ser un entero positivo finito" - IDS_ARRAY_EXPECTED "Objeto Arreglo esperado" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Fr.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Fr.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Fr.rc (removed) @@ -1,52 +0,0 @@ -/* - * French resources for jscript - * - * Copyright 2009 Frédéric Delanoy - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Erreur lors de la conversion de l'objet vers un type primitif" - IDS_INVALID_CALL_ARG "Appel de procédure ou argument invalide" - IDS_CREATE_OBJ_ERROR "Le serveur d'automatisation ne peut créer l'objet" - IDS_NO_PROPERTY "Cet objet ne supporte pas cette propriété ou méthode" - IDS_ARG_NOT_OPT "Argument non optionnel" - IDS_SYNTAX_ERROR "Erreur de syntaxe" - IDS_SEMICOLON "« ; » attendu" - IDS_LBRACKET "« ( » attendu" - IDS_RBRACKET "« ) » attendu" - IDS_UNTERMINATED_STR "Constante chaîne de caractères non clôturée" - IDS_NOT_FUNC "Fonction attendue" - IDS_NOT_DATE "« [objet] » n'est pas un objet de type date" - IDS_NOT_NUM "Nombre attendu" - IDS_OBJECT_EXPECTED "Objet attendu" - IDS_ILLEGAL_ASSIGN "Affectation illégale" - IDS_UNDEFINED "« | » n'est pas défini" - IDS_NOT_BOOL "Objet booléen attendu" - IDS_JSCRIPT_EXPECTED "Objet JScript attendu" - IDS_REGEXP_SYNTAX_ERROR "Erreur de syntaxe dans l'expression rationnelle" - IDS_URI_INVALID_CHAR "L'URI à coder contient des caractères invalides" - IDS_INVALID_LENGTH "La longueur d'un tableau doit être un entier positif" - IDS_ARRAY_EXPECTED "Objet tableau attendu" -} Removed: trunk/reactos/dll/win32/jscript/jscript_He.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_He.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_He.rc (removed) @@ -1,49 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * - * Translated by Baruch Rutman - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Error converting object to primitive type" - IDS_INVALID_CALL_ARG "Invalid procedure call or argument" - IDS_CREATE_OBJ_ERROR "Automation server can't create object" - IDS_NO_PROPERTY "Object doesn't support this property or method" - IDS_ARG_NOT_OPT "Argument not optional" - IDS_SYNTAX_ERROR "ש×××ת ת×××ר" - IDS_SEMICOLON "צפ×× ';'" - IDS_LBRACKET "צפ×× '('" - IDS_RBRACKET "צפ×× ')'" - IDS_UNTERMINATED_STR "Unterminated string constant" - IDS_NOT_FUNC "פ×× ×§×¦×× ××××ª× ×¦×¤××××" - IDS_NOT_DATE "'[object]' is not a date object" - IDS_NOT_NUM "×ספר ××× ×¦×¤××" - IDS_OBJECT_EXPECTED "××××××§× ××× ×¦×¤××" - IDS_ILLEGAL_ASSIGN "×ש×× ×××ª× ××ק×ת" - IDS_UNDEFINED "'|' ×× ××××ר" - IDS_NOT_BOOL "××××××§× ×××××× × ××× ×¦×¤××" - IDS_JSCRIPT_EXPECTED "××××××§× JScript ××× ×¦×¤××" - IDS_REGEXP_SYNTAX_ERROR "Syntax error in regular expression" - IDS_URI_INVALID_CHAR "URI to be encoded contains invalid characters" - IDS_INVALID_LENGTH "Array length must be a finite positive integer" - IDS_ARRAY_EXPECTED "××××××§× ××¢×¨× ××× ×¦×¤××" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Hu.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Hu.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Hu.rc (removed) @@ -1,50 +0,0 @@ -/* - * Copyright 2010 Andras Kovacs - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Hiba az objektum primitÃv tÃpusra való konvertálásánál" - IDS_INVALID_CALL_ARG "Ãrvénytelen eljáráshÃvás vagy argmentum" - IDS_CREATE_OBJ_ERROR "Az automatizáló (automation) kiszolgáló nem tud objektumot létrehozni" - IDS_NO_PROPERTY "Az objektum nem támogatja ezt a tulajdonságot vagy metódust" - IDS_ARG_NOT_OPT "Az argumentum nem opcionális" - IDS_SYNTAX_ERROR "Szinttaktikai hiba" - IDS_SEMICOLON "Hiányzó ';'" - IDS_LBRACKET "Hiányzó '('" - IDS_RBRACKET "Hiányzó ')'" - IDS_UNTERMINATED_STR "Lezáratlan sztring konstans" - IDS_NOT_FUNC "Függvényt vártam" - IDS_NOT_DATE "'Az [object]' nem egy date (dátum) objektum" - IDS_NOT_NUM "Számot vártam" - IDS_OBJECT_EXPECTED "Objektumot vártam" - IDS_ILLEGAL_ASSIGN "Nem megengedett összerendelés" - IDS_UNDEFINED "A '|' nem definiált" - IDS_NOT_BOOL "Boolean (igaz-hamis) objektumot vártam" - IDS_JSCRIPT_EXPECTED "JScript objektumot vártam" - IDS_REGEXP_SYNTAX_ERROR "Szinttaktikai hiba a reguláris kifejezésben" - IDS_URI_INVALID_CHAR "A kódolandó URI érvénytelen karaktereket tartalmaz" - IDS_INVALID_LENGTH "A tömb hosszának egy véges pozitÃv egész számnak kell lennie" - IDS_ARRAY_EXPECTED "Tömb objektumot vártam" -} Removed: trunk/reactos/dll/win32/jscript/jscript_It.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_It.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_It.rc (removed) @@ -1,51 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * Copyright 2010 Luca Bennati - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Errore nel convertire un oggetto ad un tipo primitivo" - IDS_INVALID_CALL_ARG "Chiamata o argomento di procedura non valido" - IDS_CREATE_OBJ_ERROR "Il server di automazione non può creare l'oggetto" - IDS_NO_PROPERTY "L'oggetto non supporta questa proprietà o metodo" - IDS_ARG_NOT_OPT "Argomento non opzionale" - IDS_SYNTAX_ERROR "Errore di sintassi" - IDS_SEMICOLON "Richiesto ';'" - IDS_LBRACKET "Richiesto '('" - IDS_RBRACKET "Richiesto ')'" - IDS_UNTERMINATED_STR "Costante stringa non terminata" - IDS_NOT_FUNC "Richiesta una funzione" - IDS_NOT_DATE "'[oggetto]' non è un oggetto data" - IDS_NOT_NUM "Richiesto un numero" - IDS_OBJECT_EXPECTED "Richiesto un oggetto" - IDS_ILLEGAL_ASSIGN "Assegnamento illegale" - IDS_UNDEFINED "'|' non è definito" - IDS_NOT_BOOL "Richiesto un oggetto Booleano" - IDS_JSCRIPT_EXPECTED "Richiesto un oggetto JScript" - IDS_REGEXP_SYNTAX_ERROR "Errore di sintassi nell'espressione regolare" - IDS_URI_INVALID_CHAR "L'URI da codificare contiene caratteri non validi" - IDS_INVALID_LENGTH "La lunghezza dell'array deve essere un intero finito e positivo" - IDS_ARRAY_EXPECTED "Richiesto un oggetto array" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Ja.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Ja.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Ja.rc (removed) @@ -1,51 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * Copyright 2010 Akihiro Sagawa - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "ãªãã¸ã§ã¯ããåºæ¬åã«å¤æã§ãã¾ãã" - IDS_INVALID_CALL_ARG "æç¶ãå¼ã³åºãã¾ãã¯å¼æ°ãç¡å¹ã§ã" - IDS_CREATE_OBJ_ERROR "ãªã¼ãã¡ã¼ã·ã§ã³ ãµã¼ãã¯ãªãã¸ã§ã¯ããçæã§ãã¾ãã" - IDS_NO_PROPERTY "ãªãã¸ã§ã¯ãã¯ãã®ããããã£ã¾ãã¯ã¡ã½ããããµãã¼ããã¦ãã¾ãã" - IDS_ARG_NOT_OPT "å¼æ°ã¯çç¥ã§ãã¾ãã" - IDS_SYNTAX_ERROR "ææ³ã¨ã©ã¼" - IDS_SEMICOLON "';'ãæå¾ ãã¦ãã¾ãã" - IDS_LBRACKET "'('ãæå¾ ãã¦ãã¾ãã" - IDS_RBRACKET "')'ãæå¾ ãã¦ãã¾ãã" - IDS_UNTERMINATED_STR "æååå®æ°ãçµç«¯ãã¦ãã¾ãã" - IDS_NOT_FUNC "é¢æ°ãæå¾ ãã¦ãã¾ãã" - IDS_NOT_DATE "'[object]' ã¯æ¥ä»ãªãã¸ã§ã¯ãã§ã¯ããã¾ãã" - IDS_NOT_NUM "æ°å¤ãæå¾ ãã¦ãã¾ãã" - IDS_OBJECT_EXPECTED "ãªãã¸ã§ã¯ããæå¾ ãã¦ãã¾ãã" - IDS_ILLEGAL_ASSIGN "ä¸æ£ãªå²ãå½ã¦" - IDS_UNDEFINED "'|'ã¯å®ç¾©ããã¦ãã¾ãã" - IDS_NOT_BOOL "è«çãªãã¸ã§ã¯ããæå¾ ãã¦ãã¾ãã" - IDS_JSCRIPT_EXPECTED "JScriptãªãã¸ã§ã¯ããæå¾ ãã¦ãã¾ãã" - IDS_REGEXP_SYNTAX_ERROR "æ£è¦è¡¨ç¾ã«ææ³èª¤ããããã¾ã" - IDS_URI_INVALID_CHAR "ã¨ã³ã³ã¼ããããURIã«ç¡å¹ãªæåãå«ã¾ãã¦ãã¾ã" - IDS_INVALID_LENGTH "é åã®é·ãã¯æéã®æ£æ´æ°ã§ãªããã°ãªãã¾ãã" - IDS_ARRAY_EXPECTED "é åãªãã¸ã§ã¯ããæå¾ ãã¦ãã¾ãã" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Ko.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Ko.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Ko.rc (removed) @@ -1,51 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * Copyright 2010 YunSong Hwang - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "ê°í를 기본 íìì¼ë¡ ë³ííë ì¤ì ìë¬ ë°ì" - IDS_INVALID_CALL_ARG "ì¬ë°ë¥´ì§ ìì íë¡ìì ¸ í¸ì¶ì´ë ì¸ì" - IDS_CREATE_OBJ_ERROR "ìëí ìë²ê° ê°ì²´ë¥¼ ë§ë¤ ì ììµëë¤" - IDS_NO_PROPERTY "ê°ì²´ë ì´ ìì±ì´ë ë©ìë를 ì§ìíì§ ììµëë¤" - IDS_ARG_NOT_OPT "ì¸ìë ìµì ì´ ìëëë¤" - IDS_SYNTAX_ERROR "ë¬¸ë² ìë¬" - IDS_SEMICOLON "';' ê° íìí©ëë¤" - IDS_LBRACKET "'(' ê° íìí©ëë¤" - IDS_RBRACKET "')' ê° íìí©ëë¤" - IDS_UNTERMINATED_STR "ëëì§ ìì 문ìì´ ìì" - IDS_NOT_FUNC "í¨ìê° íìí©ëë¤" - IDS_NOT_DATE "'[ê°ì²´]' ë ë ì§ ê°ì²´ê° ìëëë¤" - IDS_NOT_NUM "ì«ìê° íìí©ëë¤" - IDS_OBJECT_EXPECTED "ê°ì²´ê° íìí©ëë¤" - IDS_ILLEGAL_ASSIGN "ì못ë í ë¹" - IDS_UNDEFINED "'|' ë ì ìëì§ ìììµëë¤" - IDS_NOT_BOOL "볼린 ê°ì ê° íìí©ëë¤" - IDS_JSCRIPT_EXPECTED "JScript ê°ì²´ê° íìí©ëë¤" - IDS_REGEXP_SYNTAX_ERROR "ì ê· ííìì 문ë²ìë¬ê° ììµëë¤" - IDS_URI_INVALID_CHAR "URI ë ì¬ë°ë¥´ì§ ìì 문ì를 í¬í¨í´ì ì¸ì½ë©ëììµëë¤" - IDS_INVALID_LENGTH "ë°°ì´ ê¸¸ì´ë ë°ëì íì ë ìì ì ìì´ì´ì¼ í©ëë¤" - IDS_ARRAY_EXPECTED "ë°°ì´ ê°ì²´ê° íìí©ëë¤" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Lt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Lt.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Lt.rc (removed) @@ -1,50 +0,0 @@ -/* - * Copyright 2009 Aurimas FiÅ¡eras <aurimas(a)gmail.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Klaida keiÄiant objektÄ Ä¯ primityvų tipÄ " - IDS_INVALID_CALL_ARG "Netinkamas kreipinys į procedÅ«rÄ ar argumentas" - IDS_CREATE_OBJ_ERROR "Automatizacijos serveriui nepavyko sukurti objekto" - IDS_NO_PROPERTY "Objektas nepalaiko Å¡ios savybÄs ar metodo" - IDS_ARG_NOT_OPT "Argumentas nÄra neprivalomas" - IDS_SYNTAX_ERROR "SintaksÄs klaida" - IDS_SEMICOLON "TikÄtasi â;â" - IDS_LBRACKET "TikÄtasi â(â" - IDS_RBRACKET "TikÄtasi â)â" - IDS_UNTERMINATED_STR "Nebaigta eilutÄs konstanta" - IDS_NOT_FUNC "TikÄtasi funkcijos" - IDS_NOT_DATE "â[objektas]â nÄra datos objektas" - IDS_NOT_NUM "TikÄtasi skaiÄiaus" - IDS_OBJECT_EXPECTED "TikÄtasi objekto" - IDS_ILLEGAL_ASSIGN "Neleistinas priskyrimas" - IDS_UNDEFINED "â|â yra neapibrÄžtas" - IDS_NOT_BOOL "TikÄtasi loginio objekto" - IDS_JSCRIPT_EXPECTED "TikÄtasi JScript objekto" - IDS_REGEXP_SYNTAX_ERROR "SintaksÄs klaida reguliariajame reiÅ¡kinyje" - IDS_URI_INVALID_CHAR "Koduotiname URI yra netinkamų simbolių" - IDS_INVALID_LENGTH "Masyvo dydis turi bÅ«ti teigiamas sveikasis skaiÄius" - IDS_ARRAY_EXPECTED "TikÄtasi masyvo objekto" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Nl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Nl.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Nl.rc (removed) @@ -1,49 +0,0 @@ -/* - * Copyright 2009 Paul Vriens - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL - -#pragma code_page(65001) - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Fout bij het omzetten van het object naar een primitief type" - IDS_INVALID_CALL_ARG "Ongeldige procedure-aanroep of argument" - IDS_CREATE_OBJ_ERROR "Automatiseringsserver kan het object niet creëren" - IDS_NO_PROPERTY "Dit object ondersteunt deze eigenschap of methode niet" - IDS_ARG_NOT_OPT "Argument is niet optioneel" - IDS_SYNTAX_ERROR "Syntax fout" - IDS_SEMICOLON "';' verwacht" - IDS_LBRACKET "'(' verwacht" - IDS_RBRACKET "')' verwacht" - IDS_UNTERMINATED_STR "Onafgesloten tekenreeksconstante" - IDS_NOT_FUNC "Functie verwacht" - IDS_NOT_DATE "'[object]' is geen datum object" - IDS_NOT_NUM "Getal verwacht" - IDS_OBJECT_EXPECTED "Object verwacht" - IDS_ILLEGAL_ASSIGN "Ongeldige toekenning" - IDS_UNDEFINED "'|' is ongedefinieerd" - IDS_NOT_BOOL "Boolean object verwacht" - IDS_JSCRIPT_EXPECTED "JScript object verwacht" - IDS_REGEXP_SYNTAX_ERROR "Syntax fout in reguliere expressie" - IDS_URI_INVALID_CHAR "De te coderen URI bevat ongeldige tekens" - IDS_INVALID_LENGTH "Array lengte moet een eindig, positief geheel getal zijn" - IDS_ARRAY_EXPECTED "Array object verwacht" -} Removed: trunk/reactos/dll/win32/jscript/jscript_No.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_No.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_No.rc (removed) @@ -1,49 +0,0 @@ -/* - * Copyright 2010 Alexander N. Sørnes <alex(a)thehandofagony.com> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Klarte ikke konvertere objekt til primitiv type" - IDS_INVALID_CALL_ARG "Ugyldig funksjonskall eller argument" - IDS_CREATE_OBJ_ERROR "Automatiseringstjeneren klarte ikke opprette objekt" - IDS_NO_PROPERTY "Objektet støtter ikke denne egenskapen eller metoden" - IDS_ARG_NOT_OPT "Argumentet er ikke valgfritt" - IDS_SYNTAX_ERROR "Syntaksfeil" - IDS_SEMICOLON "Forventet ';'" - IDS_LBRACKET "Forventet '('" - IDS_RBRACKET "Forventet ')'" - IDS_UNTERMINATED_STR "Uavsluttet strengkonstant" - IDS_NOT_FUNC "Forventet funksjon" - IDS_NOT_DATE "'[object]' er ikke et dataobjekt" - IDS_NOT_NUM "Forventet nummer" - IDS_OBJECT_EXPECTED "Forventet objekt" - IDS_ILLEGAL_ASSIGN "Ugyldig tilordning" - IDS_UNDEFINED "'|' er udefinert" - IDS_NOT_BOOL "Forventet boolsk verdi" - IDS_JSCRIPT_EXPECTED "Forventet JScript-objekt" - IDS_REGEXP_SYNTAX_ERROR "Syntaksfeil i regulært uttrykk" - IDS_URI_INVALID_CHAR "URI'en som skulle kodes inneholder ugyldige tegn" - IDS_INVALID_LENGTH "Rekkens lengde må være et endelig, positivt tall" - IDS_ARRAY_EXPECTED "Forventet rekke-objekt" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Pl.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Pl.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Pl.rc (removed) @@ -1,47 +0,0 @@ -/* - * Copyright 2010 £ukasz Wojni³owicz - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_POLISH, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "B³¹d przy przekszta³caniu obiektu do typu podstawowego" - IDS_INVALID_CALL_ARG "Niew³aciwe wywo³anie procedury lub argument" - IDS_CREATE_OBJ_ERROR "Serwer automatyzacji nie mo¿e stworzyæ obiektu" - IDS_NO_PROPERTY "Obiekt nie wspiera tej w³aciwoci lub metody" - IDS_ARG_NOT_OPT "Argument nieopcjonalny" - IDS_SYNTAX_ERROR "B³¹d sk³adni" - IDS_SEMICOLON "Oczekiwane ';'" - IDS_LBRACKET "Oczekiwane '('" - IDS_RBRACKET "Oczekiwane ')'" - IDS_UNTERMINATED_STR "Niezakoñczona sta³a znakowa" - IDS_NOT_FUNC "Oczekiwana funkcja" - IDS_NOT_DATE "'[obiekt]' nie jest obiektem daty" - IDS_NOT_NUM "Oczekiwana liczba" - IDS_OBJECT_EXPECTED "Oczekiwany obiekt" - IDS_ILLEGAL_ASSIGN "Niepoprawne przypisanie" - IDS_UNDEFINED "'|' jest niezdefiniowany" - IDS_NOT_BOOL "Oczekiwany obiekt boolean" - IDS_JSCRIPT_EXPECTED "Oczekiwany obiekt JScript" - IDS_REGEXP_SYNTAX_ERROR "B³¹d sk³adni w regularnym wyra¿eniu" - IDS_URI_INVALID_CHAR "Kodowane URI zawiera niew³aciwe znaki" - IDS_INVALID_LENGTH "D³ugoæ tablicy musi byæ skoñczon¹ dodatni¹ liczb¹ sta³¹" - IDS_ARRAY_EXPECTED "Oczekiwany obiekt tablicowy" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Pt.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Pt.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Pt.rc (removed) @@ -1,78 +0,0 @@ -/* - * Copyright 2009 Ricardo Filipe - * Copyright 2010 Gustavo Henrique Milaré - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Erro ao converter objeto em tipo primitivo" - IDS_INVALID_CALL_ARG "Argumento ou chamada de procedimento inválida" - IDS_CREATE_OBJ_ERROR "O servidor de automação não conseguiu criar o objeto" - IDS_NO_PROPERTY "O objeto não suporta esta propriedade ou método" - IDS_ARG_NOT_OPT "Argumento não opcional" - IDS_SYNTAX_ERROR "Erro de sintaxe" - IDS_SEMICOLON "';' esperado" - IDS_LBRACKET "'(' esperado" - IDS_RBRACKET "')' esperado" - IDS_UNTERMINATED_STR "Constante de string não terminada" - IDS_NOT_FUNC "Função esperada" - IDS_NOT_DATE "'[object]' não é um objeto de data" - IDS_NOT_NUM "Número esperado" - IDS_OBJECT_EXPECTED "Objeto esperado" - IDS_ILLEGAL_ASSIGN "Atribuição ilegal" - IDS_UNDEFINED "'|' é indefinido" - IDS_NOT_BOOL "Objeto boleano esperado" - IDS_JSCRIPT_EXPECTED "Objeto JScript esperado" - IDS_REGEXP_SYNTAX_ERROR "Erro de sintaxe na expressão regular" - IDS_URI_INVALID_CHAR "URI a ser codificado contém caracteres inválidos" - IDS_INVALID_LENGTH "Tamanho do vetor tem que ser um inteiro finito positivo" - IDS_ARRAY_EXPECTED "Objeto Array esperado" -} - -LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Erro ao converter objecto em tipo primitivo" - IDS_INVALID_CALL_ARG "Argumento ou chamada de procedimento inválida" - IDS_CREATE_OBJ_ERROR "O servidor de automação não conseguiu criar o objecto" - IDS_NO_PROPERTY "O objecto não suporta esta propriedade ou método" - IDS_ARG_NOT_OPT "Argumento não opcional" - IDS_SYNTAX_ERROR "Erro de sintaxe" - IDS_SEMICOLON "';' esperado" - IDS_LBRACKET "'(' esperado" - IDS_RBRACKET "')' esperado" - IDS_UNTERMINATED_STR "Constante de string não terminada" - IDS_NOT_FUNC "Função esperada" - IDS_NOT_DATE "'[object]' não é um objecto de data" - IDS_NOT_NUM "Número esperado" - IDS_OBJECT_EXPECTED "Objecto esperado" - IDS_ILLEGAL_ASSIGN "Atribuição ilegal" - IDS_UNDEFINED "'|' é indefinido" - IDS_NOT_BOOL "Objecto boleano esperado" - IDS_JSCRIPT_EXPECTED "Objecto JScript esperado" - IDS_REGEXP_SYNTAX_ERROR "Erro de sintaxe na expressão regular" - IDS_URI_INVALID_CHAR "URI a ser codificado contém caracteres inválidos" - IDS_INVALID_LENGTH "Tamanho do vector tem de ser um inteiro finito positivo" - IDS_ARRAY_EXPECTED "Objecto Array esperado" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Ro.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Ro.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Ro.rc (removed) @@ -1,51 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * Copyright 2010 Claudia CotunÄ - * Michael Stefaniuc - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL - -#pragma code_page(65001) - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Eroare la convertirea obiectului la un tip primitiv" - IDS_INVALID_CALL_ARG "Apel de procedurÄ sau argument nevalid" - IDS_CREATE_OBJ_ERROR "Serverul de automatizare nu poate crea obiectul" - IDS_NO_PROPERTY "Obiectul nu suportÄ aceastÄ proprietate sau metodÄ" - IDS_ARG_NOT_OPT "Argumentul nu este opÈional" - IDS_SYNTAX_ERROR "Eroare de sintaxÄ" - IDS_SEMICOLON "Se aÈteaptÄ â;â" - IDS_LBRACKET "Se aÈteaptÄ â(â" - IDS_RBRACKET "Se aÈteaptÄ â)â" - IDS_UNTERMINATED_STR "Èir constant neterminat" - IDS_NOT_FUNC "Se aÈteaptÄ o funcÈie" - IDS_NOT_DATE "â[obiect]â nu este un obiect de tip datÄ" - IDS_NOT_NUM "Se aÈteaptÄ un numÄr" - IDS_OBJECT_EXPECTED "Se aÈteaptÄ un obiect" - IDS_ILLEGAL_ASSIGN "Atribuire ilegalÄ" - IDS_UNDEFINED "â|â nu este definit" - IDS_NOT_BOOL "Se aÈteaptÄ un obiect boolean" - IDS_JSCRIPT_EXPECTED "Se aÈteaptÄ un obiect JScript" - IDS_REGEXP_SYNTAX_ERROR "Eroare de sintaxÄ Ã®n expresia regulatÄ" - IDS_URI_INVALID_CHAR "URI care trebuie codificat conÈine caractere nevalide" - IDS_INVALID_LENGTH "Lungimea unei matrice trebuie sÄ fie un numÄr întreg pozitiv" - IDS_ARRAY_EXPECTED "Se aÈteaptÄ un obiect matrice" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Ru.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Ru.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Ru.rc (removed) @@ -1,50 +0,0 @@ -/* - * Copyright 2009 Vladimir Pankratov - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "ÐÑибка конвеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑекÑа в пÑимиÑивнÑй Ñип" - IDS_INVALID_CALL_ARG "ÐевеÑнÑй вÑзов пÑоÑедÑÑÑ Ð¸Ð»Ð¸ аÑгÑменÑ" - IDS_CREATE_OBJ_ERROR "СеÑÐ²ÐµÑ Ð°Ð²ÑомаÑизаÑии не Ð¼Ð¾Ð¶ÐµÑ ÑоздаÑÑ Ð¾Ð±ÑекÑ" - IDS_NO_PROPERTY "ÐбÑÐµÐºÑ Ð½Ðµ поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑÑо ÑвойÑÑво или меÑод" - IDS_ARG_NOT_OPT "ÐÑÑÑÑÑÑвÑÐµÑ Ð¾Ð±ÑзаÑелÑнÑй аÑгÑменÑ" - IDS_SYNTAX_ERROR "СинÑакÑиÑеÑÐºÐ°Ñ Ð¾Ñибка" - IDS_SEMICOLON "ÐжидаеÑÑÑ ';'" - IDS_LBRACKET "ÐжидаеÑÑÑ '('" - IDS_RBRACKET "ÐжидаеÑÑÑ ')'" - IDS_UNTERMINATED_STR "ÐезавеÑÑÑÐ½Ð½Ð°Ñ ÑÑÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÐºÐ¾Ð½ÑÑанÑа" - IDS_NOT_FUNC "ÐжидаеÑÑÑ ÑÑнкÑиÑ" - IDS_NOT_DATE "'[object]' не обÑÐµÐºÑ Ñипа 'date'" - IDS_NOT_NUM "ÐжидаеÑÑÑ ÑиÑло" - IDS_OBJECT_EXPECTED "ÐжидаеÑÑÑ Ð¾Ð±ÑекÑ" - IDS_ILLEGAL_ASSIGN "ÐевеÑное пÑиÑваивание" - IDS_UNDEFINED "'|' не опÑеделÑн" - IDS_NOT_BOOL "ÐжидаеÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ñипа 'bool'" - IDS_JSCRIPT_EXPECTED "ÐжидаеÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ñипа 'JScript'" - IDS_REGEXP_SYNTAX_ERROR "СинÑакÑиÑеÑÐºÐ°Ñ Ð¾Ñибка в ÑегÑлÑÑном вÑÑажении" - IDS_URI_INVALID_CHAR "URI ÑодеÑÐ¶Ð¸Ñ Ð½ÐµÐ²ÐµÑнÑе ÑимволÑ" - IDS_INVALID_LENGTH "Ðлиной маÑÑива должно бÑÑÑ ÐºÐ¾Ð½ÐµÑное положиÑелÑное ÑиÑло" - IDS_ARRAY_EXPECTED "ÐжидаеÑÑÑ Ð¾Ð±ÑÐµÐºÑ Ñипа 'Array'" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Si.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Si.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Si.rc (removed) @@ -1,49 +0,0 @@ -/* - * Copyright 2010 Matej Spindler - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -#pragma code_page(65001) - -LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Napaka med spreminjanjem v primitivni tip" - IDS_INVALID_CALL_ARG "NapaÄen klic postopka ali argument" - IDS_CREATE_OBJ_ERROR "Avtomatizacijski server ne more ustvariti objekta" - IDS_NO_PROPERTY "Objekt ne podpira atributa ali metode" - IDS_ARG_NOT_OPT "Argument je obvezen" - IDS_SYNTAX_ERROR "NapaÄna sintaksa" - IDS_SEMICOLON "PriÄakujem ';'" - IDS_LBRACKET "PriÄakujem '('" - IDS_RBRACKET "PriÄakujem ')'" - IDS_UNTERMINATED_STR "NezakljuÄen niz" - IDS_NOT_FUNC "PriÄakujem funkcijo" - IDS_NOT_DATE "'[object]' ni date objekt" - IDS_NOT_NUM "PriÄakujem Å¡tevilo" - IDS_OBJECT_EXPECTED "PriÄakujem objekt" - IDS_ILLEGAL_ASSIGN "NapaÄna prireditev" - IDS_UNDEFINED "'|' je nedifiniran" - IDS_NOT_BOOL "PriÄakujem Boolean objekt" - IDS_JSCRIPT_EXPECTED "PriÄakujem JScript objekt" - IDS_REGEXP_SYNTAX_ERROR "NapaÄna sintaksa v regularnem izrazu" - IDS_URI_INVALID_CHAR "URI vsebuje neveljavne znake" - IDS_INVALID_LENGTH "Dožina polja mora bit pozitivno celo Å¡tevilo" - IDS_ARRAY_EXPECTED "PriÄakujem Array objekt" -} Removed: trunk/reactos/dll/win32/jscript/jscript_Uk.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/jscript_…
============================================================================== --- trunk/reactos/dll/win32/jscript/jscript_Uk.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/jscript_Uk.rc (removed) @@ -1,51 +0,0 @@ -/* - * Copyright 2009 Piotr Caban - * Copyright 2010 Igor Paliychuk - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA - */ - -#include "resource.h" - -/* UTF-8 */ -#pragma code_page(65001) - -LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT - -STRINGTABLE -{ - IDS_TO_PRIMITIVE "Ðомилка конвеÑÑÑÐ²Ð°Ð½Ð½Ñ Ð¾Ð±'ÑкÑÑ Ð² пÑимÑÑивний Ñип" - IDS_INVALID_CALL_ARG "ÐевÑÑний виклик пÑоÑедÑÑи або аÑгÑменÑ" - IDS_CREATE_OBJ_ERROR "СеÑÐ²ÐµÑ Ð°Ð²ÑомаÑизаÑÑÑ Ð½Ðµ може ÑÑвоÑиÑи об'ÑкÑ" - IDS_NO_PROPERTY "Ðб'ÑÐºÑ Ð½Ðµ пÑдÑÑимÑÑ ÑÑ Ð²Ð»Ð°ÑÑивÑÑÑÑ Ñи меÑод" - IDS_ARG_NOT_OPT "ÐÑдÑÑÑнÑй обов'Ñзковий аÑгÑменÑ" - IDS_SYNTAX_ERROR "СинÑакÑиÑна помилка" - IDS_SEMICOLON "ÐÑÑкÑÑÑÑÑÑ ';'" - IDS_LBRACKET "ÐÑÑкÑÑÑÑÑÑ '('" - IDS_RBRACKET "ÐÑÑкÑÑÑÑÑÑ ')'" - IDS_UNTERMINATED_STR "ÐезавеÑÑена ÑÑдкова конÑÑанÑа" - IDS_NOT_FUNC "ÐÑÑкÑÑÑÑÑÑ ÑÑнкÑÑÑ" - IDS_NOT_DATE "'[object]' не об'ÑÐºÑ ÑÐ¸Ð¿Ñ date" - IDS_NOT_NUM "ÐÑÑкÑÑÑÑÑÑ ÑиÑло" - IDS_OBJECT_EXPECTED "ÐÑÑкÑÑÑÑÑÑ Ð¾Ð±'ÑкÑ" - IDS_ILLEGAL_ASSIGN "ÐевÑÑне пÑиÑвоÑннÑ" - IDS_UNDEFINED "'|' не визнаÑено" - IDS_NOT_BOOL "ÐÑÑкÑÑÑÑÑÑ Ð¾Ð±'ÑÐºÑ Boolean" - IDS_JSCRIPT_EXPECTED "ÐÑÑкÑÑÑÑÑÑ Ð¾Ð±'ÑÐºÑ JScript" - IDS_REGEXP_SYNTAX_ERROR "СинÑакÑиÑна помилка в ÑегÑлÑÑÐ½Ð¾Ð¼Ñ Ð²Ð¸ÑазÑ" - IDS_URI_INVALID_CHAR "URI, Ñо бÑде закодований, мÑÑÑиÑÑ Ð½ÐµÐ¿ÑипÑÑÑÐ¸Ð¼Ñ Ñимволи" - IDS_INVALID_LENGTH "ÐÐ¾Ð²Ð¶Ð¸Ð½Ð¾Ñ Ð¼Ð°ÑÐ¸Ð²Ñ Ð¿Ð¾Ð²Ð¸Ð½Ð½Ðµ бÑÑи ÑкÑнÑенне додаÑÐ½Ñ ÑÑле ÑиÑло" - IDS_ARRAY_EXPECTED "ÐÑÑкÑÑÑÑÑÑ Ð¾Ð±'ÑÐºÑ Array" -} Propchange: trunk/reactos/dll/win32/jscript/lang/ ------------------------------------------------------------------------------ --- bugtraq:logregex (added) +++ bugtraq:logregex Wed Sep 4 12:27:18 2013 @@ -0,0 +1,2 @@ +([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))? +(\d+) Propchange: trunk/reactos/dll/win32/jscript/lang/ ------------------------------------------------------------------------------ bugtraq:message = See issue #%BUGID% for more details. Propchange: trunk/reactos/dll/win32/jscript/lang/ ------------------------------------------------------------------------------ bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: trunk/reactos/dll/win32/jscript/lang/ ------------------------------------------------------------------------------ tsvn:logminsize = 10 Modified: trunk/reactos/dll/win32/jscript/rsrc.rc URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jscript/rsrc.rc?…
============================================================================== --- trunk/reactos/dll/win32/jscript/rsrc.rc [iso-8859-1] (original) +++ trunk/reactos/dll/win32/jscript/rsrc.rc [iso-8859-1] Wed Sep 4 12:27:18 2013 @@ -34,62 +34,61 @@ #include "wine/wine_common_ver.rc" #ifdef LANGUAGE_EN_US - #include "jscript_En.rc" + #include "lang/jscript_En.rc" #endif #ifdef LANGUAGE_PL_PL - #include "jscript_Pl.rc" + #include "lang/jscript_Pl.rc" #endif /* UTF-8 */ #ifdef LANGUAGE_DA_DK - #include "jscript_Da.rc" + #include "lang/jscript_Da.rc" #endif #ifdef LANGUAGE_DE_DE - #include "jscript_De.rc" + #include "lang/jscript_De.rc" #endif #ifdef LANGUAGE_ES_ES - #include "jscript_Es.rc" + #include "lang/jscript_Es.rc" #endif #ifdef LANGUAGE_FR_FR - #include "jscript_Fr.rc" + #include "lang/jscript_Fr.rc" #endif #ifdef LANGUAGE_HE_IL - #include "jscript_He.rc" + #include "lang/jscript_He.rc" #endif #ifdef LANGUAGE_HU_HU - #include "jscript_Hu.rc" + #include "lang/jscript_Hu.rc" #endif #ifdef LANGUAGE_IT_IT - #include "jscript_It.rc" + #include "lang/jscript_It.rc" #endif #ifdef LANGUAGE_JA_JP - #include "jscript_Ja.rc" + #include "lang/jscript_Ja.rc" #endif #ifdef LANGUAGE_KO_KR - #include "jscript_Ko.rc" + #include "lang/jscript_Ko.rc" #endif #ifdef LANGUAGE_LT_LT - #include "jscript_Lt.rc" + #include "lang/jscript_Lt.rc" #endif #ifdef LANGUAGE_NL_NL - #include "jscript_Nl.rc" + #include "lang/jscript_Nl.rc" #endif #ifdef LANGUAGE_NO_NO - #include "jscript_No.rc" + #include "lang/jscript_No.rc" #endif #ifdef LANGUAGE_PT_PT - #include "jscript_Pt.rc" + #include "lang/jscript_Pt.rc" #endif #ifdef LANGUAGE_RO_RO - #include "jscript_Ro.rc" + #include "lang/jscript_Ro.rc" #endif #ifdef LANGUAGE_RU_RU - #include "jscript_Ru.rc" + #include "lang/jscript_Ru.rc" #endif #ifdef LANGUAGE_SL_SI - #include "jscript_Si.rc" + #include "lang/jscript_Si.rc" #endif #ifdef LANGUAGE_UK_UA - #include "jscript_Uk.rc" + #include "lang/jscript_Uk.rc" #endif -
11 years, 3 months
1
0
0
0
[ion] 59987: [USER32]: Remove another stack check. Should fix ole32 marshall tests.
by ion@svn.reactos.org
Author: ion Date: Wed Sep 4 11:08:43 2013 New Revision: 59987 URL:
http://svn.reactos.org/svn/reactos?rev=59987&view=rev
Log: [USER32]: Remove another stack check. Should fix ole32 marshall tests. Modified: trunk/reactos/win32ss/user/user32/windows/message.c Modified: trunk/reactos/win32ss/user/user32/windows/message.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/win32ss/user/user32/window…
============================================================================== --- trunk/reactos/win32ss/user/user32/windows/message.c [iso-8859-1] (original) +++ trunk/reactos/win32ss/user/user32/windows/message.c [iso-8859-1] Wed Sep 4 11:08:43 2013 @@ -1431,7 +1431,7 @@ { MSG AnsiMsg; MSG UnicodeMsg; - ULONG_PTR LowLimit; + //ULONG_PTR LowLimit; BOOL Hook = FALSE, MsgOverride = FALSE, Dialog; LRESULT Result = 0, PreResult = 0; DWORD Data = 0; @@ -1441,14 +1441,14 @@ WARN("IntCallWindowsProcA() called with WndProc = NULL!\n"); return FALSE; } - +#if 0 LowLimit = (ULONG_PTR)NtCurrentTeb()->NtTib.StackLimit; if (((ULONG_PTR)&lParam - LowLimit) < PAGE_SIZE ) { ERR("IntCallWindowsProcA() Exceeded Stack!\n"); return FALSE; } - +#endif if (pWnd) Dialog = (pWnd->fnid == FNID_DIALOG); else
11 years, 3 months
1
0
0
0
← Newer
1
...
47
48
49
50
51
52
53
...
56
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
Results per page:
10
25
50
100
200