⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kernel64.inc

📁 一个用纯汇编 写的操作系统 源代码 是用 TASM 编译器写的
💻 INC
📖 第 1 页 / 共 2 页
字号:

; KERNEL32.DLL structures and constants

struct SYSTEM_INFO
  wProcessorArchitecture      dw ?
  wReserved		      dw ?
  dwPageSize		      dd ?
  lpMinimumApplicationAddress dq ?
  lpMaximumApplicationAddress dq ?
  dwActiveProcessorMask       dd ?
  dwNumberOfProcessors	      dd ?
  dwProcessorType	      dd ?
  dwAllocationGranularity     dd ?
  wProcessorLevel	      dw ?
  wProcessorRevision	      dw ?
ends

struct OSVERSIONINFO
  dwOSVersionInfoSize dd ?
  dwMajorVersion      dd ?
  dwMinorVersion      dd ?
  dwBuildNumber       dd ?
  dwPlatformId	      dd ?
  szCSDVersion	      TCHAR 128 dup (?)
ends

struct OSVERSIONINFOA
  dwOSVersionInfoSize dd ?
  dwMajorVersion      dd ?
  dwMinorVersion      dd ?
  dwBuildNumber       dd ?
  dwPlatformId	      dd ?
  szCSDVersion	      db 128 dup (?)
ends

struct OSVERSIONINFOW
  dwOSVersionInfoSize dd ?
  dwMajorVersion      dd ?
  dwMinorVersion      dd ?
  dwBuildNumber       dd ?
  dwPlatformId	      dd ?
  szCSDVersion	      du 128 dup (?)
ends

struct MEMORYSTATUS
  dwiLength	  dq ?
  dwMemoryLoad	  dq ?
  dwTotalPhys	  dq ?
  dwAvailPhys	  dq ?
  dwTotalPageFile dq ?
  dwAvailPageFile dq ?
  dwTotalVirtual  dq ?
  dwAvailVirtual  dq ?
ends

struct STARTUPINFO
  cb		  dd ?
		  dd ?
  lpReserved	  dq ?
  lpDesktop	  dq ?
  lpTitle	  dq ?
  dwX		  dd ?
  dwY		  dd ?
  dwXSize	  dd ?
  dwYSize	  dd ?
  dwXCountChars   dd ?
  dwYCountChars   dd ?
  dwFillAttribute dd ?
  dwFlags	  dd ?
  wShowWindow	  dw ?
  cbReserved2	  dw ?
		  dd ?
  lpReserved2	  dq ?
  hStdInput	  dq ?
  hStdOutput	  dq ?
  hStdError	  dq ?
ends

struct PROCESS_INFORMATION
  hProcess    dq ?
  hThread     dq ?
  dwProcessId dd ?
  dwThreadId  dd ?
ends

struct FILETIME
  dwLowDateTime  dd ?
  dwHighDateTime dd ?
ends

struct SYSTEMTIME
  wYear 	dw ?
  wMonth	dw ?
  wDayOfWeek	dw ?
  wDay		dw ?
  wHour 	dw ?
  wMinute	dw ?
  wSecond	dw ?
  wMilliseconds dw ?
ends

struct BY_HANDLE_FILE_INFORMATION
  dwFileAttributes     dd ?
  ftCreationTime       FILETIME
  ftLastAccessTime     FILETIME
  ftLastWriteTime      FILETIME
  dwVolumeSerialNumber dd ?
  nFileSizeHigh        dd ?
  nFileSizeLow	       dd ?
  nNumberOfLinks       dd ?
  nFileIndexHigh       dd ?
  nFileIndexLow        dd ?
ends

struct FINDDATA
  dwFileAttributes   dd ?
  ftCreationTime     FILETIME
  ftLastAccessTime   FILETIME
  ftLastWriteTime    FILETIME
  nFileSizeHigh      dd ?
  nFileSizeLow	     dd ?
  dwReserved0	     dd ?
  dwReserved1	     dd ?
  cFileName	     TCHAR 260 dup (?)
  cAlternateFileName TCHAR 14 dup (?)
