mirror of
https://github.com/reactos/reactos.git
synced 2025-02-23 17:05:46 +00:00
Added bitmaps
Added some Rtl string functions Various changes svn path=/trunk/; revision=1026
This commit is contained in:
parent
fd304f0ef5
commit
92857818cb
19 changed files with 704 additions and 118 deletions
|
@ -1,5 +1,6 @@
|
|||
|
||||
VOID DbgBreakPoint(VOID);
|
||||
VOID STDCALL DbgBreakPoint(VOID);
|
||||
VOID STDCALL DbgBreakPointWithStatus (ULONG Status);
|
||||
ULONG DbgPrint(PCH Format,...);
|
||||
|
||||
#define DBG_GET_SHOW_FACILITY 0x0001
|
||||
|
|
|
@ -247,6 +247,17 @@ ExQueueWorkItem (
|
|||
WORK_QUEUE_TYPE QueueType
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseAccessViolation (
|
||||
VOID
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseDatatypeMisalignment (
|
||||
VOID
|
||||
);
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseStatus (
|
||||
NTSTATUS Status
|
||||
);
|
||||
|
|
|
@ -233,4 +233,13 @@ NTSTATUS KeI386AllocateGdtSelectors(OUT PULONG SelArray,
|
|||
VOID KeRaiseUserException(NTSTATUS ExceptionCode);
|
||||
|
||||
|
||||
/*
|
||||
* FUNCTION: Enters the kernel debugger
|
||||
* ARGUMENTS:
|
||||
* None
|
||||
*/
|
||||
VOID
|
||||
STDCALL
|
||||
KeEnterKernelDebugger (VOID);
|
||||
|
||||
#endif /* __INCLUDE_DDK_KEFUNCS_H */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: rtl.h,v 1.27 2000/02/21 22:36:00 ekohl Exp $
|
||||
/* $Id: rtl.h,v 1.28 2000/03/03 00:38:15 ekohl Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -277,6 +277,12 @@ RtlCheckRegistryKey (
|
|||
PWSTR Path
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlClearAllBits (
|
||||
IN PRTL_BITMAP BitMapHeader
|
||||
);
|
||||
|
||||
UINT
|
||||
STDCALL
|
||||
RtlCompactHeap (
|
||||
|
@ -558,6 +564,14 @@ RtlInitUnicodeString (
|
|||
PCWSTR SourceString
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlInitializeBitMap (
|
||||
IN OUT PRTL_BITMAP BitMapHeader,
|
||||
IN PULONG BitMapBuffer,
|
||||
IN ULONG SizeOfBitMap
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlInitializeContext (
|
||||
|
@ -894,6 +908,12 @@ RtlSecondsSince1980ToTime (
|
|||
PLARGE_INTEGER Time
|
||||
);
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlSetAllBits (
|
||||
IN PRTL_BITMAP BitMapHeader
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlSetDaclSecurityDescriptor (
|
||||
|
@ -911,12 +931,14 @@ RtlSizeHeap (
|
|||
PVOID pmem
|
||||
);
|
||||
|
||||
#if 0
|
||||
PWSTR
|
||||
RtlStrtok (
|
||||
PUNICODE_STRING _string,
|
||||
PWSTR _sep,
|
||||
PWSTR * temp
|
||||
);
|
||||
#endif
|
||||
|
||||
VOID
|
||||
RtlStoreLong (
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: brkpoint.c,v 1.1 1999/12/29 17:12:28 ekohl Exp $
|
||||
/* $Id: brkpoint.c,v 1.2 2000/03/03 00:39:38 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -16,12 +16,12 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID DbgBreakPoint(VOID)
|
||||
VOID STDCALL DbgBreakPoint(VOID)
|
||||
{
|
||||
__asm__("int $3\n\t");
|
||||
}
|
||||
|
||||
VOID DbgUserBreakPoint(VOID)
|
||||
VOID STDCALL DbgUserBreakPoint(VOID)
|
||||
{
|
||||
__asm__("int $3\n\t");
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.def,v 1.42 2000/02/27 02:05:40 ekohl Exp $
|
||||
; $Id: ntdll.def,v 1.43 2000/03/03 00:40:29 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -7,12 +7,12 @@ LIBRARY ntdll.dll
|
|||
EXPORTS
|
||||
CsrClientCallServer@16
|
||||
CsrClientConnectToServer@24
|
||||
DbgBreakPoint
|
||||
DbgBreakPoint@0
|
||||
DbgPrint
|
||||
DbgUserBreakPoint
|
||||
NlsAnsiCodePage
|
||||
NlsMbCodePageTag
|
||||
NlsMbOemCodePageTag
|
||||
DbgUserBreakPoint@0
|
||||
NlsAnsiCodePage DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
NtAcceptConnectPort@24
|
||||
NtAccessCheck@32
|
||||
NtAccessCheckAndAuditAlarm@44
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.edf,v 1.31 2000/02/27 02:05:40 ekohl Exp $
|
||||
; $Id: ntdll.edf,v 1.32 2000/03/03 00:40:29 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -7,12 +7,12 @@ LIBRARY ntdll.dll
|
|||
EXPORTS
|
||||
CsrClientCallServer=CsrClientCallServer@16
|
||||
CsrClientConnectToServer=CsrClientConnectToServer@24
|
||||
DbgBreakPoint
|
||||
DbgBreakPoint=DbgBreakPoint@0
|
||||
DbgPrint
|
||||
DbgUserBreakPoint
|
||||
NlsAnsiCodePage
|
||||
NlsMbCodePageTag
|
||||
NlsMbOemCodePageTag
|
||||
DbgUserBreakPoint=DbgUserBreakPoint@0
|
||||
NlsAnsiCodePage DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
NtAcceptConnectPort=NtAcceptConnectPort@24
|
||||
NtAccessCheck=NtAccessCheck@32
|
||||
NtAccessCheckAndAuditAlarm=NtAccessCheckAndAuditAlarm@44
|
||||
|
|
|
@ -21,8 +21,14 @@ NTSTATUS STDCALL NtSystemDebugControl(VOID)
|
|||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
VOID DbgBreakPoint(VOID)
|
||||
VOID STDCALL DbgBreakPoint(VOID)
|
||||
{
|
||||
__asm__("int $3\n\t");
|
||||
}
|
||||
|
||||
VOID STDCALL DbgBreakPointWithStatus(ULONG Status)
|
||||
{
|
||||
__asm__("mov %0, %%eax\n\t"
|
||||
"int $3\n\t"
|
||||
::"m"(Status));
|
||||
}
|
||||
|
|
46
reactos/ntoskrnl/hal/x86/misc.c
Normal file
46
reactos/ntoskrnl/hal/x86/misc.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/* $Id: misc.c,v 1.1 2000/03/03 00:45:53 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/hal/x86/misc.c
|
||||
* PURPOSE: Miscellaneous hardware functions
|
||||
* PROGRAMMER: Eric Kohl (ekohl@rz-online.de)
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalHandleNMI (ULONG Unused)
|
||||
{
|
||||
UCHAR ucStatus;
|
||||
|
||||
ucStatus = READ_PORT_UCHAR((PUCHAR) 0x61);
|
||||
|
||||
HalDisplayString ("\n*** Hardware Malfunction\n\n");
|
||||
HalDisplayString ("Call your hardware vendor for support\n\n");
|
||||
|
||||
if (ucStatus & 0x80)
|
||||
HalDisplayString ("NMI: Parity Check / Memory Parity Error\n");
|
||||
|
||||
if (ucStatus & 0x40)
|
||||
HalDisplayString ("NMI: Channel Check / IOCHK\n");
|
||||
|
||||
HalDisplayString ("\n*** The system has halted ***\n");
|
||||
KeEnterKernelDebugger ();
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
HalProcessorIdle (VOID)
|
||||
{
|
||||
__asm__("sti\n\t" \
|
||||
"hlt\n\t");
|
||||
}
|
||||
|
||||
/* EOF */
|
|
@ -1,7 +1,7 @@
|
|||
HAL_OBJECTS = hal/x86/head.o hal/x86/irq.o hal/x86/isa.o \
|
||||
hal/x86/pci.o hal/x86/irqhand.o hal/x86/halinit.o \
|
||||
hal/x86/irql.o hal/x86/bios32.o hal/x86/spinlock.o \
|
||||
hal/x86/irql.o hal/x86/bios32.o \
|
||||
hal/x86/mp.o hal/x86/dma.o hal/x86/bus.o hal/x86/mbr.o \
|
||||
hal/x86/sysinfo.o hal/x86/time.o hal/x86/beep.o \
|
||||
hal/x86/display.o hal/x86/reboot.o hal/x86/kdbg.o hal/x86/portio.o
|
||||
|
||||
hal/x86/display.o hal/x86/reboot.o hal/x86/kdbg.o \
|
||||
hal/x86/portio.o hal/x86/misc.o
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: kdebug.c,v 1.6 2000/02/27 02:09:40 ekohl Exp $
|
||||
/* $Id: kdebug.c,v 1.7 2000/03/03 00:46:37 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -129,5 +129,16 @@ KdPollBreakIn (
|
|||
return KdPortPollByte();
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
KeEnterKernelDebugger (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
HalDisplayString ("\n\n *** Entered kernel debugger ***\n");
|
||||
|
||||
for (;;)
|
||||
__asm__("hlt\n\t");
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
/*
|
||||
/* $Id: catch.c,v 1.7 2000/03/03 00:47:06 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/ke/catch.c
|
||||
|
@ -14,16 +15,44 @@
|
|||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
VOID ExRaiseStatus(NTSTATUS Status)
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseAccessViolation (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
DbgPrint("ExRaiseStatus(%x)\n",Status);
|
||||
for(;;);
|
||||
ExRaiseStatus (STATUS_ACCESS_VIOLATION);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseDatatypeMisalignment (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
ExRaiseStatus (STATUS_DATATYPE_MISALIGNMENT);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
ExRaiseStatus (
|
||||
IN NTSTATUS Status
|
||||
)
|
||||
{
|
||||
DbgPrint("ExRaiseStatus(%x)\n",Status);
|
||||
for(;;);
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL NtRaiseException(IN PEXCEPTION_RECORD ExceptionRecord,
|
||||
IN PCONTEXT Context,
|
||||
IN BOOL IsDebugger OPTIONAL)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
NtRaiseException (
|
||||
IN PEXCEPTION_RECORD ExceptionRecord,
|
||||
IN PCONTEXT Context,
|
||||
IN BOOL IsDebugger OPTIONAL
|
||||
)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
118
reactos/ntoskrnl/ke/spinlock.c
Normal file
118
reactos/ntoskrnl/ke/spinlock.c
Normal file
|
@ -0,0 +1,118 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/hal/x86/spinlock.c
|
||||
* PURPOSE: Implements spinlocks
|
||||
* PROGRAMMER: David Welch (welch@cwcom.net)
|
||||
* UPDATE HISTORY:
|
||||
* 3/6/98: Created
|
||||
*/
|
||||
|
||||
/*
|
||||
* NOTE: On a uniprocessor machine spinlocks are implemented by raising
|
||||
* the irq level
|
||||
*/
|
||||
|
||||
/* INCLUDES ****************************************************************/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
#include <internal/debug.h>
|
||||
|
||||
/* FUNCTIONS ***************************************************************/
|
||||
|
||||
BOOLEAN KeSynchronizeExecution(PKINTERRUPT Interrupt,
|
||||
PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
|
||||
PVOID SynchronizeContext)
|
||||
/*
|
||||
* FUNCTION: Synchronizes the execution of a given routine with the ISR
|
||||
* of a given interrupt object
|
||||
* ARGUMENTS:
|
||||
* Interrupt = Interrupt object to synchronize with
|
||||
* SynchronizeRoutine = Routine to call whose execution is
|
||||
* synchronized with the ISR
|
||||
* SynchronizeContext = Parameter to pass to the synchronized routine
|
||||
* RETURNS: TRUE if the operation succeeded
|
||||
*/
|
||||
{
|
||||
KIRQL oldlvl;
|
||||
BOOLEAN ret;
|
||||
|
||||
KeRaiseIrql(Interrupt->SynchLevel,&oldlvl);
|
||||
KeAcquireSpinLockAtDpcLevel(Interrupt->IrqLock);
|
||||
|
||||
ret = SynchronizeRoutine(SynchronizeContext);
|
||||
|
||||
KeReleaseSpinLockFromDpcLevel(Interrupt->IrqLock);
|
||||
KeLowerIrql(oldlvl);
|
||||
|
||||
return(ret);
|
||||
}
|
||||
|
||||
VOID KeInitializeSpinLock(PKSPIN_LOCK SpinLock)
|
||||
/*
|
||||
* FUNCTION: Initalizes a spinlock
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Caller supplied storage for the spinlock
|
||||
*/
|
||||
{
|
||||
SpinLock->Lock = 0;
|
||||
}
|
||||
|
||||
VOID KeAcquireSpinLockAtDpcLevel(PKSPIN_LOCK SpinLock)
|
||||
/*
|
||||
* FUNCTION: Acquires a spinlock when the caller is already running at
|
||||
* dispatch level
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to acquire
|
||||
*/
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
while ((i = InterlockedExchange(&SpinLock->Lock, 1)) == 1)
|
||||
{
|
||||
DbgPrint("Spinning on spinlock %x current value %x\n", SpinLock, i);
|
||||
KeBugCheck(0);
|
||||
}
|
||||
}
|
||||
|
||||
VOID KeReleaseSpinLockFromDpcLevel(PKSPIN_LOCK SpinLock)
|
||||
/*
|
||||
* FUNCTION: Releases a spinlock when the caller was running at dispatch
|
||||
* level before acquiring it
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to release
|
||||
*/
|
||||
{
|
||||
if (SpinLock->Lock != 1)
|
||||
{
|
||||
DbgPrint("Releasing unacquired spinlock %x\n", SpinLock);
|
||||
KeBugCheck(0);
|
||||
}
|
||||
(void)InterlockedExchange(&SpinLock->Lock, 0);
|
||||
}
|
||||
|
||||
VOID KeAcquireSpinLock(PKSPIN_LOCK SpinLock, PKIRQL OldIrql)
|
||||
/*
|
||||
* FUNCTION: Acquires a spinlock
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to acquire
|
||||
* OldIrql (OUT) = Caller supplied storage for the previous irql
|
||||
*/
|
||||
{
|
||||
KeRaiseIrql(DISPATCH_LEVEL,OldIrql);
|
||||
KeAcquireSpinLockAtDpcLevel(SpinLock);
|
||||
}
|
||||
|
||||
VOID KeReleaseSpinLock(PKSPIN_LOCK SpinLock, KIRQL NewIrql)
|
||||
/*
|
||||
* FUNCTION: Releases a spinlock
|
||||
* ARGUMENTS:
|
||||
* SpinLock = Spinlock to release
|
||||
* NewIrql = Irql level before acquiring the spinlock
|
||||
*/
|
||||
{
|
||||
KeReleaseSpinLockFromDpcLevel(SpinLock);
|
||||
KeLowerIrql(NewIrql);
|
||||
}
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile_rex,v 1.55 2000/03/01 22:52:27 ea Exp $
|
||||
# $Id: makefile_rex,v 1.56 2000/03/03 00:43:28 ekohl Exp $
|
||||
#
|
||||
# ReactOS Operating System
|
||||
#
|
||||
|
@ -6,6 +6,7 @@ TARGET=ntoskrnl
|
|||
|
||||
BASE_CFLAGS = -I../include -D__NTOSKRNL__
|
||||
|
||||
|
||||
all: objects $(TARGET).exe
|
||||
|
||||
#
|
||||
|
@ -22,12 +23,12 @@ RTL_OBJECTS = rtl/ctype.o rtl/interlck.o rtl/largeint.o rtl/list.o \
|
|||
rtl/memmove.o rtl/memset.o rtl/nls.o rtl/regio.o \
|
||||
rtl/return.o rtl/slist.o rtl/sprintf.o rtl/swprintf.o \
|
||||
rtl/stdlib.o rtl/string.o rtl/time.o rtl/unalign.o \
|
||||
rtl/unicode.o rtl/wstring.o
|
||||
rtl/unicode.o rtl/wstring.o rtl/bitmap.o
|
||||
|
||||
KE_OBJECTS = ke/main.o ke/timer.o ke/error.o ke/catch.o \
|
||||
ke/dpc.o ke/wait.o ke/kqueue.o ke/dispatch.o \
|
||||
ke/sem.o ke/critical.o ke/event.o ke/apc.o ke/bug.o \
|
||||
ke/mutex.o ke/kernel.o ke/ldt.o \
|
||||
ke/mutex.o ke/kernel.o ke/ldt.o ke/spinlock.o\
|
||||
ke/process.o ke/gdt.o ke/idt.o ke/udelay.o
|
||||
|
||||
KE_I386_OBJECTS = ke/i386/thread.o ke/i386/usercall.o ke/i386/exp.o
|
||||
|
@ -143,23 +144,24 @@ OBJECTS = objects/hal.o objects/ke.o objects/rtl.o objects/mm.o \
|
|||
objects/io.o objects/ob.o objects/ps.o objects/ex.o \
|
||||
objects/se.o objects/cm.o objects/dbg.o objects/nt.o \
|
||||
objects/cc.o objects/kd.o objects/ldr.o objects/fs.o \
|
||||
objects/po.o objects/nls.o \
|
||||
objects/po.o objects/nls.o \
|
||||
$(TARGET).coff
|
||||
|
||||
ifeq ($(DOSCLI),yes)
|
||||
CLEAN_FILES = objects\*.o cc\*.o cm\*.o dbg\*.o ex\*.o hal\x86\*.o io\*.o \
|
||||
ke\*.o ldr\*.o mm\*.o nt\*.o ob\*.o ps\*.o rtl\*.o se\*.o \
|
||||
ke\i386\*.o mm\i386\*.o fs\*.o po\*.o nls\*.o \
|
||||
ke\i386\*.o mm\i386\*.o fs\*.o po\*.o nls\*.o \
|
||||
kd\*.o utils\export\export.exe $(TARGET).o $(TARGET).a junk.tmp \
|
||||
base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff
|
||||
else
|
||||
CLEAN_FILES = objects/*.o cc/*.o cm/*.o dbg/*.o ex/*.o hal/x86/*.o io/*.o \
|
||||
ke/*.o ldr/*.o mm/*.o nt/*.o ob/*.o ps/*.o rtl/*.o se/*.o \
|
||||
ke/i386/*.o mm/i386/*.o fs/*.o po/*.o nls/*.o \
|
||||
ke/i386/*.o mm/i386/*.o fs/*.o po/*.o nls/*.o \
|
||||
kd/*.o utils/export/export $(TARGET).o $(TARGET).a junk.tmp \
|
||||
base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff
|
||||
endif
|
||||
|
||||
|
||||
$(TARGET).exe: $(OBJECTS) $(TARGET).def
|
||||
$(LD) \
|
||||
-r $(OBJECTS) \
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.def,v 1.48 2000/03/01 22:52:27 ea Exp $
|
||||
; $Id: ntoskrnl.def,v 1.49 2000/03/03 00:43:28 ekohl Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -10,6 +10,8 @@ CcInitializeFileCache@8
|
|||
CcRequestCachePage@20
|
||||
CcReleaseCachePage@12
|
||||
CcReleaseFileCache@8
|
||||
DbgBreakPoint@0
|
||||
DbgBreakPointWithStatus@4
|
||||
DbgPrint
|
||||
ExAcquireResourceExclusive
|
||||
ExAcquireResourceExclusiveLite
|
||||
|
@ -66,7 +68,9 @@ ExIsResourceAcquiredSharedLite
|
|||
ExLocalTimeToSystemTime
|
||||
ExQueryDepthSListHead
|
||||
ExQueueWorkItem
|
||||
ExRaiseStatus
|
||||
ExRaiseAccessViolation@0
|
||||
ExRaiseDatatypeMisalignment@0
|
||||
ExRaiseStatus@4
|
||||
ExReinitializeResourceLite
|
||||
ExReleaseFastMutexUnsafe
|
||||
ExReleaseResource
|
||||
|
@ -167,6 +171,7 @@ KeBugCheck
|
|||
KeBugCheckEx
|
||||
KeClearEvent
|
||||
KeDelayExecutionThread@12
|
||||
KeEnterKernelDebugger@0
|
||||
KeFlushIoBuffers
|
||||
KeGetPreviousMode
|
||||
KeInitializeDpc
|
||||
|
@ -183,8 +188,11 @@ KeSynchronizeExecution
|
|||
KeWaitForSingleObject
|
||||
MmGetSystemAddressForMdl
|
||||
MmMapIoSpace
|
||||
NlsMbCodePageTag
|
||||
NlsMbOemCodePageTag
|
||||
NlsAnsiCodePage DATA
|
||||
NlsLeadByteInfo DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
NlsOemLeadByteInfo DATA
|
||||
NtAddAtom@8
|
||||
NtAdjustPrivilegesToken@24
|
||||
NtAllocateLocallyUniqueId@4
|
||||
|
@ -243,7 +251,7 @@ READ_REGISTER_USHORT
|
|||
READ_REGISTER_BUFFER_UCHAR
|
||||
READ_REGISTER_BUFFER_ULONG
|
||||
READ_REGISTER_BUFFER_USHORT
|
||||
;RtlAbsoluteToSelfRelativeSD
|
||||
RtlAbsoluteToSelfRelativeSD@12
|
||||
;RtlAddAccessAllowedAce
|
||||
;RtlAddAce
|
||||
;RtlAddAtomToAtomTable
|
||||
|
@ -264,8 +272,8 @@ RtlAppendUnicodeToString@8
|
|||
;RtlCaptureStackBackTrace
|
||||
RtlCharToInteger@12
|
||||
;RtlCheckRegistryKey
|
||||
;RtlClearAllBits
|
||||
;RtlClearBits
|
||||
RtlClearAllBits@4
|
||||
RtlClearBits@12
|
||||
RtlCompareMemory@12
|
||||
RtlCompareMemoryUlong@12
|
||||
RtlCompareString@12
|
||||
|
@ -283,7 +291,7 @@ RtlCopyUnicodeString@8
|
|||
;RtlCreateAtomTable
|
||||
;RtlCreateHeap
|
||||
;RtlCreateRegistryKey
|
||||
;RtlCreateSecurityDescriptor
|
||||
RtlCreateSecurityDescriptor@8
|
||||
RtlCreateUnicodeString@8
|
||||
;RtlCustomCPToUnicodeN
|
||||
;RtlDecompressBuffer
|
||||
|
@ -331,17 +339,17 @@ RtlFreeUnicodeString@4
|
|||
;RtlGenerate8dot3Name
|
||||
;RtlGetCallersAddress
|
||||
;RtlGetCompressionWorkSpaceSize
|
||||
;RtlGetDaclSecurityDescriptor
|
||||
RtlGetDaclSecurityDescriptor@16
|
||||
RtlGetDefaultCodePage@8
|
||||
;RtlGetElementGenericTable
|
||||
;RtlGetGroupSecurityDescriptor
|
||||
;RtlGetOwnerSecurityDescriptor
|
||||
;RtlImageNtHeader@4
|
||||
RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetOwnerSecurityDescriptor@12
|
||||
;RtlImageNtHeader
|
||||
RtlInitAnsiString@8
|
||||
;RtlInitCodePageTable
|
||||
RtlInitString@8
|
||||
RtlInitUnicodeString@8
|
||||
;RtlInitializeBitmap
|
||||
RtlInitializeBitMap@12
|
||||
;RtlInitializeGenericTable
|
||||
RtlInitializeSid@12
|
||||
;RtlInitializeUnicodePrefix
|
||||
|
@ -358,7 +366,7 @@ RtlLargeIntegerShiftLeft@12
|
|||
RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract@16
|
||||
RtlLengthRequiredSid@4
|
||||
;RtlLengthRequiredSecurityDescriptor
|
||||
RtlLengthSecurityDescriptor@4
|
||||
RtlLengthSid@4
|
||||
;RtlLookupAtomInAtomTable
|
||||
;RtlLookupElementGenericTable
|
||||
|
@ -372,14 +380,14 @@ RtlMultiByteToUnicodeSize@12
|
|||
;RtlNumberGenericTableElements
|
||||
;RtlNumberOfClearBits
|
||||
;RtlNumberOfSetBits
|
||||
;RtlOemStringToCountedUnicodeString
|
||||
RtlOemStringToCountedUnicodeString@12
|
||||
RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString@12
|
||||
RtlOemToUnicodeN@20
|
||||
;RtlPinAtomInAtomTable
|
||||
;RtlPrefixString
|
||||
;RtlPrefixUnicodeString
|
||||
;RtlQueryAtominAtomTable
|
||||
;RtlQueryAtomInAtomTable
|
||||
;RtlQueryRegistryValues
|
||||
;RtlQueryTimeZoneInformation
|
||||
;RtlRaiseException
|
||||
|
@ -388,11 +396,11 @@ RtlOemToUnicodeN@20
|
|||
;RtlReserveChunk
|
||||
RtlSecondsSince1970ToTime@8
|
||||
RtlSecondsSince1980ToTime@8
|
||||
;RtlSetAllBits
|
||||
;RtlSetBits
|
||||
;RtlSetDaclSecurityDescriptor
|
||||
;RtlSetGroupSecurityDescriptor
|
||||
;RtlSetOwnerSecurityDescriptor
|
||||
RtlSetAllBits@4
|
||||
RtlSetBits@12
|
||||
RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetGroupSecurityDescriptor@12
|
||||
RtlSetOwnerSecurityDescriptor@12
|
||||
;RtlSetSaclSecurityDescriptor
|
||||
;RtlSetTimeZoneInformation
|
||||
;RtlSplay
|
||||
|
@ -404,7 +412,7 @@ RtlTimeToSecondsSince1980@8
|
|||
RtlTimeToTimeFields@8
|
||||
RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString@12
|
||||
;RtlUnicodeStringToCountedOemString
|
||||
RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString@12
|
||||
|
@ -416,14 +424,14 @@ RtlUnicodeToOemN@20
|
|||
RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString@12
|
||||
;RtlUpcaseUnicodeStringToCountedOemString
|
||||
RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString@12
|
||||
;RtlUpcaseUnicodeToCustomCPN
|
||||
RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar@4
|
||||
RtlUpperString@8
|
||||
;RtlValidSecurityDescriptor
|
||||
RtlValidSecurityDescriptor@4
|
||||
RtlValidSid@4
|
||||
;RtlWriteRegistryValue
|
||||
;RtlZeroHeap
|
||||
|
@ -600,7 +608,7 @@ wctomb
|
|||
; exports from hal.dll
|
||||
;
|
||||
;
|
||||
;ExAcquireFastMutex
|
||||
ExAcquireFastMutex
|
||||
ExReleaseFastMutex
|
||||
ExTryToAcquireFastMutex
|
||||
HalAcquireDisplayOwnership
|
||||
|
@ -624,11 +632,11 @@ HalDisplayString
|
|||
HalGetBusDataByOffset
|
||||
;HalGetEnvironmentVariable
|
||||
HalGetInterruptVector
|
||||
;HalHandleNMI
|
||||
HalHandleNMI@4
|
||||
HalInitSystem
|
||||
;HalInitializeProcessor
|
||||
HalMakeBeep
|
||||
;HalProcessorIdle
|
||||
HalProcessorIdle@0
|
||||
HalQueryDisplayParameters
|
||||
HalQueryRealTimeClock
|
||||
;HalReadDmaCounter
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntoskrnl.edf,v 1.35 2000/03/01 22:52:27 ea Exp $
|
||||
; $Id: ntoskrnl.edf,v 1.36 2000/03/03 00:43:29 ekohl Exp $
|
||||
;
|
||||
; reactos/ntoskrnl/ntoskrnl.def
|
||||
;
|
||||
|
@ -10,6 +10,8 @@ CcInitializeFileCache=CcInitializeFileCache@8
|
|||
CcRequestCachePage=CcRequestCachePage@20
|
||||
CcReleaseCachePage=CcReleaseCachePage@12
|
||||
CcReleaseFileCache=CcReleaseFileCache@8
|
||||
DbgBreakPoint=DbgBreakPoint@0
|
||||
DbgBreakPointWithStatus=DbgBreakPointWithStatus@4
|
||||
DbgPrint
|
||||
ExAcquireResourceExclusive
|
||||
ExAcquireResourceExclusiveLite
|
||||
|
@ -66,7 +68,9 @@ ExIsResourceAcquiredSharedLite
|
|||
ExLocalTimeToSystemTime
|
||||
ExQueryDepthSListHead
|
||||
ExQueueWorkItem
|
||||
ExRaiseStatus
|
||||
ExRaiseAccessViolation=ExRaiseAccessViolation@0
|
||||
ExRaiseDatatypeMisalignment=ExRaiseDatatypeMisalignment@0
|
||||
ExRaiseStatus=ExRaiseStatus@4
|
||||
ExReinitializeResourceLite
|
||||
ExReleaseFastMutexUnsafe
|
||||
ExReleaseResource
|
||||
|
@ -167,6 +171,7 @@ KeBugCheck
|
|||
KeBugCheckEx
|
||||
KeClearEvent
|
||||
KeDelayExecutionThread=KeDelayExecutionThread@12
|
||||
KeEnterKernelDebugger=KeEnterKernelDebugger@0
|
||||
KeFlushIoBuffers
|
||||
KeGetPreviousMode
|
||||
KeInitializeDpc
|
||||
|
@ -183,8 +188,11 @@ KeSynchronizeExecution
|
|||
KeWaitForSingleObject
|
||||
MmGetSystemAddressForMdl
|
||||
MmMapIoSpace
|
||||
NlsMbCodePageTag
|
||||
NlsMbOemCodePageTag
|
||||
NlsAnsiCodePage DATA
|
||||
NlsLeadByteInfo DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
NlsOemLeadByteInfo DATA
|
||||
NtAddAtom=NtAddAtom@8
|
||||
NtAdjustPrivilegesToken=NtAdjustPrivilegesToken@24
|
||||
NtAllocateLocallyUniqueId=NtAllocateLocallyUniqueId@4
|
||||
|
@ -243,6 +251,7 @@ READ_REGISTER_USHORT
|
|||
READ_REGISTER_BUFFER_UCHAR
|
||||
READ_REGISTER_BUFFER_ULONG
|
||||
READ_REGISTER_BUFFER_USHORT
|
||||
RtlAbsoluteToSelfRelativeSD=RtlAbsoluteToSelfRelativeSD@12
|
||||
RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4
|
||||
RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4
|
||||
RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12
|
||||
|
@ -251,6 +260,8 @@ RtlAppendStringToString=RtlAppendStringToString@8
|
|||
RtlAppendUnicodeStringToString=RtlAppendUnicodeStringToString@8
|
||||
RtlAppendUnicodeToString=RtlAppendUnicodeToString@8
|
||||
RtlCharToInteger=RtlCharToInteger@12
|
||||
RtlClearAllBits=RtlClearAllBits@4
|
||||
RtlClearBits=RtlClearBits@12
|
||||
RtlCompareMemory=RtlCompareMemory@12
|
||||
RtlCompareMemoryUlong=RtlCompareMemoryUlong@12
|
||||
RtlCompareString=RtlCompareString@12
|
||||
|
@ -261,6 +272,7 @@ RtlCopyLuid=RtlCopyLuid@8
|
|||
RtlCopySid=RtlCopySid@12
|
||||
RtlCopyString=RtlCopyString@8
|
||||
RtlCopyUnicodeString=RtlCopyUnicodeString@8
|
||||
RtlCreateSecurityDescriptor=RtlCreateSecurityDescriptor@8
|
||||
RtlCreateUnicodeString=RtlCreateUnicodeString@8
|
||||
RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12
|
||||
RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8
|
||||
|
@ -278,11 +290,14 @@ RtlFillMemoryUlong=RtlFillMemoryUlong@12
|
|||
RtlFreeAnsiString=RtlFreeAnsiString@4
|
||||
RtlFreeOemString=RtlFreeOemString@4
|
||||
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
||||
RtlGetDaclSecurityDescriptor=RtlGetDaclSecurityDescriptor@16
|
||||
RtlGetDefaultCodePage=RtlGetDefaultCodePage@8
|
||||
;RtlImageNtHeader=RtlImageNtHeader@4
|
||||
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
||||
RtlInitAnsiString=RtlInitAnsiString@8
|
||||
RtlInitString=RtlInitString@8
|
||||
RtlInitUnicodeString=RtlInitUnicodeString@8
|
||||
RtlInitializeBitMap=RtlInitializeBitMap@12
|
||||
RtlInitializeSid=RtlInitializeSid@12
|
||||
RtlIntegerToChar=RtlIntegerToChar@16
|
||||
RtlIntegerToUnicodeString=RtlIntegerToUnicodeString@12
|
||||
|
@ -294,14 +309,21 @@ RtlLargeIntegerShiftLeft=RtlLargeIntegerShiftLeft@12
|
|||
RtlLargeIntegerShiftRight=RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract=RtlLargeIntegerSubtract@16
|
||||
RtlLengthRequiredSid=RtlLengthRequiredSid@4
|
||||
RtlLengthSecurityDescriptor=RtlLengthSecurityDescriptor@4
|
||||
RtlLengthSid=RtlLengthSid@4
|
||||
RtlMoveMemory=RtlMoveMemory@12
|
||||
RtlMultiByteToUnicodeN=RtlMultiByteToUnicodeN@20
|
||||
RtlMultiByteToUnicodeSize=RtlMultiByteToUnicodeSize@12
|
||||
RtlOemStringToCountedUnicodeString=RtlOemStringToCountedUnicodeString@12
|
||||
RtlOemStringToUnicodeSize=RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString=RtlOemStringToUnicodeString@12
|
||||
RtlSecondsSince1970ToTime=RtlSecondsSince1970ToTime@8
|
||||
RtlSecondsSince1980ToTime=RtlSecondsSince1980ToTime@8
|
||||
RtlSetAllBits=RtlSetAllBits@4
|
||||
RtlSetBits=RtlSetBits@12
|
||||
RtlSetDaclSecurityDescriptor=RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetGroupSecurityDescriptor=RtlSetGroupSecurityDescriptor@12
|
||||
RtlSetOwnerSecurityDescriptor=RtlSetOwnerSecurityDescriptor@12
|
||||
RtlSubAuthorityCountSid=RtlSubAuthorityCountSid@4
|
||||
RtlSubAuthoritySid=RtlSubAuthoritySid@8
|
||||
RtlTimeFieldsToTime=RtlTimeFieldsToTime@8
|
||||
|
@ -310,6 +332,7 @@ RtlTimeToSecondsSince1980=RtlTimeToSecondsSince1980@8
|
|||
RtlTimeToTimeFields=RtlTimeToTimeFields@8
|
||||
RtlUnicodeStringToAnsiSize=RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString=RtlUnicodeStringToAnsiString@12
|
||||
RtlUnicodeStringToCountedOemString=RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger=RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize=RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString=RtlUnicodeStringToOemString@12
|
||||
|
@ -318,11 +341,13 @@ RtlUnicodeToMultiByteSize=RtlUnicodeToMultiByteSize@12
|
|||
RtlUpcaseUnicodeChar=RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString=RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString=RtlUpcaseUnicodeStringToAnsiString@12
|
||||
RtlUpcaseUnicodeStringToCountedOemString=RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString=RtlUpcaseUnicodeStringToOemString@12
|
||||
RtlUpcaseUnicodeToMultiByteN=RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN=RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar=RtlUpperChar@4
|
||||
RtlUpperString=RtlUpperString@8
|
||||
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
||||
RtlValidSid=RtlValidSid@4
|
||||
RtlZeroMemory=RtlZeroMemory@8
|
||||
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
||||
|
@ -497,7 +522,7 @@ wctomb
|
|||
; exports from hal.dll
|
||||
;
|
||||
;
|
||||
;ExAcquireFastMutex
|
||||
ExAcquireFastMutex
|
||||
ExReleaseFastMutex
|
||||
ExTryToAcquireFastMutex
|
||||
HalAcquireDisplayOwnership
|
||||
|
@ -521,11 +546,11 @@ HalDisplayString
|
|||
HalGetBusDataByOffset
|
||||
;HalGetEnvironmentVariable
|
||||
HalGetInterruptVector
|
||||
;HalHandleNMI
|
||||
HalHandleNMI=HalHandleNMI@4
|
||||
HalInitSystem
|
||||
;HalInitializeProcessor
|
||||
HalMakeBeep
|
||||
;HalProcessorIdle
|
||||
HalProcessorIdle=HalProcessorIdle@0
|
||||
HalQueryDisplayParameters
|
||||
HalQueryRealTimeClock
|
||||
;HalReadDmaCounter
|
||||
|
|
125
reactos/ntoskrnl/rtl/bitmap.c
Normal file
125
reactos/ntoskrnl/rtl/bitmap.c
Normal file
|
@ -0,0 +1,125 @@
|
|||
/* $Id: bitmap.c,v 1.1 2000/03/03 00:48:50 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: ntoskrnl/rtl/bitmap.c
|
||||
* PURPOSE: Bitmap functions
|
||||
* UPDATE HISTORY:
|
||||
* 20/08/99 Created by Eric Kohl
|
||||
*/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
|
||||
#define ALIGN(x,align) (((x)+(align)-1) / (align))
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlInitializeBitMap (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG BitMapBuffer,
|
||||
ULONG SizeOfBitMap
|
||||
)
|
||||
{
|
||||
BitMapHeader->SizeOfBitMap = SizeOfBitMap;
|
||||
BitMapHeader->Buffer = BitMapBuffer;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlClearAllBits (
|
||||
IN OUT PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
memset (BitMapHeader->Buffer,
|
||||
0x00,
|
||||
ALIGN(BitMapHeader->SizeOfBitMap, 8));
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlClearBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG NumberToClear
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG n;
|
||||
ULONG shift;
|
||||
PCHAR p;
|
||||
|
||||
if (StartingIndex >= Size || NumberToClear == 0)
|
||||
return;
|
||||
|
||||
if (StartingIndex + NumberToClear > Size)
|
||||
NumberToClear = Size - StartingIndex;
|
||||
|
||||
p = (PCHAR)(BitMapHeader->Buffer + (StartingIndex / 8));
|
||||
while (NumberToClear)
|
||||
{
|
||||
/* bit shift in current byte */
|
||||
shift = StartingIndex & 7;
|
||||
|
||||
/* number of bits to change in current byte */
|
||||
n = (NumberToClear > 8 - shift ) ? 8 - shift : NumberToClear;
|
||||
|
||||
/* adjust byte */
|
||||
*p++ &= ~(~(0xFF << n) << shift);
|
||||
NumberToClear -= n;
|
||||
StartingIndex += n;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlSetAllBits (
|
||||
IN OUT PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
memset (BitMapHeader->Buffer,
|
||||
0xFF,
|
||||
ALIGN(BitMapHeader->SizeOfBitMap, 8));
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlSetBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG NumberToSet
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG n;
|
||||
ULONG shift;
|
||||
PCHAR p;
|
||||
|
||||
if (StartingIndex >= Size || NumberToSet == 0)
|
||||
return;
|
||||
|
||||
if (StartingIndex + NumberToSet > Size)
|
||||
NumberToSet = Size - StartingIndex;
|
||||
|
||||
p = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8);
|
||||
while (NumberToSet)
|
||||
{
|
||||
/* bit shift in current byte */
|
||||
shift = StartingIndex & 7;
|
||||
|
||||
/* number of bits to change in current byte */
|
||||
n = (NumberToSet > 8 - shift) ? 8 - shift : NumberToSet;
|
||||
|
||||
/* adjust byte */
|
||||
*p++ |= ~( 0xFF << n ) << shift;
|
||||
NumberToSet -= n;
|
||||
StartingIndex += n;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: nls.c,v 1.2 1999/11/20 21:45:20 ekohl Exp $
|
||||
/* $Id: nls.c,v 1.3 2000/03/03 00:48:50 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -54,6 +54,11 @@ CHAR UnicodeToOemTable [65536];
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
/*
|
||||
* RtlCustomCPToUnicodeN
|
||||
*/
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlGetDefaultCodePage (
|
||||
|
@ -138,11 +143,12 @@ RtlMultiByteToUnicodeSize (
|
|||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlOemToUnicodeN(PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize,
|
||||
PULONG ResultSize,
|
||||
PCHAR OemString,
|
||||
ULONG OemSize)
|
||||
RtlOemToUnicodeN (
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize,
|
||||
PULONG ResultSize,
|
||||
PCHAR OemString,
|
||||
ULONG OemSize)
|
||||
{
|
||||
ULONG Size = 0;
|
||||
ULONG i;
|
||||
|
@ -180,13 +186,19 @@ RtlOemToUnicodeN(PWCHAR UnicodeString,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* RtlUnicodeToCustomCPN
|
||||
*/
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUnicodeToMultiByteN(PCHAR MbString,
|
||||
ULONG MbSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
RtlUnicodeToMultiByteN (
|
||||
PCHAR MbString,
|
||||
ULONG MbSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
{
|
||||
ULONG Size = 0;
|
||||
ULONG i;
|
||||
|
@ -226,9 +238,10 @@ RtlUnicodeToMultiByteN(PCHAR MbString,
|
|||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUnicodeToMultiByteSize(PULONG MbSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
RtlUnicodeToMultiByteSize (
|
||||
PULONG MbSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
{
|
||||
if (NlsMbCodePageTag == FALSE)
|
||||
{
|
||||
|
@ -248,11 +261,12 @@ RtlUnicodeToMultiByteSize(PULONG MbSize,
|
|||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUnicodeToOemN(PCHAR OemString,
|
||||
ULONG OemSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
RtlUnicodeToOemN (
|
||||
PCHAR OemString,
|
||||
ULONG OemSize,
|
||||
PULONG ResultSize,
|
||||
PWCHAR UnicodeString,
|
||||
ULONG UnicodeSize)
|
||||
{
|
||||
ULONG Size = 0;
|
||||
ULONG i;
|
||||
|
@ -290,6 +304,11 @@ RtlUnicodeToOemN(PCHAR OemString,
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
* RtlUpcaseUnicodeToCustomCPN
|
||||
*/
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUpcaseUnicodeToMultiByteN (
|
||||
|
@ -383,5 +402,4 @@ RtlUpcaseUnicodeToOemN (
|
|||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: unicode.c,v 1.13 2000/02/19 19:31:18 ekohl Exp $
|
||||
/* $Id: unicode.c,v 1.14 2000/03/03 00:48:50 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -480,11 +480,6 @@ RtlCreateUnicodeStringFromAsciiz (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlCustomCPToUnicodeN
|
||||
*/
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlDowncaseUnicodeString (
|
||||
|
@ -627,11 +622,6 @@ RtlEqualUnicodeString (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlEraseUnicodeString
|
||||
*/
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlFreeAnsiString (
|
||||
|
@ -838,9 +828,61 @@ RtlIntegerToUnicodeString (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlOemStringToCountedUnicodeString
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlOemStringToCountedUnicodeString (
|
||||
IN OUT PUNICODE_STRING DestinationString,
|
||||
IN POEM_STRING SourceString,
|
||||
IN BOOLEAN AllocateDestinationString
|
||||
)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG Length;
|
||||
|
||||
if (NlsMbCodePageTag == TRUE)
|
||||
Length = RtlAnsiStringToUnicodeSize (SourceString);
|
||||
else
|
||||
Length = SourceString->Length * sizeof(WCHAR);
|
||||
|
||||
if (Length > 65535)
|
||||
return STATUS_INVALID_PARAMETER_2;
|
||||
|
||||
if (AllocateDestinationString == TRUE)
|
||||
{
|
||||
DestinationString->MaximumLength = Length + sizeof(WCHAR);
|
||||
DestinationString->Buffer =
|
||||
ExAllocatePool (NonPagedPool,
|
||||
DestinationString->MaximumLength);
|
||||
if (DestinationString->Buffer == NULL)
|
||||
return STATUS_NO_MEMORY;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Length > DestinationString->MaximumLength)
|
||||
return STATUS_BUFFER_TOO_SMALL;
|
||||
}
|
||||
DestinationString->Length = Length;
|
||||
|
||||
RtlZeroMemory (DestinationString->Buffer,
|
||||
DestinationString->Length);
|
||||
|
||||
Status = RtlOemToUnicodeN (DestinationString->Buffer,
|
||||
DestinationString->Length,
|
||||
NULL,
|
||||
SourceString->Buffer,
|
||||
SourceString->Length);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
if (AllocateDestinationString)
|
||||
ExFreePool (DestinationString->Buffer);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
DestinationString->Buffer[Length / sizeof(WCHAR)] = 0;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
|
@ -982,9 +1024,68 @@ RtlUnicodeStringToAnsiString (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlUnicodeStringToCountedOemString
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUnicodeStringToCountedOemString (
|
||||
IN OUT POEM_STRING DestinationString,
|
||||
IN PUNICODE_STRING SourceString,
|
||||
IN BOOLEAN AllocateDestinationString
|
||||
)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG Length;
|
||||
ULONG Size;
|
||||
|
||||
if (NlsMbOemCodePageTag == TRUE)
|
||||
Length = RtlUnicodeStringToAnsiSize (SourceString) + 1;
|
||||
else
|
||||
Length = SourceString->Length / sizeof(WCHAR) + 1;
|
||||
|
||||
if (Length > 0x0000FFFF)
|
||||
return STATUS_INVALID_PARAMETER_2;
|
||||
|
||||
DestinationString->Length = (WORD)(Length - 1);
|
||||
|
||||
if (AllocateDestinationString)
|
||||
{
|
||||
DestinationString->Buffer = ExAllocatePool (NonPagedPool,
|
||||
Length);
|
||||
|
||||
if (DestinationString->Buffer == NULL)
|
||||
return STATUS_NO_MEMORY;
|
||||
|
||||
RtlZeroMemory (DestinationString->Buffer,
|
||||
Length);
|
||||
DestinationString->MaximumLength = (WORD)Length;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Length > DestinationString->MaximumLength)
|
||||
{
|
||||
if (DestinationString->MaximumLength == 0)
|
||||
return STATUS_BUFFER_OVERFLOW;
|
||||
DestinationString->Length =
|
||||
DestinationString->MaximumLength - 1;
|
||||
}
|
||||
}
|
||||
|
||||
Status = RtlUnicodeToOemN (DestinationString->Buffer,
|
||||
DestinationString->Length,
|
||||
&Size,
|
||||
SourceString->Buffer,
|
||||
SourceString->Length);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
if (AllocateDestinationString)
|
||||
ExFreePool (DestinationString->Buffer);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
DestinationString->Buffer[Size] = 0;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
|
@ -1258,9 +1359,68 @@ RtlUpcaseUnicodeStringToAnsiString (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlUpcaseUnicodeStringToCountedOemString
|
||||
*/
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlUpcaseUnicodeStringToCountedOemString (
|
||||
IN OUT POEM_STRING DestinationString,
|
||||
IN PUNICODE_STRING SourceString,
|
||||
IN BOOLEAN AllocateDestinationString
|
||||
)
|
||||
{
|
||||
NTSTATUS Status;
|
||||
ULONG Length;
|
||||
ULONG Size;
|
||||
|
||||
if (NlsMbCodePageTag == TRUE)
|
||||
Length = RtlUnicodeStringToAnsiSize (SourceString) + 1;
|
||||
else
|
||||
Length = SourceString->Length / sizeof(WCHAR) + 1;
|
||||
|
||||
if (Length > 0x0000FFFF)
|
||||
return STATUS_INVALID_PARAMETER_2;
|
||||
|
||||
DestinationString->Length = (WORD)(Length - 1);
|
||||
|
||||
if (AllocateDestinationString == TRUE)
|
||||
{
|
||||
DestinationString->Buffer = ExAllocatePool (NonPagedPool,
|
||||
Length);
|
||||
|
||||
if (DestinationString->Buffer == NULL)
|
||||
return STATUS_NO_MEMORY;
|
||||
|
||||
RtlZeroMemory (DestinationString->Buffer,
|
||||
Length);
|
||||
DestinationString->MaximumLength = (WORD)Length;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Length > DestinationString->MaximumLength)
|
||||
{
|
||||
if (DestinationString->MaximumLength == 0)
|
||||
return STATUS_BUFFER_OVERFLOW;
|
||||
DestinationString->Length =
|
||||
DestinationString->MaximumLength - 1;
|
||||
}
|
||||
}
|
||||
|
||||
Status = RtlUpcaseUnicodeToOemN (DestinationString->Buffer,
|
||||
DestinationString->Length,
|
||||
&Size,
|
||||
SourceString->Buffer,
|
||||
SourceString->Length);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
if (AllocateDestinationString)
|
||||
ExFreePool (DestinationString->Buffer);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
DestinationString->Buffer[Size] = 0;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
|
@ -1315,11 +1475,6 @@ RtlUpcaseUnicodeStringToOemString (
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
RtlUpcaseUnicodeToCustomCP
|
||||
*/
|
||||
|
||||
|
||||
CHAR
|
||||
STDCALL
|
||||
RtlUpperChar (
|
||||
|
|
Loading…
Reference in a new issue