From d504b02acadf3206a21a3b98bb62c2858c745828 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 30 Aug 2018 14:54:36 +0300 Subject: [PATCH] include: Add IOpcFactory and related definitions. Signed-off-by: Nikolay Sivov Signed-off-by: Alexandre Julliard --- include/Makefile.in | 4 ++ include/msopc.idl | 89 ++++++++++++++++++++++++++++++++++++++ include/opcbase.idl | 27 ++++++++++++ include/opcobjectmodel.idl | 34 +++++++++++++++ include/opcparturi.idl | 71 ++++++++++++++++++++++++++++++ 5 files changed, 225 insertions(+) create mode 100644 include/msopc.idl create mode 100644 include/opcbase.idl create mode 100644 include/opcobjectmodel.idl create mode 100644 include/opcparturi.idl diff --git a/include/Makefile.in b/include/Makefile.in index a89fef6eac3..ffecb98d9e8 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -399,6 +399,7 @@ SOURCES = \ msident.idl \ msinkaut.idl \ msiquery.h \ + msopc.idl \ mssip.h \ msstkppg.h \ mstask.idl \ @@ -493,6 +494,9 @@ SOURCES = \ oledberr.h \ oledlg.h \ oleidl.idl \ + opcbase.idl \ + opcobjectmodel.idl \ + opcparturi.idl \ opnrst.idl \ optary.idl \ patchapi.h \ diff --git a/include/msopc.idl b/include/msopc.idl new file mode 100644 index 00000000000..12404e5a123 --- /dev/null +++ b/include/msopc.idl @@ -0,0 +1,89 @@ +/* + * Copyright 2018 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "ocidl.idl"; + +#include "opcbase.idl" +#include "opcobjectmodel.idl" +#include "opcparturi.idl" + +#ifndef __WIDL__ +#define threading(model) +#endif + +interface IOpcUri; +interface IOpcPartUri; +interface IOpcPackage; +interface IOpcDigitalSignatureManager; + +[ + object, + uuid(6d0b4446-cd73-4ab3-94f4-8ccdf6116154), + pointer_default(ref) +] +interface IOpcFactory : IUnknown +{ + HRESULT CreatePackageRootUri( + [out, retval] IOpcUri **uri + ); + + HRESULT CreatePartUri( + [in, string] LPCWSTR uri, + [out, retval] IOpcPartUri **part_uri + ); + + [local] + HRESULT CreateStreamOnFile( + [in, string] LPCWSTR filename, + [in] OPC_STREAM_IO_MODE io_mode, + [in, unique] SECURITY_ATTRIBUTES *sa, + [in] DWORD flags, + [out, retval] IStream **stream + ); + + HRESULT CreatePackage( + [out, retval] IOpcPackage **package + ); + + HRESULT ReadPackageFromStream( + [in] IStream *stream, + [in] OPC_READ_FLAGS flags, + [out, retval] IOpcPackage **package + ); + + HRESULT WritePackageToStream( + [in] IOpcPackage *package, + [in] OPC_WRITE_FLAGS flags, + [in] IStream *stream + ); + + HRESULT CreateDigitalSignatureManager( + [in] IOpcPackage *package, + [out, retval] IOpcDigitalSignatureManager **signature_manager + ); +} + +[ + threading(both), + uuid(6b2d6Ba0-9f3e-4f27-920b-313cc426a39e) +] +coclass OpcFactory +{ + interface IOpcFactory; +}; diff --git a/include/opcbase.idl b/include/opcbase.idl new file mode 100644 index 00000000000..fc926754203 --- /dev/null +++ b/include/opcbase.idl @@ -0,0 +1,27 @@ +/* + * Copyright 2018 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#if 0 +#pragma makedep install +#endif + +typedef [v1_enum] enum +{ + OPC_STREAM_IO_READ = 1, + OPC_STREAM_IO_WRITE = 2, +} OPC_STREAM_IO_MODE; diff --git a/include/opcobjectmodel.idl b/include/opcobjectmodel.idl new file mode 100644 index 00000000000..e5370d2e545 --- /dev/null +++ b/include/opcobjectmodel.idl @@ -0,0 +1,34 @@ +/* + * Copyright 2018 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#if 0 +#pragma makedep install +#endif + +typedef [v1_enum] enum +{ + OPC_READ_DEFAULT = 0, + OPC_VALIDATE_ON_LOAD = 1, + OPC_CACHE_ON_ACCESS = 2, +} OPC_READ_FLAGS; + +typedef [v1_enum] enum +{ + OPC_WRITE_DEFAULT = 0, + OPC_WRITE_FORCE_ZIP32 = 1, +} OPC_WRITE_FLAGS; diff --git a/include/opcparturi.idl b/include/opcparturi.idl new file mode 100644 index 00000000000..00b21b95988 --- /dev/null +++ b/include/opcparturi.idl @@ -0,0 +1,71 @@ +/* + * Copyright 2018 Nikolay Sivov for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +import "unknwn.idl"; +import "ocidl.idl"; + +#if 0 +#pragma makedep install +#endif + +interface IOpcPartUri; + +[ + object, + uuid(bc9c1b9b-d62c-49eb-aef0-3b4e0b28ebed), + nonextensible, + pointer_default(ref) +] +interface IOpcUri : IUri +{ + HRESULT GetRelationshipsPartUri( + [out, retval] IOpcPartUri **part_uri + ); + + HRESULT GetRelativeUri( + [in] IOpcPartUri *part_uri, + [out, retval] IUri **relative_uri + ); + + HRESULT CombinePartUri( + [in] IUri *relative_uri, + [out, retval] IOpcPartUri **combined + ); +} + +[ + object, + uuid(7d3babe7-88b2-46ba-85cb-4203cb016c87), + nonextensible, + pointer_default(ref) +] +interface IOpcPartUri : IOpcUri +{ + HRESULT ComparePartUri( + [in] IOpcPartUri *part_uri, + [out, retval] INT32 *result + ); + + HRESULT GetSourceUri( + [out, retval] IOpcUri **source_uri + ); + + HRESULT IsRelationshipsPartUri( + [out, retval] BOOL *result + ); +}