Открыть боковую панель
Агарков Михаил Романович
ReactOS
Коммиты
126768af
Коммит
126768af
создал
Май 29, 1999
по автору
David Welch
Просмотр файлов
Lots of changes to the kernel svn path=/trunk/; revision=527
владелец
0deeaa0d
Изменения
102
Скрыть пробелы
Построчно
Рядом
reactos/include/ddk/ccfuncs.h
Просмотр файла @
126768af
VOID
CbInitDccb
(
PDCCB
Dccb
,
PDEVICE_OBJECT
DeviceObject
,
ULONG
SectorSize
,
ULONG
NrSectors
,
ULONG
PercentageToCache
);
PCCB
CbAcquireForRead
(
PDCCB
Dccb
,
ULONG
BlockNr
);
VOID
CbReleaseFromRead
(
PDCCB
Dccb
,
PCCB
Ccb
);
reactos/include/ddk/cctypes.h
Просмотр файла @
126768af
#ifndef __INCLUDE_DDK_CCTYPES_H
#ifndef __INCLUDE_DDK_CCTYPES_H
#define __INCLUDE_DDK_CCTYPES_H
#define __INCLUDE_DDK_CCTYPES_H
typedef
struct
_CCB
{
ULONG
BlockNr
;
PVOID
Buffer
;
ULONG
State
;
ULONG
ActiveReaders
;
BOOLEAN
WriteInProgress
;
BOOLEAN
ActiveWriter
;
ULONG
References
;
KEVENT
FinishedNotify
;
KSPIN_LOCK
Lock
;
BOOLEAN
Modified
;
LIST_ENTRY
Entry
;
}
CCB
,
*
PCCB
;
enum
{
CCB_INVALID
,
CCB_NOT_CACHED
,
CCB_CACHED
,
CCB_DELETE_PENDING
,
};
typedef
struct
_DCCB
/*
* PURPOSE: Device cache control block
*/
{
PCCB
*
HashTbl
;
ULONG
HashTblSize
;
KSPIN_LOCK
HashTblLock
;
PDEVICE_OBJECT
DeviceObject
;
ULONG
SectorSize
;
LIST_ENTRY
CcbListHead
;
KSPIN_LOCK
CcbListLock
;
ULONG
NrCcbs
;
ULONG
NrModifiedCcbs
;
}
DCCB
,
*
PDCCB
;
#endif
/* __INCLUDE_DDK_CCTYPES_H */
#endif
/* __INCLUDE_DDK_CCTYPES_H */
reactos/include/ddk/defines.h
Просмотр файла @
126768af
...
@@ -231,20 +231,8 @@ enum
...
@@ -231,20 +231,8 @@ enum
/*
/*
* IRQ levels
* IRQ levels
*/
*/
enum
#define PASSIVE_LEVEL (1)
{
#define APC_LEVEL (2)
PASSIVE_LEVEL
,
#define DISPATCH_LEVEL (3)
#define FIRST_DEVICE_SPECIFIC_LEVEL (4)
/*
#define HIGH_LEVEL (FIRST_DEVICE_SPECIFIC_LEVEL + NR_DEVICE_SPECIFIC_LEVELS)
* Which order for these (only DISPATCH_LEVEL is important for now)
*/
APC_LEVEL
,
DISPATCH_LEVEL
,
/*
* Above here are device specific IRQ levels
*/
FIRST_DEVICE_SPECIFIC_LEVEL
,
HIGH_LEVEL
=
FIRST_DEVICE_SPECIFIC_LEVEL
+
NR_DEVICE_SPECIFIC_LEVELS
,
};
reactos/include/ddk/iodef.h
Просмотр файла @
126768af
...
@@ -67,42 +67,27 @@ enum
...
@@ -67,42 +67,27 @@ enum
IRP_DEFER_IO_COMPLETION
=
0x2000
,
IRP_DEFER_IO_COMPLETION
=
0x2000
,
};
};
/*
* I/O operation flags
*/
enum
{
SL_FORCE_ACCESS_CHECK
=
0x1
,
SL_OPEN_PAGING_FILE
=
0x2
,
SL_OPEN_TARGET_DIRECTORY
=
0x4
,
SL_CASE_SENSITIVE
=
0x8
,
SL_KEY_SPECIFIED
=
0x10
,
SL_OVERRIDE_VERIFY_VOLUME
=
0x20
,
SL_WRITE_THROUGH
=
0x40
,
SL_FT_SEQUENTIAL_WRITE
=
0x80
,
SL_FAIL_IMMEDIATELY
=
0x100
,
SL_EXCLUSIVE_LOCK
=
0x200
,
SL_WATCH_TREE
=
0x2000
,
SL_ALLOW_RAW_MOUNT
=
0x4000
,
};
#define SL_FORCE_ACCESS_CHECK (0x1)
#define SL_FORCE_ACCESS_CHECK (0x1)
#define SL_OPEN_PAGING_FILE (0x2)
#define SL_OPEN_PAGING_FILE (0x2)
#define SL_OPEN_TARGET_DIRECTORY (0x4)
#define SL_OPEN_TARGET_DIRECTORY (0x4)
#define SL_CASE_SENSITIVE (0x8)
#define SL_CASE_SENSITIVE (0x80)
#define SL_KEY_SPECIFIED (0x10)
#define SL_OVERRIDE_VERIFY_VOLUME (0x20)
#define SL_KEY_SPECIFIED (0x1)
#define SL_WRITE_THROUGHT (0x40)
#define SL_OVERRIDE_VERIFY_VOLUME (0x2)
#define SL_FT_SEQUENTIAL_WRITE (0x80)
#define SL_WRITE_THROUGHT (0x4)
#define SL_FAIL_IMMEDIATELY (0x100)
#define SL_FT_SEQUENTIAL_WRITE (0x8)
#define SL_EXCLUSIVE_LOCK (0x200)
#define SL_WATCH_TREE (0x2000)
#define SL_FAIL_IMMEDIATELY (0x1)
#define SL_EXCLUSIVE_LOCK (0x2)
#define SL_WATCH_TREE (0x1)
#define SL_RESTART_SCAN (0x1)
#define SL_RESTART_SCAN (0x1)
#define SL_RETURN_SINGLE_ENTRY (0x2)
#define SL_RETURN_SINGLE_ENTRY (0x2)
#define SL_INDEX_SPECIFIED (0x4)
#define SL_INDEX_SPECIFIED (0x4)
#define SL_ALLOW_RAW_MOUNT (0x1)
#define SL_PENDING_RETURNED 0x01
#define SL_PENDING_RETURNED 0x01
#define SL_INVOKE_ON_CANCEL 0x20
#define SL_INVOKE_ON_CANCEL 0x20
#define SL_INVOKE_ON_SUCCESS 0x40
#define SL_INVOKE_ON_SUCCESS 0x40
...
...
reactos/include/ddk/iofuncs.h
Просмотр файла @
126768af
...
@@ -527,3 +527,5 @@ OUT PULONG ReturnedLength
...
@@ -527,3 +527,5 @@ OUT PULONG ReturnedLength
);
);
VOID
IoRegisterFileSystem
(
PDEVICE_OBJECT
DeviceObject
);
VOID
IoRegisterFileSystem
(
PDEVICE_OBJECT
DeviceObject
);
PDEVICE_OBJECT
IoGetAttachedDevice
(
PDEVICE_OBJECT
DeviceObject
);
PDEVICE_OBJECT
IoGetAttachedDevice
(
PDEVICE_OBJECT
DeviceObject
);
PFILE_OBJECT
IoCreateStreamFileObject
(
PFILE_OBJECT
FileObject
,
PDEVICE_OBJECT
DeviceObject
);
reactos/include/ddk/kefuncs.h
Просмотр файла @
126768af
...
@@ -3,23 +3,21 @@
...
@@ -3,23 +3,21 @@
/* KERNEL FUNCTIONS ********************************************************/
/* KERNEL FUNCTIONS ********************************************************/
struct
_KAPC
;
VOID
KeInitializeApc
(
PKAPC
Apc
,
PKTHREAD
Thread
,
void
KeInitializeApc
(
UCHAR
StateIndex
,
struct
_KAPC
*
Apc
,
PKKERNEL_ROUTINE
KernelRoutine
,
PKTHREAD
Thread
,
PKRUNDOWN_ROUTINE
RundownRoutine
,
UCHAR
StateIndex
,
PKNORMAL_ROUTINE
NormalRoutine
,
PKKERNEL_ROUTINE
KernelRoutine
,
UCHAR
Mode
,
PKRUNDOWN_ROUTINE
RundownRoutine
,
PVOID
Context
);
PKNORMAL_ROUTINE
NormalRoutine
,
UCHAR
Mode
,
VOID
KeInsertQueueApc
(
PKAPC
Apc
,
PVOID
Context
PVOID
SystemArgument1
,
);
PVOID
SystemArgument2
,
UCHAR
Mode
);
void
KeInsertQueueApc
(
struct
_KAPC
*
Apc
,
PVOID
SystemArgument1
,
VOID
KeAttachProcess
(
struct
_EPROCESS
*
Process
);
PVOID
SystemArgument2
,
UCHAR
Mode
);
VOID
KeDetachProcess
(
VOID
);
void
KeAttachProcess
(
struct
_EPROCESS
*
Process
);
void
KeDetachProcess
(
VOID
);
VOID
KeDrainApcQueue
(
VOID
);
VOID
KeDrainApcQueue
(
VOID
);
PKPROCESS
KeGetCurrentProcess
(
VOID
);
PKPROCESS
KeGetCurrentProcess
(
VOID
);
...
@@ -94,7 +92,9 @@ LONG KeSetBasePriorityThread(PKTHREAD Thread, LONG Increment);
...
@@ -94,7 +92,9 @@ LONG KeSetBasePriorityThread(PKTHREAD Thread, LONG Increment);
LONG
KeSetEvent
(
PKEVENT
Event
,
KPRIORITY
Increment
,
BOOLEAN
Wait
);
LONG
KeSetEvent
(
PKEVENT
Event
,
KPRIORITY
Increment
,
BOOLEAN
Wait
);
KPRIORITY
KeSetPriorityThread
(
PKTHREAD
Thread
,
KPRIORITY
Priority
);
KPRIORITY
KeSetPriorityThread
(
PKTHREAD
Thread
,
KPRIORITY
Priority
);
BOOLEAN
KeSetTimer
(
PKTIMER
Timer
,
LARGE_INTEGER
DueTime
,
PKDPC
Dpc
);
BOOLEAN
KeSetTimer
(
PKTIMER
Timer
,
LARGE_INTEGER
DueTime
,
PKDPC
Dpc
);
BOOLEAN
KeSetTimerEx
(
PKTIMER
Timer
,
LARGE_INTEGER
DueTime
,
LONG
Period
,
BOOLEAN
KeSetTimerEx
(
PKTIMER
Timer
,
LARGE_INTEGER
DueTime
,
LONG
Period
,
PKDPC
Dpc
);
PKDPC
Dpc
);
VOID
KeStallExecutionProcessor
(
ULONG
MicroSeconds
);
VOID
KeStallExecutionProcessor
(
ULONG
MicroSeconds
);
BOOLEAN
KeSynchronizeExecution
(
PKINTERRUPT
Interrupt
,
BOOLEAN
KeSynchronizeExecution
(
PKINTERRUPT
Interrupt
,
...
@@ -108,12 +108,16 @@ NTSTATUS KeWaitForMultipleObjects(ULONG Count,
...
@@ -108,12 +108,16 @@ NTSTATUS KeWaitForMultipleObjects(ULONG Count,
BOOLEAN
Alertable
,
BOOLEAN
Alertable
,
PLARGE_INTEGER
Timeout
,
PLARGE_INTEGER
Timeout
,
PKWAIT_BLOCK
WaitBlockArray
);
PKWAIT_BLOCK
WaitBlockArray
);
NTSTATUS
KeWaitForMutexObject
(
PKMUTEX
Mutex
,
KWAIT_REASON
WaitReason
,
NTSTATUS
KeWaitForMutexObject
(
PKMUTEX
Mutex
,
KPROCESSOR_MODE
WaitMode
,
BOOLEAN
Alertable
,
KWAIT_REASON
WaitReason
,
KPROCESSOR_MODE
WaitMode
,
BOOLEAN
Alertable
,
PLARGE_INTEGER
Timeout
);
PLARGE_INTEGER
Timeout
);
NTSTATUS
KeWaitForSingleObject
(
PVOID
Object
,
KWAIT_REASON
WaitReason
,
NTSTATUS
KeWaitForSingleObject
(
PVOID
Object
,
KWAIT_REASON
WaitReason
,
KPROCESSOR_MODE
WaitMode
,
KPROCESSOR_MODE
WaitMode
,
BOOLEAN
Alertable
,
PLARGE_INTEGER
Timeout
);
BOOLEAN
Alertable
,
PLARGE_INTEGER
Timeout
);
/*
/*
* FUNCTION: Initializes a spinlock
* FUNCTION: Initializes a spinlock
...
@@ -155,17 +159,6 @@ VOID KeBugCheckEx(ULONG BugCheckCode,
...
@@ -155,17 +159,6 @@ VOID KeBugCheckEx(ULONG BugCheckCode,
*/
*/
VOID
KeBugCheck
(
ULONG
BugCheckCode
);
VOID
KeBugCheck
(
ULONG
BugCheckCode
);
// kmutant definition slightly modified from nt5 ddk
typedef
struct
_KMUTANT
{
DISPATCHER_HEADER
Header
;
LIST_ENTRY
MutantListEntry
;
struct
_KTHREAD
*
OwnerThread
;
BOOLEAN
Abandoned
;
UCHAR
ApcDisable
;
}
KMUTANT
,
*
PKMUTANT
;
// io permission map has a 8k size
// io permission map has a 8k size
// Each bit in the IOPM corresponds to an io port byte address. The bitmap
// Each bit in the IOPM corresponds to an io port byte address. The bitmap
// is initialized to allow IO at any port. [ all bits set ].
// is initialized to allow IO at any port. [ all bits set ].
...
@@ -186,7 +179,7 @@ typedef struct _IOPM
...
@@ -186,7 +179,7 @@ typedef struct _IOPM
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
* the minium privilege level required to perform IO prior to checking the permission map.
* the minium privilege level required to perform IO prior to checking the permission map.
*/
*/
void
Ke386SetIoAccessMap
(
int
NewMap
,
PIOPM
*
IoPermissionMap
);
VOID
Ke386SetIoAccessMap
(
ULONG
NewMap
,
PIOPM
*
IoPermissionMap
);
/*
/*
* FUNCTION: Queries the io permission map.
* FUNCTION: Queries the io permission map.
...
@@ -199,7 +192,7 @@ void Ke386SetIoAccessMap(int NewMap, PIOPM *IoPermissionMap);
...
@@ -199,7 +192,7 @@ void Ke386SetIoAccessMap(int NewMap, PIOPM *IoPermissionMap);
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
* is initialized to allow IO at any port. [ all bits set ]. The IOPL determines
* the minium privilege level required to perform IO prior to checking the permission map.
* the minium privilege level required to perform IO prior to checking the permission map.
*/
*/
void
Ke386QueryIoAccessMap
(
BOOLEAN
NewMap
,
PIOPM
*
IoPermissionMap
);
VOID
Ke386QueryIoAccessMap
(
BOOLEAN
NewMap
,
PIOPM
*
IoPermissionMap
);
/*
/*
* FUNCTION: Set the process IOPL
* FUNCTION: Set the process IOPL
...
@@ -215,10 +208,8 @@ NTSTATUS Ke386IoSetAccessProcess(PEPROCESS Eprocess, BOOLEAN EnableIo);
...
@@ -215,10 +208,8 @@ NTSTATUS Ke386IoSetAccessProcess(PEPROCESS Eprocess, BOOLEAN EnableIo);
* SelArray =
* SelArray =
* NumOfSelectors =
* NumOfSelectors =
*/
*/
NTSTATUS
KeI386ReleaseGdtSelectors
(
NTSTATUS
KeI386ReleaseGdtSelectors
(
OUT
PULONG
SelArray
,
OUT
PULONG
SelArray
,
IN
ULONG
NumOfSelectors
);
IN
ULONG
NumOfSelectors
);
/*
/*
* FUNCTION: Allocates a set of Global Descriptor Table Selectors
* FUNCTION: Allocates a set of Global Descriptor Table Selectors
...
@@ -226,17 +217,15 @@ NTSTATUS KeI386ReleaseGdtSelectors(
...
@@ -226,17 +217,15 @@ NTSTATUS KeI386ReleaseGdtSelectors(
* SelArray =
* SelArray =
* NumOfSelectors =
* NumOfSelectors =
*/
*/
NTSTATUS
KeI386AllocateGdtSelectors
(
NTSTATUS
KeI386AllocateGdtSelectors
(
OUT
PULONG
SelArray
,
OUT
PULONG
SelArray
,
IN
ULONG
NumOfSelectors
);
IN
ULONG
NumOfSelectors
);
/*
/*
* FUNCTION: Raises a user mode exception
* FUNCTION: Raises a user mode exception
* ARGUMENTS:
* ARGUMENTS:
* ExceptionCode = Status code of the exception
* ExceptionCode = Status code of the exception
*/
*/
void
KeRaiseUserException
(
NTSTATUS
ExceptionCode
);
VOID
KeRaiseUserException
(
NTSTATUS
ExceptionCode
);
#endif
/* __INCLUDE_DDK_KEFUNCS_H */
#endif
/* __INCLUDE_DDK_KEFUNCS_H */
reactos/include/ddk/ketypes.h
Просмотр файла @
126768af
...
@@ -38,16 +38,37 @@ typedef struct
...
@@ -38,16 +38,37 @@ typedef struct
typedef
struct
_DISPATCHER_HEADER
typedef
struct
_DISPATCHER_HEADER
{
{
UCHAR
Type
;
UCHAR
Type
;
UCHAR
Absolute
;
UCHAR
Absolute
;
UCHAR
Size
;
UCHAR
Size
;
UCHAR
Inserted
;
UCHAR
Inserted
;
LONG
SignalState
;
LONG
SignalState
;
LIST_ENTRY
WaitListHead
;
LIST_ENTRY
WaitListHead
;
}
DISPATCHER_HEADER
;
}
DISPATCHER_HEADER
;
typedef
struct
_KQUEUE
{
DISPATCHER_HEADER
Header
;
LIST_ENTRY
EntryListHead
;
ULONG
CurrentCount
;
ULONG
MaximumCount
;
LIST_ENTRY
ThreadListEntry
;
}
KQUEUE
,
*
PKQUEUE
;
struct
_KDPC
;
struct
_KDPC
;
/*
typedef struct _KTIMER
{
DISPATCHER_HEADER Header;
ULARGE_INTEGER DueTime;
LIST_ENTRY TimerListEntry;
struct _KDPC* Dpc;
LONG Period;
} KTIMER, *PKTIMER;
*/
typedef
struct
_KTIMER
typedef
struct
_KTIMER
{
{
LIST_ENTRY
entry
;
LIST_ENTRY
entry
;
...
@@ -63,7 +84,7 @@ struct _KSPIN_LOCK;
...
@@ -63,7 +84,7 @@ struct _KSPIN_LOCK;
typedef
struct
_KSPIN_LOCK
typedef
struct
_KSPIN_LOCK
{
{
KIRQL
irql
;
ULONG
Lock
;
}
KSPIN_LOCK
,
*
PKSPIN_LOCK
;
}
KSPIN_LOCK
,
*
PKSPIN_LOCK
;
typedef
struct
_KDEVICE_QUEUE
typedef
struct
_KDEVICE_QUEUE
...
@@ -110,7 +131,7 @@ typedef struct
...
@@ -110,7 +131,7 @@ typedef struct
struct
_KTHREAD
*
OwnerThread
;
struct
_KTHREAD
*
OwnerThread
;
BOOLEAN
Abandoned
;
BOOLEAN
Abandoned
;
UCHAR
ApcDisable
;
UCHAR
ApcDisable
;
}
KMUTEX
,
*
PKMUTEX
;
}
KMUTEX
,
*
PKMUTEX
,
KMUTANT
,
*
PKMUTANT
;
typedef
struct
typedef
struct
{
{
...
...
reactos/include/ddk/ntifs.h
Просмотр файла @
126768af
...
@@ -18,12 +18,35 @@ typedef struct _BCB
...
@@ -18,12 +18,35 @@ typedef struct _BCB
KSPIN_LOCK
BcbLock
;
KSPIN_LOCK
BcbLock
;
}
BCB
,
*
PBCB
;
}
BCB
,
*
PBCB
;
#define CACHE_SEGMENT_SIZE (0x1000)
struct
_MEMORY_AREA
;
typedef
struct
_CACHE_SEGMENT
{
PVOID
BaseAddress
;
struct
_MEMORY_AREA
*
MemoryArea
;
BOOLEAN
Valid
;
LIST_ENTRY
ListEntry
;
ULONG
FileOffset
;
KEVENT
Lock
;
ULONG
ReferenceCount
;
PBCB
Bcb
;
}
CACHE_SEGMENT
,
*
PCACHE_SEGMENT
;
NTSTATUS
CcFlushCachePage
(
PCACHE_SEGMENT
CacheSeg
);
NTSTATUS
CcReleaseCachePage
(
PBCB
Bcb
,
PCACHE_SEGMENT
CacheSeg
,
BOOLEAN
Valid
);
NTSTATUS
CcRequestCachePage
(
PBCB
Bcb
,
NTSTATUS
CcRequestCachePage
(
PBCB
Bcb
,
ULONG
FileOffset
,
ULONG
FileOffset
,
PVOID
*
BaseAddress
,
PVOID
*
BaseAddress
,
PBOOLEAN
UptoDate
);
PBOOLEAN
UptoDate
,
PCACHE_SEGMENT
*
CacheSeg
);
NTSTATUS
CcInitializeFileCache
(
PFILE_OBJECT
FileObject
,
NTSTATUS
CcInitializeFileCache
(
PFILE_OBJECT
FileObject
,
PBCB
*
Bcb
);
PBCB
*
Bcb
);
NTSTATUS
CcReleaseFileCache
(
PFILE_OBJECT
FileObject
,
PBCB
Bcb
);
#include
<ddk/cctypes.h>
#include
<ddk/cctypes.h>
...
...
reactos/include/ddk/pstypes.h
Просмотр файла @
126768af
...
@@ -52,9 +52,9 @@ typedef struct _STARTUPINFOW {
...
@@ -52,9 +52,9 @@ typedef struct _STARTUPINFOW {
WCHAR
ImageFile
[
MAX_PATH
];
WCHAR
ImageFile
[
MAX_PATH
];
WCHAR
CommandLine
[
MAX_PATH
];
WCHAR
CommandLine
[
MAX_PATH
];
WCHAR
DllPath
[
MAX_PATH
];
WCHAR
DllPath
[
MAX_PATH
];
LPWST
R
Reserved
[
MAX_PATH
];
WCHA
R
Reserved
[
MAX_PATH
];
LPWST
R
Desktop
[
MAX_PATH
];
WCHA
R
Desktop
[
MAX_PATH
];
LPWSTR
Title
[
MAX_PATH
];
WCHAR
Title
[
MAX_PATH
];
DWORD
dwX
;
DWORD
dwX
;
DWORD
dwY
;
DWORD
dwY
;
DWORD
dwXSize
;
DWORD
dwXSize
;
...
@@ -83,24 +83,24 @@ typedef struct _LDR {
...
@@ -83,24 +83,24 @@ typedef struct _LDR {
typedef
struct
_NT_PEB
typedef
struct
_NT_PEB
{
{
UCHAR
InheritedAddressSpace
;
UCHAR
InheritedAddressSpace
;
// 00
UCHAR
ReadImageFileExecOptions
;
UCHAR
ReadImageFileExecOptions
;
// 01h
UCHAR
BeingDebugged
;
UCHAR
BeingDebugged
;
// 02h
LONG
ImageBaseAddress
;
LONG
ImageBaseAddress
;
// 03h
LDR
Ldr
;
LDR
Ldr
;
// 07h
WORD
NumberOfProcessors
;
WORD
NumberOfProcessors
;
// 11h
WORD
NtGlobalFlag
;
WORD
NtGlobalFlag
;
// 13h
PPROCESSINFOW
StartupInfo
;
PPROCESSINFOW
StartupInfo
;
// 15h
HANDLE
ProcessHeap
;
HANDLE
ProcessHeap
;
// 19h
ATOMTABLE
LocalAtomTable
;
ATOMTABLE
LocalAtomTable
;
// 1Dh
LPCRITICAL_SECTION
CriticalSection
;
LPCRITICAL_SECTION
CriticalSection
;
// 35h
DWORD
CriticalSectionTimeout
;
DWORD
CriticalSectionTimeout
;
// 39h
WORD
MajorVersion
;
WORD
MajorVersion
;
// 3Dh
WORD
MinorVersion
;
WORD
MinorVersion
;
// 3Fh
WORD
BuildNumber
;
WORD
BuildNumber
;
// 41h
WORD
PlatformId
;
WORD
PlatformId
;
// 43h
}
NT_PEB
,
*
PNT_PEB
;
}
NT_PEB
,
*
PNT_PEB
;
typedef
struct
_CLIENT_ID
typedef
struct
_CLIENT_ID
...
@@ -110,67 +110,116 @@ typedef struct _CLIENT_ID
...
@@ -110,67 +110,116 @@ typedef struct _CLIENT_ID
}
CLIENT_ID
,
*
PCLIENT_ID
;
}
CLIENT_ID
,
*
PCLIENT_ID
;
typedef
struct
_NT_TIB
{
typedef
struct
_NT_TIB
{
struct
_EXCEPTION_REGISTRATION_RECORD
*
ExceptionList
;
struct
_EXCEPTION_REGISTRATION_RECORD
*
ExceptionList
;
// 00h
PVOID
StackBase
;
PVOID
StackBase
;
// 04h
PVOID
StackLimit
;
PVOID
StackLimit
;
// 08h
PVOID
SubSystemTib
;
PVOID
SubSystemTib
;
// 0Ch
union
{
union
{
PVOID
FiberData
;
PVOID
FiberData
;
// 10h
ULONG
Version
;
ULONG
Version
;
// 10h
}
Fib
;
}
Fib
;
PVOID
ArbitraryUserPointer
;
PVOID
ArbitraryUserPointer
;
// 14h
struct
_NT_TIB
*
Self
;
struct
_NT_TIB
*
Self
;
// 18h
}
NT_TIB
,
*
PNT_TIB
;
}
NT_TIB
,
*
PNT_TIB
;
typedef
struct
_NT_TEB
typedef
struct
_NT_TEB
{
{
NT_TIB
Tib
;
NT_TIB
Tib
;
// 0
CLIENT_ID
Cid
;
CLIENT_ID
Cid
;
// 28
HANDLE
RPCHandle
;
HANDLE
RPCHandle
;
// 36
PVOID
TlsData
[
TLS_MINIMUM_AVAILABLE
];
PVOID
TlsData
[
TLS_MINIMUM_AVAILABLE
];
// 40
DWORD
dwTlsIndex
;
DWORD
dwTlsIndex
;
// 230
NT_PEB
*
Peb
;
NT_PEB
*
Peb
;
// 234
DWORD
LastErrorCode
;
DWORD
LastErrorCode
;
// 238
NTSTATUS
LastStatusValue
;
NTSTATUS
LastStatusValue
;
// 242
DWORD
LockCount
;
DWORD
LockCount
;
// 244
UCHAR
HardErrorMode
;
UCHAR
HardErrorMode
;
// 248
}
NT_TEB
;
}
NT_TEB
;
typedef
struct
_KTHREAD
struct
_KPROCESS
;
typedef
struct
_KAPC_STATE
{
{
DISPATCHER_HEADER
DispatcherHeader
;
LIST_ENTRY
ApcListHead
[
2
];
TIME
ElapsedTime
;
struct
_KPROCESS
*
Process
;
TIME
KernelTime
;
UCHAR
KernelApcInProgress
;
TIME
UserTime
;
UCHAR
KernelApcPending
;
STACK_INFORMATION
StackInformation
;
USHORT
UserApcPending
;
PVOID
ServiceDescriptorTable
;
// points to KeServiceDescriptorTable
}
KAPC_STATE
,
*
PKAPC_STATE
;
KAFFINITY
Affinity
;
KPRIORITY
CurrentPriority
;
typedef
struct
_KTHREAD
KPRIORITY
BasePriority
;
{
ULONG
Quantum
;
DISPATCHER_HEADER
DispatcherHeader
;
// For waiting for the thread
UCHAR
ThreadState
;
//Thread state is a typeless enum, otherwise it should be const integer
LIST_ENTRY
MutantListHead
;
ULONG
FreezeCount
;
PVOID
InitialStack
;
LONG
SuspendCount
;
ULONG
StackLimit
;
PTRAP_FRAME
TrapFrame
;
NT_TEB
*
Teb
;
PVOID
*
Tls
;
PVOID
TlsArray
;
KWAIT_BLOCK
WaitBlock
[
4
];
PVOID
KernelStack
;
struct
_KMUTANT
*
MutantList
;
UCHAR
DebugActive
;
PLIST_ENTRY
ApcList
;
UCHAR
State
;
UCHAR
KernelApcDisable
;
USHORT
Alerted
;
KTIMER
TimerBlock
;
UCHAR
Iopl
;
KDEVICE_QUEUE
DeviceQueue
;
UCHAR
NpxState
;
NT_TEB
*
Teb
;
UCHAR
Saturation
;
KPRIORITY
Priority
;
/*
KAPC_STATE
ApcState
;
* PURPOSE: CPU state
ULONG
ContextSwitches
;
* NOTE: I have temporarily added this to give somewhere to store
ULONG
WaitStatus
;
* cpu state when the thread isn't running
KIRQL
WaitIrql
;
*/
ULONG
WaitMode
;
hal_thread_state
Context
;
UCHAR
WaitNext
;
LIST_ENTRY
Entry
;
UCHAR
WaitReason
;
ULONG
LastTick
;
PVOID
WaitBlockList
;
}
KTHREAD
,
*
PKTHREAD
;
LIST_ENTRY
WaitListEntry
;
ULONG
WaitTime
;
KPRIORITY
BasePriority
;
UCHAR
DecrementCount
;
UCHAR
PriorityDecrement
;
UCHAR
Quantum
;
KWAIT_BLOCK
WaitBlock
[
4
];
PVOID
LegoData
;
// ??
LONG
KernelApcDisable
;
KAFFINITY
UserAffinity
;
UCHAR
SystemAffinityActive
;
UCHAR
Pad
;
PKQUEUE
Queue
;
KTIMER
Timer
;
LIST_ENTRY
QueueListEntry
;
KAFFINITY
Affinity
;
UCHAR
Preempted
;
UCHAR
ProcessReadyQueue
;
UCHAR
KernelStackResident
;
UCHAR
NextProcessor
;
PVOID
CallbackStack
;
BOOL
Win32Thread
;
PVOID
TrapFrame
;
PVOID
ApcStatePointer
;
// Is actually eight bytes
UCHAR
EnableStackSwap
;
UCHAR
LargeStack
;
UCHAR
ResourceIndex
;
UCHAR
PreviousMode
;
TIME
KernelTime
;
TIME
UserTime
;
KAPC_STATE
SavedApcState
;
UCHAR
Alertable
;
UCHAR
ApcQueueable
;
ULONG
AutoAlignment
;
PVOID
StackBase
;
KAPC
SuspendApc
;
KSEMAPHORE
SuspendSemaphore
;
LIST_ENTRY
ThreadListEntry
;
UCHAR
FreezeCount
;
ULONG
SuspendCount
;
UCHAR
IdealProcessor
;
UCHAR
DisableBoost
;
/* Provisionally added by David Welch */
hal_thread_state
Context
;
LIST_ENTRY
Entry
;
ULONG
LastTick
;
}
KTHREAD
,
*
PKTHREAD
;
// According to documentation the stack should have a commited [ 1 page ] and
// According to documentation the stack should have a commited [ 1 page ] and
// a reserved part [ 1 M ] but can be specified otherwise in the image file.
// a reserved part [ 1 M ] but can be specified otherwise in the image file.
...
@@ -243,7 +292,7 @@ typedef struct _ETHREAD {
...
@@ -243,7 +292,7 @@ typedef struct _ETHREAD {
typedef
struct
_KPROCESS
typedef
struct
_KPROCESS
{
{
DISPATCHER_HEADER
DispatcherHeader
;
DISPATCHER_HEADER
DispatcherHeader
;
PVOID
PageTableDirectory
;
// FIXME: I shoud point to a PTD
PVOID
PageTableDirectory
;
// FIXME: I shou
l
d point to a PTD
TIME
ElapsedTime
;
TIME
ElapsedTime
;
TIME
KernelTime
;
TIME
KernelTime
;
TIME
UserTime
;
TIME
UserTime
;
...
@@ -268,9 +317,64 @@ typedef struct _KPROCESS
...
@@ -268,9 +317,64 @@ typedef struct _KPROCESS
typedef
struct
_EPROCESS
typedef
struct
_EPROCESS
{
{
KPROCESS
Pcb
;
KPROCESS
Pcb
;
NTSTATUS
ExitStatus
;
ULONG
UniqueProcessId
;
KEVENT
LockEvent
;
ULONG
InheritedFromUniqueProcessId
;
ULONG
LockCount
;
TIME
CreateTime
;
TIME
ExitTime
;
PVOID
LockOwner
;
ULONG
UniqueProcessId
;
LIST_ENTRY
ActiveProcessLinks
;
ULONG
QuotaPeakPoolUsage
[
2
];
ULONG
QuotaPoolUsage
[
2
];
ULONG
PagefileUsage
;
ULONG
CommitCharge
;
ULONG
PeakPagefileUsage
;
ULONG
PeakVirtualUsage
;
LARGE_INTEGER
VirtualSize
;
PVOID
Vm
;
// Actually 48 bytes
PVOID
LastProtoPteFault
;
PVOID
DebugPort
;
PVOID
ExceptionPort
;
PVOID
ObjectTable
;
PVOID
Token
;
KMUTEX
WorkingSetLock
;
PVOID
WorkingSetPage
;
UCHAR
ProcessOutswapEnabled
;
UCHAR
ProcessOutswapped
;
UCHAR
AddressSpaceInitialized
;
UCHAR
AddressSpaceDeleted
;
KMUTEX
AddressCreationLock
;
PVOID
ForkInProgress
;
PVOID
VmOperation
;
PKEVENT
VmOperationEvent
;
PVOID
PageDirectoryPte
;
LARGE_INTEGER
LastFaultCount
;
PVOID
VadRoot
;
PVOID
VadHint
;
PVOID
CloneRoot
;
ULONG
NumberOfPrivatePages
;
ULONG
NumberOfLockedPages
;
UCHAR
ForkWasSuccessFul
;
UCHAR
ExitProcessCalled
;
UCHAR
CreateProcessReported
;
HANDLE
SectionHandle
;
PNT_PEB
Peb
;
PVOID
SectionBaseAddress
;
PVOID
QuotaBlock
;
NTSTATUS
LastThreadExitStatus
;
LARGE_INTEGER
WorkingSetWatch
;
//
ULONG
InheritedFromUniqueProcessId
;
ACCESS_MASK
GrantedAccess
;
ULONG
DefaultHardErrorProcessing
;
PVOID
LdtInformation
;
ULONG
VadFreeHint
;
PVOID
VdmObjects
;
KMUTANT
ProcessMutant
;
CHAR
ImageFileName
[
16
];
LARGE_INTEGER
VmTrimFaultValue
;
PVOID
Win32Process
;
// Actually 12 bytes
PVOID
Win32WindowStation
;
}
EPROCESS
,
*
PEPROCESS
;
}
EPROCESS
,
*
PEPROCESS
;
#define PROCESS_STATE_TERMINATED (1)
#define PROCESS_STATE_TERMINATED (1)
...
...
reactos/include/ddk/status.h
Просмотр файла @
126768af
...
@@ -16,20 +16,44 @@
...
@@ -16,20 +16,44 @@
* Possible status codes
* Possible status codes
* FIXME: These may not be the actual values used by NT
* FIXME: These may not be the actual values used by NT
*/
*/
enum
{
STATUS_SUCCESS
=
0x0
,
#define STATUS_SUCCESS (0x0)
#define STATUS_MORE_ENTRIES (0x105)
#define STATUS_NOTIFY_ENUM_DIR (0x10C)
#define STATUS_OBJECT_EXISTS (0x40000000)
#define STATUS_THREAD_WAS_SUSPENDED (0x40000001)
#define STATUS_WORKING_SET_LIMIT_RANGE (0x40000002)
#define STATUS_UNSUCCESSFUL (0xC0000001)
#define STATUS_NOT_IMPLEMENTED (0xC0000002)
#define STATUS_INVALID_INFO_CLASS (0xC0000003)
#define STATUS_INFO_LENGTH_MISMATCH (0xC0000004)
#define STATUS_ACCESS_VIOLATION (0xC0000005)
#define STATUS_IN_PAGE_ERROR (0xC0000006)
#define STATUS_PAGEFILE_QUOTA (0xC0000007)
#define STATUS_INVALID_HANDLE (0xC0000008)
#define STATUS_BAD_INITIAL_STACK (0xC0000009)
#define STATUS_BAD_INITIAL_PC (0xC000000A)
#define STATUS_INVALID_CID (0xC000000B)
#define STATUS_TIMER_NOT_CANCELED (0xC000000C)
#define STATUS_INVALID_PARAMETER (0xC000000D)
#define STATUS_NO_SUCH_DEVICE (0xC000000E)
#define STATUS_NO_SUCH_FILE (0xC000000F)
#define STATUS_GUARD_PAGE_VIOLATION (0x80000001)
#define STATUS_DATATYPE_MISALIGNMENT (0x80000002)
#define STATUS_BREAKPOINT (0x80000003)
#define STATUS_SINGLE_STEP (0x80000004)
#define STATUS_BUFFER_OVERFLOW (0x80000005)
#define STATUS_NO_MORE_FILES (0x80000006)
#define STATUS_WAKE_SYSTEM_DEBUGGER (0x80000007)
STATUS_MORE_ENTRIES
=
0x00000105
,
STATUS_NOTIFY_ENUM_DIR
=
0x0000010C
,
enum
STATUS_OBJECT_NAME_EXISTS
=
0x40000000
,
{
STATUS_THREAD_WAS_SUSPENDED
,
STATUS_WORKING_SET_LIMIT_RANGE
,
STATUS_IMAGE_NOT_AT_BASE
=
(
0x40000003
),
STATUS_IMAGE_NOT_AT_BASE
,
STATUS_RXACT_STATE_CREATED
,
STATUS_RXACT_STATE_CREATED
,
STATUS_SEGMENT_NOTIFICATION
,
STATUS_SEGMENT_NOTIFICATION
,
STATUS_LOCAL_USER_SESSION_KEY
,
STATUS_LOCAL_USER_SESSION_KEY
,
...
@@ -69,15 +93,6 @@ enum
...
@@ -69,15 +93,6 @@ enum
STATUS_WX86_CREATEWX86TIB
,
STATUS_WX86_CREATEWX86TIB
,
STATUS_GUARD_PAGE_VIOLATION
=
0x80000001
,
STATUS_DATATYPE_MISALIGNMENT
,
STATUS_BREAKPOINT
,
STATUS_SINGLE_STEP
,
STATUS_BUFFER_OVERFLOW
,
STATUS_NO_MORE_FILES
,
STATUS_WAKE_SYSTEM_DEBUGGER
,
STATUS_HANDLES_CLOSED
=
0x8000000A
,
STATUS_HANDLES_CLOSED
=
0x8000000A
,
STATUS_NO_INHERITANCE
,
STATUS_NO_INHERITANCE
,
STATUS_GUID_SUBSTITUTION_MADE
,
STATUS_GUID_SUBSTITUTION_MADE
,
...
@@ -108,21 +123,6 @@ enum
...
@@ -108,21 +123,6 @@ enum
STATUS_ALREADY_DISCONNECTED
,
STATUS_ALREADY_DISCONNECTED
,
STATUS_LONGJUMP
,
STATUS_LONGJUMP
,
STATUS_UNSUCCESSFUL
=
0xC0000001
,
STATUS_NOT_IMPLEMENTED
,
STATUS_INVALID_INFO_CLASS
,
STATUS_INFO_LENGTH_MISMATCH
,
STATUS_ACCESS_VIOLATION
,
STATUS_IN_PAGE_ERROR
,
STATUS_PAGEFILE_QUOTA
,
STATUS_INVALID_HANDLE
,
STATUS_BAD_INITIAL_STACK
,
STATUS_BAD_INITIAL_PC
,
STATUS_INVALID_CID
,
STATUS_TIMER_NOT_CANCELED
,
STATUS_INVALID_PARAMETER
,
STATUS_NO_SUCH_DEVICE
,
STATUS_NO_SUCH_FILE
,
// c0000010
// c0000010
STATUS_INVALID_DEVICE_REQUEST
,
STATUS_INVALID_DEVICE_REQUEST
,
...
...
reactos/include/internal/debug.h
Просмотр файла @
126768af
...
@@ -30,8 +30,8 @@
...
@@ -30,8 +30,8 @@
#define CHECKED
#define CHECKED
#endif
#endif
#ifdef
CHECKED
#if
n
def
NASSERT
#define assert(x) if (!(x)) {DbgPrint("Assertion "#x" failed at %s:%d\n", __FILE__,__LINE__);
for (;;
); }
#define assert(x) if (!(x)) {DbgPrint("Assertion "#x" failed at %s:%d\n", __FILE__,__LINE__);
KeBugCheck(0
); }
#else
#else
#define assert(x)
#define assert(x)
#endif
#endif
...
...
reactos/include/internal/mm.h
Просмотр файла @
126768af
...
@@ -96,6 +96,10 @@ NTSTATUS MmCopyMmInfo(PEPROCESS Src, PEPROCESS Dest);
...
@@ -96,6 +96,10 @@ NTSTATUS MmCopyMmInfo(PEPROCESS Src, PEPROCESS Dest);
NTSTATUS
MmReleaseMmInfo
(
PEPROCESS
Process
);
NTSTATUS
MmReleaseMmInfo
(
PEPROCESS
Process
);
NTSTATUS
Mmi386ReleaseMmInfo
(
PEPROCESS
Process
);
NTSTATUS
Mmi386ReleaseMmInfo
(
PEPROCESS
Process
);
VOID
MmDeletePageEntry
(
PEPROCESS
Process
,
PVOID
Address
,
BOOL
FreePage
);
VOID
MmDeletePageEntry
(
PEPROCESS
Process
,
PVOID
Address
,
BOOL
FreePage
);
NTSTATUS
IoPageRead
(
PFILE_OBJECT
FileObject
,
PVOID
Address
,
PLARGE_INTEGER
Offset
,
PIO_STATUS_BLOCK
StatusBlock
);
#endif
#endif
reactos/include/internal/ps.h
Просмотр файла @
126768af
...
@@ -19,37 +19,13 @@ VOID PsReleaseThread(PETHREAD Thread);
...
@@ -19,37 +19,13 @@ VOID PsReleaseThread(PETHREAD Thread);
VOID
PsBeginThread
(
PKSTART_ROUTINE
StartRoutine
,
PVOID
StartContext
);
VOID
PsBeginThread
(
PKSTART_ROUTINE
StartRoutine
,
PVOID
StartContext
);
VOID
PsBeginThreadWithContextInternal
(
VOID
);
VOID
PsBeginThreadWithContextInternal
(
VOID
);
/*
#define THREAD_STATE_INVALID (0)
* PURPOSE: Thread states
#define THREAD_STATE_RUNNABLE (1)
*/
#define THREAD_STATE_RUNNING (2)
enum
#define THREAD_STATE_SUSPENDED (3)
{
#define THREAD_STATE_TERMINATED (4)
/*
#define THREAD_STATE_MAX (5)
* PURPOSE: Don't touch
*/
THREAD_STATE_INVALID
,
/*
* PURPOSE: Waiting to be dispatched
*/
THREAD_STATE_RUNNABLE
,
/*
* PURPOSE: Currently running
*/
THREAD_STATE_RUNNING
,
/*
* PURPOSE: Doesn't want to run
*/
THREAD_STATE_SUSPENDED
,
/*
* Waiting to be freed
*/
THREAD_STATE_TERMINATED
,
};
/*
/*
* Functions the HAL must provide
* Functions the HAL must provide
*/
*/
...
...
reactos/include/kernel32/kernel32.h
Просмотр файла @
126768af
#include
<windows.h>
#include
<windows.h>
#define UNIMPLEMENTED dprintf("%s at %s:%d is unimplemented\n",__FUNCTION__,__FILE__,__LINE__);
#ifdef NDEBUG
#ifdef NDEBUG
#define DPRINT(args...)
#define DPRINT(args...)
#define CHECKPOINT
#define CHECKPOINT
...
@@ -28,3 +30,4 @@ PVOID __ErrorReturnNull(ULONG ErrorCode);
...
@@ -28,3 +30,4 @@ PVOID __ErrorReturnNull(ULONG ErrorCode);
BOOL
KERNEL32_AnsiToUnicode
(
PWSTR
DestStr
,
BOOL
KERNEL32_AnsiToUnicode
(
PWSTR
DestStr
,
LPCSTR
SrcStr
,
LPCSTR
SrcStr
,
ULONG
MaxLen
);
ULONG
MaxLen
);
PWSTR
InternalAnsiToUnicode
(
PWSTR
Out
,
LPCSTR
In
,
ULONG
MaxLength
);
reactos/include/ntdll/base.h
0 → 100644
Просмотр файла @
126768af
#define NTDLL_BASE (0x77f60000)
reactos/include/ntdll/ntdll.h
Просмотр файла @
126768af
...
@@ -14,3 +14,4 @@ extern void dprintf(char* fmt,...);
...
@@ -14,3 +14,4 @@ extern void dprintf(char* fmt,...);
#define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
#define MAGIC(c1,c2,c3,c4) ((c1) + ((c2)<<8) + ((c3)<<16) + ((c4)<<24))
#define MAGIC_HEAP MAGIC( 'H','E','A','P' )
#define MAGIC_HEAP MAGIC( 'H','E','A','P' )
reactos/lib/crtdll/makefile
Просмотр файла @
126768af
...
@@ -158,7 +158,7 @@ CLEAN_FILES = assert/*.o conio/*.o ctype/*.o direct/*.o dirent/*.o \
...
@@ -158,7 +158,7 @@ CLEAN_FILES = assert/*.o conio/*.o ctype/*.o direct/*.o dirent/*.o \
endif
endif
crtdll.coff
:
crtdll.rc ../../include/reactos/resource.h
crtdll.coff
:
crtdll.rc ../../include/reactos/resource.h
windres
crtdll.rc crtdll.coff
$(RC)
crtdll.rc crtdll.coff
crtdll.a
:
$(OBJECTS)
crtdll.a
:
$(OBJECTS)
$(LD)
-r
$(OBJECTS)
-o
crtdll.a
$(LD)
-r
$(OBJECTS)
-o
crtdll.a
...
...
reactos/lib/kernel32/except/except.c
Просмотр файла @
126768af
...
@@ -65,12 +65,10 @@ LONG
...
@@ -65,12 +65,10 @@ LONG
STDCALL
STDCALL
UnhandledExceptionFilter
(
struct
_EXCEPTION_POINTERS
*
ExceptionInfo
)
UnhandledExceptionFilter
(
struct
_EXCEPTION_POINTERS
*
ExceptionInfo
)
{
{
char
message
[
80
];
DWORD
dbgRet
;
DWORD
dbgRet
;
HANDLE
DebugPort
;
HANDLE
DebugPort
;
NTSTATUS
errCode
;
NTSTATUS
errCode
;
DWORD
DebuggerPresent
;
if
(
ExceptionInfo
->
ExceptionRecord
->
ExceptionCode
==
STATUS_ACCESS_VIOLATION
)
{
if
(
ExceptionInfo
->
ExceptionRecord
->
ExceptionCode
==
STATUS_ACCESS_VIOLATION
)
{
...
...
reactos/lib/kernel32/file/copy.c
Просмотр файла @
126768af
...
@@ -187,7 +187,6 @@ WINBOOL STDCALL CopyFileExA(LPCSTR lpExistingFileName,
...
@@ -187,7 +187,6 @@ WINBOOL STDCALL CopyFileExA(LPCSTR lpExistingFileName,
WINBOOL
*
pbCancel
,
WINBOOL
*
pbCancel
,
DWORD
dwCopyFlags
)
DWORD
dwCopyFlags
)
{
{
ULONG
i
;
WCHAR
ExistingFileNameW
[
MAX_PATH
];
WCHAR
ExistingFileNameW
[
MAX_PATH
];
WCHAR
NewFileNameW
[
MAX_PATH
];
WCHAR
NewFileNameW
[
MAX_PATH
];
...
...
reactos/lib/kernel32/file/curdir.c
Просмотр файла @
126768af
...
@@ -11,8 +11,9 @@
...
@@ -11,8 +11,9 @@
/* INCLUDES ******************************************************************/
/* INCLUDES ******************************************************************/
#include
<windows.h>
#include
<windows.h>
#include
<
string
.h>
#include
<
wchar
.h>
#include
<ctype.h>
#include
<ctype.h>
#include
<string.h>
#define NDEBUG
#define NDEBUG
#include
<kernel32/kernel32.h>
#include
<kernel32/kernel32.h>
...
...
Пред
1
2
3
4
5
6
След
Редактирование
Предварительный просмотр
Поддерживает Markdown
0%
Попробовать снова
или
прикрепить новый файл
.
Отмена
You are about to add
0
people
to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Отмена
Пожалуйста,
зарегистрируйтесь
или
войдите
чтобы прокомментировать