SccOpenProject (Función)

Esta función abre un proyecto de control de código fuente existente o crea uno nuevo.

Sintaxis

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

Parámetros

pvContext

[in] Estructura del contexto del complemento de control de código fuente.

hWnd

[in] Identificador de la ventana del IDE que el complemento de control de código fuente puede usar como elemento primario para los cuadros de diálogo que proporciona.

lpUser

[dentro, fuera] Nombre del usuario (que no se debe superar SCC_USER_SIZE, incluido el terminador NULL).

lpProjName

[in] Cadena que identifica el nombre del proyecto.

lpLocalProjPath

[in] Ruta de acceso a la carpeta de trabajo del proyecto.

lpAuxProjPath

[dentro, fuera] Cadena auxiliar opcional que identifica el proyecto (no se debe superar SCC_AUXPATH_SIZE, incluido el terminador NULL).

lpComment

[in] Comente un nuevo proyecto que se va a crear.

lpTextOutProc

[in] Función de devolución de llamada opcional para mostrar la salida de texto del complemento de control de código fuente.

dwFlags

[in] Indica si es necesario crear un nuevo proyecto si el proyecto es desconocido para el complemento de control de código fuente. El valor puede ser una combinación de SCC_OP_CREATEIFNEW y SCC_OP_SILENTOPEN.

Valor devuelto

Se espera que la implementación del complemento de control de código fuente de esta función devuelva uno de los siguientes valores:

Value Descripción
SCC_OK Se ha realizado correctamente la apertura del proyecto.
SCC_E_INITIALIZEFAILED No se pudo inicializar el proyecto.
SCC_E_INVALIDUSER El usuario no pudo iniciar sesión en el sistema de control de código fuente.
SCC_E_COULDNOTCREATEPROJECT El proyecto no existía antes de la llamada; se estableció la SCC_OPT_CREATEIFNEW marca, pero no se pudo crear el proyecto.
SCC_E_PROJSYNTAXERR Sintaxis de proyecto no válida.
SCC_E_UNKNOWNPROJECT El proyecto es desconocido para el complemento de control de código fuente y no se estableció la SCC_OPT_CREATEIFNEW marca.
SCC_E_INVALIDFILEPATH Ruta de acceso de archivo no válida o no utilizable.
SCC_E_NOTAUTHORIZED No se permite al usuario realizar esta operación.
SCC_E_ACCESSFAILURE Se produjo un problema al acceder al sistema de control de código fuente, probablemente debido a problemas de red o contención. Se recomienda un reintento.
SCC_E_NONSPECFICERROR Un error no específico; el sistema de control de código fuente no se inicializó.

Comentarios

El IDE puede pasar un nombre de usuario (lpUser) o simplemente pasar un puntero a una cadena vacía. Si hay un nombre de usuario, el complemento de control de código fuente debe usarlo como valor predeterminado. Sin embargo, si no se pasó ningún nombre o si se produjo un error en el inicio de sesión con el nombre especificado, el complemento debe pedir al usuario que inicie sesión y devolverá el nombre válido cuando lpUser reciba un inicio de sesión. válido Porque el complemento puede cambiar la cadena de nombre de usuario, el IDE siempre asignará un búfer de tamaño (SCC_USER_LEN+1 o SCC_USER_SIZE, que incluye espacio para el terminador nulo).

Nota:

La primera acción que puede ser necesaria para realizar el IDE puede ser una llamada a la SccOpenProject función o a SccGetProjPath. Por este motivo, ambos tienen un parámetro idéntico lpUser .

lpAuxProjPath ylpProjName se leen desde el archivo de solución o se devuelven desde una llamada a la SccGetProjPath función . Estos parámetros contienen las cadenas que el complemento de control de código fuente asocia al proyecto y solo son significativas para el complemento. Si no hay cadenas de este tipo en el archivo de solución y no se le ha pedido al usuario que examine (lo que devolvería una cadena a través de la SccGetProjPath función), el IDE pasa cadenas vacías para lpAuxProjPath y lpProjNamey espera que el complemento actualice estos valores cuando se devuelva esta función.

lpTextOutProc es un puntero a una función de devolución de llamada proporcionada por el IDE al complemento de control de código fuente para mostrar la salida del resultado del comando. Esta función de devolución de llamada se describe en detalle en LPTEXTOUTPROC.

Nota:

Si el complemento de control de código fuente pretende aprovechar esto, debe haber establecido la SCC_CAP_TEXTOUT marca en SccInitialize. Si no se estableció esa marca o si el IDE no admite esta característica, lpTextOutProc será NULL.

El dwFlags parámetro controla el resultado en caso de que el proyecto que se abra no exista actualmente. Consta de dos bitflags y SCC_OP_CREATEIFNEWSCC_OP_SILENTOPEN. Si el proyecto que se abre ya existe, la función simplemente abre el proyecto y devuelve SCC_OK. Si el proyecto no existe y si la SCC_OP_CREATEIFNEW marca está activada, el complemento de control de código fuente puede crear el proyecto en el sistema de control de código fuente, abrirlo y devolver SCC_OK. Si el proyecto no existe y, si la SCC_OP_CREATEIFNEW marca está desactivada, el complemento debe comprobar la SCC_OP_SILENTOPEN marca. Si esa marca no está activada, el complemento puede pedir al usuario un nombre de proyecto. Si esa marca está activada, el complemento simplemente debe devolver SCC_E_UNKNOWNPROJECT.

Pedido de llamada

En el curso normal de los eventos, se llamaría A SccInitialize primero para abrir una sesión de control de código fuente. Una sesión puede constar de una llamada a SccOpenProject, seguida de otras llamadas a funciones de la API del complemento de control de código fuente y finalizará con una llamada a SccCloseProject. Estas sesiones se pueden repetir varias veces antes de llamar a SccUninitialize .

Si el complemento de control de código fuente establece el SCC_CAP_REENTRANT bit en SccInitialize, la secuencia de sesión anterior puede repetirse muchas veces en paralelo. Las distintas pvContext estructuras realizan un seguimiento de las distintas sesiones, en las que cada pvContext una está asociada a un proyecto abierto a la vez. En función delpvContext parámetro , el complemento puede determinar a qué proyecto se hace referencia en cualquier llamada concreta. Si no se establece el bit SCC_CAP_REENTRANT de funcionalidad, los complementos de control de código fuente no reentrantes están limitados en su capacidad de trabajar con varios proyectos.

Nota:

El SCC_CAP_REENTRANT bit se introdujo en la versión 1.1 de la API del complemento de control de código fuente. No se establece o se omite en la versión 1.0 y se supone que todos los complementos de control de código fuente de la versión 1.0 no son reentrantes.

Consulte también