首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用诺基亚API获得手机驱动器的大小(免费,总计)?

如何使用诺基亚API获得手机驱动器的大小(免费,总计)?
EN

Stack Overflow用户
提问于 2009-01-03 18:02:54
回答 2查看 412关注 0票数 4

我想知道手机驱动器的大小。我使用的是“Nokia Connectivity”,关于文件系统API,我在CONADifinition函数中找到了名为CONA_Folder_Info的文件系统API,但是这个函数不支持FreeSize和Total,但是有CONA_Folder.Info2及其实例支持这些变量。

但是当我使用CONA_Folder.Info2时,如下所示:

代码语言:javascript
复制
CONADefinitions.CONAPI_FOLDER_INFO2 FolderInfo;
int iResult = 0;// Allocate memory for buffer
IntPtr Buffer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(CONADefinitions.CONAPI_FOLDER_INFO2)));                      
iResult = CONAFileSystem.CONAFindNextFolder(hFindHandle, Buffer);
while (iResult == PCCSErrors.CONA_OK )
{
  FolderInfo = (CONADefinitions.CONAPI_FOLDER_INFO2)Marshal.PtrToStructure(Buffer,    typeof(CONADefinitions.CONAPI_FOLDER_INFO2));
  if (FolderInfo.pstrName[0].ToString() != "C" && level == 0) 
  {
  }

我明白这一例外:

检测到FatalExecutionEngineError消息:运行时遇到致命错误。错误的地址是0x7a0ba769,线程0x1278。错误代码为0xc0000005。此错误可能是CLR中的错误,也可能是用户代码中不安全或不可验证部分中的错误。此错误的常见来源包括COM-interop或PInvoke的用户封送错误,这可能会损坏堆栈。

注意:我使用S60软件平台。应用语言是C#。

想知道更多的解释,请问我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-08-04 12:29:39

当您尝试将缓冲区中的数据转换为与最初由CONAFileSystem.CONAFindNextFolder创建的不同类型的结构时,您得到的异常是正确的。

您正试图将CONADefinitions.CONAPI_FOLDER_INFO类型的数据结构强制转换为CONADefinitions.CONAPI_FOLDER_INFO2类型的结构。它们几乎肯定有不同的长度等等,所以这种方法不太可能奏效。

根据在Symbian上进行C++开发的经验,诺基亚可能在这里使用的模式是他们随后开发了一个更新版本的API,因此创建了一个更新的CONADefinitions.CONAPI_FOLDER_INFO结构版本(即CONADefinitions.CONAPI_FOLDER_INFO2)。

假设这是正确的,有三种可能性:

1)第一个函数有一个enum参数,它指定要创建输出结构的哪个版本。

2)有一个返回新结构的新函数,如CONAFileSystem.CONAFindFirstFolder2、CONAFileSystem.CONAFindNextFolder2

3)诺基亚在内部开发了新版本,但尚未公开发布。

票数 1
EN

Stack Overflow用户

发布于 2009-01-03 19:20:27

我对Nokia一无所知,但总的来说,我看到了以下内容:

  1. Find通常有一个FindFirst,然后是FindNext的迭代,然后是FindClose。我看到您用FindNext调用hFindHandle,但是我没有看到它在任何地方被初始化(这通常发生在FindFirst调用中)。如果这是零,这肯定会导致访问冲突。
  2. 如果没有更多的while()循环,它看起来就像一个没完没了的循环--我假设您在某个地方有另一个FindNext?
  3. 经常发现调用要求传入的结构进行一些初始化-比如设置一个长度成员。检查您的API文档,看看这里是否需要它。
  4. 我没有看到您释放缓冲区变量或关闭find句柄(假设它是有效的)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/409487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档