e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
392 lines
15 KiB
C#
392 lines
15 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
using System.Runtime;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security;
|
|
using COMTypes = System.Runtime.InteropServices.ComTypes;
|
|
|
|
namespace System.ServiceModel.Activation
|
|
{
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
struct METADATA_RECORD
|
|
{
|
|
public uint dwMDIdentifier;
|
|
public uint dwMDAttributes;
|
|
public uint dwMDUserType;
|
|
public uint dwMDDataType;
|
|
public uint dwMDDataLen;
|
|
[Fx.Tag.SecurityNote(Critical = "Stores a handle.")]
|
|
[SecurityCritical]
|
|
public IntPtr pbMDData;
|
|
public uint dwMDDataTag;
|
|
};
|
|
|
|
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
struct METADATA_HANDLE_INFO
|
|
{
|
|
public uint dwMDPermissions;
|
|
public uint dwMDSystemChangeNumber;
|
|
};
|
|
|
|
[ComImport,
|
|
Guid("A9E69610-B80D-11D0-B9B9-00A0C922E750")]
|
|
[Fx.Tag.SecurityNote(Critical = "Implements a SecurityCritical interface.")]
|
|
[SecurityCritical]
|
|
class MSAdminBase
|
|
{
|
|
// These values are defined in %SDXROOT%\public\sdk\inc\iiscnfg.h.
|
|
// The interfaces are defined in %SDXROOT%\public\sdk\inc\iadmw.h.
|
|
internal const uint DEFAULT_METABASE_TIMEOUT = 30000;
|
|
internal const int METADATA_MASTER_ROOT_HANDLE = 0;
|
|
internal const int METADATA_PERMISSION_READ = 0x00000001;
|
|
internal const int METADATA_INHERIT = 0x00000001;
|
|
internal const int IIS_MD_UT_SERVER = 1;
|
|
internal const int ALL_METADATA = 0;
|
|
internal const int DWORD_METADATA = 1;
|
|
internal const int STRING_METADATA = 2;
|
|
internal const int BINARY_METADATA = 3;
|
|
internal const int EXPANDSZ_METADATA = 4;
|
|
internal const int MULTISZ_METADATA = 5;
|
|
}
|
|
|
|
[ComImport,
|
|
Guid("70B51430-B6CA-11d0-B9B9-00A0C922E750"),
|
|
InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
|
|
[SuppressUnmanagedCodeSecurity]
|
|
interface IMSAdminBase
|
|
{
|
|
// virtual HRESULT STDMETHODCALLTYPE AddKey(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath) = 0;
|
|
[PreserveSig]
|
|
uint AddKey(
|
|
uint hMDHandle,
|
|
string pszMDPath);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE DeleteKey(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath) = 0;
|
|
[PreserveSig]
|
|
uint DeleteKey(
|
|
uint hMDHandle,
|
|
string pszMDPath);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE DeleteChildKeys(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath) = 0;
|
|
[PreserveSig]
|
|
uint DeleteChildKeys(
|
|
uint hMDHandle,
|
|
string pszMDPath);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE EnumKeys(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [size_is][out] */ LPWSTR pszMDName,
|
|
// /* [in] */ DWORD dwMDEnumObjectIndex) = 0;
|
|
[PreserveSig]
|
|
uint EnumKeys(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
string pszMDName,
|
|
uint dwMDEnumObjectIndex);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE CopyKey(
|
|
// /* [in] */ METADATA_HANDLE hMDSourceHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDSourcePath,
|
|
// /* [in] */ METADATA_HANDLE hMDDestHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDDestPath,
|
|
// /* [in] */ BOOL bMDOverwriteFlag,
|
|
// /* [in] */ BOOL bMDCopyFlag) = 0;
|
|
[PreserveSig]
|
|
uint CopyKey(
|
|
uint hMDSourceHandle,
|
|
string pszMDSourcePath,
|
|
uint hMDDestHandle,
|
|
string pszMDDestPath,
|
|
int bMDOverwriteFlag,
|
|
int bMDCopyFlag);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE RenameKey(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDNewName) = 0;
|
|
[PreserveSig]
|
|
uint RenameKey(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
string pszMDNewName);
|
|
|
|
// virtual /* [local] */ HRESULT STDMETHODCALLTYPE SetData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ PMETADATA_RECORD pmdrMDData) = 0;
|
|
[Fx.Tag.SecurityNote(Critical = "Takes a SecurityCritical parameter.")]
|
|
[SecurityCritical]
|
|
[PreserveSig]
|
|
uint SetData(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
METADATA_RECORD pmdrMDData);
|
|
|
|
// virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [out][in] */ PMETADATA_RECORD pmdrMDData,
|
|
// /* [out] */ DWORD *pdwMDRequiredDataLen) = 0;
|
|
[Fx.Tag.SecurityNote(Critical = "Takes and Returns a SecurityCritical parameter.")]
|
|
[SecurityCritical]
|
|
[PreserveSig]
|
|
uint GetData(uint hMDHandle,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string pszMDPath,
|
|
ref METADATA_RECORD pmdrMDData,
|
|
ref uint pdwMDRequiredDataLen);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE DeleteData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ DWORD dwMDIdentifier,
|
|
// /* [in] */ DWORD dwMDDataType) = 0;
|
|
[PreserveSig]
|
|
uint DeleteData(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
uint dwMDIdentifier,
|
|
uint dwMDDataType
|
|
);
|
|
|
|
// virtual /* [local] */ HRESULT STDMETHODCALLTYPE EnumData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [out][in] */ PMETADATA_RECORD pmdrMDData,
|
|
// /* [in] */ DWORD dwMDEnumDataIndex,
|
|
// /* [out] */ DWORD *pdwMDRequiredDataLen) = 0;
|
|
[Fx.Tag.SecurityNote(Critical = "Takes a SecurityCritical parameter.")]
|
|
[SecurityCritical]
|
|
[PreserveSig]
|
|
uint EnumData(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
METADATA_RECORD pmdrMDData,
|
|
uint dwMDEnumDataIndex,
|
|
ref uint pdwMDRequiredDataLen);
|
|
|
|
// virtual /* [local] */ HRESULT STDMETHODCALLTYPE GetAllData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ DWORD dwMDAttributes,
|
|
// /* [in] */ DWORD dwMDUserType,
|
|
// /* [in] */ DWORD dwMDDataType,
|
|
// /* [out] */ DWORD *pdwMDNumDataEntries,
|
|
// /* [out] */ DWORD *pdwMDDataSetNumber,
|
|
// /* [in] */ DWORD dwMDBufferSize,
|
|
// /* [size_is][out] */ unsigned char *pbMDBuffer,
|
|
// /* [out] */ DWORD *pdwMDRequiredBufferSize) = 0;
|
|
[PreserveSig]
|
|
uint GetAllData(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
uint dwMDAttributes,
|
|
uint dwMDUserType,
|
|
uint dwMDDataType,
|
|
ref uint pdwMDNumDataEntries,
|
|
ref uint pdwMDDataSetNumber,
|
|
uint dwMDBufferSize,
|
|
ref uint pdwMDRequiredBufferSize,
|
|
IntPtr ppDataBlob);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE DeleteAllData(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ DWORD dwMDUserType,
|
|
// /* [in] */ DWORD dwMDDataType) = 0;
|
|
[PreserveSig]
|
|
uint DeleteAllData(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
uint dwMDUserType,
|
|
uint dwMDDataType);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE CopyData(
|
|
// /* [in] */ METADATA_HANDLE hMDSourceHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDSourcePath,
|
|
// /* [in] */ METADATA_HANDLE hMDDestHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDDestPath,
|
|
// /* [in] */ DWORD dwMDAttributes,
|
|
// /* [in] */ DWORD dwMDUserType,
|
|
// /* [in] */ DWORD dwMDDataType,
|
|
// /* [in] */ BOOL bMDCopyFlag) = 0;
|
|
[PreserveSig]
|
|
uint CopyData(
|
|
uint hMDSourceHandle,
|
|
string pszMDSourcePath,
|
|
uint hMDDestHandle,
|
|
string pszMDDestPath,
|
|
uint dwMDAttributes,
|
|
uint dwMDUserType,
|
|
uint dwMDDataType,
|
|
int bMDCopyFlag);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE GetDataPaths(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ DWORD dwMDIdentifier,
|
|
// /* [in] */ DWORD dwMDDataType,
|
|
// /* [in] */ DWORD dwMDBufferSize,
|
|
// /* [size_is][out] */ WCHAR *pszBuffer,
|
|
// /* [out] */ DWORD *pdwMDRequiredBufferSize) = 0;
|
|
[PreserveSig]
|
|
uint GetDataPaths(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
uint dwMDIdentifier,
|
|
uint dwMDDataType,
|
|
uint dwMDBufferSize,
|
|
IntPtr pszBuffer,
|
|
ref uint pdwMDRequiredBufferSize);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE OpenKey(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ DWORD dwMDAccessRequested,
|
|
// /* [in] */ DWORD dwMDTimeOut,
|
|
// /* [out] */ PMETADATA_HANDLE phMDNewHandle) = 0;
|
|
[PreserveSig]
|
|
uint OpenKey(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
uint dwMDAccessRequested,
|
|
uint dwMDTimeOut,
|
|
out uint phMDNewHandle);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE CloseKey(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle) = 0;
|
|
[PreserveSig]
|
|
uint CloseKey(
|
|
uint hMDHandle);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE ChangePermissions(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [in] */ DWORD dwMDTimeOut,
|
|
// /* [in] */ DWORD dwMDAccessRequested) = 0;
|
|
[PreserveSig]
|
|
uint ChangePermissions(
|
|
uint hMDHandle,
|
|
uint dwMDTimeOut,
|
|
uint dwMDAccessRequested);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE SaveData( void) = 0;
|
|
[PreserveSig]
|
|
uint SaveData();
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE GetHandleInfo(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [out] */ PMETADATA_HANDLE_INFO pmdhiInfo) = 0;
|
|
[PreserveSig]
|
|
uint GetHandleInfo(
|
|
uint hMDHandle,
|
|
METADATA_HANDLE_INFO pmdhiInfo);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE GetSystemChangeNumber(
|
|
// /* [out] */ DWORD *pdwSystemChangeNumber) = 0;
|
|
[PreserveSig]
|
|
uint GetSystemChangeNumber(
|
|
ref uint pdwSystemChangeNumber);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE GetDataSetNumber(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [out] */ DWORD *pdwMDDataSetNumber) = 0;
|
|
[PreserveSig]
|
|
uint GetDataSetNumber(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
ref uint pdwMDDataSetNumber);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE SetLastChangeTime(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [in] */ PFILETIME pftMDLastChangeTime,
|
|
// /* [in] */ BOOL bLocalTime) = 0;
|
|
[PreserveSig]
|
|
uint SetLastChangeTime(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
ref COMTypes.FILETIME pftMDLastChangeTime,
|
|
int bLocalTime);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE GetLastChangeTime(
|
|
// /* [in] */ METADATA_HANDLE hMDHandle,
|
|
// /* [string][in][unique] */ LPCWSTR pszMDPath,
|
|
// /* [out] */ PFILETIME pftMDLastChangeTime,
|
|
// /* [in] */ BOOL bLocalTime) = 0;
|
|
[PreserveSig]
|
|
uint GetLastChangeTime(
|
|
uint hMDHandle,
|
|
string pszMDPath,
|
|
ref COMTypes.FILETIME pftMDLastChangeTime,
|
|
int bLocalTime);
|
|
|
|
// virtual /* [restricted][local] */ HRESULT STDMETHODCALLTYPE KeyExchangePhase1( void) = 0;
|
|
[PreserveSig]
|
|
uint KeyExchangePhase1();
|
|
|
|
// virtual /* [restricted][local] */ HRESULT STDMETHODCALLTYPE KeyExchangePhase2( void) = 0;
|
|
[PreserveSig]
|
|
uint KeyExchangePhase2();
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE Backup(
|
|
// /* [string][in][unique] */ LPCWSTR pszMDBackupLocation,
|
|
// /* [in] */ DWORD dwMDVersion,
|
|
// /* [in] */ DWORD dwMDFlags) = 0;
|
|
[PreserveSig]
|
|
uint Backup(
|
|
string pszMDBackupLocation,
|
|
uint dwMDVersion,
|
|
uint dwMDFlags);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE Restore(
|
|
// /* [string][in][unique] */ LPCWSTR pszMDBackupLocation,
|
|
// /* [in] */ DWORD dwMDVersion,
|
|
// /* [in] */ DWORD dwMDFlags) = 0;
|
|
[PreserveSig]
|
|
uint Restore(
|
|
string pszMDBackupLocation,
|
|
uint dwMDVersion,
|
|
uint dwMDFlags);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE EnumBackups(
|
|
// /* [size_is][out][in] */ LPWSTR pszMDBackupLocation,
|
|
// /* [out] */ DWORD *pdwMDVersion,
|
|
// /* [out] */ PFILETIME pftMDBackupTime,
|
|
// /* [in] */ DWORD dwMDEnumIndex) = 0;
|
|
[PreserveSig]
|
|
uint EnumBackups(
|
|
string pszMDBackupLocation,
|
|
ref uint pdwMDVersion,
|
|
ref COMTypes.FILETIME pftMDBackupTime,
|
|
uint dwMDEnumIndex);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE DeleteBackup(
|
|
// /* [string][in][unique] */ LPCWSTR pszMDBackupLocation,
|
|
// /* [in] */ DWORD dwMDVersion) = 0;
|
|
[PreserveSig]
|
|
uint DeleteBackup(
|
|
string pszMDBackupLocation,
|
|
uint dwMDVersion);
|
|
|
|
// virtual HRESULT STDMETHODCALLTYPE UnmarshalInterface(
|
|
// /* [out] */ IMSAdminBaseW **piadmbwInterface) = 0;
|
|
[PreserveSig]
|
|
uint UnmarshalInterface(
|
|
ref IMSAdminBase piadmbwInterface);
|
|
|
|
// virtual /* [restricted][local] */ HRESULT STDMETHODCALLTYPE GetServerGuid( void) = 0;
|
|
[PreserveSig]
|
|
uint GetServerGuid(
|
|
ref Guid pServerGuid);
|
|
}
|
|
}
|