ends

struct FINDDATAA
  dwFileAttributes   dd ?
  ftCreationTime     FILETIME
  ftLastAccessTime   FILETIME
  ftLastWriteTime    FILETIME
  nFileSizeHigh      dd ?
  nFileSizeLow	     dd ?
  dwReserved0	     dd ?
  dwReserved1	     dd ?
  cFileName	     db 260 dup (?)
  cAlternateFileName db 14 dup (?)
ends

struct FINDDATAW
  dwFileAttributes   dd ?
  ftCreationTime     FILETIME
  ftLastAccessTime   FILETIME
  ftLastWriteTime    FILETIME
  nFileSizeHigh      dd ?
  nFileSizeLow	     dd ?
  dwReserved0	     dd ?
  dwReserved1	     dd ?
  cFileName	     du 260 dup (?)
  cAlternateFileName du 14 dup (?)
ends

; General constants

NULL  = 0
TRUE  = 1
FALSE = 0

; Access rights

DELETE_RIGHT		  = 00010000h
READ_CONTROL		  = 00020000h
WRITE_DAC		  = 00040000h
WRITE_OWNER		  = 00080000h
SYNCHRONIZE		  = 00100000h
STANDARD_RIGHTS_READ	  = READ_CONTROL
STANDARD_RIGHTS_WRITE	  = READ_CONTROL
STANDARD_RIGHTS_EXECUTE   = READ_CONTROL
STANDARD_RIGHTS_REQUIRED  = 000F0000h
STANDARD_RIGHTS_ALL	  = 001F0000h
SPECIFIC_RIGHTS_ALL	  = 0000FFFFh
ACCESS_SYSTEM_SECURITY	  = 01000000h
MAXIMUM_ALLOWED 	  = 02000000h
GENERIC_READ		  = 80000000h
GENERIC_WRITE		  = 40000000h
GENERIC_EXECUTE 	  = 20000000h
GENERIC_ALL		  = 10000000h
PROCESS_TERMINATE	  = 00000001h
PROCESS_CREATE_THREAD	  = 00000002h
PROCESS_VM_OPERATION	  = 00000008h
PROCESS_VM_READ 	  = 00000010h
PROCESS_VM_WRITE	  = 00000020h
PROCESS_DUP_HANDLE	  = 00000040h
PROCESS_CREATE_PROCESS	  = 00000080h
PROCESS_SET_QUOTA	  = 00000100h
PROCESS_SET_INFORMATION   = 00000200h
PROCESS_QUERY_INFORMATION = 00000400h
PROCESS_ALL_ACCESS	  = STANDARD_RIGHTS_REQUIRED or SYNCHRONIZE or 0FFFh
FILE_SHARE_READ 	  = 00000001h
FILE_SHARE_WRITE	  = 00000002h
FILE_SHARE_DELETE	  = 00000004h

; CreateFile actions

CREATE_NEW	  = 1
CREATE_ALWAYS	  = 2
OPEN_EXISTING	  = 3
OPEN_ALWAYS	  = 4
TRUNCATE_EXISTING = 5

; OpenFile modes

OF_READ 	    = 0000h
OF_WRITE	    = 0001h
OF_READWRITE	    = 0002h
OF_SHARE_COMPAT     = 0000h
OF_SHARE_EXCLUSIVE  = 0010h
OF_SHARE_DENY_WRITE = 0020h
OF_SHARE_DENY_READ  = 0030h
OF_SHARE_DENY_NONE  = 0040h
OF_PARSE	    = 0100h
OF_DELETE	    = 0200h
OF_VERIFY	    = 0400h
OF_CANCEL	    = 0800h
OF_CREATE	    = 1000h
OF_PROMPT	    = 2000h
OF_EXIST	    = 4000h
OF_REOPEN	    = 8000h

