|
//------------------------------------------------------------
// 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);
}
}
|