[[← 41 章に戻る|Palm OS Programmer's API Reference/41]] [[↑トップへ|Palm OS Programmer's API Reference]] [[43 章に進む →|Palm OS Programmer's API Reference/43]] ---- !!!42 メモリ マネージャ この章の索引 *{{goto MemCardInfo, MemCardInfo}} *{{goto MemCmp, MemCmp}} *{{goto MemDebugMode, MemDebugMode}} *{{goto MemHandleCardNo, MemHandleCardNo}} *{{goto MemHandleDataStorage, MemHandleDataStorage}} *{{goto MemHandleFree, MemHandleFree}} *{{goto MemHandleHeapID, MemHandleHeapID}} *{{goto MemHandleLock, MemHandleLock}} *{{goto MemHandleNew, MemHandleNew}} *{{goto MemHandleResize, MemHandleResize}} *{{goto MemHandleSetOwner, MemHandleSetOwner}} *{{goto MemHandleSize, MemHandleSize}} *{{goto MemHandleToLocalID, MemHandleToLocalID}} *{{goto MemHandleUnlock, MemHandleUnlock}} *{{goto MemHeapCheck, MemHeapCheck}} *{{goto MemHeapCompact, MemHeapCompact}} *{{goto MemHeapDynamic, MemHeapDynamic}} *{{goto MemHeapFlags, MemHeapFlags}} *{{goto MemHeapFreeBytes, MemHeapFreeBytes}} *{{goto MemHeapID, MemHeapID}} *{{goto MemHeapScramble, MemHeapScramble}} *{{goto MemHeapSize, MemHeapSize}} *{{goto MemLocalIDKind, MemLocalIDKind}} *{{goto MemLocalIDToGlobal, MemLocalIDToGlobal}} *{{goto MemLocalIDToLockedPtr, MemLocalIDToLockedPtr}} *{{goto MemLocalIDToPtr, MemLocalIDToPtr}} *{{goto MemMove, MemMove}} *{{goto MemNumCards, MemNumCards}} *{{goto MemNumHeaps, MemNumHeaps}} *{{goto MemNumRAMHeaps, MemNumRAMHeaps}} *{{goto MemPtrCardNo, MemPtrCardNo}} *{{goto MemPtrDataStorage, MemPtrDataStorage}} *{{goto MemPtrFree, MemPtrFree}} *{{goto MemPtrHeapID, MemPtrHeapID}} *{{goto MemPtrNew, MemPtrNew}} *{{goto MemPtrRecoverHandle, MemPtrRecoverHandle}} *{{goto MemPtrResize, MemPtrResize}} *{{goto MemPtrSetOwner, MemPtrSetOwner}} *{{goto MemPtrSize, MemPtrSize}} *{{goto MemPtrToLocalID, MemPtrToLocalID}} *{{goto MemPtrUnlock, MemPtrUnlock}} *{{goto MemSet, MemSet}} *{{goto MemSetDebugMode, MemSetDebugMode}} *{{goto MemStoreInfo, MemStoreInfo}} ---- この章ではメモリ マネージャについて説明します。メモリ マネージャ API は、ヘッダ ファイル {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} で宣言されます。メモリ マネージャについての追加情報は、''Palm OS Programmer's Companion, vol. I'' の [[「メモリ」|Palm OS Programmer's Companion Volume I/5]] の章を参照してください。 !!メモリ マネージャ関数 {{goto p0, ^TOP^}} !{{anchor MemCardInfo}}MemCardInfo 関数 {{goto p0, ^TOP^}} '''目的''' メモリ カードについての情報を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemCardInfo ( UInt16 cardNo, Char *cardNameP, Char *manufNameP, UInt16 *versionP, UInt32 *crDateP, UInt32 *romSizeP, UInt32 *ramSizeP, UInt32 *freeBytesP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',cardNo}} **カード ナンバ *{{span style='color:blue;font-family:monospace;',cardNameP}} **文字配列(32バイト)へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',manufNameP}} **文字配列(32バイト)へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',versionP}} **変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',crDateP}} **作成日へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',romSizeP}} **ROM サイズ変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',ramSizeP}} **RAM サイズ変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',freeBytesP}} **バイト数の変数へのポインタ、または 0 '''返り値''' エラーが無ければ 0 を返します。 '''コメント''' 反映させたくないパラメータ変数には 0 を渡してください。 !{{anchor MemCmp}}MemCmp 関数 {{goto p0, ^TOP^}} '''目的''' 2 つのメモリ ブロックを比較します。 ---- '''NOOTE:''' ブロックは符号なしバイトとして比較されます。 ---- '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Int16 MemCmp ( const void *s1, const void *s2, Int32 numBytes ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',s1}}, {{span style='color:blue;font-family:monospace;',s2}} **メモリ ブロックへのポインタ *{{span style='color:blue;font-family:monospace;',numBytes}} **比較するバイト数 '''返り値''' 一致した場合 0、一致しない場合は: {{span style='color:blue;font-family:monospace;',s1}} > {{span style='color:blue;font-family:monospace;',s2}} ならば、+ {{span style='color:blue;font-family:monospace;',s1}} < {{span style='color:blue;font-family:monospace;',s2}} ならば、- '''互換性''' {{goto 2.0 New Feature Set,2.0 New Feature Set|Palm OS Programmer's API Reference/B}} が満たされる場合にのみ、実装されます。 {{span style='color:blue;font-family:monospace;',MemCmp}} は、{{span style='color:blue;font-family:monospace;',MemCmp}} をサポートするすべてのバージョンで、メモリ上のブロックの等価性をテストするのに使用できます。しかしながら、メモリ上のブロックのソート順(sort ordering)のテストとして使用する場合、Palm OS バージョン 3.5 以降でなければ信頼できません。バージョン 3.2 以前では、{{span style='color:blue;font-family:monospace;',MemCmp}} は 2 つのブロックが一致しなければ常に + を返します。バージョン 3.2 と 3.3 では、{{span style='color:blue;font-family:monospace;',MemCmp}} は、文字の相違が 128 箇所以下であれば、{{span style='color:blue;font-family:monospace;',s1}} > {{span style='color:blue;font-family:monospace;',s2}} のとき + を返し、{{span style='color:blue;font-family:monospace;',s1}} < {{span style='color:blue;font-family:monospace;',s2}} のとき - を返し、それを信頼することができます。相違が 128 箇所を超える場合は、{{span style='color:blue;font-family:monospace;',MemCmp}} は - を返すべきときに + を返すかもしれませんし、逆も同様です。 !{{anchor MemDebugMode}}MemDebugMode 関数 {{goto p0, ^TOP^}} '''目的''' メモリ マネージャの現在のデバッグ モードを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemDebugMode ( void ) '''パラメータ''' パラメータはありません。 '''返り値''' {{goto MemSetDebugMode, MemSetDebugMode()}} で説明されているデバッグ フラグを返します。 !{{anchor MemHandleCardNo}}MemHandleCardNo 関数 {{goto p0, ^TOP^}} '''目的''' チャンクが存在しているカード ナンバを返します。 '''Prototype''' UInt16 MemHandleCardNo ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' カード ナンバを返します。 '''コメント''' 可動チャンクが存在しているカード ナンバ(0 または 1)を検索するためにこのルーチンを呼び出します。 '''参照''' {{goto MemPtrCardNo, MemPtrCardNo()}} !{{anchor MemHandleDataStorage}}MemHandleDataStorage 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたハンドルがデータ ストレージ ヒープの一部であれば {{span style='color:blue;font-family:monospace;',true}} を返します。そうでない場合は、ダイナミック ヒープに存在するハンドルです。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Boolean MemHandleDataStorage ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' ハンドルがデータ ストレージ ヒープの一部であれば、{{span style='color:blue;font-family:monospace;',true}} を返します。 '''コメント''' テキスト フィールドを編集するときにデータ ストレージの Write プロテクトに気を配る必要があるかどうか確認するために、フィールド パッケージ ルーチンによって呼び出されます。 '''参照''' {{goto MemPtrDataStorage, MemPtrDataStorage()}} !{{anchor MemHandleFree}}MemHandleFree 関数 {{goto p0, ^TOP^}} '''目的''' 可動チャンクの処分を行います。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHandleFree ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' エラーが無ければ 0 を返します。エラーが起こった場合は、{{span style='color:blue;font-family:monospace;',memErrInvalidParam}} を返します。 '''コメント''' 可動チャンクを処分するためにこのルーチンを呼び出します。 '''参照''' {{goto MemHandleNew, MemHandleNew()}} !{{anchor MemHandleHeapID}}MemHandleHeapID 関数 {{goto p0, ^TOP^}} '''目的''' チャンクのヒープ ID を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemHandleHeapID ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' チャンクのヒープ ID を返します。 '''コメント''' チャンクが存在するヒープのヒープ ID を取得するためにこのルーチンを呼び出します。 '''参照''' {{goto MemPtrHeapID, MemPtrHeapID()}} !{{anchor MemHandleLock}}MemHandleLock 関数 {{goto p0, ^TOP^}} '''目的''' チャンクをロックし、チャンクのデータへのポインタを取得します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemPtr MemHandleLock ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' チャンクへのポインタを返します。 '''コメント''' チャンクをロックし、チャンクへのポインタを取得するためにこのルーチンを呼び出します。 '''参照''' {{goto MemHandleNew, MemHandleNew()}}, {{goto MemHandleUnlock, MemHandleUnlock()}} !{{anchor MemHandleNew}}MemHandleNew 関数 {{goto p0, ^TOP^}} '''目的''' ダイナミック ヒープ内部の新しい可動チャンクを割り当て、そのチャンクへのハンドルを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemHandle MemHandleNew ( UInt32 size ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ size}} **希望するチャンクのサイズ '''返り値''' 新しいチャンクへのハンドルを返します。失敗した場合は 0 を返します。 '''コメント''' ダイナミック メモリを割り当てるためにこのルーチンを呼び出します。{{span style='color:blue;font-family:monospace;',MemHandleNew}} が割り当てたメモリ チャンクにデータを書き込む前に、{{goto MemHandleLock, MemHandleLock()}} を呼び出して、チャンクのロックとそのチャンクへのポインタの取得を行う必要があります。 '''参照''' {{goto MemPtrFree, MemPtrFree()}}, {{goto MemPtrNew, MemPtrNew()}}, {{goto MemHandleFree, MemHandleFree()}}, {{goto MemHandleLock, MemHandleLock()}} !{{anchor MemHandleResize}}MemHandleResize 関数 {{goto p0, ^TOP^}} '''目的''' チャンクをリサイズします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHandleResize ( MemHandle h, UInt32 newSize ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル *{{span style='color:blue;font-family:monospace;',→ newSize}} **希望する新しいサイズ '''返り値''' *{{span style='color:blue;font-family:monospace;',0}} **エラーなし *{{span style='color:blue;font-family:monospace;',memErrInvalidParam}} **不適切なパラメータを渡された *{{span style='color:blue;font-family:monospace;',memErrNotEnoughSpace}} **ヒープにチャンクを大きくするだけの十分なスペースがない *{{span style='color:blue;font-family:monospace;',memErrChunkLockes}} **チャンクがロックされているため、チャンクを大きくすることができない '''コメント''' チャンクをリサイズするためにこのルーチンを呼び出します。チャンクのサイズを小さくする場合は、たとえチャンクがロックされていても、常にこのルーチンは成功します。チャンクを大きくする場合、このルーチンは、まず、チャンクのすぐ後に領域を作成しようとします。それが成功すると、チャンクを動かす必要はありません。チャンクをヒープの他の場所に動かす必要がある場合は、そのチャンクは可動で、かつ、ロック カウントは 0 でなくてはなりません。 Palm OS バージョン 2.0 以前を走らせているデバイスでは、{{span style='color:blue;font-family:monospace;',MemHandleResize}} 関数はヒープの同じ場所でチャンクをリサイズしようとするだけです。しかし、{{goto DmResizeRecord, dmResizeRecord()|Palm OS Programmer's API Reference/30-2}} は、元のヒープに十分なスペースがない場合、他の場所を探します。 '''参照''' {{goto MemHandleNew, MemHandleNew()}}, {{goto MemHandleSize, MemHandleSize()}} !{{anchor MemHandleSetOwner}}MemHandleSetOwner 関数 {{goto p0, ^TOP^}} '''目的''' チャンクの所有者 ID をセットします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHandleSetOwner ( MemHandle h, UInt16 owner ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル *{{span style='color:blue;font-family:monospace;',→ owner}} **チャンクの新しい所有者のID。OS をオーナーにする場合は 0 をセットします。 '''コメント''' {{goto SysUIAppSwitch, SysUIAppSwitch()|Palm OS Programmer's API Reference/54}} または {{goto SysAPPLaunch, SysAPPLaunch()|Palm OS Programmer's API Reference/54}} に渡すパラメータ ブロックを割り当てる場合は、パラメータ ブロック チャンクの所有権を OS に付与するために {{goto MemPtrSetOwner, MemPtrSetOwner()}} を呼び出さなくてはなりません。(元々の所有者はアプリケーションになっています。)これらのチャンクの所有権を変更しないと、実行中のアプリケーションがそれらを使用する機会を得る前に、それらは解放されてしまうでしょう。 ---- '''重要:''' 一旦、メモリ チャンクの所有権を OS に付与した場合、そのチャンクを解放しようとしてはいけません。OS が、{{span style='color:blue;font-family:monospace;',SysUIAppSwitch()}} または {{span style='color:blue;font-family:monospace;',SysAppLaunch()}} と共に呼び出されたアプリケーションが停止すると、それを解放するでしょう。 ---- !{{anchor MemHandleSize}}MemHandleSize 関数 {{goto p0, ^TOP^}} '''目的''' チャンクの要求されたサイズを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt32 MemHandleSize ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} *チャンク ハンドル '''返り値''' チャンクの要求されたサイズを返します。 '''コメント''' 要求されたチャンクの元々のサイズを取得するためにこのルーチンを呼び出します。 '''参照''' {{goto MemHandleResize, MemHandleResize()}} !{{anchor MemHandleToLocalID}}MemHandleToLocalID 関数 {{goto p0, ^TOP^}} '''目的''' ハンドルを、カード関連のローカル チャンク ID に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' LocalID MemHandleToLocalID ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' ローカル ID を返します。失敗した場合は NULL (0) を返します。 '''コメント''' チャンク ハンドルをローカル ID に変換するためにこのルーチンを呼び出します。 '''参照''' {{goto MemLocalIDToGlobal, MemLocalIDToGlobal()}}, {{goto MemLocalIDToLockedPtr, MemLocalIDToLockedPtr()}} !{{anchor MemHandleUnlock}}MemHandleUnlock 関数 {{goto p0, ^TOP^}} '''目的''' チャンク ハンドルによって与えられたチャンクのロックを解除します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHandleUnlock ( MemHandle h ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ h}} **チャンク ハンドル '''返り値''' *{{span style='color:blue;font-family:monospace;',0}} **エラーなし *{{span style='color:blue;font-family:monospace;',memErrInvalidParam}} **不適切なパラメータが渡された '''コメント''' チャンクのロック カウントを減らすためにこのルーチンを呼び出します。 {{span style='color:blue;font-family:monospace;',MemHandleLock}} と {{span style='color:blue;font-family:monospace;',MemHandleUnlock}} はペアにして使用すべきです。 '''参照''' {{goto MemHandleLock, MemHandleLock()}} !{{anchor MemHeapCheck}}MemHeapCheck 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたヒープの正当性をチェックします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHeapCheck ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',heapID}} **チェックするヒープの ID '''返り値''' エラーが無ければ 0 を返します。 '''参照''' {{goto MemDebugMode, MemDebugMode()}}, {{goto MemSetDebugMode, MemSetDebugMode()}} !{{anchor MemHeapCompact}}MemHeapCompact 関数 {{goto p0, ^TOP^}} '''目的''' ヒープを圧縮します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHeapCompact ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',heapID}} **圧縮するヒープの ID '''返り値''' 常に 0 を返します。 '''コメント''' 大部分のアプリケーションは、明示的にこの関数を呼び出すことはしません。システム ソフトウェアがこの関数をさまざまなタイミングで呼び出します。例えば、メモリ アロケーションの最中(十分な領域がない場合に)や、システム再起動の最中です。 ヒープを圧縮し、空になった容量をマージするためにこのルーチンを呼び出します。このルーチンは、すべての可動チャンクをヒープの先頭に移動させ、空になったすべての容量をヒープの中央にマージしようとします。 !{{anchor MemHeapDynamic}}MemHeapDynamic 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたヒープがダイナミック ヒープの場合に、{{span style='color:blue;font-family:monospace;',true}} を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Boolean MemHeapDynamic ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',heapID}} **テストするヒープの ID '''返り値''' ダイナミックなら {{span style='color:blue;font-family:monospace;',true}} を、そうでなければ {{span style='color:blue;font-family:monospace;',false}} を返します。 '''コメント''' ダイナミック ヒープは揮発性記憶装置、アプリケーション スタック、globals(訳者注: グローバル変数?)、およびダイナミックに割り当てられたメモリに使用されます。 ---- '''NOTE:''' Palm OS 3.5 では、ダイナミック ヒープのサイズは利用可能なメモリの量に基づきます。一般的に、以前よりも大きなサイズになります。 ---- '''参照''' {{goto MemNumHeaps, MemNumHeaps()}}, {{goto MemHeapID, MemHeapID()}} !{{anchor MemHeapFlags}}MemHeapFlags 関数 {{goto p0, ^TOP^}} '''目的''' ヒープのヒープ フラグを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemHeapFlags ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ heapID}} **ヒープの ID '''返り値''' ヒープ フラグを返します。 '''コメント''' ヒープのヒープ フラグを検索するためにこのルーチンを呼び出します。フラグを調べることで、ヒープ が ROM ベースかそうでないかが分かります。ROM ベースのヒープは {{span style='color:blue;font-family:monospace;',memHeapFlagReadOnly}} ビット セットを持っています。({{span style='color:blue;font-family:monospace;',memHeapFlagReadOnly}} マスクの値は {{span style='color:blue;font-family:monospace;',0x0001}} です。) '''参照''' {{goto MemNumHeap, MemNumHeap()}}, {{goto MemHeapID, MemHeapID()}} !{{anchor MemHeapFreeBytes}}MemHeapFreeBytes 関数 {{goto p0, ^TOP^}} '''目的''' ヒープ内部の空のバイト数と、ヒープ内部の空のチャンクの最大サイズを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHeapFreeBytes ( UInt16 heapID, UInt32 *freeP, UInt32 *maxP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ heapID}} **ヒープの ID *{{span style='color:blue;font-family:monospace;',←→ freeP}} **空のバイト数を表す UInt32 型変数へのポインタ *{{span style='color:blue;font-family:monospace;',←→ maxP}} **空のチャンクの最大サイズを表す UInt32 型変数へのポインタ '''返り値''' 常に 0 を返します。 '''コメント''' このルーチンは、ヒープの圧縮を行いませんが、あらかじめ割り当て要求が成功するかどうか決定するのに使用されるかもしれません。メモリの割り当てを行う前に、この関数を呼び出し、{{span style='color:blue;font-family:monospace;',maxP}} で返される値を確認し、割り当て要求を満たすのに十分な空き容量があるかどうか確認してください。空き容量が足りない場合は、{{span style='color:blue;font-family:monospace;',MemHeapCompact()}} 関数を呼び出すことで使用可能な空き容量を増やせるかもしれません。{{span style='color:blue;font-family:monospace;',MemPtrNew()}} と {{span style='color:blue;font-family:monospace;',MemHandleNew()}} は両方とも、必要があれば、自動的にヒープの圧縮を行うということを覚えておいてください。 '''参照''' {{goto MemHeapSize, MemHeapSize()}}, {{goto MemHeapID, MemHeapID()}}, {{goto MemHeapCompact, MemHeapCompact()}} !{{anchor MemHeapID}}MemHeapID 関数 {{goto p0, ^TOP^}} '''目的''' 与えれたヒープのインデックスとカード番号から、ヒープの ID を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemHeapID ( UInt16 cardNo, UInt16 heapIndex ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ cardNo}} **カード番号(0 または 1 のどちらか) *{{span style='color:blue;font-family:monospace;',→ heapIndex}} **ヒープ インデックス(0 から {{goto MemNumHeaps, MemNumHeaps()}} - 1 までの値のうちのいずれか) '''返り値''' ヒープ ID を返します。 '''コメント''' ヒープ インデックスとカード番号から、ヒープのヒープ ID を検索するためにこの関数を呼び出します。ヒープ ID は、ヒープのサイズ、空き容量などのヒープ 情報を得るために使われます。また、ヒープを操作するルーチンのどれかに渡されます。 '''参照''' {{goto MemNumHeaps, MemNumHeaps()}} !{{anchor MemHeapScramble}}MemHeapScramble 関数 {{goto p0, ^TOP^}} '''目的''' 指定されたヒープを退避させます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemHeapScramble ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',headID}} **退避させるヒープの ID '''コメント''' システムは、それぞれの可動チャンクを動かそうと試みます。 デバッグの役に立ちます。 '''返り値''' 常に 0 を返します。 '''参照''' {{goto MemDebugMode, MemDebugMode()}}, {{goto MemSetDebugMode, MemSetDebugMode()}} !{{anchor MemHeapSize}}MemHeapSize 関数 {{goto p0, ^TOP^}} '''目的''' ヒープ ヘッダを含むヒープのトータル サイズを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt32 MemHeapSize ( UInt16 heapID ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ heapID}} **ヒープの ID '''返り値''' ヒープのトータル サイズを返します。 '''参照''' {{goto MemHeapFreeBytes, MemHeapFreeBytes()}}, {{goto MemHeapID. MemHeapID()}} !{{anchor MemLocalIDKind}}MemLocalIDKind 関数 {{goto p0, ^TOP^}} '''目的''' ローカル ID がハンドルまたはポインタを参照しているかどうかを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' LocalIDKind MemLocalIDKind ( LocalID local ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ local}} **問い合わせするローカル ID '''返り値''' {{span style='color:blue;font-family:monospace;',LocalIDKind}} または {{span style='color:blue;font-family:monospace;',memIDHandle}} または {{span style='color:blue;font-family:monospace;',memIDPtr}} を返します。({{span style='color:blue;font-family:monospace;',MemoryMgr.h}} を参照してください) '''コメント''' このルーチンは、与えられたローカル ID の参照先が不可動チャンク({{span style='color:blue;font-family:monospace;',memIDPtr}})か可動チャンク({{span style='color:blue;font-family:monospace;',memIDHandle}})かを判定します。 !{{anchor MemLocalIDToGlobal}}MemLocalIDToGlobal 関数 {{goto p0, ^TOP^}} '''目的''' カード関連のローカル ID を、指定されたカード内部のグローバル ポインタに変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemPtr MemLocalIDToGlobal ( LocalID local, UInt16 cardNo ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ local}} **変換するローカル ID *{{span style='color:blue;font-family:monospace;',→ cardNo}} **チャンクが存在しているメモリ カード '''返り値''' チャンクへのポインタまたはハンドルを返します。 '''参照''' {{goto MemLocalIDKind, MemLocalIDKind()}}, {{goto MemLocalIDToLockedPtr, MemLocalIDToLockedPtr()}} !{{anchor MemLocalIDToLockedPtr}}MemLocalIDToLockedPtr 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたローカル ID とカード番号から、チャンクへのポインタを返します。 ローカル ID が可動チャンク ハンドルを参照している場合は、このルーチンは、返り値を返す前に、自動的にチャンクをロックします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemPtr MemLocalIDToLockedPtr ( LocalID local, UInt16 cardNo ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',local}} **ローカル チャンク ID *{{span style='color:blue;font-family:monospace;',cardNo}} **カード番号 '''返り値''' チャンクへのポインタを返します。エラーが起きた場合は 0 を返します。 '''参照''' {{goto MemLocalIDToGlobal, MemLocalIDToGlobal()}}, {{goto MemLocalIDToPtr, MemLocalIDToPtr()}}, {{goto MemLocalIDKind, MemLocalIDKind()}}, {{goto MemPtrToLocalID, MemPtrToLocalID()}}, {{goto MemHandleToLocalID, MemHandleToLocalID()}} !{{anchor MemLocalIDToPtr}}MemLocalIDToPtr 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたローカル ID とカード番号から、チャンクへのポインタを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemPtr MemLocalIDToPtr ( LocalID local, UInt16 cardNo ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',local}} **ローカル チャンク ID *{{span style='color:blue;font-family:monospace;',cardNo}} **カード番号 '''返り値''' チャンクへのポインタを返します。エラーが起きた場合は 0 を返します。 '''コメント''' ローカル ID がロックされて'''いない'''可動チャンクを参照している場合、この関数はエラーを意味する 0 を返します。 '''参照''' {{goto MemLocalIDToGlobal, MemLocalIDToGlobal()}}, {{goto MemLocalIDToLockedPtr, MemLocalIDToLockedPtr()}} !{{anchor MemMove}}MemMove 関数 {{goto p0, ^TOP^}} '''目的''' ダイナミック ヒープ内部のある場所から他の場所へ、バイト数をコピーします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemMove ( void *destP, const void *sourceP, Int32 numBytes ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',destP}} **コピー先へのポインタ *{{span style='color:blue;font-family:monospace;',sourceP}} **コピー元へのポインタ *{{span style='color:blue;font-family:monospace;',numBytes}} **移動するバイト数 '''返り値''' 常に 0 を返します。 '''コメント''' ISO C ライブラリが {{span style='color:blue;font-family:monospace;',memmove}} を呼び出すように、この関数は''sourceP''で指定されたオブジェクトを''destP''で指定されたオブジェクトにコピーします。コピー元とコピー先は重なるかもしれません。コピーは常に非破壊方法(訳者注: non-destructive manner??)で行われます。 データ ヒープがコピー先の場合の操作に関しては、{{goto DmSet, DmSet()|Palm OS Programmer's API Reference/30-2}}, {{goto DmWrite, DmWrite()|Palm OS Programmer's API Reference/30-2}}, 関連の関数を参照してください。 !{{anchor MemNumCards}}MemNumCards 関数 {{goto p0, ^TOP^}} '''目的''' システムのカード スロット数を返します。すべてのスロットが数えられる必要はありません。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemNumCards ( void ) '''パラメータ''' ありません。 '''返り値''' システムのスロット数を返します。 !{{anchor MemNumHeaps}}MemNumHeaps 関数 {{goto p0, ^TOP^}} '''目的''' 指定されたカードの利用可能なヒープ数を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemNumHeaps ( UInt16 cardNo ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ cardNo}} **カード番号。0 または 1 のどちらかです。 '''返り値''' ROM ベースと RAM ベースのヒープを含む利用可能なヒープ数を返します。 '''コメント''' メモリ カード上のヒープの総数を調べるためにこの関数を呼び出します。各ヒープの情報は、ヒープ ID を使って {{goto MemHeapSize, MemHeapSize()}}, {{goto MemHeapFreeBytes, MemHeapFreeBytes()}}, {{goto MemHeapFlags, MemHeapFlags()}} を呼び出すことで、得ることができます。ヒープ ID は、カード番号とヒープ インデックスを使って {{goto MemHeapID, MemHeapID()}} を呼び出すことで、得られます。ヒープ インデックスは 0 から {{span style='color:blue;font-family:monospace;',MemNumHeaps}} までのいずれかの値です。 !{{anchor MemNumRAMHeaps}}MemNumRAMHeaps 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたカード内部の RAM ヒープの数を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototyoe''' UInt16 MemNumRAMHeaps ( UInt16 cardNo ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',cardNo}} **カード番号 '''返り値''' RAM ヒープの数を返します。 '''参照''' {{goto MemNumCards, MemNumCards()}} !{{anchor MemPtrCardNo}}MemPtrCardNo 関数 {{goto p0, ^TOP^}} '''目的''' 不可動チャンクが存在しているカード 番号(0 または 1)を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemPtrCardNo ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' カード番号を返します。 '''参照''' {{goto MemHandleCardNo, MemHandleCardNo()}} !{{anchor MemPtrDataStorage}}MemPtrDataStorage 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたポインタがデータ ストレージ ヒープの一部なら {{span style='color:blue;font-family:monospace;',true}} を返します。そうでない場合は、ポインタはダイナミック ヒープにあることになります。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Boolean MemPtrDataStorage ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',p}} **チャンクへのポインタ '''返り値''' チャンクがデータ ストレージ ヒープの一部なら {{span style='color:blue;font-family:monospace;',true}} を返します。 '''コメント''' フィールド パッケージによって、フィールド パッケージがテキスト フィールドを編集するときにデータ ストレージ Write プロテクトに気を配る必要があるかどうか決定するために、呼び出されます。 '''参照''' {{goto MemHeapDynamic, MemHeapDynamic()}} !{{anchor MemPtrFree}}MemPtrFree 関数 {{goto p0, ^TOP^}} '''目的''' チャンクを処分します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' #define MemPtrFree ( p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' エラーが無ければ 0 を、パラメータが不適切な場合は {{span style='color:blue;font-family:monospace;',memErrInvalidParam}} を返します。 '''コメント''' 不可動チャンクを処分するためにこのルーチンを呼び出します。 !{{anchor MemPtrHeapID}}MemPtrHeapID 関数 {{goto p0, ^TOP^}} '''目的''' チャンクのヒープ ID を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt16 MemPtrHeapID ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' チャンクのヒープ ID を返します。 '''コメント''' チャンクの存在しているヒープのヒープ ID を取得するためにこのルーチンを呼び出します。 !{{anchor MemPtrNew}}MemPtrNew 関数 {{goto p0, ^TOP^}} '''目的''' ダイナミック ヒープに新しい不可動チャンクを割り当てます。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemPtr MemPtrNew ( UInt32 size ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ size}} **希望するチャンクのサイズ '''返り値''' 新しいチャンクへのポインタを返します。失敗した場合は 0 を返します。 '''コメント''' このルーチンは、ダイナミック ヒープに不可動チャンクを割り当て、そのチャンクへのポインタを返します。アプリケーションは、ダイナミック メモリを割り当てるとき、それを使うことができます。チャンクのサイズの範囲は 1 バイトから 64 キロバイトよりわずかに少ない範囲になることに注意してください。1 つのチャンクにこれより大きな領域を割り当てることはできません。 Palm OS 3.5 では、ダイナミック ヒープのサイズは利用可能なメモリの量に基づきます。一般に、前よりも大きくなります。 ---- '''NOTE:''' 0 サイズの参照ブロックを割り当てることはできません。 ---- '''参照''' {{goto MemGluePtrNew, MemGluePtrNew()}} !{{anchor MemPtrRecoverHandle}}MemPtrRecoverHandle 関数 {{goto p0, ^TOP^}} '''目的''' データへの与えれたポインタから、可動チャンクのハンドルを回収(Recover)します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' MemHandle MemPtrRecoverHandle ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' チャンクへのハンドルを返します。失敗した場合は 0 を返します。 '''コメント''' ROM または 不可動データ チャンクにあるポインタを使ってこの関数を呼び出さないでください。 !{{anchor MemPtrResize}}MemPtrResize 関数 {{goto p0, ^TOP^}} '''目的''' チャンクをリサイズします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemPtrResize ( MemPtr p, UInt32 newSize ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ *{{span style='color:blue;font-family:monospace;',→ newSize}} **希望する新しいサイズ '''返り値''' エラーが無ければ 0 を返します。エラーが起きた場合は、{{span style='color:blue;font-family:monospace;',memErrNotEnoughSpace}}, {{span style='color:blue;font-family:monospace;',memErrInvalidParam}} または {{span style='color:blue;font-family:monospace;',memErrChunkLocked}} を返します。 '''コメント''' ロックされたチャンクをリサイズするためにこのルーチンを呼び出します。このルーチンは、チャンクのサイズを小さくする場合は、常に成功します。チャンクを大きくする場合、チャンクのすぐ後ろの空き容量を使用しようと試みます。 '''参照''' {{goto MemPtrSize, MemPtrSize()}}, {{goto MemHandleResize, MemHandleResize()}} !{{anchor MemPtrSetOwer}}MemPtrSetOwner 関数 {{goto p0, ^TOP^}} '''目的''' チャンクのオーナー ID をセットします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemPtrSetOwner ( MemPtr p, UInt16 owner ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ *{{span style='color:blue;font-family:monospace;',→ owner}} **チャンクの新しいオーナー ID。OS をオーナーにする場合は 0 を指定します。 '''返り値''' エラーが無ければ 0 を返します。エラーが起きた場合は、{{span style='color:blue;font-family:monospace;',memErrInvalidParam}} を返します。 '''コメント''' {{goto SysUIAppSwitch, SysUIAppSwitch()|Palm OS Programmer's API Reference/54}} または {{goto SysAPPLaunch, SysAPPLaunch()|Palm OS Programmer's API Reference/54}} に渡すパラメータ ブロックを割り当てる場合は、パラメータ ブロック チャンクと、それに参照される他のすべてのチャンクの所有権を OS に付与するために {{goto MemPtrSetOwner, MemPtrSetOwner()}} を呼び出さなくてはなりません。(元々の所有者はアプリケーションになっています。)ハンドルでいずれかのチャンクを参照するパラメータ ブロック構造体の場合にも、{{span style='color:blue;font-family:monospace;',MemHandleSetOwner}} を呼び出して、ブロックの所有権を OS に付与しなくてはなりません。これらのチャンクの所有権を変更しないと、実行中のアプリケーションがそれらを使用する機会を得る前に、それらは解放されてしまうでしょう。 ---- '''重要:''' 一旦、メモリ チャンクの所有権を OS に付与した場合、そのチャンクを解放しようとしてはいけません。OS が、{{span style='color:blue;font-family:monospace;',SysUIAppSwitch()}} または {{span style='color:blue;font-family:monospace;',SysAppLaunch()}} と共に呼び出されたアプリケーションが停止すると、それを解放するでしょう。 ---- !{{anchor MemPtrSize}}MemPtrSize 関数 {{goto p0, ^TOP^}} '''目的''' チャンクのサイズを返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' UInt32 MemPtrSize ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' 要求されたチャンクのサイズを返します。 '''コメント''' 要求されたチャンクの元々のサイズを取得するために、このルーチンを呼び出します。 !{{anchor MemPtrToLocalID}}MemPtrToLocalID 関数 {{goto p0, ^TOP^}} '''目的''' ポインタをカード関連のローカル チャンク ID に変換します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' LocalID MemPtrToLocalID ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ p}} **チャンクへのポインタ '''返り値''' チャンクのローカル ID を返します。 '''コメント''' チャンク ポインタをローカル ID に変換するために、この関数を呼び出します。 '''参照''' {{goto MemLocalIDToPtr, MemLocalIDToPtr()}} !{{anchor MemPtrUnlock}}MemPtrUnlock 関数 {{goto p0, ^TOP^}} '''目的''' 与えられたチャンクへのポインタから、チャンクのロックを解除します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemPtrUnlock ( MemPtr p ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',p}} **チャンクへのポインタ '''返り値''' エラーが無ければ 0 を返します。エラーが起きた場合は {{span style='color:blue;font-family:monospace;',memErrInvalidParam}} を返します。 '''コメント''' チャンクのロックを解除する回数が、ロックされた回数より多くなってはいけません。 '''参照''' {{goto MemHandleLock, MemHandleLock()}} !{{anchor MemSet}}MemSet 関数 {{goto p0, ^TOP^}} '''目的''' ダイナミック ヒープ内部の指定されたメモリ範囲を、指定された値にセットします。 '''Prototype''' Err MemSet ( void *dstP, Int32 numBytes, UInt8 value ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',dstP}} **値をセットする場所へのポインタ *{{span style='color:blue;font-family:monospace;',numBytes}} **セットするバイト数 *{{span style='color:blue;font-family:monospace;',value}} **セットする値 '''返り値''' 常に 0 を返します。 '''コメント''' データ ヒープがセットする場所である場合の操作に関しては、{{goto DmSet, DmSet()|Palm OS Programmer's API Reference/30-2}}, {{goto DmWrite, DmWrite()|Palm OS Programmer's API Reference/30-2}}, 関連の関数を参照してください。 !{{anchor MemSetDebugMode}}MemSetDebugMode 関数 {{goto p0, ^TOP^}} '''目的''' メモリ マネージャのデバッグ モードをセットします。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemSetDebugMode ( UInt16 flags ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',flags}} **デバッグ フラグ '''コメント''' 以下のフラグを 1 つ使う、それ以上使う、1 つも使わない、いずれの場合も論理 OR 操作 ( | ) を使用してください。 *{{span style='color:blue;font-family:monospace;',memDebugModeCheckOnChange}} *{{span style='color:blue;font-family:monospace;',memDebugModeCheckOnAll}} *{{span style='color:blue;font-family:monospace;',memDebugModeScrambleOnChange}} *{{span style='color:blue;font-family:monospace;',memDebugModeScrambleOnAll}} *{{span style='color:blue;font-family:monospace;',memDebugModeFillFree}} *{{span style='color:blue;font-family:monospace;',memDebugModeAllHeaps}} *{{span style='color:blue;font-family:monospace;',memDebugModeRecordMinDynHeapFree}} '''返り値''' エラーが無ければ 0 を返します。エラーが起きた場合は -1 を返します。 !{{anchor MemStoreInfo}}MemStoreInfo 関数 {{goto p0, ^TOP^}} '''目的''' メモリ カードの ROM または RAM のいずれかの情報を返します。 '''宣言されている場所''' {{span style='color:blue;font-family:monospace;',MemoryMgr.h}} '''Prototype''' Err MemStoreInfo ( UInt16 cardNo, UInt16 storeNumber, UInt16 *versionP, UInt16 *flagsP, Char *nameP, UInt32 *crDateP, UInt32 *bckUpDateP, UInt32 *heapListOffsetP, UInt32 *initCodeOffset1P, UInt32 *initCodeOffset2P, LocalID *databaseDirIDP ) '''パラメータ''' *{{span style='color:blue;font-family:monospace;',→ cardNo}} **カード番号。0 または 1 のいずれか *{{span style='color:blue;font-family:monospace;',→ storeNumber}} **記憶装置番号。ROM ならば 0、RAM ならば 1 *{{span style='color:blue;font-family:monospace;',←→ versionP}} **バージョン変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ flagsP}} **フラグ変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ nameP}} **文字配列(32 バイト)へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ crDateP}} **作成日付変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ bckUpDateP}} **バックアップ日付変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ heapListOffsetP}} **{{span style='color:blue;font-family:monospace;',heapListOffset}} 変数へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ initCodeOffset1P}} **{{span style='color:blue;font-family:monospace;',initCodeOffset1}} へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ initCodeOffset2P}} **{{span style='color:blue;font-family:monospace;',initCodeOffset2}} へのポインタ、または 0 *{{span style='color:blue;font-family:monospace;',←→ databaseDirIDP}} **データベース ディレクトリ チャンク ID 変数へのポインタ、または 0 '''返り値''' エラーが無ければ 0 を返します。エラーが起きた場合は {{span style='color:blue;font-family:monospace;',memErrCardNotPresent}}, {{span style='color:blue;font-family:monospace;',memErrRAMOnlyCard}} または {{span style='color:blue;font-family:monospace;',memErrInvalidStoreHeader}} を返します。 '''コメント''' カードの ROM または RAM のどちらかの、いずれかまたはすべての情報を調べるためにこの関数を呼び出します。返り値を望まない変数には 0 を渡してください、 ---- [[← 41 章に戻る|Palm OS Programmer's API Reference/41]] [[↑トップへ|Palm OS Programmer's API Reference]] [[43 章に進む →|Palm OS Programmer's API Reference/43]]