; SetFilePointer methods

FILE_BEGIN   = 0
FILE_CURRENT = 1
FILE_END     = 2

; File attributes

FILE_ATTRIBUTE_READONLY   = 001h
FILE_ATTRIBUTE_HIDDEN	  = 002h
FILE_ATTRIBUTE_SYSTEM	  = 004h
FILE_ATTRIBUTE_DIRECTORY  = 010h
FILE_ATTRIBUTE_ARCHIVE	  = 020h
FILE_ATTRIBUTE_NORMAL	  = 080h
FILE_ATTRIBUTE_TEMPORARY  = 100h
FILE_ATTRIBUTE_COMPRESSED = 800h

; File flags

FILE_FLAG_WRITE_THROUGH    = 80000000h
FILE_FLAG_OVERLAPPED	   = 40000000h
FILE_FLAG_NO_BUFFERING	   = 20000000h
FILE_FLAG_RANDOM_ACCESS    = 10000000h
FILE_FLAG_SEQUENTIAL_SCAN  = 08000000h
FILE_FLAG_DELETE_ON_CLOSE  = 04000000h
FILE_FLAG_BACKUP_SEMANTICS = 02000000h
FILE_FLAG_POSIX_SEMANTICS  = 01000000h

; Notify filters

FILE_NOTIFY_CHANGE_FILE_NAME  = 001h
FILE_NOTIFY_CHANGE_DIR_NAME   = 002h
FILE_NOTIFY_CHANGE_ATTRIBUTES = 004h
FILE_NOTIFY_CHANGE_SIZE       = 008h
FILE_NOTIFY_CHANGE_LAST_WRITE = 010h
FILE_NOTIFY_CHANGE_SECURITY   = 100h

; File types

FILE_TYPE_UNKNOWN = 0
FILE_TYPE_DISK	  = 1
FILE_TYPE_CHAR	  = 2
FILE_TYPE_PIPE	  = 3
FILE_TYPE_REMOTE  = 8000h

; LockFileEx flags

LOCKFILE_FAIL_IMMEDIATELY = 1
LOCKFILE_EXCLUSIVE_LOCK   = 2

; MoveFileEx flags

MOVEFILE_REPLACE_EXISTING   = 1
MOVEFILE_COPY_ALLOWED	    = 2
MOVEFILE_DELAY_UNTIL_REBOOT = 4
MOVEFILE_WRITE_THROUGH	    = 8

; FindFirstFileEx flags

FIND_FIRST_EX_CASE_SENSITIVE = 1

; Device handles

INVALID_HANDLE_VALUE = -1
STD_INPUT_HANDLE     = -10
STD_OUTPUT_HANDLE    = -11
STD_ERROR_HANDLE     = -12

; DuplicateHandle options

DUPLICATE_CLOSE_SOURCE = 1
DUPLICATE_SAME_ACCESS  = 2

; File mapping acccess rights

SECTION_QUERY	    = 01h
SECTION_MAP_WRITE   = 02h
SECTION_MAP_READ    = 04h
SECTION_MAP_EXECUTE = 08h
SECTION_EXTEND_SIZE = 10h
SECTION_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED or SECTION_QUERY or SECTION_MAP_WRITE or SECTION_MAP_READ or SECTION_MAP_EXECUTE or SECTION_EXTEND_SIZE
FILE_MAP_COPY	    = SECTION_QUERY
FILE_MAP_WRITE	    = SECTION_MAP_WRITE
FILE_MAP_READ	    = SECTION_MAP_READ
FILE_MAP_ALL_ACCESS = SECTION_ALL_ACCESS

; File system flags

