新中新二代身份证dll调用问题: 调用这个dll时, 到这个方法: Syn_ReadMsg(nPort, 0, ref CardMsg),就报尝试读取或写入受保护的内存。这通常指示其他内存已损坏 这个错,CardMsg是IDCardData这个结构体,结构体定义如下: [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)] public struct IDCardData { [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] //结构中使用的字串,[]类似限定说明 说明此公共结构传输到非托管代码时封装定义 public string Name; //姓名 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)] public string Sex; //性别 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)] public string Nation; //名族 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string Born; //出生日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 72)] public string Address; //住址 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)] public string IDCardNo; //身份证号 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string GrantDept; //发证机关 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string UserLifeBegin; // 有效开始日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)] public string UserLifeEnd; // 有效截止日期 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)] public string reserved; // 保留 [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)] public string PhotoFileName; // 照片路径 } 原型方法: [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadMsg", CharSet = CharSet.Ansi)] public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);
如果是vista以上系统,调试中可能也会出现此错误,必须编译后用管理员模式运行。默认的普通是禁止访问系统根目录文件的。
ref:http://bbs.csdn.net/topics/390089291
相关推荐
在编程和软件开发过程中,有时会遇到“尝试读取或写入受保护的内存”的错误,这通常是由于内存管理问题导致的。此错误表明程序试图访问的内存区域可能已被操作系统标记为不可读或不可写,这往往暗示着内存损坏或其他...
开发者通过调用DLL中的函数,可以实现对加密狗的操作,如读取、写入数据,验证软件授权等。在某些情况下,由于各种原因(如原DLL不可用、需要跨平台兼容性等),开发者可能需要创建模拟的DLL来替代原版,这就是本易...
它通常包含一个唯一的序列号或密钥,软件在运行时会检查这个设备的存在和有效性,以确保只有合法用户能够运行受保护的程序。在本案例中,我们关注的是如何使用C#语言进行加密狗的数据读写操作。 C#是一种广泛使用的...
在C#中直接调用该函数时,如果简单地将二维数组`single[,]`作为参数传递,则会引发“尝试读取或写入受保护的内存”的异常。 #### 解决方案 为了解决这个问题,我们需要理解C++与C#之间类型差异,并采取合适的方式...
在本案例中,NT112reader作为一个DLL,为开发者提供了一个接口,通过调用这个库中的函数,可以与加密狗进行通信,实现对加密狗内部数据的读取和写入操作。 使用DLL有诸多优点,如代码复用、模块化设计以及动态加载...
这个库以其高效性和跨平台性而受到开发者的广泛欢迎。在标题中提到的"ICSharpCode.SharpZipLib.dll下载",指的是你可以获取到这个库的动态链接库文件,以便在你的.NET项目中使用它的功能。 在描述中提到的"可以生成...
4. **NtReadVirtualMemory** 和 **NtWriteVirtualMemory**: 阻止读取或修改受保护进程的内存。 5. **KDCOM.dll:KdReceivePacket** 和 **KdSendPacket**: 防止通过COM串口进行双机调试。 为了加强保护,TMD_TP还使用...
- 这个错误通常出现在尝试删除一个非空目录或受权限限制的目录时。 18. **17 - 系统无法将文件移到不同的驱动器。** - 移动文件到不同驱动器时可能会遇到此问题,通常是由于文件系统不兼容或权限问题。 19. **18...
在标签中,“DEMO”通常表示这是软件的一个演示或测试版本,用户可以试用但可能有功能限制。“明华”是产品品牌,代表了开发此软件的公司。“CPU”与前面的CPU卡相对应,“DES”和“RSA”是提及的加密技术。 在...
进程防杀技术是一种在计算机安全领域中用于保护恶意软件或合法程序免受反病毒软件和其他安全工具检测和清除的方法。Hook OpenProcess是其中一种常用的技术手段,它涉及到系统调用拦截和过程注入。 OpenProcess是...
1. DataUtils.v1.1.dll:这是一个动态链接库(DLL)文件,通常包含一组可被其他应用程序调用的函数或服务。DataUtils可能代表数据处理或工具相关的函数集合,版本号v1.1表明这是该组件的一个更新版本。 2. ...
该错误代码表明调用了一个不合适的函数或函数参数不正确。这通常发生在开发人员编写的应用程序中,可能是由于编程错误导致的。 ### 2 0x00000002 系统找不到指定的档案 当尝试访问一个不存在的文件时,系统会返回这...
例如,尝试读取受保护的系统文件。 4. 错误代码 7 - 缓冲区溢出 当分配的内存不足以存储数据时,会发生缓冲区溢出。这可能是因为试图在一个变量中存储的数据量超过了其允许的最大值。 5. 错误代码 9 - 下标越界 在...
### OCI调用接口文档知识点详解 #### 一、OCI简介 **Oracle Call Interface (OCI)**是一种高级的应用程序编程接口(API),它为开发者提供了一种直接访问Oracle数据库的方法。OCI适用于那些希望对Oracle数据库功能...
该 DLL 在 Windows 系统启动时即加载到内存中,并始终保持在受保护的内存区域,确保其稳定性和安全性。 #### 利用 `Kernel32.dll` 读写 INI 文件 在 C# 中,可以通过调用 `Kernel32.dll` 中的 API 函数实现对 INI ...
最后一步是在VB中调用这个DLL。可以使用VB的`Declare`语句来声明DLL中的函数,并通过这些函数来访问硬件端口。 ```vb Private Declare Function Inport Lib "myIO.dll" (ByVal portid As Integer) As Integer ...
"BREG"可能代表“Basic Registry”,暗示这个DLL可能与注册表操作有关,可能用于读取、写入或修改系统注册表设置。在360产品中,这样的模块可能用于管理用户设置或者进行系统状态监控。 2. BREGDRV.sys:这是一个...
在开发环境中,将这个DLL添加为项目的引用,就可以直接调用GemBox.ExcelLite提供的API,进行创建、读取、修改和保存Excel文件的工作。 使用GemBox.ExcelLite的一些关键知识点包括: 1. **安装和引用**:在C#项目中...
- **0X0000482 执行此应用程序所需的程序库文件之一被损坏**:DLL文件丢失或损坏。 - **0X0000483 没有应用程序与此项操作的指定文件建立关联**:文件类型未注册。 - **0X0000484 传送指令到应用程序无效**:应用...
这两个文件可能被灵锐USBTRACE数据解码工具调用来实现其功能,例如播放提示音或处理软件的版本兼容性问题。 "灵锐USBTRACE数据解码工具.exe"是主应用程序文件,执行密码解码和管理任务。用户通常需要运行这个可执行...