SccOpenProject (función)SccOpenProject Function

Esta función abre un proyecto de control de código fuente existente o crea uno nuevo.This function opens an existing source control project or creates a new one.

SintaxisSyntax

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

ParámetrosParameters

pvContextpvContext
[in] La estructura de contexto de complemento de control de código fuente.[in] The source control plug-in context structure.

hWndhWnd
[in] Identificador de la ventana del IDE que puede usar el complemento de control de código fuente como elemento primario para los cuadros de diálogo que proporciona.[in] A handle to the IDE window that the source control plug-in can use as a parent for any dialog boxes that it provides.

lpUserlpUser
[entrada, salida] El nombre del usuario (sin superar SCC_USER_SIZE, incluido el terminador NULL).[in, out] The name of the user (not to exceed SCC_USER_SIZE, including the NULL terminator).

lpProjNamelpProjName
[in] Cadena que identifica el nombre del proyecto.[in] The string identifying the name of the project.

lpLocalProjPathlpLocalProjPath
[in] La ruta de acceso a la carpeta de trabajo para el proyecto.[in] The path to the working folder for the project.

lpAuxProjPathlpAuxProjPath
[entrada, salida] Una cadena auxiliar opcional que identifica el proyecto (sin superar SCC_AUXPATH_SIZE, incluido el terminador NULL).[in, out]An optional auxiliary string identifying the project (not to exceed SCC_AUXPATH_SIZE, including the NULL terminator).

lpCommentlpComment
[in] Comentario a un nuevo proyecto que se va a crear.[in] Comment to a new project that is being created.

lpTextOutProclpTextOutProc
[in] Una función de devolución de llamada opcional para mostrar el texto de salida desde el complemento de control de código fuente.[in] An optional callback function to display text output from the source control plug-in.

dwFlagsdwFlags
[in] Señales si se debe crear si el proyecto es desconocido para el origen de un nuevo proyecto de control de complemento.[in] Signals whether a new project needs to be created if the project is unknown to the source control plug-in. Valor puede ser una combinación de SCC_OP_CREATEIFNEW ySCC_OP_SILENTOPEN.Value can be a combination of SCC_OP_CREATEIFNEW and SCC_OP_SILENTOPEN.

Valor devueltoReturn Value

La implementación de complemento de control de origen de esta función debe devolver uno de los siguientes valores:The source control plug-in implementation of this function is expected to return one of the following values:

ValorValue DescripciónDescription
SCC_OKSCC_OK Proceso completado correctamente en la apertura del proyecto.Success in opening the project.
SCC_E_INITIALIZEFAILEDSCC_E_INITIALIZEFAILED No se pudo inicializar el proyecto.Project could not be initialized.
SCC_E_INVALIDUSERSCC_E_INVALIDUSER El usuario no pudo iniciar sesión el sistema de control de código fuente.The user could not log in to the source control system.
SCC_E_COULDNOTCREATEPROJECTSCC_E_COULDNOTCREATEPROJECT El proyecto no existía antes de la llamada; el SCC_OPT_CREATEIFNEW se estableció la marca, pero no se pudo crear el proyecto.The project did not exist prior to the call; the SCC_OPT_CREATEIFNEW flag was set, but the project could not be created.
SCC_E_PROJSYNTAXERRSCC_E_PROJSYNTAXERR Sintaxis de proyecto no válida.Invalid project syntax.
SCC_E_UNKNOWNPROJECTSCC_E_UNKNOWNPROJECT El proyecto es desconocido para el complemento de control de código fuente y el SCC_OPT_CREATEIFNEW no se estableció el marcador.The project is unknown to the source control plug-in, and the SCC_OPT_CREATEIFNEW flag was not set.
SCC_E_INVALIDFILEPATHSCC_E_INVALIDFILEPATH Ruta de acceso de archivo no válido o no utilizable.Invalid or unusable file path.
SCC_E_NOTAUTHORIZEDSCC_E_NOTAUTHORIZED El usuario no puede realizar esta operación.The user is not allowed to perform this operation.
SCC_E_ACCESSFAILURESCC_E_ACCESSFAILURE Hubo un problema al obtener acceso al sistema de control de código fuente, probablemente debido a problemas de red o de contención.There was a problem accessing the source control system, probably due to network or contention issues. Se recomienda un reintento.A retry is recommended.
SCC_E_NONSPECFICERRORSCC_E_NONSPECFICERROR Un error no determinado; no se inicializó el sistema de control de código fuente.A nonspecific failure; the source control system was not initialized.