FILE_CASE_SENSITIVE_SEARCH = 0001h
FILE_CASE_PRESERVED_NAMES  = 0002h
FILE_UNICODE_ON_DISK	   = 0004h
FILE_PERSISTENT_ACLS	   = 0008h
FILE_FILE_COMPRESSION	   = 0010h
FILE_VOLUME_IS_COMPRESSED  = 8000h
FS_CASE_IS_PRESERVED	   = FILE_CASE_PRESERVED_NAMES
FS_CASE_SENSITIVE	   = FILE_CASE_SENSITIVE_SEARCH
FS_UNICODE_STORED_ON_DISK  = FILE_UNICODE_ON_DISK
FS_PERSISTENT_ACLS	   = FILE_PERSISTENT_ACLS

; Drive types

DRIVE_UNKNOWN	  = 0
DRIVE_NO_ROOT_DIR = 1
DRIVE_REMOVABLE   = 2
DRIVE_FIXED	  = 3
DRIVE_REMOTE	  = 4
DRIVE_CDROM	  = 5
DRIVE_RAMDISK	  = 6

; Pipe modes

PIPE_ACCESS_INBOUND	 = 1
PIPE_ACCESS_OUTBOUND	 = 2
PIPE_ACCESS_DUPLEX	 = 3
PIPE_CLIENT_END 	 = 0
PIPE_SERVER_END 	 = 1
PIPE_WAIT		 = 0
PIPE_NOWAIT		 = 1
PIPE_READMODE_BYTE	 = 0
PIPE_READMODE_MESSAGE	 = 2
PIPE_TYPE_BYTE		 = 0
PIPE_TYPE_MESSAGE	 = 4
PIPE_UNLIMITED_INSTANCES = 255

; Global memory flags

GMEM_FIXED	       = 0000h
GMEM_MOVEABLE	       = 0002h
GMEM_NOCOMPACT	       = 0010h
GMEM_NODISCARD	       = 0020h
GMEM_ZEROINIT	       = 0040h
GMEM_MODIFY	       = 0080h
GMEM_DISCARDABLE       = 0100h
GMEM_NOT_BANKED        = 1000h
GMEM_SHARE	       = 2000h
GMEM_DDESHARE	       = 2000h
GMEM_NOTIFY	       = 4000h
GMEM_LOWER	       = GMEM_NOT_BANKED
GMEM_VALID_FLAGS       = 7F72h
GMEM_INVALID_HANDLE    = 8000h
GMEM_DISCARDED	       = 4000h
GMEM_LOCKCOUNT	       = 0FFh
GHND		       = GMEM_MOVEABLE + GMEM_ZEROINIT
GPTR		       = GMEM_FIXED + GMEM_ZEROINIT

; Local memory flags

LMEM_FIXED	       = 0000h
LMEM_MOVEABLE	       = 0002h
LMEM_NOCOMPACT	       = 0010h
LMEM_NODISCARD	       = 0020h
LMEM_ZEROINIT	       = 0040h
LMEM_MODIFY	       = 0080h
LMEM_DISCARDABLE       = 0F00h
LMEM_VALID_FLAGS       = 0F72h
LMEM_INVALID_HANDLE    = 8000h
LHND		       = LMEM_MOVEABLE + LMEM_ZEROINIT
LPTR		       = LMEM_FIXED + LMEM_ZEROINIT
LMEM_DISCARDED	       = 4000h
LMEM_LOCKCOUNT	       = 00FFh

; Page access flags

PAGE_NOACCESS	       = 001h
PAGE_READONLY	       = 002h
PAGE_READWRITE	       = 004h
PAGE_WRITECOPY	       = 008h
PAGE_EXECUTE	       = 010h
PAGE_EXECUTE_READ      = 020h
PAGE_EXECUTE_READWRITE = 040h
PAGE_EXECUTE_WRITECOPY = 080h
PAGE_GUARD	       = 100h
PAGE_NOCACHE	       = 200h

; Memory allocation flags

MEM_COMMIT	       = 001000h
MEM_RESERVE	       = 002000h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -