"ホスト機器に着脱可能な記録媒体であって、前記ホスト機器と異なる外部機器と、無線通信を行うための無線通信手段と、前記無線通信手段を通じて、前記外部機器とPTPに準拠した通信を行い、前記記録媒体を前記PTPにおけるResponderとして機能させるPTPResponderモジュールと、前記無線通信手段を通じた前記外部機器とのPTP通信を、前記記録媒体が有する前記PTPResponderモジュールを用いて行うか、前記記録媒体が装着されたホスト機器が有する、前記ホスト機器を前記Responderとして機能させるPTPResponderモジュールを用いて行うかを、前記ホスト機器から設定されたモードに応じて切り替えるコントローラとを有し、前記無線通信手段は、前記無線通信を行う外部機器を決定するための処理を、前記ホスト機器から設定されたモードに応じて異ならせることを特徴とする記録媒体。撮像装置であって、請求項1記載の記録媒体を着脱可能に装着するための装着手段と、前記撮像装置を前記Responderとして機能させるPTPResponderモジュールとを有し、前記ホスト機器として動作することを特徴とする撮像装置。従来の無線通信機能付きメモリカードは、IEEE802.11x規格に準拠した無線通信機能を有し、無線LANに接続することによって画像データの転送を行うことに特化している。そのため、PTPのような、デジタルカメラと外部機器との通信プロトコルを用いたアプリケーション、例えばダイレクトプリントには対応できない。また、無線通信機能付きメモリカードが外部機器と行う通信は、デジタルカメラの動作とは基本的に独立しており、例えばデジタルカメラが無線通信機能付きメモリカードを通信アダプタとして用いて、外部機器と通信することはできなかった。このように、従来の無線通信機能付きメモリカードはその用途が限られており、無線通信機能が有効に活用されていない面があった。本発明はこのような従来技術の課題に鑑みてなされたものであり、様々な用途に利用可能な無線通信機能付き記録媒体を提供することを1目的とする。上述の目的は、ホスト機器に着脱可能な記録媒体であって、ホスト機器と異なる外部機器と、無線通信を行うための無線通信手段と、無線通信手段を通じて、外部機器とPTPに準拠した通信を行い、記録媒体をPTPにおけるResponderとして機能させるPTPResponderモジュールと、無線通信手段を通じた外部機器とのPTP通信を、記録媒体が有するPTPResponderモジュールを用いて行うか、記録媒体が装着されたホスト機器が有する、ホスト機器をResponderとして機能させるPTPResponderモジュールを用いて行うかを、ホスト機器から設定されたモードに応じて切り替えるコントローラとを有し、無線通信手段は、無線通信を行う外部機器を決定するための処理を、ホスト機器から設定されたモードに応じて異ならせることを特徴とする記録媒体によって達成される。このような構成により、本発明によれば、様々な用途に利用可能な無線通信機能付き記録媒体と、このような記録媒体を用いる撮像装置を提供することができる。<第1の実施形態>次に、添付図面を参照して、第1の実施形態について詳細に説明する。なお、以下では、無線通信機能付きメモリカードを用いる撮像装置の一例としてデジタルスチルカメラDSCを説明するが、デジタルビデオカメラやカメラ付き携帯電子機器など、カメラまたはカメラを備える任意の機器に適用可能である。また、DSCと無線通信してサービスを提供したりDSCが有する画像データ利用したりする外部機器の例として、以下では汎用コンピュータ装置PCおよびプリンタを説明する。しかし、外部機器は、いわゆるスマートフォンやタブレット端末、または他のデジタルカメラなど、PTPをサポートする任意の機器であってよい。図1は、DSC100の機能構成例を示すブロック図である。制御部101は、例えばCPU,MPUなどプログラマブルなプロセッサであり、DSC100全体の制御を司る。不揮発性メモリ102は制御部101の処理手順プログラムや、DSC100の各種設定やメニュー画面などのGUIGraphicalUserInterfaceデータなどを記憶する。RAM103は制御部101のワークエリアとして使用される。操作部104はボタン並びにスイッチ群であり、ユーザがDSC100に各種指示を与えるために用いられる。表示部105は例えばLCDであり、撮影した画像や、各種設定を行う際のメニュー画面を表示するために使用される。光学ユニット106は主としてレンズズームレンズ、フォーカスレンズなど及びその駆動を行うアクチュエータ等で構成される。撮像素子107はCCDイメージセンサやCMOSイメージセンサである。ドライバ108は制御部101の制御下において光学ユニット106を制御する。コネクタ109は着脱可能な記録媒体であるメモリカード120を接続するためのコネクタである。後述するように、本実施形態におけるメモリカード120は無線通信機能を有する。インタフェースI/F110は例えばUSB,IEEE1934,HDMIなどのデジタルインタフェースであり、有線接続により外部機器と接続するために用いられる。図2は本実施形態における外部装置の一例としての汎用コンピュータ装置PC200の構成例を示すブロック図である。図において、表示装置201は、LCD等から構成され、各種のGUIやデータなどを表示する。キーボード203及びポインティングデバイス204は、文字などを入力したり、GUIにおけるアイコンやボタンなどを指し示したりするためなどに用いられる。CPU205はPC200全体の制御を司る。ROM206ReadOnlyMemoryはCPU205が実行するプログラム主にブートプログラムやパラメータ等を記憶している。RAMRandomAccessMemory207は各種プログラムをCPU205が実行する時のワークエリア、エラー処理時の一時退避エリア等として用いられる。ハードディスクドライプHDD208はOSやアプリケーションプログラムなど、CPU205が実行するプログラムを記憶したり、ユーザデータを記憶したりする。また、仮想記憶領域としても用いられる。本実施形態において説明するPC200の各種機能を実現するプログラムは、HDD208に記憶されているものとする。リムーバブルメディアドライプRMD209は、着脱可能な記録媒体の読み書き又は読み出しを行う装置である。RMD209の具体例としては、フレキシブルディスクドライブ、光ディスクドライブ、光磁気ディスクドライブ、メモリカードリーダ、着脱式HDDなどがある。USB/IEEE1394I/F210は、プリンタを始めとした各種周辺機器を有線接続するためのインタフェースの一例である。無線通信I/F211はPC200を無線通信ネットワークに接続するためのインタフェースである。バス212はアドレスバス、データバスおよび制御バスからなり、上述した各ユニット間を接続する。図3は、本実施形態における外部装置の一例であるプリンタ300の制御系の構成例を示すブロック図である。図において、制御部301は例えばCPU,MPUなどプログラマブルなプロセッサであり、DSC100全体の制御を司る。不揮発性メモリ102は制御部101の処理手順プログラムやフォント、プリンタ300の各種設定やメニュー画面などのGUIデータなどを記憶する。RAM303は制御部301のワークエリアとして使用される。操作パネル304はボタン並びにスイッチ群であり、ユーザがプリンタ300に各種指示を与えるために用いられる。表示部308は例えばLCDであり、プリントする画像データや、各種設定を行う際のメニュー画面を表示するために使用される。USB/IEEE1394I/F305はホスト機器PC200などと有線接続を行うためのインタフェースである。無線通信インタフェース307は、無線通信ネットワークに接続するためのインタフェースである。306はプリンタエンジン部であり、実施形態では、熱エネルギーを利用してインク液を吐出するプリントエンジンであるが、記録方式はこれにより限定されるものではない。図4は、図1におけるメモリカード120の機能構成例を示すブロック図である。メモリカード120は、カードコントローラ1201、無線通信部1202、メモリ部1203を有している。カードコントローラ1201は、例えばCPU,ROM,RAMなどを有し、後述するメモリカード120の動作を実現する。無線通信部1202の制御、無線通信ネットワーク上の外部機器とのPTP通信、ホスト機器としてのDSC100とのPTP通信、DSC100における記録媒体としての動作、などはカードコントローラ1201の制御により実現される。無線通信部1202は、IEEE80211xやBluetooth登録商標等の無線通信規格に準拠した無線通信機能を有し、無線通信ネットワーク上の外部機器との通信を実現する。本実施形態では無線通信部1202がIEEE80211abgn規格に準拠した無線通信機能を有するものとする。メモリ部1203は例えばNAND型の不揮発性メモリを含み、カードコントローラ1201を通じて書き込まれた静止画、動画、音声などのデータを記憶する。なお、メモリカード120はDSC100の記録媒体として機能するための所定のファイルシステム、例えばDCFに準拠してファイルの記録を行うものとする。図5は、本実施形態のメモリカード120の状態遷移図である。後述するように、メモリカード120は、ホスト機器であるDSC100からのコマンドにより、Applicationモードを切り替え可能である。ここでは、Applicationモードとして、DLNAモード、プルモード、パススルーモード、DPSモードのいずれかが設定可能であるものとする。DLNAモードは、DLNAガイドラインに準拠した家電などのネットワークに無線接続し、ネットワーク上の家電製品、例えばテレビなどと通信を行う動作モードである。Pullモードは、メモリカード120がホスト機器であるDSC100とは基本的に独立して、無線通信ネットワーク上の外部機器とPTP通信するモードである。PathThroughモードは、メモリカード120があたかもDSC100の無線通信アダプタとして機能し、DSC100と無線通信ネットワーク上の外部機器とのPTP通信を可能とする動作モードである。DPSモードは、無線ネットワーク上に存在するプリンタを用いたダイレクトプリントを実現する動作モードである。なお、図5に示すように、これらのApplicationモード間での直接遷移はできず、必ずNoApplicationモードを経由してApplicationモードが変更されるように構成されている。NoApplicationモードの場合、メモリカード120は、ネットワーク接続の維持に必要な動作や接続可能なネットワークの探索などを行う。図6は、本実施形態におけるDSC100とメモリカード120に実装される代表的なソフトウェアモジュールとその階層関係を説明する図である。例えば図6に示す各ソフトウェアモジュールは、DSC100については不揮発性メモリ102、メモリカード120についてはカードコントローラ1201内の不揮発性メモリの中のプログラム記憶領域に格納されている。なお、図6に示すソフトウェアモジュールのうち、1つ以上がハードウェアロジックによって実現されても良い。図6に示すように、本実施形態では、PTPにおいてInitiatorからの要求に応答するPTPResponderとして機器DSC100、メモリカード120を動作させるためのPTPResponderモジュールを、DSC100及びメモリカード120の両方が有する。なお、PTPResponderモジュール110,120は、PTPの上位互換プロコトルであるMTPに対応しているMTPResponderであってもよい。DSC100とメモリカード120との通信はCardIOモジュール130,131を用いて行われる。本実施形態のCardIOモジュール130,131はSDIOに準拠した通信を行うものとするが、他の通信方式を用いても構わない。CardIOモジュール130,131はPTPResponder110,125または後述するPTPIPモジュール123からのPTPオペレーションを、CardIOモジュール130,131に対応するコマンドとして通信することにより、DSC100とメモリカード120とのPTPオペレーションの受け渡しを実現する。もちろん本実施形態におけるメモリカード120は、撮像で得られた画像データの記録などに用いられる通常の記録媒体として用いることもできる。この場合、CardIOモジュール130,131は、メモリ部1203にアクセスするインタフェースメモリインタフェース用の通信モジュールとして用いられる。なお、PTPオペレーションを取り扱う通信方式と、メモリ部1203にアクセスするための通信方式とを異なるものとしてもよい。例えば、メモリカード120を通常の記録媒体として用いる場合は、SDメモリモードの通信方式を用い、PTPオペレーションの受け渡しにはSDIOモードの通信方式を用いることができる。そして、メモリカード120に設定されたApplicationモードに応じて、PTPResponderモジュール110,125の一方が、メモリカード120が有するPTPIPモジュール123、TCPIPモジュール122およびWirelessLANモジュール121を用いて外部装置と無線通信する。また、各Applicationモードにおける動作を実現するための、CardIOモジュールにおける通信コマンドを新たに定義する。この通信コマンドは、DSC100からメモリカード120にApplicationモードを設定するコマンド、DSC100からメモリカード120に対し、メモリカード120が外部装置から受信したPTPオペレーションやデータの転送を要求するコマンド、DSC100内のモジュールからのPTPオペレーションやデータの、外部装置への転送を要求するコマンド、メモリカード120が外部装置から受信したデータをメモリ部1203に書き込むように要求するコマンド、メモリカード120のメモリ部1203に保存されたデータを外部装置に対して送信するように要求するコマンド、などである。なお、PTPでは、メモリ部1203に記録されているオブジェクトデータファイル、ディレクトリの各々を指定するためにObjectHandleを用いる。従って、メモリ部1203のファイル構成に応じてオブジェクトごとにObjectHandleを割り当てる必要がある。PTPResponderモジュール110,125は、各オブジェクトにObjectHandleを割り当て、ObjectHandleの集合体であるObjectHandleArrayの作成、管理を行う。また、PTPResponderモジュール110,125は、メモリカードが複数存在する場合などには、StorageID等の発行、管理も行う。また、前述したとおり制御部101は、通常のメモリカードと同様、ファイルのフルパスを指定してメモリカード120にデータを読み書きすることもできる。例えば、PTPオペレーションによりObjectHandleで指定されたオブジェクトの読み書きを要求された場合、制御部101はObjectArrayを参照することで、メモリカード120に対してディレクトリパスを用いたアクセスが可能である。ここで、ディレクトリパスはルートディレクトリからのパスフルパス又は絶対パスである。DPSモジュール111とその上位のPictBridgeApplication112は、DSC100からプリンタに直接PCを介在せずにプリントを実行させるダイレクトプリントの規格であるPictBridgeに準拠した動作を実現するためのソフトウェアモジュールである。Applicationモジュール113は、上述した各Applicationモードに応じた動作を実現する。DLNAApplicationモジュール114及びDLNAモジュール129は、DLNAに準拠した動作を提供する。DLNAはPTPを用いないため、本実施形態では説明を省略する。メモリカード120において、WirelessLANモジュール121はIEEE80211xに準拠した物理層を提供する。また、TCPIPモジュール122は、トランスポート層を提供する。PTPIPモジュール123は、PTPをTCP上で通信するためのモジュールである。DiscoveryforDPSモジュール127は、DPSモードにおけるディスカバリを行うためのモジュールであり、本実施形態ではUPnPを用いてディスカバリする。DiscoveryforPTPIPモジュール123は、Pullモード及びPathThroughモードにおけるディスカバリ処理におけるアドバタイズなどを行うためのモジュールであり、本実施形態ではUPnP並びにBonjourの両方のプロトコルでディスカバリする。以下の説明では、モジュール自体が処理の主体客体となるような記載が含まれるが、実際には対応するモジュールを用いて制御部101、カードコントローラ1201が処理を実行する。以下、各ApplicationモードにおけるDSC100及びメモリカード120の動作について説明する。具体的な動作を説明する前に、メモリカード120に設定するApplicationモードの設定方法について説明する。図7は、DSC100においてメモリカード120のApplicationモードを設定するためのGUI画面の例を示す図である。制御部101は、操作部104からの指示に応じて図7の設定画面を表示部105に表示させる。ユーザは4つの選択肢から接続を希望する機器の種類を操作部104に含まれる例えば方向キーを用いて選択状態とし、決定ボタンを押下することで接続先機器の種類を設定することができる。制御部101は操作部104の操作内容とGUI画面の内容から指示の内容を検出し、指示された動作を実行する。例えば図7に示す例では、接続先機器としてPCが選択状態にあり、この状態で決定ボタンが押下されると制御部101はメモリカード120をPullモードに設定する。決定ボタンの押下時に他の選択肢が選択状態にあれば、それぞれに対応したApplicationモードを制御部101はメモリカード120に設定する。後述するように、ApplicationモードはCardIOモジュール130,131を通じて通信されるコマンドにより、制御部101からカードコントローラ1201に通知され、カードコントローラ1201が通知されたモードに応じて動作する。なお、Applicationモードの設定方法は図7に示す例に限定されない。例えば、まずDLNAを用いるかPTPを用いるかをユーザに選択させるメニューを用意し、PTPを用いることが選択された場合にPullモード、DPSモード、PathThroughモードを選択させるメニューを表示してもよい。このように、本実施形態によれば、ユーザが接続を希望する機器の種類に応じて、DSC100の制御部101がメモリカード120のカードコントローラ1201にApplicationモードの設定を行う。そして、DSC100及びメモリカード120は設定したApplicationモードに従った動作を行う。Pullモードの動作図8は、PullモードにおけるDSC100、メモリカード120、外部機器の一例としてのPC200の動作を示すシーケンス図である。なお、特に断らない限り、図8に示すDSC100とメモリカード120との間の通信はCardIOモジュール130,131の間でやり取りされるコマンドを示す。このPullモードでは、メモリカード120側のPTPResponderモジュール125がPTPIPモジュール123と通信することにより、外部機器内のPTPInitiatorとの通信を実現する。すなわち、図6の矢印140に示すモジュール間通信が行われる。なお、以下の説明ではPC200がPTPにおけるInitiatorとして動作するものとする。PC200との通信はPTPIPモジュール123が行う。ここでは、メモリカード120が装着されたDSC100の電源がONであり、メモリカード120は無線通信部1202によって通信可能なネットワークを探索し、通信可能なネットワークがあれば自動接続するものとする。そして、図8のS801において、メモリカード120はPC200と同じネットワークに接続したものとして説明する。メモリカード120のカードコントローラ1201は、無線通信部1202がネットワーク接続に成功すると、それをホスト機器であるDSC100の制御部101に通知する。S802:ネットワークに接続されたことが通知されると、DSC100の制御部101は、PTPSetDeviceInformationコマンドを用いて、PTPのDeviceDiscoveryにおいてネットワークにアドバタイズすべき情報や、PTPオペレーションでInitiatorに通知する情報をメモリカード120に送信する。PTPSetDeviceInformationコマンドでは、装置の名前や型番、製造者、UUID、シリアル番号などを通知することができる。通知する情報が複数ある場合、制御部101は情報ごとにPTPSetDeviceInformationコマンドを繰り返し送信する。なお、カードコントローラ1201はDSC100からPTPSetDeviceInformationコマンドによる情報を受け取らない場合においても、カードコントローラ1201内部に保持される初期値を用いて、PTPのDeviceDiscovery等を行うことも可能である。カードコントローラ1201は、メモリカード120のApplicationモードが設定される前に受信したPTPSetDeviceInformationコマンドで通知された情報を、カードコントローラ1201内のメモリに保存されたDeviceInfoDataSetに反映する。S803:DSC100の制御部101は、DeviceDiscoveryに必要な情報をメモリカード120に通知し終わると、PTPSwitchModeコマンドを発行して、メモリカード120のApplicationモードを設定する。ここでは、PTPSwitchModeを発行し、メモリカード120にPullモードを設定している。なお、Pullモードはメモリカード120と外部機器PC200との通信にDSC100が原則として関与しないモードである。例えばPullモードにおいてカードコントローラ1201は、予めデータ転送先として登録されているPC200やインターネット上のサーバと接続可能になると、メモリ部1203内のデータを自動転送するように設定されていて良い。従って、Pullモードのメモリカード120については、DSC100からメモリカード120のメモリ部1203の内容を変更する操作を禁止する。具体的には、メモリ部1203にDSC100からアクセスするためのメモリインタフェースの使用を禁止する。S804:カードコントローラ1201は、DiscoveryforPTPIPモジュール123及び、無線通信部1202を用い、接続しているネットワーク上でDeviceDiscoveryを行う。ここでは、カードコントローラ1201は、S802でDSC100から受信したデバイス情報をネットワーク上にアドバタイズする。S805:カードコントローラ1201は、PTPにおけるInitiatorとして動作するPC200から接続要求を受けると、PTPResponderモジュール125とPC200側のPTPInitiatorモジュールとのPTPIPコネクションを確立する。S806:カードコントローラ1201は、外部機器PC200とのPTPIPコネクションが確立したことを、割り込み信号ISRを用いてDSC100の制御部101に通知する。制御部101は、この時点でメモリインタフェースの使用が禁止されていなければ、禁止する。従って、撮影操作や画像データの削除動作等は禁止される。あるいは内蔵メモリに記録可能な範囲での撮影操作は許可してもよい。S807:その後、メモリカード120と外部機器PC200とは、Responderであるメモリカード120からデータを転送するためのPTPセッションを開始する。例えば、メモリカードの情報を要求するGetDeviceInfoオペレーションに引き続くセッション開始のためのOpenSessionオペレーションでセッションが開始される。その後、メモリカード120で有効なStorageIDを要求するGetStorageIDsオペレーション、StorageIDで特定したメディアに含まれるオブジェクトの数を要求するGetNumObjectsオペレーションなどが発行される。PTPを用いたメモリカード120からのデータ転送手順は公知であるため、詳細についての説明は省略する。S808:セッションが終了すると、カードコントローラ1201は、PTPResponderモジュール125と、PC200のPTPInitiatorモジュールとのPTPIPコネクションを切断する。S809:カードコントローラ1201は、PTPIPコネクションの切断を、割り込み信号ISRによって制御部101に通知する。制御部101はこの通知を受けると、メモリインタフェースの使用禁止を解除する。S810:制御部101は、メモリカード120の動作モードをNoApplicationモードに戻すため、PTPSwitchModeコマンドを発行する。カードコントローラ1201は、このコマンドに従い、メモリカード120をNoApplicationモードとし、NoApplicationモードにおける動作を開始する。なお、メモリインタフェースの使用禁止の解除はS809の後でなく、S810の後でも良い。S811:カードコントローラ1201は、例えばDSC100の電源がOFFされたり、無線通信機能を無効化する指示がなされたりした場合など、必要に応じてネットワーク接続を終了することができる。PathThroughモードの動作次に、PathThroughモードにおけるDSC100、メモリカード120、外部機器の一例としてのPC200の動作を説明する。PathThroughモードは、DSC100と外部機器との間のPTPセッションを実現するモードである。このPathThroughモードでは、DSC100側のPTPResponderモジュール110がPTPIPモジュール123とCardIOモジュール130,131を介して通信することにより、InitiatorであるPC200との通信を実現する。すなわち、図6の矢印141に示すモジュール間通信が行われる。PC200との通信はPTPIPモジュール123が行う。図9は、PathThroughモードによるPTPセッションの開始後までのDSC100、メモリカード120、外部機器の一例としてのPC200の動作を示すシーケンス図である。なお、特に断らない限り図9に示すDSC100とメモリカード120との間の通信はCardIOモジュール130,131の間でやり取りされるコマンドを示す。なお、DSC100がメモリカード120からPTPオペレーションに関するコマンドを受信した場合、CardIOモジュール130はコマンドをPTPオペレーションとしてPTPResponderモジュール110に渡すこととする。図8と同じ動作については参照数字を共通とし、説明を省略する。PTPIPコネクションの確立が割り込み信号ISRでDSC100の制御部101に通知されるまでの手順は、S901においてPTPSwitchModeコマンドでPathTroughモードが設定される点を除きPullモードと同様である。なお、S802におけるPTPSetDeviceInformationコマンドによるディスカバリ情報の設定は、既に行われている場合には繰り返し行う必要はない。先に述べたように、PathThroughモードでは、メモリカード120が外部機器PC200とDSC100とのPTP通信における中継機器のように機能する。そのため、PC200のPTPInitiatorモジュールから見た場合、Pullモードの場合と変わりがない。しかし、PathThroughモードにおいてPTP通信を行うPTPResponderモジュールはメモリカード120内のPTPResponderモジュール125ではなく、DSC100内のPTPResponderモジュール110である。そのため、カードコントローラ1201はPTPIPモジュール123が、PTPResponderモジュール125ではなく、DSC100内のPTPResponderモジュール110とPTP通信するように切り替える。また、PathThroughモードが設定された場合、PTPSwitchModeを受信するまで、カードコントローラ1201はDSC100からのコマンドや指示があった場合を除き、メモリ部1203へのアクセスを禁止する。まず、PathThroughモードでの動作を、GetDeviceInfoオペレーションについて説明する。S902:カードコントローラ1201は、PC200のPTPInitiatorモジュールからオペレーションを受信したことを、割り込み信号ISRにより制御部101に通知する。ここでは、受信したオペレーションの種類や内容は伝えられず、オペレーションを受信したことだけが通知される。S903:制御部101は、通知に応答して、オペレーションの内容を取得するためにPTPGetInfomationコマンドを発行する。S904:カードコントローラ1201は、受信したオペレーションGetDeviceInfoを制御部101に送信する。これにより、DSC100のPTPResponderモジュール110がPC200のPTPInitiatorモジュールからのPTPオペレーションを受信する。S905:制御部101は、GetDeviceInfoオペレーションに対して応答すべきDeviceInfoをPTPSendDataコマンドを用いてカードコントローラ1201に送信する。これにより、メモリカード120内のPTPIPモジュール123を介してPC200へDeviceInfoが送信される。S906:DeviceInfoの送信完了をカードコントローラ1201から制御部101に通知する。S907:制御部101は、ResponseをPTPInitiatorモジュールに送信するため、PTPSendDataコマンドを用いてカードコントローラ1201にResponseの情報を送信する。S908:PTPIPモジュール123からPTPInitiatorモジュールにResponseが送信され、送信完了をカードコントローラ1201から制御部101に通知する。なお、S906~S908において送信されるResponseは、PTPオペレーションを受信した場合に返送することが決められている情報であり、エラーコードやOKといった処理結果がInitiator側に通知される。S910及びS911:PC200からのOpenSessionオペレーション、GetStorageIDオペレーションについても、GetDeviceInfoオペレーションを受信した場合と同様にして、制御部101から応答がなされる。以下、データの転送要求が行われるまで必要なPTPオペレーションの処理が行われる。図10は、PathThroughモードによるPTPセッションの開始後、外部機器からオブジェクトの送受信要求があった場合ならびにイベント発生時のDSC100、メモリカード120、外部機器の一例としてのPC200の動作を示すシーケンス図である。まず、オブジェクト送信要求に対する処理を説明する。S1001:カードコントローラ1201が、PTPIPモジュール123を通じてPC200からGetObjectオペレーションを受信する。S1002:S902~S904と同様にして、制御部101がカードコントローラ1201からGetObjectオペレーションを受信する。S1003:制御部101は、メモリインタフェースを通じ、PTPを用いずに、GetObjectオペレーションのObjectHandleで指定されたオブジェクトを、ディレクトリパスを指定してメモリ部1203から読み出す。なお、この読み出しにはPTPResponderモジュール110は用いず、いわゆる通常のメモリカードからの処理が行われる。上述の通り、ObjectHandleArrayを参照することで、ObjectHandleに対応するディレクトリパスを知ることができる。S1004:制御部101は、読み出したオブジェクトを、PTPSendDataコマンドを用いてカードコントローラ1201に送信する。S1005:カードコントローラ1201は、PTPIPモジュール123を用いて、GetObjectオペレーションにより要求されたオブジェクトをPC200のPTPInitiatorモジュールへ送信する。S1006,S1007:GetObjectオペレーションに対するResponseCodeが、カードコントローラ1201及びPTPIPモジュール123を介して、制御部101からPC200のPTPInitiatorモジュールへ送信される。次に、オブジェクト受信要求について説明する。S1011:メモリカード120のPTPIPモジュール123が、PC200からSendObjectオペレーションを受信する。S1012:S902~S904と同様にして、制御部101がカードコントローラ1201からSendObjectオペレーションを受信する。S1013:カードコントローラ1201は、PTPIPモジュール123を通じて、PC200からオブジェクトを受信する。受信したオブジェクトはメモリカード120内例えばカードコントローラ1201内のRAMにバッファリングする。S1014:カードコントローラ1201は割り込み信号ISRにより、オブジェクトを受信したことを制御部101に通知する。制御部101は、PTPReceiveDataコマンドを発行し、カードコントローラ1201からオブジェクトを受信する。S1015:制御部101は、CardIOモジュール130,131を通じ、受信したオブジェクトをディレクトリパスフルパス又は絶対パスを指定してメモリ部1203に書き込む。なお、この書き込みにはPTPResponder110は用いず、いわゆる通常のメモリカードへの書き込み処理が行われる。なお、オブジェクトを書き込むディレクトリはSendObjectオペレーションに先立つSendObjectInfoオペレーションでPC200側から指定されているか、もしくはPTPResponderモジュール110がSendObjectInfoオペレーションを受信した際に決定する。書き込みするパス名ファイル名含むは例えば、DCFに従って決定することができる。S1016,S1017:SendObjectオペレーションに対するResponseCodeが、カードコントローラ1201及びPTPIPモジュール123を介して、制御部101からPC200のPTPInitiatorモジュールへ送信される。次に、イベントパケットの送信時の動作について説明する。イベントパケットは、ResponderからInitiatorにデータPTPパケットを送信したい場合例えばエラーを知らせたい場合などに、Initiatorにデータ取得要求の発行を依頼するパケットである。S1021:制御部101は、PTPSendDataコマンドを用いて、パケット種別をイベントパケットとして、ObjectHandleを送信する。S1022:カードコントローラ1201は受信したデータがイベントパケットであることを認識し、受信したObjectHandleを含んだRequestObjectTransferイベントをPTPIPモジュール123を通じてPC200のPTPInitiatorモジュールに送信する。その後、Initiator側から、RequestObjectTransferイベントに含まれたObjectHandleを指定したGetObjectオペレーションが発行される。図10の手順では、メモリカード120内のデータをPC200に送信する場合、メモリカード120からPTPを用いずにDSC100にデータを読み出し、DSC100からメモリカード120にPTPオペレーションでデータを送信する必要があった。また、PC200から受信したデータをメモリカード120に書き込む場合も、メモリカード120にバッファリングされているデータをPTPオペレーションでDSC100が取得し、PTPを用いずにメモリカード120に書き込む必要があった。この、メモリカードとDSC間でのデータの往復を省略する変形例について、図11に示すシーケンス図を用いて説明する。図11において、図10と同じ手順については参照数字を共通とし、説明を省略する。まず、GetObjectオペレーションに対する動作について説明する。S1101:制御部101はS1002のやりとりでGetObjectオペレーションを受信する。制御部101は、GetObjectオペレーションで指定されたObjectHandleに対応するディレクトリパスフルパス又は絶対パスをPTPSendFileコマンドで送信する。S1005:カードコントローラ1201は、PTPSendFileコマンドで指定されたディレクトリパスに対応するオブジェクトをメモリ部1203から読み出す。そして、カードコントローラ1201は、PTPIPモジュール123を通じて、読み出したオブジェクトをPC200のPTPInitiatorモジュールに送信する。S1102:制御部101は、ResponseCodeを作成するため、ReadPTPProgerssコマンドを送信し、GetObjectオペレーションで要求されたオブジェクトの送信結果を取得する。カードコントローラ1201は、PTPIPモジュール123を通じて送信結果を返送する。S1006:制御部101は、GetObjectオペレーションで要求されたオブジェクトの送信結果に基づいてResponseCodeを作成し、PTPSendDataコマンドでカードコントローラ1201に送信する。S1007:カードコントローラ1201は、PTPSendDataコマンドで送信されたデータResponseCodeを、PTPIPモジュール123を通じてPC200のPTPInitiatorモジュールに送信する。次に、SendObjectオペレーションに対する動作について説明する。S1101:制御部101はS1012のやりとりでSendObjectオペレーションを受信する。S1013:カードコントローラ1201が、PTPIPモジュール123を通じてPC200からオブジェクトを受信する。受信したオブジェクトはメモリカード120内例えばカードコントローラ1201内のRAMにバッファリングする。S1111:カードコントローラ1201は割り込み信号ISRにより、オブジェクトを受信したことを制御部101に通知する。S1112:制御部101は、受信したオブジェクトの書き込み場所及びファイル名を示したディレクトリパスフルパス又は絶対パスをPTPReceiveFileコマンドでカードコントローラ1201に送信する。カードコントローラ1201は、バッファリングされたオブジェクトを、メモリ部1203内の、PTPReceiveFileコマンドで指定されたディレクトリパスに書き込む。S1114:制御部101は、ResponseCodeを作成するため、ReadPTPProgerssコマンドを送信し、SendObjectオペレーションで要求されたオブジェクトの受信書き込み結果を取得する。カードコントローラ1201は、受信書き込み結果を返送する。この返送もPTPを用いずに行われる。S1016:制御部101は、SendObjectオペレーションで要求されたオブジェクトの受信書き込み結果に基づいてResponseCodeを作成し、PTPSendDataコマンドでカードコントローラ1201に送信する。S1017:カードコントローラ1201は、PTPSendDataコマンドで送信されたデータResponseCodeを、PTPIPモジュール123を通じてPC200のPTPInitiatorモジュールに送信する。DPSモードの動作次に、DPSモードにおけるDSC100、メモリカード120、外部機器の一例としてのプリンタ300の動作を説明する。DPSモードは、DSC100とプリンタとの間でPTPセッションによるダイレクトプリントを実現するモードである。従って、PTP通信はDSC100のPTPResponderモジュール110とプリンタ300のPTPInitiatorモジュールとの間で行われ、メモリカード120は基本的にはPathThroughモードと同様、中継機器のように機能する。このDPSモードでは、DSC100側のPTPResponderモジュール110がPTPIPモジュール123とCardIOモジュール130,131を介して通信することにより、Initiatorとの通信を実現する。すなわち、図6の矢印141で示すモジュール間通信が行われる。なお、以下の説明ではプリンタ300がPTPにおけるInitiatorとして動作するものとする。プリンタ300との通信はPTPIPモジュール123が行う。アプリケーション層であるPictBridgeApplicationモジュール112が、ダイレクトプリントプロトコル層であるDPSモジュール111とその下位層の各モジュールを用いてダイレクトプリント機能を実現する。DPSモジュール111の下位層とは、PTPResponder、PTPIP、TCPIP、WirelessLANの各モジュールである。以下では、CIPADC0012003に記載された標準的なシーケンスに従い、PictBridge対応機器同士が接続を行って、最初のプリントを行うまでの標準的なケースについて具体的な動作を説明する。以下に説明する処理は、メモリカード120とプリンタ300との間でみれば、従来DSC100とプリンタ300とをUSB接続してPictBridgeに準拠したダイレクトプリントを実行する際に行われていたやりとりと同一である。本実施形態では、PathThroughモードと同様、DPSモードに設定されたメモリカード120を通じて、従前と同様のやりとりをDSC100とプリンタ300との間で実現することを特徴とする。まず、図12A及び図12Bに示すシーケンスチャートを用いて、DPSDicovery動作を説明する。なお、特に断らない限り、図12Aに示すDSC100とメモリカード120との間の通信はCardIOモジュール130,131の間でやり取りされるコマンドを示す。なお、DSC100がメモリカード120からPTPオペレーションに関するコマンドを受信した場合、CardIOモジュール130は受信したコマンドをPTPオペレーションとしてPTPResponderモジュール110に渡すこととする。ここでも、S801において、メモリカード120が接続可能なネットワークを探索し、自動的に接続を行っているものとする。また、接続できた時点でDSC100には割り込み信号が送信される。S1201:図7に示したようなGUIからプリンタへの接続が指示されると、制御部101はPTPApplicaitonモジュール113によってPTPSwitchModeコマンドを発行し、メモリカード120をDPSモードに設定する。カードコントローラ1201は、DPSモードへの設定を認識すると、PathThroughモードと同様、DSC100からの指示があった場合を除き、メモリ部1203へのアクセスを禁止する。S1202:DSC100からの指示に応じて、カードコントローラ1201は、DiscoveryforDPSモジュール127を用いてPictBridgePrinterDiscoveryを行う。DPSモードにおけるディスカバリは、PullモードやPathThroughモードでのディスカバリがアドバタイズ存在の開示であるのに対し、プリンタの探索である。従って、DPSモードへの設定前のPTPSetDeviceInformationコマンドは必ずしも必要ない。本実施形態で、カードコントローラ1201はDiscoveryforDPSモジュール127を用いて、UPnPプロトコルでディスカバリを行う。ディスカバリにより、ネットワーク上に存在する、DPSに対応したプリンタの識別情報及び名称等が取得され、プリンタリストが生成される。なお、ディスカバリは例えば定期的に実行し、探索結果に変化があった場合には、カードコントローラ1201から割り込み信号ISRによってDSC100に通知することができる。S1203:PictBridgePrinterDiscoveryにより、DPSに対応したプリンタが探索できたら、カードコントローラ1201は、割り込み信号ISRによって制御部101に通知する。S1204:制御部101は、DPSGetPrintListコマンドを発行し、プリンタリストを要求する。S1205:カードコントローラ1201は、生成したプリンタリストを制御部101に送信する。S1206:制御部101は、受信したプリンタリストから、ユーザがプリンタを選択するためのGUI画面を作成し、表示部105に表示する。GUIの様式に制限は無いが、ユーザがプリンタを特定できる情報を提示する。ユーザが操作部104を通じてリスト中のプリンタ一つを選択し、決定ボタンを押下すると、制御部101はどのプリンタが選択されたか認識する。そして、制御部101は、選択されたプリンタの識別情報を指定したDPSConnectPrinterコマンドを送信する。S1207:PTPIPモジュール123は、DPSConnectPrinterコマンドで指定されたUUIDに対応するプリンタとPTPIPコネクションを確立する。コネクションの確立は割り込み信号ISRによりカードコントローラ1201から制御部101に通知される。S1208:PTPIPのコネクションが確立すると、GetDeviceInfo、OpenSession、GetNumObjects、GetObjectHandlesの各オペレーションが順次Initiatorプリンタ300から発行される。S1209:PathThroughモードの説明で述べたように、Initiatorからのオペレーション受信は割り込み信号ISRによりResponderであるDSC100に通知される。そして、DSC100はPTPGetInformationコマンドを発行してメモリカード120が受信したPTPオペレーションを取得し、取得したオペレーションに応答するデータを作成する。DSC100は作成したデータをPTPSendDataコマンドによりメモリカード120に送信し、PTPIPモジュール123がプリンタ300に送信する。このような手順を、上述した各オペレーションについて順次実行する。なお、PathThroughモードと同様、DPSモードにおいても、ResponderであるDSC100がメモリカード120内に記録されているオブジェクトの管理を行う。そのため、PTPにおいてオブジェクトの特定に必要なObjectHandleの割り当てや、オブジェクトの数などの情報を取得、管理する必要がある。図12Aでは、Initiatorであるプリンタ300からのGetNumObjectsオペレーションに応答する際に、メモリカード120内のオブジェクトを計数し、応答すべきNumObjectsを生成しているS1210。同様に、GetObjectHandlesオペレーションに応答する際に、メモリカード120内の各オブジェクトについてObjectHandleを割り当て、その集合体であるObjectHandleArrayを作成している図12B:S1211。もちろん、これらの情報は例えば電源投入時に生成し、その後は変更が検出された時点で更新するようにしてもよい。S1213,S1212:PictBridge規格では、DPSDiscoveryにおいて、ResponderからはDDISCVRYDPS、InitiatorからはHDISCVRYDPSという所定のファイルの存在を通知しあうことで互いがPictBridge対応機器であることを確認する。これらスクリプトファイルの交換により、プリンタ300がPictBridge対応機器であることを認識すると、PictBridgeApplicationモジュールが以後の制御を行う。次に、図13に示すシーケンス図を用いて、DPSConfigurePrintServiceの動作について説明する。このDPSConfigurePrintServiceでは、プリンタ300が有するPrintServiceの開始をDSC100が要求する。また、機器情報の交換が行われる。図13の処理は、本質的にDSC100からプリンタ300に対してスクリプトDREQUESTDPSを送信S1301、DSC100からプリンタ300に対してDPSスクリプトConfigurePrintServiceを送信S1302、プリンタ300からDSC100に対してスクリプトHRESPONSEDPSを送信S1303、プリンタ300からDSC100に対してDPSスクリプトConfigurePrintServiceresultを送信S1304、するものである。DREQUESTDPSはDSC100からプリンタ300に対して、S1302でのDPSスクリプトの送信を開始することを通知するためのものである。またHRESPONSEDPSはプリンタ300からDSC100に対して、S1304でのDPSスクリプトの送信を開始することを通知するためのものである。DPSスクリプトConfigurePrintServiceは、図14aに示すように、DSC100の装置情報メーカ名、製品名、シリアル番号等などを示すXML形式のスクリプトである。同様に、DPSスクリプトConfigurePrintServiceresultはプリンタ300に関する情報メーカ名、製品名、シリアル番号等を示すXML形式のスクリプトである。DPSConfigurePrintServiceシーケンスに引き続き、DPSGetCapabilityDPSStartJobシーケンスが行われる。このシーケンスは、S1302で送信されるDPSスクリプトがそれぞれGetCapability、StartJobに、S1304で送信されるDPSスクリプトがそれぞれGetCapabilityresult、StartJobresultになる以外、図13と同一であるため説明を省略する。DPSGetCapabilityは、DSC100からプリンタ300へ、プリンタ300に設定可能な能力を問い合わせるシーケンスである。PictBriegeApplicationモジュール112は、プリンタ300からの応答内容に応じた設定用のGUIを生成し、ユーザに設定させることができる。図14bに、DPSGetCapabilityシーケンスでやりとりされるDPSスクリプトGetCapability及びGetCapabilityresultの例を示す。StartJobは、例えばDSC100のユーザからプリント開始指示が操作部104を通じてなされたことにより、DSC100からプリンタ300に、各種印刷設定情報とともに印刷開始を要求するシーケンスである。図14cに、StartJobシーケンスでやりとりされるDPSスクリプトStartJob及びStartJobresultの例を示す。次のシーケンスはDPSGetFileInfo及びDPSGetFileである。図15において、S1501がDPSGetFileInfoシーケンスであり、プリンタ300がこれから取得するDSC100がプリントしようとするデータの情報を取得している。取得される情報は、画像の大きさ画素数やファイル名などである。そして、S1502で示すDPSGetFileシーケンスにより、DPSGetFileInfoシーケンスで情報を取得したファイルをDSC100からプリンタ300が取得する。なお、要求されたデータをDSC100が送信する際、図15では図13のS1003と同様に、メモリカード120から一旦DSC100に読み込み、メモリカード120を介して送信するものとしている。しかし、図11に示したように、メモリカード120からDSC100に読み込みせずに、DSC100からディレクトリパスを指定してメモリカード120から送信させるようにしてもよい。プリントするデータの転送が終了すると、プリンタ300は設定に基づいてプリント処理を実行する。また、プリンタ300は、装置の状態をDPSNotifyDeviceStatusシーケンスでDSC100に通知することができる。図16に示すシーケンス図を用いて、DPSNotifyDeviceStatusの動作について説明する。このDPSNotifyDeviceStatusでは、プリンタ300の状態をプリンタ300がDSC100に送信する。図16の処理は、プリンタ300からDSC100に対してスクリプトHREQUESTDPSを送信S1601、プリンタ300からDSC100に対してDPSスクリプトNotifyDeviceStatusを送信S1602、DSC100からプリンタ300に対してスクリプトDRESPONSEDPSを送信S1603、DSC100からプリンタ300に対してDPSスクリプトNotifyDeviceStatusresultを送信S1604、するものである。HREQUESTDPSはプリンタ300からDSC100に対して、S1602でのDPSスクリプトの送信を開始することを通知するためのものである。またDRESPONSEDPSはDSC100からプリンタ300に対して、S1604でのDPSスクリプトの送信を開始することを通知するためのものである。DPSスクリプトNotifyDeviceStatusは、図17aに示すように、プリンタ300の状況を示すXML形式のスクリプトである。プリンタ300の状況としては、プリント中かどうか、新しいジョブを受け付け可能かどうか、エラーが発生しているかどうか、エラーの原因は何か、等がある。DPSスクリプトNotifyDeviceStatusresultはDSC100から単に応答として返されるXML形式のスクリプトである。また、プリンタ300がプリント中のジョブの状態をDSC100に通知する場合には、図16と同様のシーケンスであるNotifyJobStatusを用いることができる。NotifyJobStatusは、S1602で送信されるDPSスクリプトがNotifyJobStatus括弧内にはジョブの状態を示す記述が入るに、S1604で送信されるDPSスクリプトがNotifyJobStatusresultになる以外、図16と同一であるため説明を省略する。図17bに、NotifyJobStatusシーケンスでやりとりされるスクリプトNotifyJobStatus及びNotifyJobStatusresultの例を示す。この例では、NotifyJobStatusにおいて、現在4/6ページが印刷中であることなどが通知される。NotifyJobStatusresultは応答を目的としたスクリプトである。以上説明したように、本実施形態によれば、無線通信機能付きメモリカードにPTPResponderを持たせ、ホスト機器DSCが有するPTPResponderとどちらがPTPIPモジュールを用いて外部機器とPTP通信するかを切り替え可能にした。そのため、メモリカードがホスト機器と独立して外部機器とPTPによるデータ転送を行うことも、ホスト機器がメモリカードを無線アダプタのように用いて外部機器とPTP通信することも可能となる。その結果、無線通信機能付きメモリカードを、PTPに対応した既存の機器を用いた幅広い用途に利用することが可能となる。なお、Pullモード、DPSモード、PathThroughモードの中では、Pullモードの汎用性が高いと考えられる。そこで、DSC100はメモリカード120がネットワークに接続された場合には、まずPTPSwitchModeコマンドを自動的に発行するようにしてもよい。DLNAを用いるかPTPを用いるかをユーザに選択させる場合であれば、PTPを用いることが選択されたことに応じてPTPSwitchModeコマンドを自動的に発行するようにしてもよい。<第2の実施形態>第1の実施形態におけるPullモード図8やPathThroughモード図9では、カードコントローラ1201がAdvertiseコマンドを用いてネットワーク上でアドバタイズすることにより、ネットワーク上のPC200に自機を検出させていた。例えば第1の実施形態におけるPullモードのシーケンスを示す図8では、カードコントローラ1201がS803でPTPSwitchModeを受信すると、S804で接続しているネットワーク上でDeviceDiscoveryAdvertiseを行う。そして、ネットワーク上に存在し、PTPにおけるInitiatorとして動作する機器がこのDeviceDiscoveryを検知すると、接続要求を送信する。複数の機器が接続要求を送信した場合、メモリカード120のPTPIPモジュール123は最初に受信した接続要求の送信元機器とPTPIPコネクションを確立するのが通常である。しかしながら、この方法では、TargetDeviceであるPC200以外の機器からの接続要求が最初に受信される可能性があり、ユーザが所望する機器と必ず接続できるとは限らない。そこで本実施形態では、ユーザが接続を所望するInitiatorからの接続要求のみを受け入れることにより、確実にPTPIPコネクションが確立できるようにしたことを特徴とする。本実施形態においては、例えばPC200のHDD208に、予めメモリカード120に接続情報を記録するためのプログラムが保存されているものとする。このプログラムは、PC200がRMD209として有する又は接続されているカード読取装置にメモリカード120が装着されると、CPU205によって実行される。このプログラムは例えば、メモリカード120のメモリ部1203にPC200とPTPIPコネクションを確立するための接続情報として、PC200の識別情報UUID及び名称等を記録する。接続情報が記録されたメモリカード120がDSC100に装着された状態で、例えば図8のPullモードを実行した場合を考える。PTPIPモジュール123は、S805においてPTPIPコネクションを確立する際、メモリ部1203に識別情報が記録されている場合には、その識別情報に対応する機器から受信した接続要求に応答してPTPIPコネクションを確立する。PTPIPモジュール123は、メモリカードに記録された識別情報に対応しない機器から受信した接続要求については、無視または拒否する。PTPIPモジュール123は、S804においてデバイス情報をアドバタイズした後前でもよい、メモリ部1203に識別情報が記録されているか確認し、識別情報が記録されていれば、受信した接続要求に含まれる送信元の識別情報と比較する。この際、接続要求を受信する毎にメモリ部1203にアクセスしてもよいが、予め識別情報を読み出しておくと、メモリ部1203へのアクセス回数を低減できる。なお、メモリ部1203に識別情報を含んだ接続情報が記録されていない場合、PTPIPモジュール123は第1の実施形態と同様、最初に受信した接続要求の送信元機器とPTPIPコネクションを確立する。このように、本実施形態によれば、メモリカード120は所望の機器と確実にPTPIPコネクションを確立することが可能となる。なお、メモリカード120に接続情報を予め記録する方法としては、所望の機器で直接記録する方法に限定されない。例えば、所望の機器に対応する接続情報を通信により取得してDSC100によって記録したり、所望の機器以外の機器が有するカードリーダを用いて記録したりすることができる。これらの方法であれば、PTP通信機能やPTP通信のためのGUIなどを有さないDSC等であっても接続情報が記録されたメモリカードを作成でき、Pullモードにて所望のInitiatorと接続することが可能となる。なお、ユーザによって接続情報を設定することを可能としてもよい。例えば表示部105に接続情報を入力するためのGUIを表示し、ユーザが操作部104を操作して識別情報を入力する。入力された接続情報は、カードコントローラ1201がメモリカード120のメモリ部1203に記録するか、制御部101が不揮発性メモリ102に保存することができる。なお、不揮発性メモリ102に保存する場合、制御部101は、図8のS804にてDeviceDiscoveryが実行されるきっかけとなるPTPSwitchModeコマンドの引数に、不揮発性メモリ102から読み出した識別情報UUIDを含める。また、予めPTPSetDeviceinformationの引数に不揮発性メモリ102から読み出した識別情報UUIDを含めることもできる。さらに、制御部101は、不揮発性メモリ102から読み出した識別情報UUIDを記載した所定のファイルを、メモリカード120に書き込むようにしてもよい。この場合、メモリカード120は、PTPSetDeviceinformationまたはPTPSwitchModeコマンドの受信に応じて所定のファイルを参照し、識別情報UUIDを特定する。この場合は、各コマンドに識別情報UUIDを引数として与える必要はない。なお、本実施形態ではPullモードを例に説明したが、PathThroughモード図9のS804でも同様の処理を実行することが可能である。<第3の実施形態>第2の実施形態は、所望の機器と確実に接続するため、接続したい機器の情報を予め設定しておくものであった。しかしながら、ネットワークに参加している機器は時間と共に変化する場合も多く、予め機器の情報を設定することが必ずしも容易でないこともある。そのため、本実施形態では、現在ネットワークに参加している機器から、所望の接続機器を選択可能とするものである。以下、PathThroughモードを例に説明する。図18は、PathThroughモードにおけるDSC100、メモリカード120、外部機器の一例としてのPC200の動作を示すシーケンス図である。なお、図18では図9と同様の処理を行うステップについては参照数字を共通とし、図9と差異があるステップのみを説明する。S1801:S901にてPathThrouthモードへの設定が完了すると、制御部101はPTPStartSearchコマンドを発行し、メモリカード120に対し、接続中のネットワーク上に存在するInitiatorの検索実行を要求する。なお、PTPStartSearchコマンドの引数には、検索対象とするディスカバリプロトコル、及び検索対象の種類を指定することが可能である。ディスカバリプロトコルとは、例えばUPnPやMulticastDNSを指す。検索対象の種類とは、例えば、UPnPであればTargetDeviceを指し、MulticastDNSであればServiceTypeを指す。PTPStartSearchコマンドに引数が与えられている場合、カードコントローラ1201は、指定された条件での機器検索の実行が要求されたものと解釈する。引数がない場合は、カードコントローラ1201は、検索可能なディスカバリプロトコル、および対象機種の種類すべての機器検索の実行が要求されたものと解釈する。また、制御部101は、予めメモリカード120のメモリ部1203やDSC100の不揮発性メモリ102に保存されている情報をDSC100のRAM103にロードして、PTPStartSearchコマンドの引数として与えてもよい。さらに、S802のPTPSetDeviceInformationコマンドにて、メモリカード120が検索可能なディスカバリプロトコルの情報や検索対象の種類を取得し、PTPStartSearchコマンドの引数として使用してもよい。S1802:カードコントローラ1201は、PTPStartSearchコマンドで指定された条件に従って、接続しているネットワーク上に存在する機器の検索DeviceDiscoveryを実行する。ディスカバリにより、ネットワーク上に存在する、検索条件に合致したInitiatorの識別情報UUID及び名称等が取得され、カードコントローラ1201は取得した情報からInitiatorリストを生成する。なお、機器検索は例えば定期的に実行し、探索結果に変化があった場合には、カードコントローラ1201から割り込み信号ISRによってDSC100に通知することができる。S1803:DeviceDiscoveryにより、検索条件に対応したInitiatorが探索できたら、カードコントローラ1201は、割り込み信号ISRによって制御部101に通知する。S1804:制御部101は、PTPGetDeviceListコマンドを発行し、Initiatorリストを要求する。S1805:カードコントローラ1201は、生成したInitiatorリストを制御部101に送信する。S1806:制御部101は、受信したInitiatorリストから、ユーザがInitiatorを選択するためのGUI画面を作成し、表示部105に表示する。GUIの様式に制限は無いが、指定可能なInitiatorの各々を特定できる情報をユーザが選択可能に提示する。ここでは、指定可能なInitiatorを特定できる情報を選択可能にリスト表示するGUIを用いるものとする。ユーザが操作部104を通じてリスト中のInitiatorの1つを選択し、決定ボタンを押下すると、制御部101はどのInitiatorが選択されたか認識する。そして、制御部101は、選択されたInitiatorの識別情報を指定したPTPStartAdvertiseコマンドをメモリカード120に送信する。S804:カードコントローラ1201がS803でPTPStartAdvertiseコマンドを受信すると、S804でPTPIPモジュール123は、接続しているネットワーク上でDeviceDiscoveryAdvertiseを行う。そして、ネットワーク上に存在し、PTPにおけるInitiatorとして動作する機器がこのDeviceDiscoveryを検知すると、接続要求を送信する。PTPIPモジュール123は、PTPStartAdvertiseで指定されたUUIDに対応する機器から受信した接続要求に応答してPTPIPコネクションを確立する。PTPIPモジュール123は、PTPStartAdvertiseで指定されたUUIDに対応しない機器から受信した接続要求については、無視または拒否する。S1807:PTPIPモジュール123は、PTPStartAdvertiseコマンドで指定されたUUIDに対応するInitiatorとPTPIPコネクションを確立する。コネクションの確立は割り込み信号ISRによりカードコントローラ1201から制御部101に通知される。このように、本実施形態では、PTPIPコネクションを確立したい時点でネットワーク上に存在するInitiatorのうち、ユーザが接続を所望するInitiatorとPTPIPコネクションを確立することができる。なお、本実施形態では、PathThroughモードで説明したが、Pullモードで実行されてもよい。ただし、Pullモードは、PTP通信機能やPTP通信のためのGUIなどを有さないDSC等にPTP通信機能を与えることを想定したモードであり、主にはPCなどInitiator側を操作して画像を取得することを目的としたモードである。これに対して、PathThroughモードは、DSC100がすでに保有しているPTP通信機能やPTP通信のためのGUIリソースを有効的に活用するためのモードである。したがって、Initiatorへの画像送信をDSC100を操作して行うことが想定される。このようなPullモードとPathThroughモードの特徴の違いを鑑みると、例えばPullモードでは第1の実施形態のようにPC200側からの接続を行う構成が考えられる。一方、PathThroughモードでは本実施形態のようにDSC100が主体的に接続相手を特定する構成が考えられる。また、他の構成として、例えばPullモードでは第2の実施形態の接続方法を採用してDSC100側の操作を最小限にし、PathThroughモードでは本実施形態のような接続方法をとる構成も考えられる。<他の実施形態>また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェアプログラムを、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータまたはCPUやMPU等がプログラムを読み出して実行する処理である。"