E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
windows核心编程
《
Windows核心编程
》の窗口过程的使用
1)设计一个窗口过程: 下面的实例代码展现了经典的窗口过程的结构。窗口过程使用switch语句处理传入的消息参数uMsg, LRESULT CALLBACK MainWndProc( HWND hwnd, // handle to window
·
2010-08-28 19:00
windows
《
Windows核心编程
》の窗口过程的使用
1)设计一个窗口过程: 下面的实例代码展现了经典的窗口过程的结构。窗口过程使用switch语句处理传入的消息参数uMsg, LRESULT CALLBACK MainWndProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message para
wapysun
·
2010-08-28 19:00
windows
Mutex与CRITICAL_SECTION的比较
Mutex与CRITICAL_SECTION,这两个用于线程同步的对象,使用起来方法和作用都很相似,但还是有些许区别,参考下表(摘自
Windows核心编程
),可以帮助选择最合适的对象。
HarbinZJU
·
2010-08-27 22:00
编程
c
windows
《
Windows核心编程
》の窗口闪烁函数FlashWindow和FlashWindowEx
为了通知用户某种错误发生了,很多应用程序一般使用MessageBeep函数发出蜂鸣声,或者调用函数FlashWindow或FlashWindowEx来使特定的窗口闪烁。应用程序也能使用这些函数来引起用户对某个事件关注,然后显示一个消息提示对话框或一条详细错误信息。1)FlashWindow函数用来使某个指定的窗口产生一次闪烁的效果,它同样不会改变窗口的活动状态(如果要使窗口闪烁指定的次数,则需要使
wapysun
·
2010-08-15 17:00
windows
《
Windows核心编程
》の窗口闪烁函数FlashWindow和FlashWindowEx
为了通知用户某种错误发生了,很多应用程序一般使用MessageBeep函数发出蜂鸣声,或者调用函数FlashWindow或FlashWindowEx来使特定的窗口闪烁。应用程序也能使用这些函数来引起用户对某个事件关注,然后显示一个消息提示对话框或一条详细错误信息。 1)FlashWindow函数用来使某个指定的窗口产生一次闪烁的效果,它同样不会改变窗口的活动状态(如果要使窗口闪烁指定的次数,则需要
ACE1985
·
2010-08-15 17:00
编程
windows
struct
活动
任务
winapi
Windows SEH中的局部展开与全局展开
经过阅读
windows核心编程
一书,对SEH中的局部展开和全局展开终于有了一个比较清晰的概念。
Bad_Sheep
·
2010-08-11 12:00
编程
windows
exception
null
search
《
Windows核心编程
》の内存操作和内存信息管理
=======================内存操作函数========================1)复制内存使用函数CopyMemory:(注意:源内存区域与目的地址区域不能重叠)voidCopyMemory( __in PVOIDDestination,//目的地址 __in constVOID*Source,//源地址 __in SIZE_TLength//要复制的数据的字节大小,注
ACE1985
·
2010-08-02 21:00
编程
windows
buffer
wrapper
编译器
winapi
《
Windows核心编程
》の内存操作和内存信息管理
=======================内存操作函数======================== 1)复制内存使用函数CopyMemory:(注意:源内存区域与目的地址区域不能重叠) void CopyMemory( __in PVOID Destination, //目的地址 __in const VOID *Source, //源地址 __in SIZE_T Leng
wapysun
·
2010-08-02 21:00
windows
WideCharToMultiByte和MultiByteToWideChar函数的用法
这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《
Windows核心编程
》,总结出正确的用法。
alsm168
·
2010-08-02 16:00
《
Windows核心编程
》の线程间同步
Windows中线程间同步的方法主要有:事件(Event)、临界区(CriticalSection)、互斥量(Mutex)和信号灯(Semaphore)。 1)使用事件对象进行线程间同步:在使用CreateEvent函数创建事件对象时,将bManualReset参数设置为FALSE,然后在需要独占操作的代码前面加上一个WaitForSingleObject函数,后面加上一个SetEvent即可。由
ACE1985
·
2010-08-02 09:00
thread
编程
windows
Semaphore
attributes
winapi
《
Windows核心编程
》の线程间同步
Windows中线程间同步的方法主要有:事件(Event)、临界区(Critical Section)、互斥量(Mutex)和信号灯(Semaphore)。 1)使用事件对象进行线程间同步: 在使用CreateEvent函数创建事件对象时,将bManualReset参数设置为FALSE,然后在需要独占操作的代码前面加上一个WaitForSingleObject函数,后面加上一个SetEve
wapysun
·
2010-08-02 09:00
windows
《
Windows核心编程
》のWindows时间
Windows时间的获取和设置:在Win32编程中,常用的获取系统时间的函数是有两个,即GetLocalTime和GetSystemTime:voidWINAPIGetLocalTime( __out LPSYSTEMTIMElpSystemTime);voidWINAPIGetSystemTime( __out LPSYSTEMTIMElpSystemTime);这两个函数的区别是GetLoca
ACE1985
·
2010-08-01 16:00
编程
windows
struct
Integer
System
winapi
《
Windows核心编程
》のWindows时间
Windows时间的获取和设置: 在Win32编程中,常用的获取系统时间的函数是有两个,即GetLocalTime和GetSystemTime: void WINAPI GetLocalTime( __out LPSYSTEMTIME lpSystemTime ); void WINAPI GetSystemTime( __out LPSYSTEMTIME lpSystemTime
wapysun
·
2010-08-01 16:00
windows
《
Windows核心编程
》の定时器
在DOS操作系统中要用到定时器功能的时候一般有两种方法:一是用一个空循环来延时;一是截获时钟中断,计算机的硬件时钟中断会以每55ms一次的频率触发8号中断,而在默认的int08h中断处理程序中有一句int1ch的代码,所以截获int08h和int1ch都可以达到定时的要求。而在Windows操作系统中,用户程序不可能去截获时钟中断,而是使用定时器功能。 在应用程序中需要使用定时器时,可以用SetT
ACE1985
·
2010-08-01 14:00
timer
windows
application
callback
initialization
winapi
《
Windows核心编程
》の定时器
在DOS操作系统中要用到定时器功能的时候一般有两种方法:一是用一个空循环来延时;一是截获时钟中断,计算机的硬件时钟中断会以每55ms一次的频率触发8号中断,而在默认的int 08h中断处理程序中有一句int 1ch的代码,所以截获int 08h和int 1ch都可以达到定时的要求。 而在Windows操作系统中,用户程序不可能去截获时钟中断,而是使用定时器功能。 在应用程序中需要使用定时器
wapysun
·
2010-08-01 14:00
windows
QQ盗号核心编程
对于
Windows核心编程
,本人还是一只菜鸟,前一段时间把《Windows系统编程》粗略的看一边(当然重点地方仔细的看),由于对于C++有点基础,感觉学起来比较容易上手。
WINCOL
·
2010-07-30 19:00
《
Windows核心编程
》の线程局部存储TLS
线程局部存储(Thread Local Storage,TLS)用来将数据与一个正在执行的指定线程关联起来。我们在应用程序和DLL中可以使用两种类型的TLS:动态TLS和静态TLS。但一般来说,这两项技术在创建DLL的时候更加有用,这是因为DLL通常并不知道它们被链接到的应用程序的结构是什么样的。但是在编写应用程序时,我们一般都知道自己要创建多少线程,自己会如何使用这些线程。然后我们就可以设计一些
·
2010-07-29 21:00
windows
《
Windows核心编程
》の线程局部存储TLS
线程局部存储(ThreadLocalStorage,TLS)用来将数据与一个正在执行的指定线程关联起来。我们在应用程序和DLL中可以使用两种类型的TLS:动态TLS和静态TLS。但一般来说,这两项技术在创建DLL的时候更加有用,这是因为DLL通常并不知道它们被链接到的应用程序的结构是什么样的。但是在编写应用程序时,我们一般都知道自己要创建多少线程,自己会如何使用这些线程。然后我们就可以设计一些替代
ACE1985
·
2010-07-29 21:00
thread
编程
windows
存储
dll
winapi
《
Windows核心编程
》---又是内存
一般情况下,应用程序使用的内存空间里有以下“默认”的区域:1)栈:用于维护函数调用的上下文,离开了栈函数调用就没法实现。栈通常在用户空间的最高地址处分配,通常有数兆字节的大小;2)堆:用来容纳应用程序动态分配的内存区域,当程序使用malloc或new分配内存时,得到的内存来自堆里。堆通常存在于栈的下方(低地址方向),在某些时候,堆也可能没有固定统一的存储区域,堆一般比栈大很多,可以有几十到数百兆字
ACE1985
·
2010-07-29 11:00
《
Windows核心编程
》---又是内存
一般情况下,应用程序使用的内存空间里有以下“默认”的区域: 1)栈:用于维护函数调用的上下文,离开了栈函数调用就没法实现。栈通常在用户空间的最高地址处分配,通常有数兆字节的大小; 2)堆:用来容纳应用程序动态分配的内存区域,当程序使用malloc或new分配内存时,得到的内存来自堆里。堆通常存在于栈的下方(低地址方向),在某些时候,堆也可能没有固定统一的存储区域,堆一般比栈大很多,可以有几十到
·
2010-07-29 11:00
windows
《
Windows核心编程
》---终止处理程序
结构化异常处理(SEH)包含两方面的功能:终止处理和异常处理。 终止处理程序确保不管一个代码块是如何退出的,另一个代码块总能被调用和执行。终止处理的语法如下: __try { // guarded body of code (被保护代码) } __finally { // __finally block (终止处理代码) } 操作系统和编译器的协同工作保证
wapysun
·
2010-07-29 10:00
windows
《
Windows核心编程
》の“查找”和“替换”对话框+“页面设置”对话框
要显示“查找”和“替换”文本对话框分别使用函数FindText和ReplaceText: HWND WINAPI FindText( __in LPFINDREPLACE lpfr ); HWND WINAPI ReplaceText( __inout LPFINDREPLACE lpfr ); 这两个函数都使用同样的FINDREP
·
2010-07-28 10:00
windows
《
Windows核心编程
》の“字体”和“颜色”对话框
“字体”通用对话框列出了系统中安装的字体,用户可以在上面选择字体名称,同时可以选择字体大小、颜色,以及一些效果如斜线、粗体、删除线或下划线等,显示选择“字体”对话框的函数是ChooseFont: BOOL WINAPI ChooseFont( __inout LPCHOOSEFONT lpcf ); lpcf指向CHOOSEFONT结构: typedef str
·
2010-07-28 09:00
windows
《
Windows核心编程
》の“字体”和“颜色”对话框
“字体”通用对话框列出了系统中安装的字体,用户可以在上面选择字体名称,同时可以选择字体大小、颜色,以及一些效果如斜线、粗体、删除线或下划线等,显示选择“字体”对话框的函数是ChooseFont: BOOL WINAPI ChooseFont( __inout LPCHOOSEFONT lpcf ); lpcf指向CHOOSEFONT结构: typedef struct { DWOR
wapysun
·
2010-07-28 09:00
windows
《
Windows核心编程
》の“打开”和“保存”文件对话框
Windows操作系统为一些常用功能提供了一些通用对话框(Common Dialog Box),比如,在不同应用程序中运行打开文件、选择字体、选择颜色等操作时,不同程序显示的对话框的模样都是一样。这些对话框是操作系统提供的,实现对话框的代码封装在Comdlg32.dll库文件中,由于不同版本的Comdlg32.dll在设计上可能有所不同,所以不同版本的Windows下对话框会有所不同。 Wind
·
2010-07-28 09:00
windows
《
Windows核心编程
》の“打开”和“保存”文件对话框
Windows操作系统为一些常用功能提供了一些通用对话框(Common Dialog Box),比如,在不同应用程序中运行打开文件、选择字体、选择颜色等操作时,不同程序显示的对话框的模样都是一样。这些对话框是操作系统提供的,实现对话框的代码封装在Comdlg32.dll库文件中,由于不同版本的Comdlg32.dll在设计上可能有所不同,所以不同版本的Windows下对话框会有所不同。 Wind
wapysun
·
2010-07-28 09:00
windows
《
Windows核心编程
》---执行可执行文件
方法一:Shell调用: Win32中可以通过WinExec和ShellExecute函数来执行另一个可执行程序。 WinExec函数原型如下: UINT WINAPI WinExec( __in LPCSTR lpCmdLine, //包含可执行文件名和命令行参数 __in UINT uCmdShow //指定窗口的显示方式,如果有窗口的话 ); 如果文件被成功执行,那么函数返
wapysun
·
2010-07-26 20:00
windows
《
Windows核心编程
》---执行可执行文件
方法一:Shell调用: Win32中可以通过WinExec和ShellExecute函数来执行另一个可执行程序。 WinExec函数原型如下: UINT WINAPI WinExec( __in LPCSTR lpCmdLine, //包含可执行文件名和命令行参数 __in UINT uCmdShow //指定窗口的显示方式,如果有窗
·
2010-07-26 20:00
windows
《
Windows核心编程
》---逻辑驱动器操作
Windows中的文件组织方式采用分层次的结构:计算机中可以安装有多个物理驱动器,每个物理驱动器可以分为多个主分区和扩展分区,每个主分区就是一个逻辑驱动器,而每个扩展分区可以划分为多个逻辑驱动器,逻辑驱动器组成我们熟悉的C盘与D盘等盘符。 对于每个逻辑驱动器,可以给它取一个标号叫做“卷标”,卷标是当作一个目录项存放在逻辑驱动器的根目录中的。 逻辑驱动器操作: SetVolumeLabel
wapysun
·
2010-07-26 10:00
windows
《
Windows核心编程
》---逻辑驱动器操作
Windows中的文件组织方式采用分层次的结构:计算机中可以安装有多个物理驱动器,每个物理驱动器可以分为多个主分区和扩展分区,每个主分区就是一个逻辑驱动器,而每个扩展分区可以划分为多个逻辑驱动器,逻辑驱动器组成我们熟悉的C盘与D盘等盘符。 对于每个逻辑驱动器,可以给它取一个标号叫做“卷标”,卷标是当作一个目录项存放在逻辑驱动器的根目录中的。 逻辑驱动器操作: SetVolum
·
2010-07-26 10:00
windows
《
Windows核心编程
》---堆管理函数
Windows的“堆”分为默认堆和私有堆两种。默认堆是在程序初始化时由操作系统自动创建的,所有标准内存管理函数都是在默认堆中申请内存的;而私有堆相当于在默认堆中保留了一大块内存,用堆管理函数可以在这个保留的内存区域中分配内存。一个进程的默认堆只有一个,而私有堆可以被创建多个。 默认堆可以直接被使用,而私有堆在使用前需要先创建,使用私有堆有很多好处: 1)可以使用默认堆的函数有多种,而它们可
wapysun
·
2010-07-25 19:00
windows
《
Windows核心编程
》---堆管理函数
Windows的“堆”分为默认堆和私有堆两种。默认堆是在程序初始化时由操作系统自动创建的,所有标准内存管理函数都是在默认堆中申请内存的;而私有堆相当于在默认堆中保留了一大块内存,用堆管理函数可以在这个保留的内存区域中分配内存。一个进程的默认堆只有一个,而私有堆可以被创建多个。 默认堆可以直接被使用,而私有堆在使用前需要先创建,使用私有堆有很多好处: 1)可以使用默认堆的函数有多
·
2010-07-25 19:00
windows
《
Windows核心编程
》---获得内存的当前状态のGlobalMemoryStatusEx
Win32系统中,一个进程可寻址的地址空间是4GB,用户可使用的地址空间是大概是2GB,但这不是说用户可以申请2GB的内存,因为这2GB只是可以使用的“地址”空间,而不是可以使用的“内存”空间,可分配内存的大小还受制于物理内存和磁盘交换文件的大小。因为物理内存和磁盘交换文件是供整个系统和所有用户程序使用的,所有系统内核、当前执行的所用用户程序的代码、数据,以及分配的内存总量并不能超过物理内存和磁盘
·
2010-07-24 22:00
windows
《
Windows核心编程
》---获得内存的当前状态のGlobalMemoryStatusEx
Win32系统中,一个进程可寻址的地址空间是4GB,用户可使用的地址空间是大概是2GB,但这不是说用户可以申请2GB的内存,因为这2GB只是可以使用的“地址”空间,而不是可以使用的“内存”空间,可分配内存的大小还受制于物理内存和磁盘交换文件的大小。因为物理内存和磁盘交换文件是供整个系统和所有用户程序使用的,所有系统内核、当前执行的所用用户程序的代码、数据,以及分配的内存总量并不能超过物理内存和磁盘
wapysun
·
2010-07-24 22:00
windows
IOCP线程池的开发-(1)
在《
windows核心编程
》一书中,作者也说明了“使用IO完成端口允许我们向一个设备同时发送多个IO请求,它允许一个线程发出IO请求,另一个线程对结果进行处理,这项技术具有高度的伸缩性和最佳的灵活性”(
fxh7622
·
2010-07-24 00:46
线程池
Delphi
iocp
休闲
完成端口
IOCP线程池的开发-(1)
在《
windows核心编程
》一书中,作者也说明了“使用IO完成端口允许我们向一个设备同时发送多个IO请求,它允许一个线程发出IO请求,另一个线程对结果进行处理,这项技术具有高度的伸缩性和最佳的灵活性”(
fxh7622
·
2010-07-24 00:46
线程池
Delphi
iocp
休闲
完成端口
IOCP线程池的开发-(1)
在《
windows核心编程
》一书中,作者也说明了“使用IO完成端口允许我们向一个设备同时发送多个IO请求,它允许一个线程发出IO请求,另一个线程对结果进行处理,这项技术具有高度的伸缩性和最佳的灵活性”(
fxh7622
·
2010-07-24 00:46
Delphi
休闲
线程池
《
Windows核心编程
》---可等待定时器
可等待定时器是这样一种内核对象,它们会在某个指定的时间触发,或每隔一段时间触发一次。它们通常用来在某个时间执行一些操作。CreateWaitableTimer函数用于创建一个可等待定时器:HANDLEWINAPICreateWaitableTimer( __in_opt LPSECURITY_ATTRIBUTESlpTimerAttributes,//安全描述符,为NULL时使用默认的//且该句柄
ACE1985
·
2010-07-19 15:00
编程
windows
timer
null
Integer
winapi
《
Windows核心编程
》---可等待定时器
可等待定时器是这样一种内核对象,它们会在某个指定的时间触发,或每隔一段时间触发一次。它们通常用来在某个时间执行一些操作。 CreateWaitableTimer函数用于创建一个可等待定时器: HANDLE WINAPI CreateWaitableTimer( __in_opt LPSECURITY_ATTRIBUTES lpTimerAttributes, //安全描述符,为NULL时使
wapysun
·
2010-07-19 15:00
windows
《
Windows核心编程
》---C运行库的内存对齐函数
C运行库提供了一系列函数用于分配对齐过的内存:1)_aligned_malloc函数的功能是分配一块对齐过的内存:void*_aligned_malloc( size_tsize, //要分配的字节数 size_talignment//要对齐到的字节边界,传给alignment的值必须是2的整数幂次方); 2)_aligned_offset_malloc函数用于在指定的内存对齐边界上分配内
ACE1985
·
2010-07-12 21:00
《
Windows核心编程
》---C运行库的内存对齐函数
C运行库提供了一系列函数用于分配对齐过的内存: 1)_aligned_malloc函数的功能是分配一块对齐过的内存: void * _aligned_malloc( size_t size, //要分配的字节数 size_t alignment //要对齐到的字节边界,传给alignment的值必须是2的整数幂次方 ); 2)_aligned_offset_malloc函数用于
wapysun
·
2010-07-12 21:00
windows
《
Windows核心编程
》---Interlocked原子访问系列函数
所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。Interlocked系列函数提供了这样的操作。所有这些函数会以原子方式来操控一个值。Interlocked函数的工作原理取决于代码运行的CPU平台,如果是x86系列CPU,那么Interlocked函数会在总线上维持一个硬件信号,这个信号会阻止其他CPU访问同一个内存地址。我们必须确保传给这些函数的变量
ACE1985
·
2010-07-12 21:00
编程
windows
alignment
Allocation
structure
winapi
《
Windows核心编程
》---Interlocked原子访问系列函数
所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源。Interlocked系列函数提供了这样的操作。所有这些函数会以原子方式来操控一个值。 Interlocked函数的工作原理取决于代码运行的CPU平台,如果是x86系列CPU,那么Interlocked函数会在总线上维持一个硬件信号,这个信号会阻止其他CPU访问同一个内存地址。我们必须确保传给这些函数的
wapysun
·
2010-07-12 21:00
windows
系统程序员应该读的专业书
: 《
Windows核心编程
》(第五版)---Jeffrey Richter and Christophe Nasarre著 《LINUX内核源代码情景分析》---毛德操 胡希明著 《深入理解计算机系统
wapysun
·
2010-07-11 22:00
程序员
系统程序员应该读的专业书
:《
Windows核心编程
》(第五版)---JeffreyRichterandChristopheNasarre著《LINUX内核源代码情景分析》---毛德操胡希明著《深入理解计算机系统》---RandalE.BryantandDavidO
ACE1985
·
2010-07-11 22:00
编程
windows
汇编
解密
语言
linux内核
《
Windows核心编程
》---剪贴板
剪贴板是由系统定义的,并不属于任何一个特定的进程。系统中所有进程都可以访问和设置剪贴板。剪贴板最大的特点就是数据传输没有明确的目标,数据是被动访问的;剪贴板的内容可以被多次访问,直到新的数据写入。剪贴板是一种可供选择的进程间通信方式,但由于系统中任何一个进程都可以都可以无限制地访问剪贴板,因此,它是一种不可靠的通信方式。1)获取和设置剪贴板数据涉及到的API有:OpenClipboard、Empt
achellies
·
2010-07-07 14:00
《
Windows核心编程
》---邮槽通信
邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠UDP数据传输协议。使用邮槽通信的进程分为客户端和服务端,邮槽由服务端创建,创建后,客户端可以通过邮槽名打开邮槽,在获得邮槽句柄后可以向邮槽写入消息。邮槽通信是单向的,只有服务端能从邮槽中读取消息,而客户端只能写入消息。消息是先进先出的。通过邮槽通信的数据可以是任意格式的,但为了保证邮槽在各种Windows平台下都能够正常工作,邮槽通信一条消息
achellies
·
2010-07-07 14:00
编程
windows
null
attributes
winapi
网络会议
线程基础----
Windows核心编程
1、线程基础 理解线程是至关重要的,因为每个进程至少都有一个线程。在本章,我们将讲述线程更多的细节。具体的说,我们将解释线程和进程的区别,它们各自有何职责。同时,还要解释系统如何使用线程内核对象来管理线程。就像进程内核对象一样,线程内核对象也有属性,我们将探讨用于查询和更改这些属性的函数。此外,还要介绍可在进程中创建和生成更多线程的函数。 线程有2个部分组成:1)线程的内核对象,操作系
yjkwf
·
2010-07-06 16:00
thread
多线程
数据结构
attributes
multithreading
winapi
.dll 的搜索顺序
《
Windows核心编程
(第5版)》P522 19.2.3运行可执行模块:由于导入段只包含DLL的名称,不包含DLL的路径,因此加载程序必须在用户的磁盘上搜索DLL。
g5dsk
·
2010-07-06 00:00
windows
application
search
System
dll
Path
《
Windows核心编程
》---Windows Shell目录管理
Windowsshell最重要的组成部件是explorer.exe,在使用Windows操作系统时,开始菜单、任务栏、资源管理器等都是explorer.exe提供的。Windowsshell编程接口的函数名一般是以SH开头的。一般ShellAPI都在shlobj.h头文件中声明,由Shell32.dll导出,链接时需要使用到Shell32.lib库。Shell最重要的功能之一是进行文件浏览、查找、
ACE1985
·
2010-07-04 21:00
上一页
18
19
20
21
22
23
24
25
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他