我想知道手机驱动器的大小。我使用的是“Nokia Connectivity”,关于文件系统API,我在CONADifinition函数中找到了名为CONA_Folder_Info的文件系统API,但是这个函数不支持FreeSize和Total,但是有CONA_Folder.Info2及其实例支持这些变量。
但是当我使用CONA_Folder.Info2时,如下所示:
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#。
想知道更多的解释,请问我。
发布于 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)诺基亚在内部开发了新版本,但尚未公开发布。
发布于 2009-01-03 19:20:27
我对Nokia一无所知,但总的来说,我看到了以下内容:
https://stackoverflow.com/questions/409487
复制相似问题