ComentariosRemarks

El IDE puede pasar un nombre de usuario (lpUser), o simplemente puede pasar un puntero a una cadena vacía.The IDE may pass in a user name (lpUser), or it may simply pass in a pointer to an empty string. Si hay un nombre de usuario, el complemento de control de origen debe usar como valor predeterminado.If there is a user name, the source control plug-in should use it as a default. Sin embargo, si se pasó ningún nombre, o si el error de inicio de sesión con el nombre especificado, el complemento debe solicitar al usuario que inicie sesión y devolverá el nombre válido de lpUser cuando recibe un inicio de sesión válido. dado que 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).However, if no name was passed, or if the login failed with the given name, the plug-in should prompt the user to log in and will return the valid name in lpUser when it receives a valid login. Because the plug-in may change the user name string, the IDE will always allocate a buffer of size (SCC_USER_LEN+1 or SCC_USER_SIZE, which includes space for the null terminator).

Nota

La primera acción que el IDE debe realizar puede ser una llamada a la SccOpenProject función o la SccGetProjPath.The first action the IDE may be required to perform may be a call to the SccOpenProject function or the SccGetProjPath. Por esta razón, ambos tienen idéntica lpUser parámetro.For this reason, both of them have an identical lpUser parameter.

lpAuxProjPathylpProjName se leen desde el archivo de solución, o se devuelven desde una llamada a la SccGetProjPath (función).lpAuxProjPath andlpProjName are read from the solution file, or they are returned from a call to the SccGetProjPath function. Estos parámetros contienen las cadenas que el complemento de control de código fuente se asocia con el proyecto y sólo son significativos para el complemento.These parameters contain the strings that the source control plug-in associates with the project and are meaningful only to the plug-in. Si ninguna de estas cadenas se encuentran en el archivo de solución y no se pide al usuario para examinar (que devolvería una cadena a través de la SccGetProjPath función), el IDE pasa cadenas vacías para ambos lpAuxProjPath y lpProjNamey actualizar estos valores no espera por el complemento cuando devuelve esta función.If no such strings are in the solution file and the user has not been prompted to browse (which would return a string through the SccGetProjPath function), the IDE passes empty strings for both lpAuxProjPath and lpProjName, and expects these values to be updated by the plug-in when this function returns.

lpTextOutProces un puntero a una función de devolución de llamada proporcionada por el IDE para el complemento con el fin de mostrar la salida de resultados del comando de control de código fuente.lpTextOutProc is a pointer to a callback function provided by the IDE to the source control plug-in for the purpose of displaying command result output. Esta función de devolución de llamada se describe detalladamente en LPTEXTOUTPROC.This callback function is described in detail in LPTEXTOUTPROC.

Nota

Si el complemento de control de código fuente tiene intención de aprovechar las ventajas de este, ha configurado la SCC_CAP_TEXTOUT se marcan en la SccInitialize.If the source control plug-in intends to take advantage of this, it must have set the SCC_CAP_TEXTOUT flag in the SccInitialize. Si no se ha establecido esa marca, o si el IDE no admite esta característica, lpTextOutProc será NULL.If that flag was not set, or if the IDE does not support this feature, lpTextOutProc will be NULL.

