IVsQueryEditQuerySave2.QuerySaveFiles Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Notifies the environment that multiple files are about to be saved.
public:
int QuerySaveFiles(System::UInt32 rgfQuerySave, int cFiles, cli::array <System::String ^> ^ rgpszMkDocuments, cli::array <System::UInt32> ^ rgrgf, cli::array <Microsoft::VisualStudio::Shell::Interop::VSQEQS_FILE_ATTRIBUTE_DATA> ^ rgFileInfo, [Runtime::InteropServices::Out] System::UInt32 % pdwQSResult);
int QuerySaveFiles(unsigned int rgfQuerySave, int cFiles, std::Array <std::wstring const &> const & rgpszMkDocuments, std::Array <unsigned int> const & rgrgf, std::Array <Microsoft::VisualStudio::Shell::Interop::VSQEQS_FILE_ATTRIBUTE_DATA> const & rgFileInfo, [Runtime::InteropServices::Out] unsigned int & pdwQSResult);
public int QuerySaveFiles (uint rgfQuerySave, int cFiles, string[] rgpszMkDocuments, uint[] rgrgf, Microsoft.VisualStudio.Shell.Interop.VSQEQS_FILE_ATTRIBUTE_DATA[] rgFileInfo, out uint pdwQSResult);
abstract member QuerySaveFiles : uint32 * int * string[] * uint32[] * Microsoft.VisualStudio.Shell.Interop.VSQEQS_FILE_ATTRIBUTE_DATA[] * uint32 -> int
Public Function QuerySaveFiles (rgfQuerySave As UInteger, cFiles As Integer, rgpszMkDocuments As String(), rgrgf As UInteger(), rgFileInfo As VSQEQS_FILE_ATTRIBUTE_DATA(), ByRef pdwQSResult As UInteger) As Integer
Parameters
- rgfQuerySave
- UInt32
[in] Flags are currently unused. The caller should always pass in the default null flag, which is zero.
- cFiles
- Int32
[in] File count.
- rgpszMkDocuments
- String[]
[in] Path to the file on the disk.
- rgrgf
- UInt32[]
[in] Flags whose values are taken from the tagVSQEQSFlags enumeration for valid file attributes. Default = 0.
- rgFileInfo
- VSQEQS_FILE_ATTRIBUTE_DATA[]
[in] Values taken from the VSQEQS_FILE_ATTRIBUTE_DATA structure containing information about the file attributes. Can be null
; is ignored if rgrgf
is 0.
- pdwQSResult
- UInt32
[out] Pointer to a value taken from the tagVSQuerySaveResult enumeration.
Returns
If the method fails, it returns an error code.If it succeeds, it returns:
QSR_SaveOK
Save the file. The file should not be read-only at this point.
QSR_ForceSaveAs
This method has not put up a Save As dialog box, but either it is quietly telling you to do so, or the user has been prompted and has selected Save As. If you are editing a conventional file, you are encouraged to call GetSaveFileNameViaDlg(VSSAVEFILENAMEW[]) at this point.
QSR_NoSave_UserCanceled
The user was notified that the file is read-only and has elected either to not save or to cancel the operation. The choice depends on the BeginQuerySaveBatch() / EndQuerySaveBatch() methods .If the editor is trying to save multiple files, you must know the batching state and the difference between no and cancel. Call the QuerySaveFile(String, UInt32, VSQEQS_FILE_ATTRIBUTE_DATA[], UInt32) method for each individual file. If the environment returns QSR_NoSave_UserCanceled or QSR_NoSave_Cancel, then the save is canceled. If the environment returns QSR_NoSave_Continue, then that one file in the batch will not be saved, but you can continue to save the other files.The results for *pdwQSResult
are: Proceed with save (QSR_SaveOK).Do not save (QSR_NoSave_Continue).Save as (QSR_ForceSaveAs).Cancel Save (QSR_NoSave_UserCanceled or QSR_NoSave_Cancel).
Remarks
COM Signature
From ivsqueryeditquerysave2.idl
HRESULT QuerySaveFiles(
[in] VSQuerySaveFlags rgfQuerySave,
[in] int cFiles,
[in, size_is(cFiles)] const LPCOLESTR rgpszMkDocuments[],
[in, size_is(cFiles)] const VSQEQSFlags rgrgf[],
[in, size_is(cFiles)] const VSQEQS_FILE_ATTRIBUTE_DATA rgFileInfo[],
[out, retval] VSQuerySaveResult *pdwQSResult
);
Before a project or editor saves a file, it must call this method or the QuerySaveFile method. For project files, these calls are automatically completed by the solution, which knows when to save a project file. Editors are responsible for making these calls unless the editor implementation of IVsPersistDocData2 uses the helper function SaveDocDataToFile method. If your editor implements IVsPersistDocData2 in this way, then the call to QuerySaveFile method or QuerySaveFiles
is made for you.
Call this method before saving anything to disk. It will handle read-only and checked-in files in a uniform, shared way.
This method might need to issue a checkout command to ensure that the file is writable (for example, if the file was edited in memory). For a source control provider that provides for the "checkout local version" option, this is a safe operation. For a source control provider that does not, the checkout operation cannot be completed without data loss. In this case, Save As is the only option.