RTX的编程接口.doc_第1页
RTX的编程接口.doc_第2页
RTX的编程接口.doc_第3页
RTX的编程接口.doc_第4页
RTX的编程接口.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

体系架构RTX的架构RTX添加一个实时子系统, 即所谓的RTSS,到Windows (参见上面的图) 。RTSS 与其它Windows子系统是概念性相似(譬如Win32, POSIX,和DOS) 因为它支持其自己的执行环境和API 。但在一个重要区域RTSS是不同的:不是使用Windows调度程序, RTSS执行其自己实时线程调度。此外, 在单处理机环境里, 所有RTSS 线程调度在所有Windows调度之前发生, 包括Windows管理的中断和延迟的过程调用(DPCs) 。实时进程间通信RTSS也支持能被RTSS或Win32进程操纵的进程间通信对象(IPC)。这使得在实时和非实时程序之间,简单标准的通信和同步成为可能。最后, RTSS 提供其它时间关键服务- 譬如对RTSS 进程实施时钟,定时器和中断管理。HAL 扩展名RTX 包括一个实时使能的硬件抽象层(HAL)扩展。这个扩展在RTSS 和Windows之间维护中断隔离。 Windows无法屏蔽(在中断控制级别) 由RTSS 管理的中断。 Windows中断在RTSS 处理期间被屏蔽。 实时HAL 扩展名支持关于RTSS的高分辨率时钟和定时器, 当它和支持关于Windows的非实时钟和定时器。 其它实时HAL 扩展名功能包括在RTSS 和Windows之间的一个软件中断机制, 基本的异常管理, 和各种各样的改进都是为了确定性。单处理机和多处理机系统RTX 支持单处理机和多重处理机都运行于 Windows的系统。 RTX 的运行时版本, 它支持多重处理机系统, 提供单处理机版本的所有功能, 它利用英特尔MPS兼容的多重处理机系统,在Windows和RTX 环境提供改善的性能。运行RTX,为多重处理机系统, 实施一个专用的处理器模型。在这个模型中, RTSS 运行在一个处理器, 当其余的处理器继续运行在Windows系统。 多重处理机HAL在Windows起动次序期间获取最后逻辑处理器的控制。它为RTSS保留 。RTSS 程序可能被装载,然后被在专用处理器中执行。关于Win32 和RTSS 进程的RTX 应用程序编程接口, 包括浮点单元(FPU) 和结构化的异常处理, 被单处理机和多重处理机系统使用。这消除了为一个多处理机平台重新编码RTX(单处理机)应用软件的需要。应用程序设计接口(API)RTX API 是基于Win32 API的。开发人员借鉴Win32 经验, 编码基础, 和开发工具, 和加速坚硬实时应用的开发。 Win32 和RTSS 进程支持全部的RTX API, 但是, 用不同的反应时间和性能特性- 在开发环境之间允许开发人员共享或移动代码。Win32 和实时APIRTX 支持一个子集Win32 API 功能, 它提供一套特殊实时功能, 通认作为RTAPI (实时API) 。 RTAPI 函数用Rt 作为函数名的前缀。 某些RTAPI 函数与Win32 中与之对应的语义是相同的,但其他的是RTX(例如, 没有相似的Win32 调用)独有的。例如, RTAPI IPC函数与Win32 IPC函数的不同只在于他们运行的IPC 命名空间和在决定性可能以实时IPC 对象。 另一方面, Win32 API 不包括任何与中断管理有关的函数; 因此, 唯一中断管理函数被定义在RTAPI 。对RTX API 的仔细的选择促进实时应用组件的高效率的开发。 RTX不包括Win32 功能, 譬如与GUI 相关的调用, 一般有时间要求不严格的应用程序组件使用。 实际上, Win32函数对于实时编程不是必需的, 和不切实际执行确定性行为, 不被包括在RTX API 。多数应用程序至少有两个进程一起工作- 一个基于Win32 的进程(利用GUI 和其它Win32-only 函数) 和一个基于RTSS 的进程执行时间严格的处理。实时程序库RTX 支持各种各样的运行时库, 并且提供基于MS Visual C+ 的 C 运行时库。 RTSS 进程可能静态被链接包含这些库, 只要他们不尝试链接到不受支持的Win32函数。 RTSS 进程链接到专用版本的动态连接库(DLLs 的),这些可能被使用模块化应用程序代码或提供实时软件环境的运行时定制。UnicodeRTX 支持Unicode 应用程序。 RTSS 进程可能使用wmain() 函数和接受广义字符输入变量。 支持函数WCS 系列,这些作为RTX 支持的C 运行时库一部分。API进程线程管理进程和线程一个进程包含一个地址空间,对象句柄,和一个或多个执行(线程)路径。线程被用于响应中断和处理线程上下文中进程相关的异步事件。RTSS和Win32的进程和线程只能进入他们自己的环境中的进程和线程。1.RtGetThreadPriorityRtGetThreadPriority返回一个指定线程的优先权值。2.RtSetThreadPriorityRtSetThreadPriority设置一个指定线程的优先权值。系统内存管理系统内存分配:进程频繁地分配追加的内存去执行他们的操作。RTX内存分配例行程序总是分配被锁定的内存。1.RtAllocateLockedMemoryRtAllocateLockedMemory为避免内存使用时的分页错误,提交和锁定指定数量的内存。2.RtFreeLockedMemoryRtFreeLockedMemory释放之前被RtAllocateLockedMemory提交和锁定的内存。3.RtLockProcessRtLockProcess将进程虚拟地址空间的某个部分锁定到物理内存。4.RtUnlockProcessRtUnlockProcess解锁锁定到物理内存的进程虚拟地址空间的那部分。5.RtCommitLockProcessHeapRtCommitLockProcessHeap提交和锁定系统进程堆去避免堆使用时的分页错误。6.RtCommitLockHeapRtCommitLockHeap提交和锁定堆去避免堆使用时的分页错误。7.RtCommitLockStackRtCommitLockStack提交和锁定指定栈去避免栈使用时的分页错误。8.RtLockKernelRtLockKernel锁定windows内核的虚拟地址空间的某个部分到物理内存。9.RtUnLockKernelRtUnLockKernel解锁之前被锁定到物理内存的windows内核的部分。本地内存本地内存是实现RTSS应用程序内存请求的一个RTX确定性分配的内存池。从本地池分配内存RTSS应用程序不必为了请求Windows内存而去初始化一个服务请求中断(Service Request Interrupt (SRI))。当第一个RTSS应用程序开始并为一般非确定性函数提供确定性行为的时候,本地内存池将被创建。1.RtAllocateLocalMemoryRtAllocateLocalMemory从先前分配的RTSS 确定性内存池分配内存去避免SRI活动。时钟和定时器实时系统需要大量的操作系统时间服务请求。操作系统必须维护一个精确次数的时间和时间表线程页的精确记账,挂起一个精确间隔的线程。1.RtGetClockTimeRtGetClockTime获得指定时钟的当前值。2.RtSetClockTimeRtSetClockTime设置一个指定时钟的当前值。3.RtGetClockResolutionRtGetClockResolution获得一个指定时钟的resolution。4.RtGetClockTimerPeriodRtGetClockTimerPeriod获得一个指定时钟的最小定时器周期。RtGetClockTime调用传送100ns的64位流量时间5.RtGetRtssTimeAsFileTimeRtGetRtssTimeAsFileTime得到RTSS时间的当前值。6. RtSetRtssTimeAsFileTimeRtSetRtssTimeAsFileTime设置RTSS时间的最新值进程间通信对象名字它为进程共享对象句柄提供一种简易的方式。由创建进程指定的名字受RTX_MAX_PATH 字符限制,它包括除了反斜杠路径分隔符()以外的任何字符。一旦进程创建了有名字的活动, 互斥变量, 信号量, 或共享内存对象, 其它进程可使用这个名字调用适当的功能(RtOpenEvent, RtOpenMutex, RtOpenSemaphore, 或RtOpenSharedMemory) 打开对象的句柄。 命名会区分大小写。RtOpenEvent:返回现有的命名事件对象的句柄RtOpenMutex:返回命名的RTSS互斥变量的句柄RtOpenSemaphore:返回现有的命名的信号量对象的句柄RtOpenSharedMemory:打开一个命名的物理映射的对象RtCreateMutex:创建一个RTSS互斥变量。对这个新创建的互斥变量对象,返回一个句柄。共享内存RTSS 共享内存对象是非页式物理内存区域,可以映射到进程的虚拟地址空间。 当一个共享内存对象有了名字, 另外的进程可以进行内存映射。 通过句柄和虚拟地址来访问共享内存对象。RtCreateSharedMemory:创建一个物理内存的命名区域,它能映射到任何进程中去。 RtOpenSharedMemory:打开一个命名的物理映射对象信号量对象RTSS信号量对象是一个同步对象,维护在零到指定最大值之间的计数。 每当线程完成一次信号量对象的等待,计数减一; 当信号量释放时,记数增加可变数量。 当计数到达零, 信号量对象的状态不再受信,并且直到一些线程数增加计数,其他线程数才完成对信号量对象的等待。RtCreateSemaphore:创建一个命名的或未命名的信号量对象事件对象事件对象是同步对象,其状态可通过调用RtSetEvent 或RtPulseEvent明确地被设置为受信状态。事件对象的二种类型是:Manual-reset event 和Auto-reset event事件对象在给线程发信号,表明一个特殊事件发生了时相当有用。RtSetEvent:设置指定事件对象的状态为受信状态RtPulseEvent:提供单一的操作,来设置(信号化)指定事件对象,然后在释放适当数量的等待线程后,将事件重置(设置为无信号状态)。RtResetEvent:将指定事件对象的状态设置为无信号RtWaitForSingleObject:当下面的情况之一发生时,返回:指定对象处于受信状态超时时间间隔到期RtCreateEvent:创建一个命名的或未命名的事件对象互斥对象:RTSS互斥对象是一个同步对象,当它不属于任何线程时,它的状态时受信的;当互斥量被一个线程拥有时,它处于非受信状态。互斥变量仲裁独占访问共享资源。RtReleaseMutex:放弃一个RTSS互斥量的所有权设备管理中断RTX中断管理提供使能一个应用程序能够很好的满足中断请求从设备访问计算机。RtAttachInterrupt 允许用户使中断服务线程和中断服务请求跟基线或者基于消息的硬件中断关联。RtAttachInterruptVectorEx 允许用户使中断服务线程和中断服务请求跟共享的或者非共享的硬件中断关联。RtAttachInterruptVector 允许用户使在用户区句柄历程跟一个中断关联。RtReleaseInterrupt 通过使用RtAttachInterrupt发布一个先前附着的中断。RtReleaseInterruptVector 发布一个先前附着的中断RtQueryPciMsiCapability 允许用户查询一个PCI设备判断这个设备是否有MSI或者MSI-X能力。RtDisableInterrupts 在一个RTSS环境,RtDisableInterrupts让所有的中断不能用RtEnableInterrupts 使能所有的用户级的中断。端口IO实时系统请求控制、读、写数据到硬件设备。RTX端口I/O编程接口允许数据在一个处理器的I/O空间移动只在用户进程不需要转化到一个内核模式编码。RtEnablePortIo 能够直接从用户设备上下文对I/O端口访问。RtDisablePortIo 不能够从用户设备上下文直接对I/O端口访问RtReadPortUchar,RtReadPortUshort,RtReadPortUlong 从端口读数据RtWritePortUchar,RtWritePortUshort,RtWritePortUlong 直接写数据到端口RtReadPortBufferUchar,RtReadPortBufferUshort,RtReadPortBufferUlong 从端口直接读数据拷贝到缓存。RtWritePortBufferUchar,RtWritePortBufferUshort,RtWritePortBufferUlong 从缓存拷数据写到端口。物理内存映射存在的I/O区域依赖于处理处体系结构。端口映射到内存地址,这些体系结构能够使用内存映射函数使能够访问物理内存对于控制器和其他硬件设备。RtMapMemory 映射一大片的物理内存地址到用户虚拟地址空间。RtUnmapMemory 释放映射。连续的内存映射某种设备请求他们的缓冲区重新连续分配物理内存空间在CPU地址空间。这些设备必须使用真实的物理地址访问内存缓冲而不是通过虚拟的地址。RtAllocateContiguousMemory 分配物理连续内存。RtFreeContiguousMemory 释放先前分配的连续内存RtGetPhysicalAddress 在RTSS环境中提供所有的内存分配方式,在Windows中它只提供连续的内存分配。总线IORtGetBusDataByOffset 获得详细的RtTranslateBusAddress 转化一个具体的总线地址到相关的系统逻辑地址RtSetBusDataByOffset 为设备设置总线配置数据在一个动态配置IO总线以一个公布的标准的接口。文件IO使用的都是Windows的API,并且必须使用绝对路径在RTX环境下。异常管理APIRtAttachShutdownHandler 注册一个停止通知句柄函数。这个句柄函数调用自己的线程当系统停止事件发生的时候。RtReleaseShutdownHandler 毁坏由RtAttachShutdownHandler.创建的关闭句柄对象常用APIRtAtoi 把string值转化为intRtCloseHandle 关闭打开的对象句柄RtIsInRtss 如果调用的进程正在运行返回trueRtPrintf 打印标准化格式输出到控制台RtWPrintf打印标准化格式输出到控制台RtWtoi把string值转化为int被支持函数的准则关于准则矩阵提供关于支持RTX APIs的技术信息。矩阵提供:l 实时函数l Win32支持函数l C 库支持函数l C+库支持函数l RTK函数Key以下key解释表中的“Notes”列Notes码含义1Rt的优先级是从0到127, 然而Win32 范围 是Windows上的 -15, -2, -1, 0, 1, 2, 15.2RTX IPC 命名空间 独立于 Win32 命名空间.3调用被一个 Rt 调用和一个 Win32 调用支持 (e.g. RtAtoi 和 Atoi).4不能被所有的 RTSS DLL使用.5C/C+运行时调用不在共享的RTDLL中支持.确定性 No 表示 调用 不是确定的. Yes表示 调用的运行时间 少于5微秒. RTSS中的确定性函数 工作在 Windows 停止屏. Yes* 表示 调用对小规模输入有确定性 Unknown 表示如果调用是确定性的,就不可能知道。因为调用参考的对象不是总能被知道的。 实时函数矩阵RTAPI 函数名称NotesDeterministic?RtAllocateContiguousMemoryRtAllocateLocalMemoryYes RtAllocateLockedMemoryRtAtoi3 Yes RtAttachInterruptVectorRtAttachInterruptVectorExRtAttachShutdownHandlerRtCancelTimerYes RtCloseHandleRtCommitLockHeapRtCommitLockProcessHeapRtCommitLockStackRtCreateEvent2 RtCreateMutex2 RtCreateProcessRtCreateSemaphore2 RtCreateSharedMemoryRtCreateTimerRtDeleteTimerRtDisableInterruptsYes RtDisablePortIoRtEnableInterruptsYes RtEnablePortIoRtFreeContiguousMemoryRtFreeLocalMemoryYes RtFreeLockedMemoryRtGetBusDataByOffsetRtGetClockResolutionYes RtGetClockTimeYes RtGetClockTimerPeriodYes GetExitCodeProcessYes RtGetPhysicalAddressRtGetRtssTimeAsFileTimeYes RtGetThreadPriority1 , 3 Yes RtGetTimerYes RtIsInRtssYes RtLockKernelRtLockProcessRtMapMemoryRtOpenEvent2 RtOpenMutex2 RtOpenProcessRtOpenSemaphore2 RtOpenSharedMemoryRtPrintf3 RtPulseEvent2 Yes RtQueryLocalMemoryYes* RtReadPortBufferUcharYes RtReadPortBufferUlongYes RtReadPortBufferUshortYes RtReadPortUcharYes RtReadPortUlongYes RtReadPortUshortYes RtReleaseInterruptVectorRtReleaseMutex2 Yes RtReleaseSemaphore2 Yes RtReleaseShutdownHandlerRtResetEvent2 Yes RtSetBusDataByOffsetRtSetClockTimeYes RtSetEvent2 Yes RtSetRtssTimeAsFileTimeYes RtSetThreadPriority1 , 3 Yes RtSetThreadTimeQuantumYes RtSetTimerYes RtSetTimerRelativeYes RtSleepFtYes RtTerminateProcessRtTranslateBusAddressRtUnlockKernelRtLockProcessRtUnmapMemoryRtWaitForMultipleObjectsYes RtWaitForSingleObjectYes RtWPrintf3 RtWritePortBufferUcharYes RtWritePortBufferUlongYes RtWritePortBufferUshortYes RtWritePortUcharYes RtWritePortUlongYes RtWritePortUshortYes RtWtoi3 Yes Win32支持 函数矩阵Win32 Function NameNotesDeterministic?AbnormalTerminationCloseHandleCreateDirectoryCreateFileCreateThreadDeleteCriticalSectionDeleteFileDeviceIoControlDllMainEnterCriticalSectionYes ExitProcessExitThreadFileTimeToLocalFileTimeFileTimeToSystemTimeYes FreeLibraryGetCurrentProcessIdYes GetCurrentProcessorNumberYesGetCurrentThreadYes GetCurrentThreadIdYes GetExceptionCodeYes GetExceptionInformationYes GetExitCodeThreadYes GetLastErrorYes GetProcAddressGetProcessHeapGetLocalTimeGetSystemTimeGetThreadPriority1 , 3 Yes GetTimeZoneInformationHeapAllocHeapCreateHeapDestroyHeapFreeHeapReAllocHeapSizeYes InitializeCriticalSectionLeaveCriticalSectionYes LoadLibraryLocalFileTimeToFileTimeRaiseExceptionReadFileRemoveDirectoryResumeThreadYes SetEndOfFileSetFilePointerSetLastErrorYes SetThreadPriority1 , 3 Yes SetUnhandledExceptionFilterYes SleepYes SuspendThreadYes SystemTimeToFileTimeYes TerminateThreadTlsAllocYes TlsFreeYes TlsGetValueYes TlsSetValueYes UnhandledExceptionFilterYes WriteFileC 库支持函数矩阵C 库函数名NotesDeterministic?abs5Yes acos5Yes asin5Yes atan5Yes atan25Yes atof5Yes atoi3 , 5Yes atol5Yes bsearch5Yes* calloc5ceil5Yes cos5Yes cosh5Yes difftime5Yes div5Yes exit5exp5Yes fabs5Yes fclose5fflush5fgets5floor5Yes fmod5Yes fopen5fprintf(stderr)4 , 5fputc5fputs5fread5free5frexp5Yes fseek5ftell5fwrite5getc5isalnum5Yes isalpha5Yes iscntrl5Yes isdigit5Yes isgraph5Yes islower5Yes isprint5Yes ispunct5Yes isspace5Yes isupper5Yes iswalnum5Yes iswalpha5Yes iswascii5Yes iswcntrl5Yes iswctype5Yes iswdigit5Yes iswgraph5Yes iswlower5Yes iswprint5Yes iswpunct5Yes iswspace5Yes iswupper5Yes iswxdigit5Yes isxdigit5Yes labs5Yes ldexp5Yes ldiv5Yes log5Yes log105Yes longjmp5Yes main5malloc5memchr5Yes memcmp5Yes* memcpy5Yes* memmove5Yes* memset5Yes modf5Yes perror4 , 5pow5Yes printf3 , 4 , 5putc5putchar5qsort5Yes* rand5Yes realloc5rewind5setjmp5Yes signal5sin5Yes sinh5Yes sprintf3 , 4 , 5sqrt5Yes srand5Yes sscanf5strcat5Yes strchr5Yes strcmp5Yes strcpy5Yes* strcspn5Yes strerror5Yes strlen5Yes strncat5Yes strncmp5Yes* strncpy5Yes* strpbrk5Yes strrchr5Yes strspn5Yes strstr5Yes strtod5Yes strtok5Yes strtol5Yes strtoul5Yes tan5Yes tanh5Yes tolower5Yes toupper5Yes towlower5Yes towupper5Yes ungetc5Yes va_start5Yes vsprintf4 , 5wcscat5Yes wcschr5Yes wcscmp5Yes wcscpy5Yes wcscspn5Yes wcsftime5Yes wcslen5Yes wcsncat5Yes wcsncmp5Yes* wcsncpy5Yes* wcspbrk5Yes wcsrchr5Yes wcsspn5Yes wcsstr5Yes wcstod5Yes wcstok5Yes wcstol5Yes wcstoul5Yes wmain5wprintf3 , 4 , 5wtof5Yes wtoi3 , 5Yes wtol5Yes _controlfp5_fpreset5C+ 标准模板 库调用矩阵以下 C+ 标准模板库 (STL) 调用 在 RTSS 环境中支持.accumulateadjacent_differenceadjacent_findadvanceback_insert_iteratorback_inserterbasic_stringbinary_negatebinary_searchbind1stbinder2ndbsappendcerrclogcopycopy_backwardcountcount_ifcoutdividesequalequal_rangeequal_tofilebuffillfill_nfindfind_endfind_first_offind_iffindfrstoffor_eachfront_insert_iteratorfront_inserterfstreamgenerategenerate_ngreatergreater_equalifstreamincludesinner_productinplace_mergeinsertinsert_iteratoristream_iteratoristringstreamiter_swaplessless_equallexicographical_comparelogical_andlogical_notlogical_orlower_boundmake_heapmaxmax_elementmergeminmin_elementminusmismatchmodulusmultipliesnegatenext_permutationnot_equal_tonth_elementofstreamostreamostream_iteratorostringstreampairpartial_sortpartial_sort_copypartial_sumpartitionpluspointer_to_binary_functionpointer_to_unary_functionprev_permutationpriority_queueptr_funpush_heaprandom_shuffleremoveremove_copyremove_copy_ifremove_ifreplacereplace_copyreplace_copy_ifreplace_ifreversereverse_copyrotaterotate_copysearchsearch_nset_differenceset_intersectionset_symmetric_differenceset_unionsetbasesetfillsetprecisionsetwsizesortsort_heapstable_partitionstable_sortstreqstrgrteqstrgrtthanstringbufstringstreamstrlesseqstrlessthanstrneqstrplusswapswap_rangestransformuniqueunique_copyupper_boundwcerrwclogwistringstreamwostreamwostringstreamwstringstreamRTK API 函数矩阵RTK 函数只能被Windows的设备驱动程序使用; 它们对于 RTX 应用程序是不可用的.RTK API 函数名NotesRtkCloseHandleRtkCreateEvent2 RtkCreateMutex2 RtkCreateSemaphore2 RtkCreateSharedMemoryRtkOpenEvent2 RtkOpenMutex2 RtkOpenSemaphore2 RtkOpenSharedMemoryRtkPulseEvent2 RtkReleaseMutex2 RtkReleaseSemaphore2 RtkResetEvent2 RtkRtssAttachRtkRtssDetachRtkSetEvent2 实时和Window32接口的函数分组异常管理的接口异常管理实时函数异常管理Win32-支持的函数RtAttachShutdownHandlerRtReleaseShutdownHandlerAbnormalTerminationGetExceptionCodeGetExceptionInformationRaiseExceptionSetUnhandledExceptionFilterUnhandledExceptionFilter时钟与定时器的接口时钟与定时器实时函数时钟与定时器Win32-支持的函数RtCancelTimerRtCreateTimerRtDeleteTimerRtGetClockResolutionRtGetClockTimeRtGetClockTimerPeriodRtGetRtssTimeAsFileTimeRtGetTimerRtSetClockTimeRtSetRtssTimeAsFileTimeRtSetTimerRtSetTimerRelativeRtSleepFtFileTimeToLocalFileTimeFileTimeToSystemTimeGetLocalTimeGetSystemTimeGetTimeZoneInformationLocalFileTimeToFileTimeSleep常规使用的接口常规使用实时函数常规使用Win32-支持的函数RtAtoiRtCloseHandleRtIsInRtssRtPrintfRtWPrintfRtWtoiCloseHandleCreateDirectoryCreateFileDeleteCriticalSectionDeleteFileDeviceIoControlDllMainEnterCriticalSectionFreeLibraryGetLastErrorGetProcAddressInitializeCriticalSectionLeaveCriticalSectionLoadLibraryReadFileRemoveD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论