El dwFlags parámetro controla el resultado en caso de que el proyecto que se está abriendo no existe actualmente.The dwFlags parameter controls the outcome in the event that the project being opened does not currently exist. Consta de dos marcadores de bits, SCC_OP_CREATEIFNEW y SCC_OP_SILENTOPEN.It consists of two bitflags, SCC_OP_CREATEIFNEW and SCC_OP_SILENTOPEN. Si el proyecto está abierto ya existe, la función simplemente se abre el proyecto y devuelve SCC_OK.If the project being opened already exists, the function simply opens the project and returns SCC_OK. Si el proyecto no existe y si la SCC_OP_CREATEIFNEW indicador está activado, puede crear el proyecto en el sistema de control de código fuente, abrirlo y devolver el complemento de control de código fuente SCC_OK.If the project does not exist and if the SCC_OP_CREATEIFNEW flag is on, the source control plug-in can create the project in the source control system, open it, and return SCC_OK. Si el proyecto no existe y si la SCC_OP_CREATEIFNEW marca está desactivada, el complemento, a continuación, buscará el SCC_OP_SILENTOPEN marca.If the project does not exist, and if the SCC_OP_CREATEIFNEW flag is off, the plug-in should then check for the SCC_OP_SILENTOPEN flag. Si no está en esa marca, el complemento puede solicitar al usuario un nombre de proyecto.If that flag is not on, the plug-in may prompt the user for a project name. Si ese marcador está activo, el complemento debe simplemente devuelve SCC_E_UNKNOWNPROJECT.If that flag is on, the plug-in should simply return SCC_E_UNKNOWNPROJECT.

Orden de llamadaCalling Order

En el curso normal de eventos, el SccInitialize se denominaría primero para abrir una sesión de control de código fuente.In the normal course of events, the SccInitialize would be called first to open a source control session. Una sesión puede constar de una llamada a SccOpenProject, seguido por otras llamadas a funciones API de complemento de Control de código fuente y se terminará con una llamada a la SccCloseProject.A session may consist of a call to SccOpenProject, followed by other Source Control Plug-in API function calls, and will terminate with a call to the SccCloseProject. Estas sesiones se pueden repetir varias veces antes de la SccUninitialize se llama.Such sessions may be repeated several times before the SccUninitialize is called.

Si el origen de conjuntos de complemento de control del SCC_CAP_REENTRANT de bits en SccInitialize, a continuación, el orden de la sesión anterior puede repetirse muchas veces en paralelo.If the source control plug-in sets the SCC_CAP_REENTRANT bit in SccInitialize, then the above session sequence may be repeated many times in parallel. Diferentes pvContext estructuras realizar un seguimiento de las sesiones diferentes, donde cada pvContext está asociado con un proyecto abierto a la vez.Different pvContext structures track the different sessions, in which each pvContext is associated with one open project at a time. Tomando como base elpvContext parámetro, el complemento puede determinar qué proyecto se hace referencia en cualquier llamada determinada.Based on thepvContext parameter, the plug-in can determine which project is referenced in any particular call. Si la capacidad de bits SCC_CAP_REENTRANT no está establecida, nonreentrant los complementos de control de código fuente están limitados en cuanto a su capacidad para trabajar con varios proyectos.If the capability bit SCC_CAP_REENTRANT is not set, nonreentrant source control plug-ins are limited in their ability to work with multiple projects.

Nota

El SCC_CAP_REENTRANT bits se introdujeron en la versión 1.1 de la API de complemento de Control de origen.The SCC_CAP_REENTRANT bit was introduced in version 1.1 of the Source Control Plug-in API. No se ha establecido o se omite en la versión 1.0 y se suponen que todas las versiones 1.0 origen control complementos nonreentrant.It is not set or is ignored in version 1.0, and all version 1.0 source control plug-ins are assumed to be nonreentrant.

Vea tambiénSee Also

Funciones de API de complemento de Control de código fuente Source Control Plug-in API Functions
SccCloseProject SccCloseProject
SccGetProjPath SccGetProjPath
SccInitialize SccInitialize
SccUninitialize SccUninitialize
Restricciones en longitudes de cadena Restrictions on String Lengths
LPTEXTOUTPROCLPTEXTOUTPROC