- 博客(524)
- 收藏
- 关注
原创 汇编语言全接触-76.用汇编编 Windows 程序
用汇编编制一般的 Windows 程序需要的不是汇编编程的资料,而是 Windows 函数调用的资料,你分析一下下面的源程序就会发现,程序的结构跟用 BC++ 编 Windows 程序几乎一模一样,原来用 C++ 函数的地方,变成了一个 Call 外部子程序,而函数的参数是由 PUSH 指令先压入堆栈,先由最后一个参数压起。同样,用汇编编 Windows 程序也需要 .DEF 文件和 .RES 文件,这是由 Windows 程序的结构决定的。外部子程序,常量的定义等。
2026-01-08 16:49:13
515
原创 汇编语言全接触-75.汇编中参数的传递和堆栈修正
现在对这个子程序分析一下,push ebp/mov ebp,esp 是例行的保存和设置 EBP 的代码,sub esp,8 在堆栈中留出两个局部变量的空间,mov /add 语句完成相加,add esp,8 修正两个局部变量使用的堆栈,ret 8 修正两个参数使用的堆栈,相当于 ret / add esp,8 两句代码的效果。在 Win32汇编中,我们经常要和 Api 打交道,另外也会常常使用自己编制的类似于 Api 的带参数的子程序,本文要讲述的是在子程序调用的过程中进行参数传递的概念和分析。
2026-01-08 16:48:36
300
原创 汇编语言全接触-74.用Soft-ICE实现源码级调试
别的一些必要的设置:你必须把 Soft-ICE 的目录和 Masm 的 bin 目录设置到 path 中,因为这些路径中还有些文件要用到。然后也要设置 Link 文件,因为 Soft-ICE 使用 CodeView 格式的调试信息,所以 Link 也要包括下面的选项。首先,在编译的时候要生成带符号信息的 Object 文件,这需要打开 ML 程序的两个选项。/DEBUG 选项告诉 Link 在 exe 文件中包含调试信息。/coff 告诉编译器产生符号调试格式的 Object 文件。
2026-01-07 10:52:44
496
原创 汇编语言全接触-73.用汇编编写屏幕保护程序
在 Dos 汇编中,psp 段的 0080H 开始的位置就是命令行参数,在 Win32汇编中,我们获得命令行参数的方法是使用 Api - GetCommandLine,它没有输入参数,返回的是指向命令行的指针,返回的字符串中,包含执行文件的文件名。szCaption db '命令行参数测试',0。
2026-01-07 10:52:00
357
原创 汇编语言全接触-72.Win32程序的命令行参数
在 Dos 汇编中,psp 段的 0080H 开始的位置就是命令行参数,在 Win32汇编中,我们获得命令行参数的方法是使用 Api - GetCommandLine,它没有输入参数,返回的是指向命令行的指针,返回的字符串中,包含执行文件的文件名。szCaption db '命令行参数测试',0。
2026-01-06 09:02:04
333
原创 汇编语言全接触-71.在 Win32 下 Serial Port 的通訊
以下的東西是我在閱讀 "Communications Programming for Windows 95" 時做的一點筆記, 所以在 topic 上大致上都和這書上的第三章一樣. 一些 structure 和 API 的宣告都是 copy from VC 5.0 的 on-line help. 這些東西主要談的是如何在 Win32 的平台下對 serial port 的通訊. 可能可以帶來幫助的是那些了解 serial port 的通訊, 但是不清楚在 Win32 平台究竟有那些 API 可用的 prog
2026-01-06 09:01:22
318
原创 汇编语言全接触-70.实战串行通讯
CommConfigDialog 是弹出系统内置串口设置对话框的 API,我们在设备管理器中设置串口参数的对话框就是这个,使用这个 API 时不用先打开端口,它并不针对一个已打开的端口,而是仅仅是把 DCB 的内容填写到对话框中,当按了 OK 后把输入的结果存回到 DCB 数据结构中,至于什么时候把结果设置到串口上,那就是你自己要做的事情了。所以对于这个问题的建议是:如果程序只打算工作在 Win9x 下,为了简单起见,可以用同步方式写程序,如果程序打算在 NT 下也可以工作的话,就必须用异步方式写。
2026-01-05 15:55:17
936
原创 汇编语言全接触-69.Win32汇编教程十三
以上的 Api 是对 Win.ini 操作的,当然对于我们来说,用的更多的是在程序运行的目录中建立自己的 ini 文件,如果需要对自己的 ini 文件操作,就要用到另一组 Api,这一组 api 和上面的很象,只要把上面一组的 Profile 换成 PrivateProfile(私有的)就可以了,参数中也相应的多了一个 ini 文件名的参数。如果 Win.ini 没有指定的 Section,API 会新建立一个并写入数据,如果已经存在,则先删除原来 Seciton 中所有的 Key 值然后写入新的。
2026-01-05 15:54:37
964
原创 汇编语言全接触-68.Win32汇编教程十二
由于命名管道使用时作为客户端的程序必须知道管道的名称,所以更多的用在同一“作者”编写的服务器/工作站程序中,你不可能随便找出一个程序来要求它和你写的程序来通过命名管道通信。按照管道的传输方向分也可以分成两种,单向的双向的。一个控制台有三个句柄:标准输入、标准输出和和标准错误句柄,标准输入、标准输出句柄是可以重新定向的,你可以用匿名管道来代替它,这样一来,你可以在管道的另一端用别的进程来接收或输入,而控制台一方并没有感到什么不同,就象 Dos 下的 > 或者 < 可以重新定向输出或输入一样。
2026-01-04 14:15:02
726
原创 汇编语言全接触-67.Win32汇编教程十一
进程控制简单的说相当于在一个程序中执行另一个程序,你可以把它想象成在 Dos 下用 int 21h/4bh 功能来执行另外一个程序,如果单从执行另一个程序的目的来讲,在 Windows 中有不少方法,如使用 ShellExecute 等,但这些 Api 仅仅是“执行”而已,进程控制的意义在于可以创建一个进程,并可以通过进程句柄结束进程,同样你也可以通过进程句柄来跟踪程序,还可以用 ReadProcessMemory 和 WriteProcessMemory 来读写子进程的内存空间。
2026-01-04 14:14:17
505
原创 汇编语言全接触-66.Win32汇编教程十
WM_TIMER 消息的级别是很低的,程序只有在消息队列中没有其他消息的情况下,才会接收 WM_TIMER 消息,你可以通过下马方法验证:在一个设置了定时器的窗口上按住标题栏移动窗口,你会发现定时器停止了工作,当你松开鼠标后,在这个过程中丢失的 WM_TIMER 消息并没有被补上,所以如果你设计一个时钟程序,你不能使用定时器消息来计数,而必须在消息中每次获取正确的系统时间。多任务 - 如果程序有大量的数据处理,除了用多线程的办法,还可以用定时器,在每一个定时器消息中处理一小块内容。
2026-01-03 09:26:48
918
原创 汇编语言全接触-65.Win32汇编教程九
本篇的例子程序是一个复杂形状的窗口,窗口的形状是根据位图自动计算得到的,这也就是在我编写的小闹钟中使用的技术(大家可以到我的软件发布中下载一个看看),由于以前在网上看到的有关特殊形状窗口的例子最多就是画一个圆形,或者几个方块和椭圆结合的形状,没有一篇文章指出如何画出如“唐老鸭”这样一个造型的窗口。本文使用的算法可以自动根据位图的形状计算窗口形状。CombineRgn(hDest,hSource1,hSource2,CombineMode) - 合并区域。
2026-01-03 09:26:06
914
原创 汇编语言全接触-64.Win32汇编教程八
上面的4个API,必须成对出现,用 GetDC 取得的DC 必须用 ReleaseDC 释放,而用 CreateCompatibleDC 建立的 DC 必须用 DeleteDC 删除,不能混淆。Windows 并不允许程序员访问显示硬件,它的所有对屏幕的操作是通过环境设备(DC)来处理的,屏幕上的每一个窗口对应一个DC,你可以把一个DC 想象成这个窗口的视频缓冲区,你对DC的操作结果会反映到屏幕上,在窗口的DC之外,你也可以自己建立DC,这相当于建立一个内存中的缓冲区,你对这个DC的操作结果保存在内存中。
2026-01-02 11:53:45
837
原创 汇编语言全接触-63.Win32汇编教程七
在Windows 的 API 中有个函数可以用来实现这个功能,那就是 SetWindowLong PROTO hWnd,nIndex,dwNewLong ,参数的意思是 hWnd 是你要改变的窗口句柄,nIndex 是我们要改变窗口的什么属性,它的值可以是 GWL_EXSTYLE:改变窗口风格,GWL_WNDPROC:设置窗口的新的过程,这正是我们感兴趣的,还有是 GWL_USERDATA 这是窗口自定义的一个32位的数据。LTEXT "我的主页: ",-1, 5,5,54,9。subject=嗨!
2026-01-02 11:52:17
855
原创 汇编语言全接触-62.Win32汇编教程六
wID 是工具栏的标识,nBitmaps 是定义按钮的图片个数,因为如果你要使用自己的图片,所有图片是要放在同一行中的,然后就由你自己指定中间的个数, hBMInst 是包含已定义系统图片的资源句柄,在你不想自己画图,使用内定的标准图片时使用,一般包含这些图片的 hInstance 已经在 Widnows.inc 中定义为 HINST_COMMCTRL,同样 wBMID 一般是 IDB_STD_SMALL_COLOR,表示使用大图片还是小图片等等。使用工具栏和状态栏的源程序。Include 数据。
2026-01-01 13:05:38
653
原创 汇编语言全接触-61.Win32汇编教程五
其中,加速键ID是我们在程序中用LoadAccelerator装入加速键的资源编号,下面的每一项定义了一个键,VK_F1表示用F1,“A”表示键A,下面的VIRTKEY是必需的,再下面的CONTROL“或SHIFT、ALT”表示用CONTROL键组合,也就是说,如果你定义了:"C",IDM_COPY,VIRTKEY,CONTROL 而且在菜单定义中定义了 menuitem "拷贝",IDM_COPY,那么,你在程序中按下Ctrl-C实际上就是执行了菜单项“拷贝”。
2026-01-01 13:04:46
1054
原创 汇编语言全接触-60.Win32汇编教程四
Windows定义了确省的窗口过程,如果你对所有的消息都让Windows自己处理,那么你就能得到一个标准的窗口,同样,你也可以选择处理自己感兴趣的消息,这样,相当于产生了不同的子类,也就形成了不同的应用程序。这个窗口类有一个处理所有按钮消息的窗口过程,但是,如果你按自己的设想设计一个按钮,如想把按钮的表面换成位图,你就可以自己处理按钮窗口的 WM_PAINT 消息,当 Windows 需要画按钮表面的时候,你就可以随自己的意思去画。窗口以“消息”的形式接收窗口的输入,窗口也用消息与其它窗口通讯。
2025-12-31 16:08:46
825
原创 汇编语言全接触-59.Win32汇编教程三
虽然在Win32编程中,我们仍然可以这样做,但Win32编程给了我们一个方案 ---- 就是格式统一的资源文件,把字符串、图形、对话框包括上面的按钮,文本等定义到一个资源文件中,就可以方便的在不同的文件中使用它,最重要的是,如果我们用自己的文件格式,使用时就要涉及到这些文件的读写操作,比较复杂,但使用资源文件时,Windows提供了一系列的API来装入资源。#define DLG_MAIN 1 -- 类似于 .asm 文件的 equ 语句,和汇编源程序一样,这些定义是为了程序的可读性。
2025-12-31 16:08:11
374
原创 汇编语言全接触-58.Win32汇编教程二
model告诉编译器程序的模式,编过Dos汇编的人可能知道在Dos程序的模式有tiny,small,...huge 等,它指定了程序内存寻址模式,在huge等模式下,内存寻址和子程序调用将用Far的格式,但在Win32汇编中,你只能使用一个模式即 flat 模式,因为对Win32程序来说,内存是连续的一个4GB的段,无所谓小或大的模式。程序中的 ExitProcess 是一个标准的 Win32 API,对应 Dos汇编中的 int 20h 或 mov ah,4ch/int 21h,也就是程序退出。
2025-12-30 11:27:43
534
原创 汇编语言全接触-57.罗云彬的Win32汇编教程之一
在Dos下编汇编程序,我们可以管理系统的所有资源,我们可以改动系统中所有的内存,如自己改动内存控制块来分配内存,自己修改中断向量表来截获中断等,对其他操作也是如此,如我们对键盘端口直接操作就可以把键盘屏蔽掉,可以这样来描述Dos系统:系统只有一个特权级别,在编程上讲,任何程序和操作系统都是同级的,所以在Dos下,一个编得不好的程序会影响其他所有的程序,如一个程序把键盘口中断关掉了,所有程序就都不能从键盘获得键入的数据,直到任何一个程序重新打开键盘为止,一个程序陷入死循环,也没有其他程序可以把它终止掉。
2025-12-30 11:27:05
561
原创 汇编语言全接触-56.PE教程7 Export Table(引出表)
当PE装载器索引该数组查询函数地址时,让我们设想这样一种情况,如果程序员在.def文件中设定起始序数号为200,这意味着AddressOfFunctions 数组至少有200个元素,甚至这前面200个元素并没使用,但它们必须存在,因为PE装载器这样才能索引到正确的地址。函数数目至少等同于名字数目,没有名字的函数通过序数引出。这不容易,必须通过排除法,比如,AddressOfFunctions 的数组项在AddressOfNameOrdinals 数组中不存在相关指向,这就说明该函数RVA只通过序数引出。
2025-12-29 05:12:29
570
原创 汇编语言全接触-55.PE教程6 Import Table(引入表)
好了,如果您还在犯糊涂,就朝这边看过来: 现在有几个 IMAGE_IMPORT_BY_NAME 结构,同时您又创建了两个结构数组,并同样寸入指向那些 IMAGE_IMPORT_BY_NAME 结构的RVAs,这样两个数组就包含相同数值了(可谓相当精确的复制啊)。请看这里: 现有几个 IMAGE_IMPORT_BY_NAME 结构,我们收集起这些结构的RVA (IMAGE_THUNK_DATAs)组成一个数组,并以0结尾,然后再将数组的RVA放入 OriginalFirstThunk。本课我们将学习引入表。
2025-12-29 05:11:36
920
原创 汇编语言全接触-54.PE教程5 Section Table(节表)
(译者注: 假设一个文件的文件对齐尺寸是0x200,如果前面的 VirtualSize域指示本节长度是0x388字节,则本域值为0x400,表示本节是0x400字节长)。PE装载器将节映射至内存时会读取本值,因此如果域值是1000h,而PE文件装在地址400000h处,那么本节就被载到401000h。读取 IMAGE_FILE_HEADER 的 NumberOfSections域,知道文件的节数目。这是节基于文件的偏移量,PE装载器通过本域值找到节数据在文件中的位置。遍历整个数组,直至所有节都已处理完毕。
2025-12-28 08:55:01
787
原创 汇编语言全接触-53.PE教程4 Optional Header
为了证明这一点,可以增加NumberOfSections的值,Windows仍然可以正常执行文件。据我们的观察,Windows读取NumberOfSections的值然后检查节表里的每个结构,如果找到一个全0结构就结束搜索,否则一直处理完NumberOfSections指定数目的结构。我们尝试了LUEVELSMEYER的pe.txt声明的14Dh和14Eh,但Windows不能正确执行。其中只有两个域比较重要: e_magic 包含字符串"MZ",e_lfanew 包含PE header在文件中的偏移量。
2025-12-28 08:54:18
383
原创 汇编语言全接触-52.PE教程3 File Header(文件头)
为了证明这一点,可以增加NumberOfSections的值,Windows仍然可以正常执行文件。据我们的观察,Windows读取NumberOfSections的值然后检查节表里的每个结构,如果找到一个全0结构就结束搜索,否则一直处理完NumberOfSections指定数目的结构。我们尝试了LUEVELSMEYER的pe.txt声明的14Dh和14Eh,但Windows不能正确执行。其中只有两个域比较重要: e_magic 包含字符串"MZ",e_lfanew 包含PE header在文件中的偏移量。
2025-12-27 07:50:38
385
原创 汇编语言全接触-51.PE教程2 检验PE文件的有效性
本例程打开一文件,先检验DOS header是否有效,有效就接着检验PE header的有效性,ok就认为是有效的PE文件了。这里,我们还运用了结构异常处理(SEH),这样就不必检查每个可能的错误: 如果有错误出现,就认为PE检测失效所致,于是给出我们的报错信息。如果e_lfanew的值不正确导致异常,我们的SEH处理函数就得到执行控制权,简单恢复堆栈指针和基栈指针后,就根据safeoffset的值恢复执行到FinalExit标签处。如果前后两个值都匹配,那我们就认为该文件是一个有效的PE文件。
2025-12-27 07:49:44
973
原创 汇编语言全接触-50.PE教程1 PE文件格式一览
(译者注:节名称仅仅是个区别不同节的符号而已,类似"data", "code"的命名只为了便于识别,惟有节的属性设置决定了节的特性和功能)如果某块数据想付为只读属性,就可以将该块数据放入置为只读的节中,当PE装载器映射节内容时,它会检查相关节属性并置对应内存块为指定属性。如果我们将PE文件格式视为一逻辑磁盘,PE header是boot扇区而sections是各种文件,但我们仍缺乏足够信息来定位磁盘上的不同文件,譬如,什么是PE文件格式中等价于目录的东东?PE装载器检查 PE header 的有效性。
2025-12-26 16:26:50
520
原创 汇编语言全接触-49.虚拟8086模式的内存管理
所以如你调用了两次V86MMGR_Allocate_Buffer,第一个V86MMGR_Free_Buffer将释放由第二个V86MMGR_Allocate_Buffer调用而分配的缓冲区。当你调用V86MMGR_Allocate_Buffer时,你在当前VM的V86内存范围内分配了一块内存,并且把其地址放到了EDI中。ECX 从传送缓冲区分配的字节数 CARRY FLAG 进位标志位,如你不想从ring0缓冲区拷贝数据到分配的内存块就清零, 如你想从ring0缓冲区拷贝数据到分配的内存块就置1。
2025-12-26 16:25:38
715
原创 汇编语言全接触-48.客户寄存器结构
如果我们要调用int 21h功能2h,我们需要在嵌套执行块内转换Client_Byte_Reg_Struc结构的Client_ah和Client_Dl,然后把值21h放在eax中。相应的,当保护模式程序运行时,假如一个中断产生,Client_xxx将包含保护模式程序的寄存器映象,Client_Alt_xxx将包含V86程序的寄存器映象。例如,VMM认为被中断的程序应该返回到另外一个地址,它就修改存储的寄存器映象中CS:IP的值,当这个程序被重新分派时,它将在新的CS:IP处开始执行。
2025-12-25 10:19:56
585
原创 汇编语言全接触-47.请求执行时间段与Shell函数
首先得到从SHEXPACKET结构到这些字符串的第一个字符之间的距离(即此结构的一些成员值),再把这些值加上SHEXPACKET结构的平板编移量,Shell VxD就能得到这些字符串在rgchBaggage数组中的偏移量。如果你想要完成其他的操作,你必须在rgchBaggage中指定操作的名字,在这个域中,必须包括从这个SHEXPACKET结构开始到一个ASCII字符串的距离,此距离大小以字节计数,字符串指定你要完成的操作的名称。当你回到家,如有一个工作适合你,职业介绍所将电话通知你这个好消息。
2025-12-25 10:19:14
697
原创 汇编语言全接触-46.DeviceIoControl接口
你的VxD至少要处理DIOC_Open(传送到dwIoControlCode),那是当Win32程序调用CreateFile打开你的VxD时VWIN32发送给你的VxD的。简单的说,DeviceIoControl接口是一种为Win32程序准备的调用VxD内部函数的方法。下面是一段加载动态VxD并且通过DeviceIoControl API 来调用VxD内部函数的Win32应用程序的源代码。 nInBufferSize是由lpInBuffer所指向的缓冲区的地址的大小(byte)。
2025-12-24 09:41:27
1031
原创 汇编语言全接触-45.VxD例程:消息框
当一个VxD程序要访问或修改虚拟机中的V86区时,它就在虚拟机的高线性区域进行操作。因为我们要在系统虚拟机上显示消息框,所以不能使用ebx中的值(ebx包含了在创建的虚拟机的句柄,而我们要的是系统虚拟机的句柄)。如果你的VxD程序要读取/改动V86或PM程序的状态,它可以改动客户寄存器结构里的值,当VMM返回执行该程序时,这些改动会被保存到程序里去。因为它要使用的代码和OnVMCreate相同,所以它在用另一个消息的地址初始化ecx后,就转到OnVMCreate中的代码去了。系统虚拟机的VMID是1。
2025-12-24 09:40:49
711
原创 汇编语言全接触-44.VxD 程序设计入门
例如,一些在你的VxD程序后加载的VxD程序在处理Device_Init控制消息时需要调用一些你的VxD服务,既然Sys_Critical_Init 控制消息在Device_Init消息之前被发送,所以你应该在Sys_Critical_Init 消息发送时初始化你的程序。这是因为:在VMM加载VxD程序的时候,它是按照初始化顺序值小的VxD先加载的顺序加载的,这样VxD程序就可以使用那些在它们之前加载的VxD程序提供的服务。例如,VxD2要用到VxD1中的服务,它就必须把它的初始化顺序值定义的比VxD小。
2025-12-23 14:21:28
595
原创 汇编语言全接触-43.虚拟设备驱动程序结构
一个设备描述块是一个结构,它包含了许多关于VxD的重要信息,比如VxD的名字,它的设备ID,它的VxD服务函数入口(如果有的话),等等。如果你的VxD程序在初始化时需要用到其他VxD程序提供的服务,那么你必须把初始化顺序的值设得比你所要调用的那个VxD程序的大,这样,当你的VxD程序加载时,你所要的VxD就已经在内存中为你准备好了。在大多数时候,你可以把上面的.DEF文件用到你的新建的VxD项目中去。在一个汇编的VxD项目中,段的定义是不必要的,段的定义主要用于C的VxD项目编写,但用在汇编里也是可以的。
2025-12-23 14:20:51
567
原创 汇编语言全接触-42.虚拟机管理器
主调度器的任务是选择有最高优先级的线程来执行。它进行第一级的中断处理:保存被中断程序的状态,把控制传送到第二级的中断处理,第二级的中断处理通常由各种VxD程序来进行实际的处理。当第二级中断处理程序完成了它的工作之后,它把控制转交给重分派程序,由重分派程序来恢复被中断程序的状态并从先前被中断的地方继续执行。虚拟机管理器(VMM)是Windows 95的实际操作系统,它建立和维护一个管理虚拟机的框架,同时为其他vxd程序提供许多重要的服务。这是提供的最低级的服务,其他所有的服务都是建立在页面内存服务上的。
2025-12-22 09:38:44
475
原创 汇编语言全接触-41.虚拟设备驱动程序初步
回调函数不像服务那样是公共的,它们是私有函数,VxD在特定的情况下把它们的地址送给其他的VxD程序。由于VMM把调用锁定到VxD服务的实际地址上,如果提供这个服务的VxD程序从内存中被卸载了,其他VxD程序调用这个服务时就会很快的因为调用无效的内存地址而导致系统崩溃。调用这些服务的机制和在第三层级别运行的的应用程序有很大的不同:每个导出VxD服务的VxD程序必须有一个唯一的ID,你可以从Microsoft得到一个这样的ID。这样,由于此VxD程序并没有虚拟任何设备,你就可以把它仅仅看作是你的程序的扩展。
2025-12-22 09:38:02
455
原创 汇编语言全接触-40.一个例子
这一章,我们要把我们已学的知识集合起来。具体来讲,我们来写一个使用ODBC APIs的程序.为简单起见,这个程序中我使用Microsoft的Access数据库(Microsoft Access 97) .hList dd?listview control句柄。hMenu dd?
2025-12-21 16:20:09
886
原创 汇编语言全接触-39.获得结果
比如说,如果结果集有4列,当结果集建立时,游标指向第一行.当调用了SQLFetch 后,游标被加1。如果执行的语句并不是返回结果集的类型,我们就知道结果集不可用了。如果结果集存在,则该函数返回结果集中的列数(字段数)。我们通过SQLBindCol来定位经度(列),用游标来定义纬度(行),用SQLFetch来获得坐标,而结果集就是地球。当调用SQLFetch来获得结果集中的行时,本参数指向的变量或缓冲区将被填入被绑定的列的值。与绑定一个变量到SQL语句的参数相同,我们连接(绑定)一个变量到结果集中的某一列。
2025-12-20 18:52:38
471
原创 汇编语言全接触-38.准备与使用语句
答案是: 我们必须提供需要的值.这种方法被称为参数绑定(parameter binding).简单点说,就是将一个参数标志符与用户程序中的变量建立连接的过程.在上面的例子中,我们需要创建一个缓冲区来告诉ODBC驱动程序,当它需要一个参数的具体值时,将从我们提供的字符串缓冲区中获得。换句话说,可认为是与参数标志符相连接的列(字段)的长度.在我们的例子中, 我们的参数标志符对列"name"使用了标准值.如果该列被定义了20字节长,我们就该在ColumnSize中填入20.这条SQL语句象我们希望的那样工作了。
2025-12-20 18:51:48
589
原创 汇编语言全接触-37.连接数据源
ValuePtr. 这个参数的意义由希望设置的属性值决定.如果属性值是32位的, 这个参数将被认为是想要设置的属性值.如果属性值是一个字符串或二进制缓冲区,它就被解释为指向字符串或缓冲区的指针.如果我们指定了要设置的属性为SQL_ATTR_ODBC_VERSION, 这个参数我们可以填入SQL_OV_ODBC3和SQL_OV_ODBC2这两个可能值,分别对应ODBC 3.x和2.x.如果数据源不需要的话,用户名和密码就不是必须的.函数的返回值与SQLAllocHandle的返回值相同.
2025-12-19 11:10:58
642
经纬度网格显示模块.rar
2025-12-25
基于QT的页面切换控件重用模块介绍.rar
2025-12-25
四位置寻北解算模块.rar
2025-12-25
通用轻量级日志.rar
2025-12-25
通用配置文件操作.rar
2025-12-25
基于Qt的串口重用模块介绍.rar
2025-12-25
基于QT的程序崩溃内存转储.rar
2025-12-25
基于Qtd的TCPServer重用模块.rar
2025-12-25
基本BI协议的DVL数据处理模块.rar
2025-12-25
航行日志管理模块.rar
2025-12-25
工作状态配置化监控模块.rar
2025-12-25
不同码制字符串间转化.rar
2025-12-25
windows系统下C++实现的软件用户授权.rar
2025-12-25
捷联惯导粗对准-双矢量定姿.rar
2025-12-29
大华摄像头视频重用.rar
2025-12-29
基于qt的曲线绘制.rar
2025-12-29
嵌入式系统多线程网络处理方法.rar
2025-12-29
基于VC6,VS的仅限浮点数输入控件.rar
2025-12-29
环形数据缓存区读写方法.rar
2025-12-29
编队计划航线规划.rar
2025-12-29
vdr告警显示功能.rar
2025-12-29
FPGA数据收发模块.rar
2025-12-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