精华内容
下载资源
问答
  • linux 内核 字符串转换函数.pdf
  • Linux内核中提供的一些字符串转换函数: lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) unsigned long simple_strtoul(const char *cp, char **endp, ...

    Linux内核中提供的一些字符串转换函数:
    lib/vsprintf.c

    unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
    unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
    long simple_strtol(const char *cp, char **endp, unsigned int base)
    long long simple_strtoll(const char *cp, char **endp, unsigned int base)
    int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)
    int strict_strtol(const char *cp, unsigned int base, long *res)
    int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)
    int strict_strtoll(const char *cp, unsigned int base, long long *res)
    int sprintf(char *buf, const char *fmt, ...)
    int snprintf(char *buf, size_t size, const char *fmt, ...)
    int sscanf(const char *buf, const char *fmt, ...)

    lib/kasprintf.c

    char *kasprintf(gfp_t gfp, const char *fmt, ...)

    unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成unsigend long long型数据。
    返回:返回转换后数据。
    参数:cp指向字符串的开始,endp指向分析的字符串末尾的位置,base为要用的基数(进制数),base为0表示通过cp来自动判断基数,函数自动可识别的基数:‘0x’表示16进制,‘0’表示8进制,其它都认定为10进制。函数可转换成数字的有效字符为:[0,f]。举例:cp = “0x12str”,base = 0,则返回unsigned long long为18,*endp = “str”。 参数下同。

    unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成unsigend long型数据。
    返回:返回转换后数据。

    long simple_strtol(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成sigend long型数据。
    返回:返回转换后数据。
    说明:该函数调用simple_strtoul,但它先会判断cp指向的字符串的第一个字符是否为负号‘-’。如果为‘-’,它返回负的simple_strtoul的结果。

    long long simple_strtoll(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成sigend long long型。
    返回:返回转换后数据。

    int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)
    功能:将一个字符串转换成unsigend long型。
    返回:转换成功返回0,否则返回负。res指向转换后的unsigned long数据。
    说明:该函数对cp指向的字符串严格要求,cp指向的字符串必须为真正的unsigned long形式的字符串。字符串必须以“0x”、“0”、[0,f]开始,中间全部为有效的字符[0,f],否则返回为负。它会处理字符串最后的“\n”字符。下同。

    int strict_strtol(const char *cp, unsigned int base, long *res)
    功能:将一个字符串转换sigend long型。
    返回:转换成功返回0,否则返回负。res指向转换后的signed long数据。

    int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)
    功能:将一个字符串转换unsigend long long型。
    返回:转换成功返回0,否则返回负。res指向转换后的unsigned long long数据。

    int strict_strtoll(const char *cp, unsigned int base, long long *res)
    功能:将一个字符串转换sigend long long型。
    返回:转换成功返回0,否则返回负。res指向转换后的signed long long数据。

    int sprintf(char *buf, const char *fmt, ...)
    功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。
    返回:返回写入buf字符串的字符个数。

    int snprintf(char *buf, size_t size, const char *fmt, ...)
    功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。其中size为buf的大小(包括‘\0’字符)。
    返回:返回写入buf字符串的字符个数。

    int sscanf(const char *buf, const char *fmt, ...)
    功能:格式化输入字符串,类似于scanf,只是用字符串buf作为输入对象。
    返回:返回读取buf字符串的字符个数。

    char *kasprintf(gfp_t gfp, const char *fmt, ...)
    功能:格式化输出字符串到一段且gfp分配的内存中。
    返回:返回指向该内容的字符串指针。

     

     

    展开全文
  • 基于Windows XP SP1以及随后的操作系统的Windows DDK版本提供了安全字符串函数。这类函数被设计的目的是用来取代相同功能的c/c++标准函数和其它微软提供的库函数。这类函数具有以下特征:  每个函数以目标...
    基于Windows XP SP1
    以及随后的操作系统的Windows DDK
    版本提供了安全字符串函数
    。这类函数被设计的目的是用来取代相同功能的c/c++
    标准函数和其它微软提供的库函数。这类函数具有以下特征:  
    
    • 每个函数以目标缓冲区所占的字节大小作为其一个输入参数,因此可以保证在写入时不会超出缓冲区末端。
    • 每个函数的输出字符串均以NULL结尾(null-terminate),即使该函数可能会对正确的结果进行截断。
    • 所有函数均有返回值,类型为NTSTATUS,只有返回STATUS_SUCCESS时,操作结果才正确。
    • 每个函数均有两种类型的版本,按字节或者按字符数。例如,RtlStringCbCatWRtlStringCchCatW
    • 每个函数均有支持双字节的unicode字符(以W作为后缀)和单字节的ANSI字符(以A作为后缀)的版本。例如:RtlStringCbCatWRtlStringCbCatA
    • 大部分函数有提供扩展版本的函数(以Ex作为后缀),例如,RtlStringCbCatWRtlStringCbCatExW

       函数名含有Cb的是以字节数为单位,含有Cch的是以字符数为单位。

    函数名

    作用

    取代

       RtlStringCbCatA

       RtlStringCbCatAW 
       RtlStringCbCatExA 
       RtlStringCchCatA

       RtlStringCchCatW 
       RtlStringCchCatExW

    将源字符串连接到目的字符串的末尾     

       strcat
       wcscat

       RtlStringCbCatNA 

       RtlStringCbCatNW
       RtlStringCbCatNEx 
       RtlStringCchCatNA

       RtlStringCchCatNEx

    将源字符串指定数目的字符连接到目的字符串的末尾 

       strncat
    wcsncat

       RtlStringCbCopy 
       RtlStringCbCopyEx 
       RtlStringCchCopy 
       RtlStringCchCopyEx

    将源字符串拷贝到目的字符串

    strcpy
    wcscpy

       RtlStringCbCopyN 
       RtlStringCbCopyNEx 
       RtlStringCchCopyN 
       RtlStringCchCopyNEx

    将源字符串指定数目的字符拷贝到目的字符串

    strncpy
    wcsncpy

       RtlStringCbLength 
       RtlStringCchLength

    确定字符串的长度

    strlen
    wcsle

     

        



    展开全文
  • win7下一次加载和调试sys驱动程序的过程以及捕捉到内核打印字符串函数的输出.pdf
  • 一、在内核驱动代码中引入安全字符串函数  有两种方式可以引入安全字符串函数:  如果代码需要在系统为Windows XP及以后版本运行时,可以使用内联的方式;  如果代码需要运行在早于Windows XP时,则必须使用...

    原文地址 http://www.osronline.com/ddkx/kmarch/other_0vfr.htm

    一、在内核驱动代码中引入安全字符串函数

        有两种方式可以引入安全字符串函数:

        如果代码需要在系统为Windows XP及以后版本运行时,可以使用内联的方式;

        如果代码需要运行在早于Windows XP时,则必须使用链接库的方式。

        1) 在链接时以库的方式引入 

           #define NTSTRSAFE_LIB  

           #include <ntstrsafe.h>

           在sources文件中,添加一TARGETLIBS条目如下:$(DDK_LIB_PATH)\ntstrsafe.lib.

        2) 以内联的方式引入,只需包含头文件即可 #include <ntstrsafe.h>

        

        在默认情况下,当引入了安全字符串函数后,那些被取代的c/c++运行库函数将变得无效,编译是会报错,提示需要使用安全字符串函数。

        如果还希望继续使用c/c++运行库函数,即在使用安全字符串函数的时候,c/c++运行库函数还可以继续使用,

        则需要在包含ntstrsafe.h之前先定义宏NTSTRSAFE_NO_DEPRECATE

       #define NTSTRSAFE_NO_DEPRECATE

    您可以只提供字节计数或字符计数的安全字符串函数。

    只允许字节计数功能

    包括ntstrsafe.h头文件包括之前在您的代码中的下面一行 。

    #定义NTSTRSAFE_NO_CCH_FUNCTIONS

    要只允许字符计数功能

    包括ntstrsafe.h头文件包括之前在您的代码中的下面一行 。

    #定义NTSTRSAFE_NO_CB_FUNCTIONS
    

    您可以定义要么NTSTRSAFE_NO_CB_FUNCTIONS或NTSTRSAFE_NO_CCH_FUNCTIONS,但不能两者兼得。  

        任何ANSI或Unicode字符串可以包含的字符的最大数量是 STRSAFE_MAX_CCH。在ntstrsafe.h中定义了这个常量。

    如果一个字符串将被放置到一个UNICODE_STRING结构,这个字符串的长度不得超过65,535个字符。



    基于Windows XP SP1 以及随后的操作系统的Windows DDK 版本提供了安全字符串函数 。这类函数被设计的目的是用来取代相同功能的c/c++ 标准函数和其它微软提供的库函数。这类函数具有以下特征: 
    • 每个函数以目标缓冲区所占的字节大小作为其一个输入参数,因此可以保证在写入时不会超出缓冲区末端。
    • 每个函数的输出字符串均以NULL结尾(null-terminate),即使该函数可能会对正确的结果进行截断。
    • 所有函数均有返回值,类型为NTSTATUS,只有返回STATUS_SUCCESS时,操作结果才正确。
    • 每个函数均有两种类型的版本,按字节或者按字符数。例如,RtlStringCbCatWRtlStringCchCatW
    • 每个函数均有支持双字节的unicode字符(以W作为后缀)和单字节的ANSI字符(以A作为后缀)的版本。例如:RtlStringCbCatWRtlStringCbCatA
    • 大部分函数有提供扩展版本的函数(以Ex作为后缀),例如,RtlStringCbCatWRtlStringCbCatExW

       函数名含有Cb的是以字节数为单位,含有Cch的是以字符数为单位。

    函数名

    作用

    取代

       RtlStringCbCat(A/W) 
       RtlStringCbCatEx(A/W)  
       RtlStringCchCat(A/W)  
       RtlStringCchCatEx(A/W) 

    将源字符串连接到目的字符串的末尾     

       strcat
       wcscat

       RtlStringCbCatN(A/W)  
       RtlStringCbCatNEx(A/W)  
       RtlStringCchCatN(A/W)  
       RtlStringCchCatNEx(A/W) 

    将源字符串指定数目的字符连接到目的字符串的末尾 

       strncat
    wcsncat

       RtlStringCbCopy(A/W)  
       RtlStringCbCopyEx(A/W)  
       RtlStringCchCopy(A/W)  
       RtlStringCchCopyEx(A/W) 

    将源字符串拷贝到目的字符串

    strcpy
    wcscpy

       RtlStringCbCopyN(A/W)  
       RtlStringCbCopyNEx(A/W)  
       RtlStringCchCopyN(A/W)  
       RtlStringCchCopyNEx(A/W) 

    将源字符串指定数目的字符拷贝到目的字符串

    strncpy
    wcsncpy

       RtlStringCbLength(A/W)  
       RtlStringCchLength(A/W) 

    确定字符串的长度

    strlen
    wcslen

     

      

     

        




    展开全文
  • Linux中用到较多得字符串转换函数主要有:simple_strtoul之类 这些字符串转换函数保存在 库文件 lib/vsprintf.c unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int ...

    Linux中用到较多得字符串转换函数主要有:simple_strtoul之类

    这些字符串转换函数保存在 库文件 lib/vsprintf.c


    unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) 

    unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base) 

    long simple_strtol(const char *cp, char **endp, unsigned int base) 

    long long simple_strtoll(const char *cp, char **endp, unsigned int base) 

    int strict_strtoul(const char *cp, unsigned int base, unsigned long *res) 

    int strict_strtol(const char *cp, unsigned int base, long *res) 

    int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res) 

    int strict_strtoll(const char *cp, unsigned int base, long long *res) 

    int sprintf(char *buf, const char *fmt, ...) 

    int snprintf(char *buf, size_t size, const char *fmt, ...) 

    int sscanf(const char *buf, const char *fmt, ...) 


    unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成unsigend long long型数据。
    返回:返回转换后数据。
    参数:cp指向字符串的开始,endp指向分析的字符串末尾的位置,base为要用的基数(进制数),base为0表示通过cp来自动判断基数,函数自动可识别的基数:‘0x’表示16进制,‘0’表示8进制,其它都认定为10进制。函数可转换成数字的有效字符为:[0,f]。举例:cp = “0x12str”,base = 0,则返回unsigned long long为18,*endp = “str”。 参数下同。

    unsigned long simple_strtoul(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成unsigend long型数据。
    返回:返回转换后数据。

    long simple_strtol(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成sigend long型数据。
    返回:返回转换后数据。
    说明:该函数调用simple_strtoul,但它先会判断cp指向的字符串的第一个字符是否为负号‘-’。如果为‘-’,它返回负的simple_strtoul的结果。

    long long simple_strtoll(const char *cp, char **endp, unsigned int base)
    功能:将一个字符串转换成sigend long long型。
    返回:返回转换后数据。

    int strict_strtoul(const char *cp, unsigned int base, unsigned long *res)
    功能:将一个字符串转换成unsigend long型。
    返回:转换成功返回0,否则返回负。res指向转换后的unsigned long数据。
    说明:该函数对cp指向的字符串严格要求,cp指向的字符串必须为真正的unsigned long形式的字符串。字符串必须以“0x”、“0”、[0,f]开始,中间全部为有效的字符[0,f],否则返回为负。它会处理字符串最后的“\n”字符。下同。

    int strict_strtol(const char *cp, unsigned int base, long *res)
    功能:将一个字符串转换sigend long型。
    返回:转换成功返回0,否则返回负。res指向转换后的signed long数据。

    int strict_strtoull(const char *cp, unsigned int base, unsigned long long *res)
    功能:将一个字符串转换unsigend long long型。
    返回:转换成功返回0,否则返回负。res指向转换后的unsigned long long数据。

    int strict_strtoll(const char *cp, unsigned int base, long long *res)
    功能:将一个字符串转换sigend long long型。
    返回:转换成功返回0,否则返回负。res指向转换后的signed long long数据。

    int sprintf(char *buf, const char *fmt, ...)
    功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。
    返回:返回写入buf字符串的字符个数。

    int snprintf(char *buf, size_t size, const char *fmt, ...)
    功能:格式化输出字符串,类似于printf,只是用字符串buf作为输出对象。其中size为buf的大小(包括‘\0’字符)。
    返回:返回写入buf字符串的字符个数。

    int sscanf(const char *buf, const char *fmt, ...)
    功能:格式化输入字符串,类似于scanf,只是用字符串buf作为输入对象。
    返回:返回读取buf字符串的字符个数。


    仅记录下来 防止自己忘记

    展开全文
  • 内核字符串处理函数和IRQL

    千次阅读 2011-12-21 18:44:49
    内核字符串处理函数和IRQL --by 张佩 系统中断级(IRQL) 借助于IRQL机制,系统实现了任务抢占功能。高中断级任务可以任意抢占低中断级任务的系统执行权,而低中断级任务必须等待所有高中断级任务都完成后,...
  • linux内核字符串转换函数 -- linux内核

    千次阅读 2014-10-31 11:50:26
    Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [html] view plaincopyprint?  1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned...
  • Windows内核字符串相关函数

    千次阅读 2011-05-09 18:32:00
    函数名含有Cb的是以字节数为单位,含有Cch的是以字符数为单位。 函数名 作用 取代
  • C语言再学习 -- 字符串和字符串函数

    千次阅读 2016-09-01 09:27:55
    看书都有点看不下去的样子,到了C语言最难掌握的部分了,数组、指针、字符串。硬着头皮看书总结吧。 一、字符串 1、字符串介绍 字符串是以空字符(\0)结尾的char数组,例如: char ar[20] = "hello world&...
  • Linux内核中提供的一些字符串转换函数: lib/vsprintf.c [html] view plaincopyprint? 1. unsigned long long simple_strtoull(const char *cp, char **endp, unsigned int base) 2. unsigned long simple...
  • 使用安全字符串函数

    千次阅读 2008-10-01 10:51:00
    在驱动程序中帮助防止缓冲区溢出,使用安全字符串函数内核模式驱动程序中的缓冲区溢出增加了可能导致系统崩溃的缺陷和内存池破坏风险,也增加了攻击者可以利用的安全漏洞。字符串处理操作是缓冲区溢出的常见根源,大...
  • [原]UINCODE字符串和安全字符串函数 字符集基础知识 在计算机中,字符都是以二进制编码方式存在于存储中 编码与解码 将字符输入计算机存储的过程类似于一个”编码”的过程 而将对应的”编码”显示出来的...
  • 初始化字符串 NTSYSAPI VOID RtlInitUnicodeString( PUNICODE_STRING DestinationString, __drv_aliasesMem PCWSTR SourceString ); 参数1: 指向UNICODE_STRING的指针 参数2: 被转换的字符串常量 例如: ...
  • 几个常用的C查找分割字符串函数

    千次阅读 2016-01-11 10:20:25
    搜索字符串函数 strstr 原型: extern char *strstr (char *__haystack, const char *__needle)  所在头文件:#include 功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。  说明:...
  • 转自:http://www.cppblog.com/sleepwom/archive/2009/09/27/97402.html驱动开发中使用安全字符串函数一、前言 大量的系统安全问题是由于薄弱的缓冲处理以及由此产生的缓冲区溢出造成的,而薄弱的缓冲区处理常常与...
  • Linux内核中的字符串处理函数

    千次阅读 2016-03-08 21:00:28
    Linux内核不能使用用户空间的函数,不过内核里还是有很多同名字符串处理函数可用,基本没有障碍。 #include 即可 当然,有的函数还是体系结构优化的,例如有的powerpc处理器含有正则表达式硬件加速器。对于优化...
  • linux字符串函数strchr strstr

    千次阅读 2014-08-03 17:28:27
    功能就是找出在字符串str中第一次出项字符ch的位置,找到就返回该字符位置的指针(也就是返回该字符在字符串中的地址的位置),找不到就返回空指针(就是 null)。 strstr 函数原型: char * strstr(char * str1,...
  • //字节数,不是字符数 一定要* sizeof(WCHAR) USHORT MaximumLength;//字节数,不是字符数 一定要* sizeof(WCHAR) PWSTR Buffer;//非零结尾,中间也可能含有零 } UNICODE_STRING, *PUNICODE_STRI
  • C 语言字符串分割可使用 strsep,是 strtok 函数的替代,而且可用于内核,推荐。 char *strsep(char **stringp, const char *delim); 函数接受的第一个参数是 in-out prarameter,在函数执行后会被更改,总指向...
  • 原文:http://hi.baidu.com/hack_oldwolf/blog/item/03c2dba88fad05bcca130c47.html<br />  1、使用字符串结构 <br />==============...UNICODE_STRING结构体是用来定义UNICODE字符串的。 <br />
  •  kstrtouint函数定义在文件kstrtox.c中,原形如下: ...s是输入字符串,base可以是10(10进制)或16(16进制),或者是0自动识别,res存放转换后的整形值. 当没有错误时返回值是0; devm_ioremap_
  • strcat字符串拼接函数

    2017-07-21 17:42:29
    strcat 字符串拼接函数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,714
精华内容 48,285
关键字:

内核字符串函数