次の方法で共有


SccOpenProject 関数

この関数では、既存のソース管理プロジェクトを開くか、または新しいソース管理プロジェクトを作成します。

構文

SCCRTN SccOpenProject (
   LPVOID        pvContext,
   HWND          hWnd,
   LPSTR         lpUser,
   LPCSTR        lpProjName,
   LPCSTR        lpLocalProjPath,
   LPSTR         lpAuxProjPath,
   LPCSTR        lpComment,
   LPTEXTOUTPROC lpTextOutProc,
   LONG          dwFlags
);

パラメーター

pvContext

[入力] ソース管理プラグインのコンテキスト構造体。

hWnd

[入力] ソース管理プラグインが、提供するすべてのダイアログ ボックスの親として使用できる IDE ウィンドウへのハンドル。

lpUser

[入力、出力] ユーザーの名前 (NULL 終端文字を含め、SCC_USER_SIZE 文字以下)。

lpProjName

[入力] プロジェクトの名前を識別する文字列。

lpLocalProjPath

[入力] プロジェクトの作業フォルダーのパス。

lpAuxProjPath

[入力、出力] プロジェクトを識別する省略可能な補助文字列 (NULL 終端文字を含め、SCC_AUXPATH_SIZE 文字以下)。

lpComment

[入力] 作成されている新しいプロジェクトへのコメント。

lpTextOutProc

[入力] ソース管理プラグインからのテキスト出力を表示するための省略可能なコールバック関数。

dwFlags

[入力] プロジェクトがソース管理プラグインで認識されていない場合、新しいプロジェクトを作成する必要があるかどうかを通知します。 値は SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN. の組み合わせにすることができます。

戻り値

この関数のソース管理プラグインの実装では、次のいずれかの値が返されることが予期されています。

説明
SCC_OK プロジェクトを開くことに成功しました。
SCC_E_INITIALIZEFAILED プロジェクトを初期化できませんでした。
SCC_E_INVALIDUSER ユーザーがソース管理システムにログインできませんでした。
SCC_E_COULDNOTCREATEPROJECT 呼び出しの前にプロジェクトが存在しませんでした。SCC_OPT_CREATEIFNEW フラグは設定されましたが、プロジェクトを作成できませんでした。
SCC_E_PROJSYNTAXERR プロジェクト構文が無効です。
SCC_E_UNKNOWNPROJECT プロジェクトがソース管理プラグインで認識されておらず、SCC_OPT_CREATEIFNEW フラグは設定されませんでした。
SCC_E_INVALIDFILEPATH ファイル パスが無効であるか、または使用できません。
SCC_E_NOTAUTHORIZED ユーザーには、この操作の実行が許可されていません。
SCC_E_ACCESSFAILURE ソース管理システムへのアクセス中に問題が発生しました。ネットワークまたは競合の問題である可能性があります。 再試行することをお勧めします。
SCC_E_NONSPECFICERROR 不特定のエラー。ソース管理システムは初期化されませんでした。

解説

IDE ではユーザー名 (lpUser) を渡すか、または単純に空の文字列へのポインターを渡すことができます。 ユーザー名が存在する場合、ソース管理プラグインでは、それを既定値として使用する必要があります。 ただし、名前が渡されなかった場合、または指定された名前でログインに失敗した場合、プラグインではユーザーにログインを入力するよう求める必要があり、有効なログインを受け取ったら lpUser で有効な名前を返します。プラグインがユーザー名文字列を変更する可能性があるため、IDE では、常にサイズ (SCC_USER_LEN+1 または SCC_USER_SIZE、これには NULL 終端文字用の領域が含まれます) のバッファーを割り当てます。

Note

IDE が実行する必要のある最初のアクションは、SccOpenProject 関数または SccGetProjPath の呼び出しである可能性があります。 このため、その両方に同じ lpUser パラメーターがあります。

lpAuxProjPathlpProjNameはソリューション ファイルから読み取られます。または、SccGetProjPath関数の呼び出しから返されます。 これらのパラメーターには、ソース管理プラグインによってプロジェクトに関連付けられ、そのプラグインに対してのみ意味がある文字列が含まれています。 このような文字列がソリューション ファイル内に存在せず、ユーザーが参照する (これにより、SccGetProjPath 関数を通して文字列が返されます) よう求められていない場合、IDE では、lpAuxProjPathlpProjName の両方に対して空の文字列を渡し、この関数から戻ったときにこれらの値がプラグインによって更新されることを期待します。

lpTextOutProc は、コマンド結果の出力を表示する目的で IDE からソース管理プラグインに提供されるコールバック関数へのポインターです。 このコールバック関数は、「LPTEXTOUTPROC」で詳細に説明されています。

Note

ソース管理プラグインでは、これを利用しようとする場合、SccInitializeSCC_CAP_TEXTOUT フラグを設定しておく必要があります。 そのフラグが設定されなかった場合、または IDE がこの機能をサポートしていない場合、lpTextOutProcNULL になります。

dwFlags パラメーターでは、開かれるプロジェクトが現在存在しない場合の結果を制御します。 これは、2 つのビットフラグ SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN で構成されます。 開かれるプロジェクトが既に存在する場合、この関数は単純にプロジェクトを開き、SCC_OK を返します。 そのプロジェクトが存在せず、かつ SCC_OP_CREATEIFNEW フラグがオンである場合、ソース管理プラグインではソース管理システム内にプロジェクトを作成し、それを開いてから SCC_OK を返すことができます。 そのプロジェクトが存在せず、かつ SCC_OP_CREATEIFNEW フラグがオフである場合、プラグインでは次に SCC_OP_SILENTOPEN フラグを確認する必要があります。 そのフラグがオンでない場合、プラグインでは、ユーザーにプロジェクト名を入力するよう求めることができます。 そのフラグがオンである場合、プラグインでは単純に SCC_E_UNKNOWNPROJECT を返す必要があります。

呼び出し順序

イベントの通常の過程では、ソース管理セッションを開くために SccInitialize が最初に呼び出されます。 セッションは、SccOpenProject の呼び出しと、それに続く他のソース管理プラグイン API 関数呼び出しで構成されている場合があり、SccCloseProject の呼び出しで終了します。 このようなセッションは、SccUninitialize が呼び出される前に複数回繰り返される可能性があります。

ソース管理プラグインが SccInitializeSCC_CAP_REENTRANT ビットを設定した場合は、上記のセッション シーケンスが並列に何回も繰り返される可能性があります。 さまざまな pvContext 構造体によって、異なるセッションが追跡されます。ここで、各 pvContext は、一度には 1 つの開いているプロジェクトに関連付けられています。 プラグインは、 pvContext パラメーターに基づいて、特定の呼び出しで参照されるプロジェクトを決定できます。 機能ビット SCC_CAP_REENTRANT が設定されていない場合、再入不可能なソース管理プラグインは、複数のプロジェクトを操作する機能が制限されます。

Note

SCC_CAP_REENTRANT ビットは、ソース管理プラグイン API のバージョン 1.1 で導入されました。 これが設定されていないか、またはバージョン 1.0 で無視された場合は、バージョン 1.0 のすべてのソース管理プラグインが再入不可能であると見なされます。

関連項目