/// <summary> /// Generates the specified WSZ input file path. /// </summary> /// <param name="wszInputFilePath">The WSZ input file path.</param> /// <param name="bstrInputFileContents">The BSTR input file contents.</param> /// <param name="wszDefaultNamespace">The WSZ default namespace.</param> /// <param name="rgbOutputFileContents">The RGB output file contents.</param> /// <param name="pcbOutput">The PCB output.</param> /// <param name="pGenerateProgress">The p generate progress.</param> /// <returns></returns> public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress) { if (wszInputFilePath == null) { throw new ArgumentNullException(wszInputFilePath); } var generatorParams = GeneratorParams.LoadFromFile(wszInputFilePath) ?? new GeneratorParams(); generatorParams.InputFilePath = wszInputFilePath; generatorParams.NameSpace = wszDefaultNamespace; var xsdGen = new GeneratorFacade(this.provider, generatorParams); var result = xsdGen.GenerateBytes(); var generatedStuff = result.Entity; if (generatedStuff == null) { rgbOutputFileContents[0] = IntPtr.Zero; pcbOutput = 0; return(0); } // Copie du flux en mémoire pour que Visual Studio puisse le récupérer rgbOutputFileContents[0] = Marshal.AllocCoTaskMem(generatedStuff.Length); Marshal.Copy(generatedStuff, 0, rgbOutputFileContents[0], generatedStuff.Length); pcbOutput = (uint)generatedStuff.Length; return(0); }