commit b40b82d812801f3b87e56227a2b35018de38b084 Author: zhuyiyi <649091362@qq.com> Date: Thu Feb 20 15:08:30 2025 +0800 first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..81a83c6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +packages/* +.vs/* +UploadWeb/* diff --git a/App_Code/MyNameTransfom.cs b/App_Code/MyNameTransfom.cs new file mode 100644 index 0000000..e1ef439 --- /dev/null +++ b/App_Code/MyNameTransfom.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Web; + +/// +/// Nameing 的摘要说明 +/// + +public class MyNameTransfom : ICSharpCode.SharpZipLib.Core.INameTransform +{ + + + #region INameTransform 成员 + + + public string TransformDirectory(string name) + { + return null; + } + + + public string TransformFile(string name) + { + return Path.GetFileName(name); + } + + + #endregion +} diff --git a/App_Code/UpLoadFile.cs b/App_Code/UpLoadFile.cs new file mode 100644 index 0000000..627c897 --- /dev/null +++ b/App_Code/UpLoadFile.cs @@ -0,0 +1,138 @@ +using EnterpriseDT.Net.Ftp; +using System; +using System.Collections.Generic; +using System.IO; +using System.Web; + +/// +/// Nameing 的摘要说明 +/// + + + + + public class UpLoadFile + { + FTPConnection ftpConnection; + + public Boolean flag; + public static string fileName1; + public static int INV_ORG_ID; + public UpLoadFile() + { + } + + //"192.168.0.187"; + #region 初始化文件传输ftp + void InitFtpConnect() + /// + /// 初始化文件传输ftp + /// + private void InitFtpConnect() + { + flag = false; + if (this.ftpConnection == null) + { + this.ftpConnection = new FTPConnection(); + //this.ftpConnection.ParentControl = this.fQ; + this.ftpConnection.StrictReturnCodes = true; + this.ftpConnection.Timeout = 15000; + + //this.ftpConnection.ServerAddress = "120.76.96.55";// "192.168.0.187";//ftpInfo.FtpSeverIP; + this.ftpConnection.ServerAddress = "101.37.27.113";// "192.168.0.187";//ftpInfo.FtpSeverIP; + this.ftpConnection.ServerPort = 21;//ftpInfo.FtpPort; + this.ftpConnection.UserName = "autoorder";// ftpInfo.FtpUser; + this.ftpConnection.Password = "86435015";// ftpInfo.FtpPassword; + //this.ftpConnection.DataEncoding = System.Text.Encoding.GetEncoding("UTF-8"); + this.ftpConnection.CommandEncoding = System.Text.Encoding.GetEncoding("GBK"); + this.ftpConnection.Uploaded += new FTPFileTransferEventHandler(Uploaded_Finished); + } + } + + string msg = "上传失败"; + int transFileSize = 0; + + public string upLoadFile(string type, string path, string servicePath, string JpgPath, string JpgservicePath) + { + + + ftpConnection.UploadFile(path, servicePath, false);//上传 cdr 或pdf + ftpConnection.UploadFile(JpgPath, JpgservicePath, false);//上传 cdr 或pdf + + return msg; + + } + + + + //修改名字的方法 + #region + private void RenameFile(object sender, FTPFileRenameEventArgs e) + { + //fileName1 原名包括路径 + //fileName2 新名字 + + if (ftpConnection.Exists(fileName1)) + + fileName1 = GetNewFileName(fileName1); + + ftpConnection.RenameFile("原名", fileName1); + + + } + #endregion + #endregion + + void Uploaded_Finished(object objs, FTPFileTransferEventArgs e) + { + msg = "上传成功"; + flag = true; + } + //开始上传 + public bool uploadFilName(string LocaTionPath, string newFilename) + { + + InitFtpConnect(); + if (!ftpConnection.IsConnected) + ftpConnection.Connect(); + //新文件夹名 + this.ftpConnection.UploadFile(LocaTionPath, newFilename); + this.ftpConnection.Close(); + return flag; + } + + #region 下载文件 + public void downFile(string filePath) + { + InitFtpConnect(); + if (!ftpConnection.IsConnected) + ftpConnection.Connect(); + this.ftpConnection.DownloadByteArray(filePath); + + } + #endregion + + + //防止文件重命名 + public static string GetNewFileName(string FileName) + { + Random rand = new Random(); + string newfilename = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + "m" + + DateTime.Now.Day.ToString() + "d" + + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString() + + DateTime.Now.Millisecond.ToString() + + "a" + rand.Next(1000).ToString() + + FileName.Substring(FileName.LastIndexOf("."), FileName.Length - FileName.LastIndexOf(".")); + + return newfilename; + } + + + + + + + + + + } + diff --git a/App_Code/httpHelper.cs b/App_Code/httpHelper.cs new file mode 100644 index 0000000..827273c --- /dev/null +++ b/App_Code/httpHelper.cs @@ -0,0 +1,912 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Net; +using System.IO; +using System.Text.RegularExpressions; +using System.IO.Compression; +using System.Security.Cryptography.X509Certificates; +using System.Net.Security; + + /// + /// Http连接操作帮助类 + /// + public class HttpHelper + { + + #region 预定义方变量 + //默认的编码 + private Encoding encoding = Encoding.Default; + //Post数据编码 + private Encoding postencoding = Encoding.Default; + //HttpWebRequest对象用来发起请求 + private HttpWebRequest request = null; + //获取影响流的数据对象 + private HttpWebResponse response = null; + #endregion + + #region Public + private string _httpUserAgent = ""; + public string HttpUserAgent + { + get { return _httpUserAgent; } + set { _httpUserAgent = value; } + } + + /// + /// 根据相传入的数据,得到相应页面数据 + /// + /// 参数类对象 + /// 返回HttpResult类型 + public HttpResult GetHtml(HttpItem item) + { + //返回参数 + HttpResult result = new HttpResult(); + try + { + //准备参数 + SetRequest(item); + } + catch (Exception ex) + { + result.Cookie = string.Empty; + result.Header = null; + result.Html = ex.Message; + result.StatusDescription = "配置参数时出错:" + ex.Message; + //配置参数时出错 + return result; + } + try + { + //请求数据 + using (response = (HttpWebResponse)request.GetResponse()) + { + GetData(item, result); + } + } + catch (WebException ex) + { + if (ex.Response != null) + { + using (response = (HttpWebResponse)ex.Response) + { + GetData(item, result); + } + } + else + { + result.Html = ex.Message; + } + } + catch (Exception ex) + { + result.Html = ex.Message; + } + if (item.IsToLower) result.Html = result.Html.ToLower(); + return result; + } + #endregion + + #region GetData + + /// + /// 获取数据的并解析的方法 + /// + /// + /// + private void GetData(HttpItem item, HttpResult result) + { + #region base + //获取StatusCode + result.StatusCode = response.StatusCode; + //获取StatusDescription + result.StatusDescription = response.StatusDescription; + //获取最后访问的URl + result.ResponseUri = response.ResponseUri.ToString(); + //获取Headers + result.Header = response.Headers; + //获取CookieCollection + if (response.Cookies != null) result.CookieCollection = response.Cookies; + //获取set-cookie + if (response.Headers["set-cookie"] != null) result.Cookie = response.Headers["set-cookie"]; + #endregion + + #region byte + //处理网页Byte + byte[] ResponseByte = GetByte(); + #endregion + + #region Html + if (ResponseByte != null & ResponseByte.Length > 0) + { + //设置编码 + SetEncoding(item, result, ResponseByte); + //得到返回的HTML + result.Html = encoding.GetString(ResponseByte); + } + else + { + //没有返回任何Html代码 + result.Html = string.Empty; + } + #endregion + } + /// + /// 设置编码 + /// + /// HttpItem + /// HttpResult + /// byte[] + private void SetEncoding(HttpItem item, HttpResult result, byte[] ResponseByte) + { + //是否返回Byte类型数据 + if (item.ResultType == ResultType.Byte) result.ResultByte = ResponseByte; + //从这里开始我们要无视编码了 + if (encoding == null) + { + Match meta = Regex.Match(Encoding.Default.GetString(ResponseByte), " 0) + { + c = meta.Groups[1].Value.ToLower().Trim(); + } + if (c.Length > 2) + { + try + { + encoding = Encoding.GetEncoding(c.Replace("\"", string.Empty).Replace("'", "").Replace(";", "").Replace("iso-8859-1", "gbk").Trim()); + } + catch + { + if (string.IsNullOrEmpty(response.CharacterSet)) + { + encoding = Encoding.UTF8; + } + else + { + encoding = Encoding.GetEncoding(response.CharacterSet); + } + } + } + else + { + if (string.IsNullOrEmpty(response.CharacterSet)) + { + encoding = Encoding.UTF8; + } + else + { + encoding = Encoding.GetEncoding(response.CharacterSet); + } + } + } + } + /// + /// 提取网页Byte + /// + /// + private byte[] GetByte() + { + byte[] ResponseByte = null; + MemoryStream _stream = new MemoryStream(); + //GZIIP处理 + if (response.ContentEncoding != null && response.ContentEncoding.Equals("gzip", StringComparison.InvariantCultureIgnoreCase)) + { + //开始读取流并设置编码方式 + _stream = GetMemoryStream(new GZipStream(response.GetResponseStream(), CompressionMode.Decompress)); + } + else + { + //开始读取流并设置编码方式 + _stream = GetMemoryStream(response.GetResponseStream()); + } + //获取Byte + ResponseByte = _stream.ToArray(); + _stream.Close(); + return ResponseByte; + } + + /// + /// 4.0以下.net版本取数据使用 + /// + /// 流 + private MemoryStream GetMemoryStream(Stream streamResponse) + { + MemoryStream _stream = new MemoryStream(); + int Length = 256; + Byte[] buffer = new Byte[Length]; + int bytesRead = streamResponse.Read(buffer, 0, Length); + while (bytesRead > 0) + { + _stream.Write(buffer, 0, bytesRead); + bytesRead = streamResponse.Read(buffer, 0, Length); + } + return _stream; + } + #endregion + + #region SetRequest + + /// + /// 为请求准备参数 + /// + ///参数列表 + private void SetRequest(HttpItem item) + { + // 验证证书 + SetCer(item); + //设置Header参数 + if (item.Header != null && item.Header.Count > 0) foreach (string key in item.Header.AllKeys) + { + request.Headers.Add(key, item.Header[key]); + } + // 设置代理 + //SetProxy(item); + if (item.ProtocolVersion != null) request.ProtocolVersion = item.ProtocolVersion; + if (!item.Expect100Continue) request.ServicePoint.Expect100Continue = item.Expect100Continue; + //请求方式Get或者Post + request.Method = item.Method; + request.Timeout = item.Timeout; + request.KeepAlive = item.KeepAlive; + request.ReadWriteTimeout = item.ReadWriteTimeout; + if (item.IfModifiedSince != null) request.IfModifiedSince = Convert.ToDateTime(item.IfModifiedSince); + //Accept + request.Accept = item.Accept; + //ContentType返回类型 + request.ContentType = item.ContentType; + //UserAgent客户端的访问类型,包括浏览器版本和操作系统信息 + if (HttpUserAgent != "") request.UserAgent=HttpUserAgent; + else request.UserAgent = item.UserAgent; + // 编码 + encoding = item.Encoding; + //设置安全凭证 + request.Credentials = item.ICredentials; + //设置Cookie + SetCookie(item); + //来源地址 + request.Referer = item.Referer; + //是否执行跳转功能 + request.AllowAutoRedirect = item.Allowautoredirect; + if (item.MaximumAutomaticRedirections > 0) + { + request.MaximumAutomaticRedirections = item.MaximumAutomaticRedirections; + } + //设置Post数据 + SetPostData(item); + //设置最大连接 + if (item.Connectionlimit > 0) request.ServicePoint.ConnectionLimit = item.Connectionlimit; + } + /// + /// 设置证书 + /// + /// + private void SetCer(HttpItem item) + { + if (!string.IsNullOrEmpty(item.CerPath)) + { + //这一句一定要写在创建连接的前面。使用回调的方法进行证书验证。 + ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); + //初始化对像,并设置请求的URL地址 + request = (HttpWebRequest)WebRequest.Create(item.URL); + SetCerList(item); + //将证书添加到请求里 + request.ClientCertificates.Add(new X509Certificate(item.CerPath)); + } + else + { + //初始化对像,并设置请求的URL地址 + request = (HttpWebRequest)WebRequest.Create(item.URL); + SetCerList(item); + } + } + /// + /// 设置多个证书 + /// + /// + private void SetCerList(HttpItem item) + { + if (item.ClentCertificates != null && item.ClentCertificates.Count > 0) + { + foreach (X509Certificate c in item.ClentCertificates) + { + request.ClientCertificates.Add(c); + } + } + } + /// + /// 设置Cookie + /// + /// Http参数 + private void SetCookie(HttpItem item) + { + if (!string.IsNullOrEmpty(item.Cookie)) request.Headers[HttpRequestHeader.Cookie] = item.Cookie; + //设置CookieCollection + if (item.ResultCookieType == ResultCookieType.CookieCollection) + { + request.CookieContainer = new CookieContainer(); + if (item.CookieCollection != null && item.CookieCollection.Count > 0) + request.CookieContainer.Add(item.CookieCollection); + } + } + /// + /// 设置Post数据 + /// + /// Http参数 + private void SetPostData(HttpItem item) + { + //验证在得到结果时是否有传入数据 + if (!request.Method.Trim().ToLower().Contains("get")) + { + if (item.PostEncoding != null) + { + postencoding = item.PostEncoding; + } + byte[] buffer = null; + //写入Byte类型 + if (item.PostDataType == PostDataType.Byte && item.PostdataByte != null && item.PostdataByte.Length > 0) + { + //验证在得到结果时是否有传入数据 + buffer = item.PostdataByte; + }//写入文件 + else if (item.PostDataType == PostDataType.FilePath && !string.IsNullOrEmpty(item.Postdata)) + { + StreamReader r = new StreamReader(item.Postdata, postencoding); + buffer = postencoding.GetBytes(r.ReadToEnd()); + r.Close(); + } //写入字符串 + else if (!string.IsNullOrEmpty(item.Postdata)) + { + buffer = postencoding.GetBytes(item.Postdata); + } + if (buffer != null) + { + request.ContentLength = buffer.Length; + request.GetRequestStream().Write(buffer, 0, buffer.Length); + } + } + } + /// + /// 设置代理 + /// + /// 参数对象 + private void SetProxy(HttpItem item) + { + bool isIeProxy = false; + if (!string.IsNullOrEmpty(item.ProxyIp)) + { + isIeProxy = item.ProxyIp.ToLower().Contains("ieproxy"); + } + if (!string.IsNullOrEmpty(item.ProxyIp) && !isIeProxy) + { + //设置代理服务器 + if (item.ProxyIp.Contains(":")) + { + string[] plist = item.ProxyIp.Split(':'); + WebProxy myProxy = new WebProxy(plist[0].Trim(), Convert.ToInt32(plist[1].Trim())); + //建议连接 + myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd); + //给当前请求对象 + request.Proxy = myProxy; + } + else + { + WebProxy myProxy = new WebProxy(item.ProxyIp, false); + //建议连接 + myProxy.Credentials = new NetworkCredential(item.ProxyUserName, item.ProxyPwd); + //给当前请求对象 + request.Proxy = myProxy; + } + } + else if (isIeProxy) + { + //设置为IE代理 + } + else + { + request.Proxy = item.WebProxy; + } + } + #endregion + + #region private main + /// + /// 回调验证证书问题 + /// + /// 流对象 + /// 证书 + /// X509Chain + /// SslPolicyErrors + /// bool + private bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) { return true; } + #endregion + } + /// + /// Http请求参考类 + /// + public class HttpItem + { + string _URL = string.Empty; + /// + /// 请求URL必须填写 + /// + public string URL + { + get { return _URL; } + set { _URL = value; } + } + string _Method = "GET"; + /// + /// 请求方式默认为GET方式,当为POST方式时必须设置Postdata的值 + /// + public string Method + { + get { return _Method; } + set { _Method = value; } + } + int _Timeout = 100000; + /// + /// 默认请求超时时间 + /// + public int Timeout + { + get { return _Timeout; } + set { _Timeout = value; } + } + int _ReadWriteTimeout = 30000; + /// + /// 默认写入Post数据超时间 + /// + public int ReadWriteTimeout + { + get { return _ReadWriteTimeout; } + set { _ReadWriteTimeout = value; } + } + Boolean _KeepAlive = true; + /// + /// 获取或设置一个值,该值指示是否与 Internet 资源建立持久性连接默认为true。 + /// + public Boolean KeepAlive + { + get { return _KeepAlive; } + set { _KeepAlive = value; } + } + string _Accept = "text/html, application/xhtml+xml, */*"; + /// + /// 请求标头值 默认为text/html, application/xhtml+xml, */* + /// + public string Accept + { + get { return _Accept; } + set { _Accept = value; } + } + string _ContentType = "text/html"; + /// + /// 请求返回类型默认 text/html + /// + public string ContentType + { + get { return _ContentType; } + set { _ContentType = value; } + } + string _UserAgent = "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36"; + /// + /// 客户端访问信息默认Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0) + /// + public string UserAgent + { + get { return _UserAgent; } + set { _UserAgent = value; } + } + Encoding _Encoding = null; + /// + /// 返回数据编码默认为NUll,可以自动识别,一般为utf-8,gbk,gb2312 + /// + public Encoding Encoding + { + get { return _Encoding; } + set { _Encoding = value; } + } + private PostDataType _PostDataType = PostDataType.String; + /// + /// Post的数据类型 + /// + public PostDataType PostDataType + { + get { return _PostDataType; } + set { _PostDataType = value; } + } + string _Postdata = string.Empty; + /// + /// Post请求时要发送的字符串Post数据 + /// + public string Postdata + { + get { return _Postdata; } + set { _Postdata = value; } + } + private byte[] _PostdataByte = null; + /// + /// Post请求时要发送的Byte类型的Post数据 + /// + public byte[] PostdataByte + { + get { return _PostdataByte; } + set { _PostdataByte = value; } + } + private WebProxy _WebProxy; + /// + /// 设置代理对象,不想使用IE默认配置就设置为Null,而且不要设置ProxyIp + /// + public WebProxy WebProxy + { + get { return _WebProxy; } + set { _WebProxy = value; } + } + + CookieCollection cookiecollection = null; + /// + /// Cookie对象集合 + /// + public CookieCollection CookieCollection + { + get { return cookiecollection; } + set { cookiecollection = value; } + } + string _Cookie = string.Empty; + /// + /// 请求时的Cookie + /// + public string Cookie + { + get { return _Cookie; } + set { _Cookie = value; } + } + string _Referer = string.Empty; + /// + /// 来源地址,上次访问地址 + /// + public string Referer + { + get { return _Referer; } + set { _Referer = value; } + } + string _CerPath = string.Empty; + /// + /// 证书绝对路径 + /// + public string CerPath + { + get { return _CerPath; } + set { _CerPath = value; } + } + private Boolean isToLower = false; + /// + /// 是否设置为全文小写,默认为不转化 + /// + public Boolean IsToLower + { + get { return isToLower; } + set { isToLower = value; } + } + private Boolean allowautoredirect = false; + /// + /// 支持跳转页面,查询结果将是跳转后的页面,默认是不跳转 + /// + public Boolean Allowautoredirect + { + get { return allowautoredirect; } + set { allowautoredirect = value; } + } + private int connectionlimit = 1024; + /// + /// 最大连接数 + /// + public int Connectionlimit + { + get { return connectionlimit; } + set { connectionlimit = value; } + } + private string proxyusername = string.Empty; + /// + /// 代理Proxy 服务器用户名 + /// + public string ProxyUserName + { + get { return proxyusername; } + set { proxyusername = value; } + } + private string proxypwd = string.Empty; + /// + /// 代理 服务器密码 + /// + public string ProxyPwd + { + get { return proxypwd; } + set { proxypwd = value; } + } + private string proxyip = string.Empty; + /// + /// 代理 服务IP ,如果要使用IE代理就设置为ieproxy + /// + public string ProxyIp + { + get { return proxyip; } + set { proxyip = value; } + } + private ResultType resulttype = ResultType.String; + /// + /// 设置返回类型String和Byte + /// + public ResultType ResultType + { + get { return resulttype; } + set { resulttype = value; } + } + private WebHeaderCollection header = new WebHeaderCollection(); + /// + /// header对象 + /// + public WebHeaderCollection Header + { + get { return header; } + set { header = value; } + } + + private Version _ProtocolVersion; + + /// + // 获取或设置用于请求的 HTTP 版本。返回结果:用于请求的 HTTP 版本。默认为 System.Net.HttpVersion.Version11。 + /// + public Version ProtocolVersion + { + get { return _ProtocolVersion; } + set { _ProtocolVersion = value; } + } + private Boolean _expect100continue = true; + /// + /// 获取或设置一个 System.Boolean 值,该值确定是否使用 100-Continue 行为。如果 POST 请求需要 100-Continue 响应,则为 true;否则为 false。默认值为 true。 + /// + public Boolean Expect100Continue + { + get { return _expect100continue; } + set { _expect100continue = value; } + } + private X509CertificateCollection _ClentCertificates; + /// + /// 设置509证书集合 + /// + public X509CertificateCollection ClentCertificates + { + get { return _ClentCertificates; } + set { _ClentCertificates = value; } + } + private Encoding _PostEncoding; + /// + /// 设置或获取Post参数编码,默认的为Default编码 + /// + public Encoding PostEncoding + { + get { return _PostEncoding; } + set { _PostEncoding = value; } + } + private ResultCookieType _ResultCookieType = ResultCookieType.String; + /// + /// Cookie返回类型,默认的是只返回字符串类型 + /// + public ResultCookieType ResultCookieType + { + get { return _ResultCookieType; } + set { _ResultCookieType = value; } + } + + private ICredentials _ICredentials = CredentialCache.DefaultCredentials; + /// + /// 获取或设置请求的身份验证信息。 + /// + public ICredentials ICredentials + { + get { return _ICredentials; } + set { _ICredentials = value; } + } + /// + /// 设置请求将跟随的重定向的最大数目 + /// + private int _MaximumAutomaticRedirections; + + public int MaximumAutomaticRedirections + { + get { return _MaximumAutomaticRedirections; } + set { _MaximumAutomaticRedirections = value; } + } + + private DateTime? _IfModifiedSince = null; + /// + /// 获取和设置IfModifiedSince,默认为当前日期和时间 + /// + public DateTime? IfModifiedSince + { + get { return _IfModifiedSince; } + set { _IfModifiedSince = value; } + } + + } + /// + /// Http返回参数类 + /// + public class HttpResult + { + private string _Cookie; + /// + /// Http请求返回的Cookie + /// + public string Cookie + { + get { return _Cookie; } + set { _Cookie = value; } + } + + private CookieCollection _CookieCollection; + /// + /// Cookie对象集合 + /// + public CookieCollection CookieCollection + { + get { return _CookieCollection; } + set { _CookieCollection = value; } + } + private string _html = string.Empty; + /// + /// 返回的String类型数据 只有ResultType.String时才返回数据,其它情况为空 + /// + public string Html + { + get { return _html; } + set { _html = value; } + } + private byte[] _ResultByte; + /// + /// 返回的Byte数组 只有ResultType.Byte时才返回数据,其它情况为空 + /// + public byte[] ResultByte + { + get { return _ResultByte; } + set { _ResultByte = value; } + } + + private Dictionary _dicHeaders; + public Dictionary dicHeaders + { + get { return _dicHeaders; } + set { _dicHeaders = value; } + } + + private Dictionary _setCookies=new Dictionary(); + public Dictionary setCookies + { + get { return _setCookies; } + set { _setCookies = value; } + } + + private string _lastCookie; + public string lastCookies + { + get { return _lastCookie; } + set { _lastCookie = value; } + } + + private string _location; + public string Location + { + get { return _location; } + set { _location = value; } + } + + private WebHeaderCollection _Header; + /// + /// header对象 + /// + public WebHeaderCollection Header + { + get { return _Header; } + set { _Header = value; } + } + private string _StatusDescription; + /// + /// 返回状态说明 + /// + public string StatusDescription + { + get { return _StatusDescription; } + set { _StatusDescription = value; } + } + private HttpStatusCode _StatusCode; + /// + /// 返回状态码,默认为OK + /// + public HttpStatusCode StatusCode + { + get { return _StatusCode; } + set { _StatusCode = value; } + } + /// + /// 最后访问的URl + /// + public string ResponseUri { get; set; } + /// + /// 获取重定向的URl + /// + public string RedirectUrl + { + get + { + try + { + if (Header != null && Header.Count > 0) + { + if (Header["location"]!=null) + { + string locationurl = Header["location"].ToString().ToLower(); + + if (!string.IsNullOrEmpty(locationurl)) + { + bool b = locationurl.StartsWith("http://") || locationurl.StartsWith("https://"); + if (!b) + { + locationurl = new Uri(new Uri(ResponseUri), locationurl).AbsoluteUri; + } + } + return locationurl; + } + } + } + catch { } + return string.Empty; + } + } + } + /// + /// 返回类型 + /// + public enum ResultType + { + /// + /// 表示只返回字符串 只有Html有数据 + /// + String, + /// + /// 表示返回字符串和字节流 ResultByte和Html都有数据返回 + /// + Byte + } + /// + /// Post的数据格式默认为string + /// + public enum PostDataType + { + /// + /// 字符串类型,这时编码Encoding可不设置 + /// + String, + /// + /// Byte类型,需要设置PostdataByte参数的值编码Encoding可设置为空 + /// + Byte, + /// + /// 传文件,Postdata必须设置为文件的绝对路径,必须设置Encoding的值 + /// + FilePath + } + /// + /// Cookie返回类型 + /// + public enum ResultCookieType + { + /// + /// 只返回字符串类型的Cookie + /// + String, + /// + /// CookieCollection格式的Cookie集合同时也返回String类型的cookie + /// + CookieCollection + } diff --git a/App_Data/PublishProfiles/FolderProfile.pubxml b/App_Data/PublishProfiles/FolderProfile.pubxml new file mode 100644 index 0000000..1edc752 --- /dev/null +++ b/App_Data/PublishProfiles/FolderProfile.pubxml @@ -0,0 +1,23 @@ + + + + + true + false + Debug + Any CPU + true + FileSystem + G:\git\upload-release + FileSystem + <_TargetId>Folder + + true + false + false + CreateSeparateAssembly + true + + \ No newline at end of file diff --git a/App_Data/PublishProfiles/FolderProfile.pubxml.user b/App_Data/PublishProfiles/FolderProfile.pubxml.user new file mode 100644 index 0000000..d67c8a4 --- /dev/null +++ b/App_Data/PublishProfiles/FolderProfile.pubxml.user @@ -0,0 +1,10 @@ + + + + + True|2025-01-20T07:50:57.4911021Z; + + + \ No newline at end of file diff --git a/Bin/7z.dll b/Bin/7z.dll new file mode 100644 index 0000000..b25da33 Binary files /dev/null and b/Bin/7z.dll differ diff --git a/Bin/7za.dll b/Bin/7za.dll new file mode 100644 index 0000000..e8d01c2 Binary files /dev/null and b/Bin/7za.dll differ diff --git a/Bin/7zxa.dll b/Bin/7zxa.dll new file mode 100644 index 0000000..03e2469 Binary files /dev/null and b/Bin/7zxa.dll differ diff --git a/Bin/Aspose.Imaging.dll b/Bin/Aspose.Imaging.dll new file mode 100644 index 0000000..7ed3e86 Binary files /dev/null and b/Bin/Aspose.Imaging.dll differ diff --git a/Bin/BizCom.dll b/Bin/BizCom.dll new file mode 100644 index 0000000..a72c341 Binary files /dev/null and b/Bin/BizCom.dll differ diff --git a/Bin/BizCom.pdb b/Bin/BizCom.pdb new file mode 100644 index 0000000..ab64306 Binary files /dev/null and b/Bin/BizCom.pdb differ diff --git a/Bin/Castle.ActiveRecord.dll b/Bin/Castle.ActiveRecord.dll new file mode 100644 index 0000000..7232faf Binary files /dev/null and b/Bin/Castle.ActiveRecord.dll differ diff --git a/Bin/Castle.Components.Validator.dll b/Bin/Castle.Components.Validator.dll new file mode 100644 index 0000000..a3d8a0e Binary files /dev/null and b/Bin/Castle.Components.Validator.dll differ diff --git a/Bin/Castle.Core.dll b/Bin/Castle.Core.dll new file mode 100644 index 0000000..0207bae Binary files /dev/null and b/Bin/Castle.Core.dll differ diff --git a/Bin/CorelDraw.tlb b/Bin/CorelDraw.tlb new file mode 100644 index 0000000..114c5d1 Binary files /dev/null and b/Bin/CorelDraw.tlb differ diff --git a/Bin/DrvInterface.dll b/Bin/DrvInterface.dll new file mode 100644 index 0000000..269fb42 Binary files /dev/null and b/Bin/DrvInterface.dll differ diff --git a/Bin/ICSharpCode.SharpZipLib.dll b/Bin/ICSharpCode.SharpZipLib.dll new file mode 100644 index 0000000..fe643eb Binary files /dev/null and b/Bin/ICSharpCode.SharpZipLib.dll differ diff --git a/Bin/ICSharpCode.SharpZipLib.dll.refresh b/Bin/ICSharpCode.SharpZipLib.dll.refresh new file mode 100644 index 0000000..f05f596 Binary files /dev/null and b/Bin/ICSharpCode.SharpZipLib.dll.refresh differ diff --git a/Bin/Iesi.Collections.dll b/Bin/Iesi.Collections.dll new file mode 100644 index 0000000..848ca52 Binary files /dev/null and b/Bin/Iesi.Collections.dll differ diff --git a/Bin/Interop.CorelDRAW.dll b/Bin/Interop.CorelDRAW.dll new file mode 100644 index 0000000..988300a Binary files /dev/null and b/Bin/Interop.CorelDRAW.dll differ diff --git a/Bin/Interop.VGCore.dll b/Bin/Interop.VGCore.dll new file mode 100644 index 0000000..36688fc Binary files /dev/null and b/Bin/Interop.VGCore.dll differ diff --git a/Bin/Microsoft.WindowsAPICodePack.Shell.dll b/Bin/Microsoft.WindowsAPICodePack.Shell.dll new file mode 100644 index 0000000..8c6d5cf Binary files /dev/null and b/Bin/Microsoft.WindowsAPICodePack.Shell.dll differ diff --git a/Bin/Microsoft.WindowsAPICodePack.Shell.dll.refresh b/Bin/Microsoft.WindowsAPICodePack.Shell.dll.refresh new file mode 100644 index 0000000..e2cc298 Binary files /dev/null and b/Bin/Microsoft.WindowsAPICodePack.Shell.dll.refresh differ diff --git a/Bin/Microsoft.WindowsAPICodePack.Shell.xml b/Bin/Microsoft.WindowsAPICodePack.Shell.xml new file mode 100644 index 0000000..ef2b05c --- /dev/null +++ b/Bin/Microsoft.WindowsAPICodePack.Shell.xml @@ -0,0 +1,25496 @@ + + + + Microsoft.WindowsAPICodePack.Shell + + + + + Provides extension methods for raising events safely. + + + + + Safely raises an event using EventArgs.Empty + + EventHandler to raise + Event sender + + + + Safely raises an event. + + Type of event args + EventHandler<T> to raise + Event sender + Event args + + + + Safely raises an event using EventArgs.Empty + + EventHandler<EventArgs> to raise + Event sender + + + + A wrapper for the native POINT structure. + + + + + Initialize the NativePoint + + The x coordinate of the point. + The y coordinate of the point. + + + + Determines if two NativePoints are equal. + + First NativePoint + Second NativePoint + True if first NativePoint is equal to the second; false otherwise. + + + + Determines if two NativePoints are not equal. + + First NativePoint + Second NativePoint + True if first NativePoint is not equal to the second; false otherwise. + + + + Determines if this NativePoint is equal to another. + + Another NativePoint to compare + True if this NativePoint is equal obj; false otherwise. + + + + Gets a hash code for the NativePoint. + + Hash code for the NativePoint + + + + The X coordinate of the point + + + + + The Y coordinate of the point + + + + + A wrapper for a RECT struct + + + + + Creates a new NativeRect initialized with supplied values. + + Position of left edge + Position of top edge + Position of right edge + Position of bottom edge + + + + Determines if two NativeRects are equal. + + First NativeRect + Second NativeRect + True if first NativeRect is equal to second; false otherwise. + + + + Determines if two NativeRects are not equal + + First NativeRect + Second NativeRect + True if first is not equal to second; false otherwise. + + + + Determines if the NativeRect is equal to another Rect. + + Another NativeRect to compare + True if this NativeRect is equal to the one provided; false otherwise. + + + + Creates a hash code for the NativeRect + + Returns hash code for this NativeRect + + + + Position of left edge + + + + + Position of top edge + + + + + Position of right edge + + + + + Position of bottom edge + + + + + An exception thrown when an error occurs while dealing with ShellObjects. + + + + + Default constructor. + + + + + Initializes a new exception using an HResult + + HResult error + + + + Initializes an excpetion with a custom message. + + Custom message + + + + Initializes an exception with custom message and inner exception. + + Custom message + The original exception that preceded this exception + + + + Initializes an exception with custom message and error code. + + Custom message + HResult error code + + + + Initializes an exception with custom message and error code. + + + + + + + Initializes an exception with custom message and inner exception. + + HRESULT of an operation + + + + Initializes an exception from serialization info and a context. + + + + + + + A folder in the Shell Namespace + + + + + Represents the base class for all types of folders (filesystem and non filesystem) + + + + + Represents the base class for all types of Shell "containers". Any class deriving from this class + can contain other ShellObjects (e.g. ShellFolder, FileSystemKnownFolder, ShellLibrary, etc) + + + + + The base class for all Shell objects in Shell Namespace. + + + + + Creates a ShellObject subclass given a parsing name. + For file system items, this method will only accept absolute paths. + + The parsing name of the object. + A newly constructed ShellObject object. + + + + Internal member to keep track of the native IShellItem2 + + + + + Parsing name for this Object e.g. c:\Windows\file.txt, + or ::{Some Guid} + + + + + A friendly name for this object that' suitable for display + + + + + PID List (PIDL) for this object + + + + + Updates the native shell item that maps to this shell object. This is necessary when the shell item + changes after the shell object has been created. Without this method call, the retrieval of properties will + return stale data. + + Bind context object + + + + Overrides object.ToString() + + A string representation of the object. + + + + Returns the display name of the ShellFolder object. DisplayNameType represents one of the + values that indicates how the name should look. + See for a list of possible values. + + A disaply name type. + A string. + + + + Release the native and managed objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects. + + + + + Implement the finalizer. + + + + + Returns the hash code of the object. + + + + + + Determines if two ShellObjects are identical. + + The ShellObject to comare this one to. + True if the ShellObjects are equal, false otherwise. + + + + Returns whether this object is equal to another. + + The object to compare against. + Equality result. + + + + Implements the == (equality) operator. + + First object to compare. + Second object to compare. + True if leftShellObject equals rightShellObject; false otherwise. + + + + Implements the != (inequality) operator. + + First object to compare. + Second object to compare. + True if leftShellObject does not equal leftShellObject; false otherwise. + + + + Indicates whether this feature is supported on the current platform. + + + + + Return the native ShellFolder object as newer IShellItem2 + + If the native object cannot be created. + The ErrorCode member will contain the external error code. + + + + Return the native ShellFolder object + + + + + Gets access to the native IPropertyStore (if one is already + created for this item and still valid. This is usually done by the + ShellPropertyWriter class. The reference will be set to null + when the writer has been closed/commited). + + + + + Gets an object that allows the manipulation of ShellProperties for this shell item. + + + + + Gets the parsing name for this ShellItem. + + + + + Gets the normal display for this ShellItem. + + + + + Gets the PID List (PIDL) for this ShellItem. + + + + + Gets a value that determines if this ShellObject is a link or shortcut. + + + + + Gets a value that determines if this ShellObject is a file system object. + + + + + Gets the thumbnail of the ShellObject. + + + + + Gets the parent ShellObject. + Returns null if the object has no parent, i.e. if this object is the Desktop folder. + + + + + Release resources + + True indicates that this is being called from Dispose(), rather than the finalizer. + + + + Enumerates through contents of the ShellObjectContainer + + Enumerated contents + + + + Constructs a new ShellFileSystemFolder object given a folder path + + The folder path + ShellFileSystemFolder created from the given folder path. + + + + The path for this Folder + + + + + A refence to an icon resource + + + + + Overloaded constructor takes in the module name and resource id for the icon reference. + + String specifying the name of an executable file, DLL, or icon file + Zero-based index of the icon + + + + Overloaded constructor takes in the module name and resource id separated by a comma. + + Reference path for the icon consiting of the module name and resource id. + + + + Implements the == (equality) operator. + + First object to compare. + Second object to compare. + True if icon1 equals icon1; false otherwise. + + + + Implements the != (unequality) operator. + + First object to compare. + Second object to compare. + True if icon1 does not equals icon1; false otherwise. + + + + Determines if this object is equal to another. + + The object to compare + Returns true if the objects are equal; false otherwise. + + + + Generates a nearly unique hashcode for this structure. + + A hash code. + + + + String specifying the name of an executable file, DLL, or icon file + + + + + Zero-based index of the icon + + + + + Reference to a specific icon within a EXE, DLL or icon file. + + + + + Exposes properties and methods for retrieving information about a search condition. + + + + + Retrieves an array of the sub-conditions. + + + + + + + + + + Release the native objects. + + + + + Release the native objects. + + + + + + The name of a property to be compared or NULL for an unspecified property. + + + + + The property key for the property that is to be compared. + + + + + A value (in format) to which the property is compared. + + + + + Search condition operation to be performed on the property/value combination. + See for more details. + + + + + Represents the condition type for the given node. + + + + + Provides methods for creating or resolving a condition tree + that was obtained by parsing a query string. + + + + + Creates a leaf condition node that represents a comparison of property value and constant value. + + The name of a property to be compared, or null for an unspecified property. + The locale name of the leaf node is LOCALE_NAME_USER_DEFAULT. + The constant value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and constant value. + Overload method takes a DateTime parameter for the comparison value. + + The name of a property to be compared, or null for an unspecified property. + The locale name of the leaf node is LOCALE_NAME_USER_DEFAULT. + The DateTime value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Integer value. + + The name of a property to be compared, or null for an unspecified property. + The locale name of the leaf node is LOCALE_NAME_USER_DEFAULT. + The Integer value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Boolean value. + + The name of a property to be compared, or null for an unspecified property. + The locale name of the leaf node is LOCALE_NAME_USER_DEFAULT. + The Boolean value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Floating Point value. + + The name of a property to be compared, or null for an unspecified property. + The locale name of the leaf node is LOCALE_NAME_USER_DEFAULT. + The Floating Point value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and constant value. + + The property to be compared. + The constant value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and constant value. + Overload method takes a DateTime parameter for the comparison value. + + The property to be compared. + The DateTime value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Boolean value. + Overload method takes a DateTime parameter for the comparison value. + + The property to be compared. + The boolean value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Floating Point value. + Overload method takes a DateTime parameter for the comparison value. + + The property to be compared. + The Floating Point value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a leaf condition node that represents a comparison of property value and Integer value. + Overload method takes a DateTime parameter for the comparison value. + + The property to be compared. + The Integer value against which the property value should be compared. + Specific condition to be used when comparing the actual value and the expected value of the given property + SearchCondition based on the given parameters + + The search will only work for files that are indexed, as well as the specific properties are indexed. To find + the properties that are indexed, look for the specific property's property description and + property for IsQueryable flag. + + + + + Creates a condition node that is a logical conjunction ("AND") or disjunction ("OR") + of a collection of subconditions. + + The SearchConditionType of the condition node. + Must be either AndCondition or OrCondition. + TRUE to logically simplify the result, if possible; + then the result will not necessarily to be of the specified kind. FALSE if the result should + have exactly the prescribed structure. An application that plans to execute a query based on the + condition tree would typically benefit from setting this parameter to TRUE. + Array of subconditions + New SearchCondition based on the operation + + + + Creates a condition node that is a logical negation (NOT) of another condition + (a subnode of this node). + + SearchCondition node to be negated. + True to logically simplify the result if possible; False otherwise. + In a query builder scenario, simplyfy should typically be set to false. + New SearchCondition + + + + Parses an input string that contains Structured Query keywords (using Advanced Query Syntax + or Natural Query Syntax) and produces a SearchCondition object. + + The query to be parsed + Search condition resulting from the query + For more information on structured query syntax, visit http://msdn.microsoft.com/en-us/library/bb233500.aspx and + http://www.microsoft.com/windows/products/winfamily/desktopsearch/technicalresources/advquery.mspx + + + + Parses an input string that contains Structured Query keywords (using Advanced Query Syntax + or Natural Query Syntax) and produces a SearchCondition object. + + The query to be parsed + The culture used to select the localized language for keywords. + Search condition resulting from the query + For more information on structured query syntax, visit http://msdn.microsoft.com/en-us/library/bb233500.aspx and + http://www.microsoft.com/windows/products/winfamily/desktopsearch/technicalresources/advquery.mspx + + + + Create and modify search folders. + + + + + Represents the base class for all search-related classes. + + + + + Create a simple search folder. Once the appropriate parameters are set, + the search folder can be enumerated to get the search results. + + Specific condition on which to perform the search (property and expected value) + List of folders/paths to perform the search on. These locations need to be indexed by the system. + + + + Create a simple search folder. Once the appropiate parameters are set, + the search folder can be enumerated to get the search results. + + Specific condition on which to perform the search (property and expected value) + List of folders/paths to perform the search on. These locations need to be indexed by the system. + + + + Creates a list of stack keys, as specified. If this method is not called, + by default the folder will not be stacked. + + Array of canonical names for properties on which the folder is stacked. + If one of the given canonical names is invalid. + + + + Creates a list of stack keys, as specified. If this method is not called, + by default the folder will not be stacked. + + Array of property keys on which the folder is stacked. + + + + Sets the search folder display name. + + + + + Sets the search folder icon size. + The default settings are based on the FolderTypeID which is set by the + SearchFolder::SetFolderTypeID method. + + + + + Sets a search folder type ID, as specified. + + + + + Sets folder logical view mode. The default settings are based on the FolderTypeID which is set + by the SearchFolder::SetFolderTypeID method. + + The logical view mode to set. + + + + Creates a new column list whose columns are all visible, + given an array of PropertyKey structures. The default is based on FolderTypeID. + + This property may not work correctly with the ExplorerBrowser control. + + + + Creates a list of sort column directions, as specified. + + This property may not work correctly with the ExplorerBrowser control. + + + + Sets a group column, as specified. If no group column is specified, no grouping occurs. + + This property may not work correctly with the ExplorerBrowser control. + + + + Gets the of the search. + When this property is not set, the resulting search will have no filters applied. + + + + + Gets the search scope, as specified using an array of locations to search. + The search will include this location and all its subcontainers. The default is FOLDERID_Profile + + + + + A file in the Shell Namespace + + + + + Constructs a new ShellFile object given a file path + + The file or folder path + ShellFile object created using given file path. + + + + The path for this file + + + + + + + + + + + + + + + + A helper class for Shell Objects + + + + + Creates a ShellObject given a native IShellItem interface + + + A newly constructed ShellObject object + + + + Creates a ShellObject given a parsing name + + + A newly constructed ShellObject object + + + + Constructs a new Shell object from IDList pointer + + + + + + + Constructs a new Shell object from IDList pointer + + + + + + + + Represents a thumbnail or an icon for a ShellObject. + + + + + Native shellItem + + + + + Internal member to keep track of the current size + + + + + Internal constructor that takes in a parent ShellObject. + + + + + + Gets or sets the default size of the thumbnail or icon. The default is 32x32 pixels for icons and + 256x256 pixels for thumbnails. + + If the size specified is larger than the maximum size of 1024x1024 for thumbnails and 256x256 for icons, + an is thrown. + + + + + Gets the thumbnail or icon image in format. + Null is returned if the ShellObject does not have a thumbnail or icon image. + + + + + Gets the thumbnail or icon image in format. + Null is returned if the ShellObject does not have a thumbnail or icon image. + + + + + Gets the thumbnail or icon image in format. + Null is returned if the ShellObject does not have a thumbnail or icon image. + + + + + Gets the thumbnail or icon in small size and format. + + + + + Gets the thumbnail or icon in small size and format. + + + + + Gets the thumbnail or icon in small size and format. + + + + + Gets the thumbnail or icon in Medium size and format. + + + + + Gets the thumbnail or icon in medium size and format. + + + + + Gets the thumbnail or icon in Medium size and format. + + + + + Gets the thumbnail or icon in large size and format. + + + + + Gets the thumbnail or icon in large size and format. + + + + + Gets the thumbnail or icon in Large size and format. + + + + + Gets the thumbnail or icon in extra large size and format. + + + + + Gets the thumbnail or icon in Extra Large size and format. + + + + + Gets the thumbnail or icon in Extra Large size and format. + + + + + Gets or sets a value that determines if the current retrieval option is cache or extract, cache only, or from memory only. + The default is cache or extract. + + + + + Gets or sets a value that determines if the current format option is thumbnail or icon, thumbnail only, or icon only. + The default is thumbnail or icon. + + + + + Gets or sets a value that determines if the user can manually stretch the returned image. + The default value is false. + + + For example, if the caller passes in 80x80 a 96x96 thumbnail could be returned. + This could be used as a performance optimization if the caller will need to stretch + the image themselves anyway. Note that the Shell implementation performs a GDI stretch blit. + If the caller wants a higher quality image stretch, they should pass this flag and do it themselves. + + + + + An ennumerable list of ShellObjects + + + + + Creates a ShellObject collection from an IShellItemArray + + IShellItemArray pointer + Indicates whether the collection shouldbe read-only or not + + + + Creates a ShellObjectCollection from an IDataObject passed during Drop operation. + + An object that implements the IDataObject COM interface. + ShellObjectCollection created from the given IDataObject + + + + Constructs an empty ShellObjectCollection + + + + + Finalizer + + + + + Standard Dispose pattern + + + + + Standard Dispose patterns + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Collection enumeration + + + + + + Builds the data for the CFSTR_SHELLIDLIST Drag and Clipboard data format from the + ShellObjects in the collection. + + A memory stream containing the drag/drop data. + + + + Returns the index of a particualr shell object in the collection + + The item to search for. + The index of the item found, or -1 if not found. + + + + Inserts a new shell object into the collection. + + The index at which to insert. + The item to insert. + + + + Removes the specified ShellObject from the collection + + The index to remove at. + + + + Adds a ShellObject to the collection, + + The ShellObject to add. + + + + Clears the collection of ShellObjects. + + + + + Determines if the collection contains a particular ShellObject. + + The ShellObject. + true, if the ShellObject is in the list, false otherwise. + + + + Copies the ShellObjects in the collection to a ShellObject array. + + The destination to copy to. + The index into the array at which copying will commence. + + + + Removes a particular ShellObject from the list. + + The ShellObject to remove. + True if the item could be removed, false otherwise. + + + + Allows for enumeration through the list of ShellObjects in the collection. + + The IEnumerator interface to use for enumeration. + + + + Item count + + + + + The collection indexer + + The index of the item to retrieve. + The ShellObject at the specified index + + + + Retrieves the number of ShellObjects in the collection + + + + + If true, the contents of the collection are immutable. + + + + + Defines the read-only properties for default shell icon sizes. + + + + + The small size property for a 16x16 pixel Shell Icon. + + + + + The medium size property for a 32x32 pixel Shell Icon. + + + + + The large size property for a 48x48 pixel Shell Icon. + + + + + The extra-large size property for a 256x256 pixel Shell Icon. + + + + + The maximum size for a Shell Icon, 256x256 pixels. + + + + + Defines the read-only properties for default shell thumbnail sizes. + + + + + Gets the small size property for a 32x32 pixel Shell Thumbnail. + + + + + Gets the medium size property for a 96x96 pixel Shell Thumbnail. + + + + + Gets the large size property for a 256x256 pixel Shell Thumbnail. + + + + + Gets the extra-large size property for a 1024x1024 pixel Shell Thumbnail. + + + + + Maximum size for the Shell Thumbnail, 1024x1024 pixels. + + + + + Stores information about how to sort a column that is displayed in the folder view. + + + + + Creates a sort column with the specified direction for the given property. + + Property key for the property that the user will sort. + The direction in which the items are sorted. + + + + Implements the == (equality) operator. + + First object to compare. + Second object to compare. + True if col1 equals col2; false otherwise. + + + + Implements the != (unequality) operator. + + First object to compare. + Second object to compare. + True if col1 does not equals col1; false otherwise. + + + + Determines if this object is equal to another. + + The object to compare + Returns true if the objects are equal; false otherwise. + + + + Generates a nearly unique hashcode for this structure. + + A hash code. + + + + The ID of the column by which the user will sort. A PropertyKey structure. + For example, for the "Name" column, the property key is PKEY_ItemNameDisplay or + . + + + + + The direction in which the items are sorted. + + + + + Implements a CommandLink button that can be used in + WinForms user interfaces. + + + + + Creates a new instance of this class. + + + + + Gets a System.Windows.Forms.CreateParams on the base class when + creating a window. + + + + + Increase default width. + + + + + Specifies the supporting note text + + + + + Enable shield icon to be set at design-time. + + + + + Indicates whether this feature is supported on the current platform. + + + + + Implements a CommandLink button that can be used in WPF user interfaces. + + + CommandLink + + + + + Creates a new instance of this class. + + + + + InitializeComponent + + + + + Routed UI command to use for this button + + + + + Occurs when the control is clicked. + + + + + Specifies the main instruction text + + + + + Specifies the supporting note text + + + + + Icon to set for the command link button + + + + + Indicates if the button is in a checked state + + + + + Occurs when a property value changes. + + + + + Indicates whether this feature is supported on the current platform. + + + + + Internal class that contains interop declarations for + functions that are not benign and are performance critical. + + + + + Event argument for The GlassAvailabilityChanged event + + + + + The new GlassAvailable state + + + + + Windows Glass Form + Inherit from this form to be able to enable glass on Windows Form + + + + + Makes the background of current window transparent + + + + + Excludes a Control from the AeroGlass frame. + + The control to exclude. + Many non-WPF rendered controls (i.e., the ExplorerBrowser control) will not + render properly on top of an AeroGlass frame. + + + + Resets the AeroGlass exclusion area. + + + + + Catches the DWM messages to this window and fires the appropriate event. + + + + + + Initializes the Form for AeroGlass + + The arguments for this event + + + + Overide OnPaint to paint the background as black. + + PaintEventArgs + + + + Get determines if AeroGlass is enabled on the desktop. Set enables/disables AreoGlass on the desktop. + + + + + Fires when the availability of Glass effect changes. + + + + + WPF Glass Window + Inherit from this window class to enable glass on a WPF window + + + + + Makes the background of current window transparent from both Wpf and Windows Perspective + + + + + Excludes a UI element from the AeroGlass frame. + + The element to exclude. + Many non-WPF rendered controls (i.e., the ExplorerBrowser control) will not + render properly on top of an AeroGlass frame. + + + + Resets the AeroGlass exclusion area. + + + + + OnSourceInitialized + Override SourceInitialized to initialize windowHandle for this window. + A valid windowHandle is available only after the sourceInitialized is completed + + EventArgs + + + + Get determines if AeroGlass is enabled on the desktop. Set enables/disables AreoGlass on the desktop. + + + + + Fires when the availability of Glass effect changes. + + + + + An exception thrown when an error occurs while dealing with Control objects. + + + + + Default constructor. + + + + + Initializes an excpetion with a custom message. + + + + + + Initializes an exception with custom message and inner exception. + + + + + + + Initializes an exception with custom message and error code. + + + + + + + Initializes an exception with custom message and error code. + + + + + + + Initializes an exception from serialization info and a context. + + + + + + + This class is a wrapper around the Windows Explorer Browser control. + + + + + Clears the Explorer Browser of existing content, fills it with + content from the specified container, and adds a new point to the Travel Log. + + The shell container to navigate to. + Will throw if navigation fails for any other reason. + + + + Navigates within the navigation log. This does not change the set of + locations in the navigation log. + + Forward of Backward + True if the navigation succeeded, false if it failed for any reason. + + + + Navigate within the navigation log. This does not change the set of + locations in the navigation log. + + An index into the navigation logs Locations collection. + True if the navigation succeeded, false if it failed for any reason. + + + + Initializes the ExplorerBorwser WinForms wrapper. + + + + + Displays a placeholder for the explorer browser in design mode + + Contains information about the paint event. + + + + Creates and initializes the native ExplorerBrowser control + + + + + Sizes the native control to match the WinForms control wrapper. + + Contains information about the size changed event. + + + + Cleans up the explorer browser events+object when the window is being taken down. + + An EventArgs that contains event data. + + + + + + calling service + requested interface guid + caller-allocated memory for interface pointer + + + + + Controls the visibility of the explorer borwser panes + + a guid identifying the pane + the pane state desired + + + + + Returns the current view mode of the browser + + + + + + Gets the IFolderView2 interface from the explorer browser. + + + + + + Gets the selected items in the explorer browser as an IShellItemArray + + + + + + Gets the items in the ExplorerBrowser as an IShellItemArray + + + + + + Options that control how the ExplorerBrowser navigates + + + + + Options that control how the content of the ExplorerBorwser looks + + + + + The set of ShellObjects in the Explorer Browser + + + + + The set of selected ShellObjects in the Explorer Browser + + + + + Contains the navigation history of the ExplorerBrowser + + + + + The name of the property bag used to persist changes to the ExplorerBrowser's view state. + + + + + Fires when the SelectedItems collection changes. + + + + + Fires when the Items colection changes. + + + + + Fires when a navigation has been initiated, but is not yet complete. + + + + + Fires when a navigation has been 'completed': no NavigationPending listener + has cancelled, and the ExplorerBorwser has created a new view. The view + will be populated with new items asynchronously, and ItemsChanged will be + fired to reflect this some time later. + + + + + Fires when either a NavigationPending listener cancels the navigation, or + if the operating system determines that navigation is not possible. + + + + + Fires when the ExplorerBorwser view has finished enumerating files. + + + + + Fires when the item selected in the view has changed (i.e., a rename ). + This is not the same as SelectionChanged. + + + + + Interaction logic for ExplorerBrowser.xaml + + + ExplorerBrowser + + + + + Hosts the ExplorerBrowser WinForms wrapper in this control + + + + + To avoid the 'Dispatcher processing has been suspended' InvalidOperationException on Win7, + the ExplorerBorwser native control is initialized after this control is fully loaded. + + + + + + + Map changes to the CLR flags to the dependency properties + + + + + + + Synchronize NavigationLog collection to dependency collection + + + + + + + Synchronize SelectedItems collection to dependency collection + + + + + + + The items in the ExplorerBrowser window + + + + + The NavigationLog + + + + + The selected items in the ExplorerBrowser window + + + + + The DependencyProperty for the NavigationTarget property + + + + + Disposes the class + + + + + Disposes the browser. + + + + + + InitializeComponent + + + + + The underlying WinForms control + + + + + The items in the ExplorerBrowser window + + + + + The selected items in the ExplorerBrowser window + + + + + The selected items in the ExplorerBrowser window + + + + + The location the explorer browser is navigating to + + + + + The view should be left-aligned. + + + + + Automatically arrange the elements in the view. + + + + + Turns on check mode for the view + + + + + When the view is in "tile view mode" the layout of a single item should be extended to the width of the view. + + + + + When an item is selected, the item and all its sub-items are highlighted. + + + + + The view should not display file names + + + + + The view should not save view state in the browser. + + + + + Do not display a column header in the view in any view mode. + + + + + Only show the column header in details view mode. + + + + + The view should not display icons. + + + + + Do not show subfolders. + + + + + Navigate with a single click + + + + + Do not allow more than a single item to be selected. + + + + + The size of the thumbnails in the explorer browser + + + + + The various view modes of the explorer browser control + + + + + Always navigate, even if you are attempting to navigate to the current folder. + + + + + Do not navigate further than the initial navigation. + + + + + Show/Hide the AdvancedQuery pane on subsequent navigation + + + + + Show/Hide the Commands pane on subsequent navigation + + + + + Show/Hide the Organize menu in the Commands pane on subsequent navigation + + + + + Show/Hide the View menu in the Commands pane on subsequent navigation + + + + + Show/Hide the Details pane on subsequent navigation + + + + + Show/Hide the Navigation pane on subsequent navigation + + + + + Show/Hide the Preview pane on subsequent navigation + + + + + Show/Hide the Query pane on subsequent navigation + + + + + Navigation log index + + + + + These options control how the content of the Explorer Browser + is rendered. + + + + + The viewing mode of the Explorer Browser + + + + + The binary representation of the ExplorerBrowser content flags + + + + + The view should be left-aligned. + + + + + Automatically arrange the elements in the view. + + + + + Turns on check mode for the view + + + + + When the view is in "tile view mode" the layout of a single item should be extended to the width of the view. + + + + + When an item is selected, the item and all its sub-items are highlighted. + + + + + The view should not display file names + + + + + The view should not save view state in the browser. + + + + + Do not display a column header in the view in any view mode. + + + + + Only show the column header in details view mode. + + + + + The view should not display icons. + + + + + Do not show subfolders. + + + + + Navigate with a single click + + + + + Do not allow more than a single item to be selected. + + + + + The size of the thumbnails in pixels + + + + + Event argument for The NavigationPending event + + + + + The location being navigated to + + + + + Set to 'True' to cancel the navigation. + + + + + Event argument for The NavigationComplete event + + + + + The new location of the explorer browser + + + + + Event argument for the NavigatinoFailed event + + + + + The location the the browser would have navigated to. + + + + + This provides a connection point container compatible dispatch interface for + hooking into the ExplorerBrowser view. + + + + + Default constructor for ExplorerBrowserViewEvents + + + + + The view selection has changed + + + + + The contents of the view have changed + + + + + The enumeration of files in the view is complete + + + + + The selected item in the view has changed (not the same as the selection has changed) + + + + + Finalizer for ExplorerBrowserViewEvents + + + + + Disconnects and disposes object. + + + + + Disconnects and disposes object. + + + + + + The navigation log is a history of the locations visited by the explorer browser. + + + + + Clears the contents of the navigation log. + + + + + The pending navigation log action. null if the user is not navigating + via the navigation log. + + + + + The index into the Locations collection. -1 if the Locations colleciton + is empty. + + + + + Indicates the presence of locations in the log that can be + reached by calling Navigate(Forward) + + + + + Indicates the presence of locations in the log that can be + reached by calling Navigate(Backward) + + + + + The navigation log + + + + + An index into the Locations collection. The ShellObject pointed to + by this index is the current location of the ExplorerBrowser. + + + + + Gets the shell object in the Locations collection pointed to + by CurrentLocationIndex. + + + + + Fires when the navigation log changes or + the current navigation position changes + + + + + A navigation traversal request + + + + + Indicates the viewing mode of the explorer browser + + + + + Choose the best view mode for the folder + + + + + (New for Windows7) + + + + + Object names and other selected information, such as the size or date last updated, are shown. + + + + + The view should display medium-size icons. + + + + + Object names are displayed in a list view. + + + + + The view should display small icons. + + + + + The view should display thumbnail icons. + + + + + The view should display icons in a filmstrip format. + + + + + The view should display large icons. + + + + + Specifies the options that control subsequent navigation. + Typically use one, or a bitwise combination of these + flags to specify how the explorer browser navigates. + + + + + Always navigate, even if you are attempting to navigate to the current folder. + + + + + Do not navigate further than the initial navigation. + + + + + Indicates the content options of the explorer browser. + Typically use one, or a bitwise combination of these + flags to specify how conent should appear in the + explorer browser control + + + + + No options. + + + + + The view should be left-aligned. + + + + + Automatically arrange the elements in the view. + + + + + Turns on check mode for the view + + + + + When the view is set to "Tile" the layout of a single item should be extended to the width of the view. + + + + + When an item is selected, the item and all its sub-items are highlighted. + + + + + The view should not display file names + + + + + The view should not save view state in the browser. + + + + + Do not display a column header in the view in any view mode. + + + + + Only show the column header in details view mode. + + + + + The view should not display icons. + + + + + Do not show subfolders. + + + + + Navigate with a single click + + + + + Do not allow more than a single item to be selected. + + + + + Indicates the visibility state of an ExplorerBrowser pane + + + + + Allow the explorer browser to determine if this pane is displayed. + + + + + Hide the pane + + + + + Show the pane + + + + + Controls the visibility of the various ExplorerBrowser panes on subsequent navigation + + + + + The pane on the left side of the Windows Explorer window that hosts the folders tree and Favorites. + + + + + Commands module along the top of the Windows Explorer window. + + + + + Organize menu within the commands module. + + + + + View menu within the commands module. + + + + + Pane showing metadata along the bottom of the Windows Explorer window. + + + + + Pane on the right of the Windows Explorer window that shows a large reading preview of the file. + + + + + Quick filter buttons to aid in a search. + + + + + Additional fields and options to aid in a search. + + + + + The direction argument for Navigate + + + + + Navigates forward through the navigation log + + + + + Navigates backward through the travel log + + + + + The event argument for NavigationLogChangedEvent + + + + + Indicates CanNavigateForward has changed + + + + + Indicates CanNavigateBackward has changed + + + + + Indicates the Locations collection has changed + + + + + These options control the results subsequent navigations of the ExplorerBrowser + + + + + The binary flags that are passed to the explorer browser control's GetOptions/SetOptions methods + + + + + Do not navigate further than the initial navigation. + + + + + Always navigate, even if you are attempting to navigate to the current folder. + + + + + Controls the visibility of the various ExplorerBrowser panes on subsequent navigation + + + + + The STGM constants are flags that indicate + conditions for creating and deleting the object and access modes + for the object. + + You can combine these flags, but you can only choose one flag + from each group of related flags. Typically one flag from each + of the access and sharing groups must be specified for all + functions and methods which use these constants. + + + + + Indicates that, in direct mode, each change to a storage + or stream element is written as it occurs. + + + + + Indicates that, in transacted mode, changes are buffered + and written only if an explicit commit operation is called. + + + + + Provides a faster implementation of a compound file + in a limited, but frequently used, case. + + + + + Indicates that the object is read-only, + meaning that modifications cannot be made. + + + + + Enables you to save changes to the object, + but does not permit access to its data. + + + + + Enables access and modification of object data. + + + + + Specifies that subsequent openings of the object are + not denied read or write access. + + + + + Prevents others from subsequently opening the object in Read mode. + + + + + Prevents others from subsequently opening the object + for Write or ReadWrite access. + + + + + Prevents others from subsequently opening the object in any mode. + + + + + Opens the storage object with exclusive access to the most + recently committed version. + + + + + Indicates that the underlying file is to be automatically destroyed when the root + storage object is released. This feature is most useful for creating temporary files. + + + + + Indicates that, in transacted mode, a temporary scratch file is usually used + to save modifications until the Commit method is called. + Specifying NoScratch permits the unused portion of the original file + to be used as work space instead of creating a new file for that purpose. + + + + + Indicates that an existing storage object + or stream should be removed before the new object replaces it. + + + + + Creates the new object while preserving existing data in a stream named "Contents". + + + + + Causes the create operation to fail if an existing object with the specified name exists. + + + + + This flag is used when opening a storage object with Transacted + and without ShareExclusive or ShareDenyWrite. + In this case, specifying NoSnapshot prevents the system-provided + implementation from creating a snapshot copy of the file. + Instead, changes to the file are written to the end of the file. + + + + + Supports direct mode for single-writer, multireader file operations. + + + + + Wraps the native Windows MSG structure. + + + + + Creates a new instance of the Message struct + + Window handle + Message + WParam + LParam + Time + Point + + + + Determines if two messages are equal. + + First message + Second message + True if first and second message are equal; false otherwise. + + + + Determines if two messages are not equal. + + First message + Second message + True if first and second message are not equal; false otherwise. + + + + Determines if this message is equal to another. + + Another message + True if this message is equal argument; false otherwise. + + + + Gets a hash code for the message. + + Hash code for this message. + + + + Gets the window handle + + + + + Gets the window message + + + + + Gets the WParam + + + + + Gets the LParam + + + + + Gets the time + + + + + Gets the point + + + + + An exception thrown when an error occurs while dealing with the Property System API. + + + + + Default constructor. + + + + + Initializes an excpetion with a custom message. + + + + + + Initializes an exception with custom message and inner exception. + + + + + + + Initializes an exception with custom message and error code. + + + + + + + Initializes an exception from serialization info and a context. + + + + + + + Specifies options for the appearance of the + stock icon. + + + + + Retrieve the small version of the icon, as specified by + SM_CXICON and SM_CYICON system metrics. + + + + + Retrieve the small version of the icon, as specified by + SM_CXSMICON and SM_CYSMICON system metrics. + + + + + Retrieve the shell-sized icons (instead of the + size specified by the system metrics). + + + + + Specified that the hIcon member of the SHSTOCKICONINFO + structure receives a handle to the specified icon. + + + + + Specifies that the iSysImageImage member of the SHSTOCKICONINFO + structure receives the index of the specified + icon in the system imagelist. + + + + + Adds the link overlay to the icon. + + + + + Adds the system highlight color to the icon. + + + + + The window has a thin-line border. + + + + + The window has a title bar (includes the WS_BORDER style). + + + + + The window is a child window. + A window with this style cannot have a menu bar. + This style cannot be used with the WS_POPUP style. + + + + + Same as the WS_CHILD style. + + + + + Excludes the area occupied by child windows when drawing occurs within the parent window. + This style is used when creating the parent window. + + + + + Clips child windows relative to each other; + that is, when a particular child window receives a WM_PAINT message, + the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated. + If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, + when drawing within the client area of a child window, to draw within the client area of a neighboring child window. + + + + + The window is initially disabled. A disabled window cannot receive input from the user. + To change this after a window has been created, use the EnableWindow function. + + + + + The window has a border of a style typically used with dialog boxes. + A window with this style cannot have a title bar. + + + + + The window is the first control of a group of controls. + The group consists of this first control and all controls defined after it, up to the next control with the WS_GROUP style. + The first control in each group usually has the WS_TABSTOP style so that the user can move from group to group. + The user can subsequently change the keyboard focus from one control in the group to the next control + in the group by using the direction keys. + + You can turn this style on and off to change dialog box navigation. + To change this style after a window has been created, use the SetWindowLong function. + + + + + The window has a horizontal scroll bar. + + + + + The window is initially minimized. + Same as the WS_MINIMIZE style. + + + + + The window is initially maximized. + + + + + The window has a maximize button. + Cannot be combined with the WS_EX_CONTEXTHELP style. + The WS_SYSMENU style must also be specifie + + + + + The window is initially minimized. + Same as the WS_ICONIC style. + + + + + The window has a minimize button. + Cannot be combined with the WS_EX_CONTEXTHELP style. + The WS_SYSMENU style must also be specified. + + + + + The window is an overlapped window. + An overlapped window has a title bar and a border. + Same as the WS_TILED style. + + + + + The windows is a pop-up window. + This style cannot be used with the WS_CHILD style. + + + + + The window has a sizing border. + Same as the WS_THICKFRAME style. + + + + + The window has a window menu on its title bar. + The WS_CAPTION style must also be specified. + + + + + The window is a control that can receive the keyboard focus when the user presses the TAB key. + Pressing the TAB key changes the keyboard focus to the next control with the WS_TABSTOP style. + + You can turn this style on and off to change dialog box navigation. + To change this style after a window has been created, use the SetWindowLong function. + For user-created windows and modeless dialogs to work with tab stops, + alter the message loop to call the IsDialogMessage function. + + + + + The window has a sizing border. + Same as the WS_SIZEBOX style. + + + + + The window is an overlapped window. + An overlapped window has a title bar and a border. + Same as the WS_OVERLAPPED style. + + + + + The window is initially visible. + + This style can be turned on and off by using the ShowWindow or SetWindowPos function. + + + + + The window has a vertical scroll bar. + + + + + The window is an overlapped window. + Same as the WS_OVERLAPPEDWINDOW style. + + + + + The window is a pop-up window. + The WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu visible. + + + + + The window is an overlapped window. Same as the WS_TILEDWINDOW style. + + + + + Represents a registered or known folder in the system. + + + + + Gets the path for this known folder. + + + + + Gets the category designation for this known folder. + + + + + Gets this known folder's canonical name. + + + + + Gets this known folder's description. + + + + + Gets the unique identifier for this known folder's parent folder. + + + + + Gets this known folder's relative path. + + + + + Gets this known folder's parsing name. + + + + + Gets this known folder's tool tip text. + + + + + Gets the resource identifier for this + known folder's tool tip text. + + + + + Gets this known folder's localized name. + + + + + Gets the resource identifier for this + known folder's localized name. + + + + + Gets this known folder's security attributes. + + + + + Gets this known folder's file attributes, + such as "read-only". + + + + + Gets an value that describes this known folder's behaviors. + + + + + Gets the unique identifier for this known folder's type. + + + + + Gets a string representation of this known folder's type. + + + + + Gets the unique identifier for this known folder. + + + + + Gets a value that indicates whether this known folder's path exists on the computer. + + If this property value is false, + the folder might be a virtual folder ( property will + be for virtual folders) + + + + Gets a value that states whether this known folder + can have its path set to a new value, + including any restrictions on the redirection. + + + + + Prepares the browser to be navigated. + + A handle to the owner window or control. + A pointer to a RECT containing the coordinates of the bounding rectangle + the browser will occupy. The coordinates are relative to hwndParent. If this parameter is NULL, + then method IExplorerBrowser::SetRect should subsequently be called. + A pointer to a FOLDERSETTINGS structure that determines how the folder will be + displayed in the view. If this parameter is NULL, then method IExplorerBrowser::SetFolderSettings + should be called, otherwise, the default view settings for the folder are used. + + + + + Destroys the browser. + + + + + + Sets the size and position of the view windows created by the browser. + + A pointer to a DeferWindowPos handle. This paramater can be NULL. + The coordinates that the browser will occupy. + + + + + Sets the name of the property bag. + + A pointer to a constant, null-terminated, Unicode string that contains + the name of the property bag. View state information that is specific to the application of the + client is stored (persisted) using this name. + + + + + Sets the default empty text. + + A pointer to a constant, null-terminated, Unicode string that contains + the empty text. + + + + + Sets the folder settings for the current view. + + A pointer to a FOLDERSETTINGS structure that contains the folder settings + to be applied. + + + + + Initiates a connection with IExplorerBrowser for event callbacks. + + A pointer to the IExplorerBrowserEvents interface of the object to be + advised of IExplorerBrowser events + When this method returns, contains a token that uniquely identifies + the event listener. This allows several event listeners to be subscribed at a time. + + + + + Terminates an advisory connection. + + A connection token previously returned from IExplorerBrowser::Advise. + Identifies the connection to be terminated. + + + + + Sets the current browser options. + + One or more EXPLORER_BROWSER_OPTIONS flags to be set. + + + + + Gets the current browser options. + + When this method returns, contains the current EXPLORER_BROWSER_OPTIONS + for the browser. + + + + + Browses to a pointer to an item identifier list (PIDL) + + A pointer to a const ITEMIDLIST (item identifier list) that specifies an object's + location as the destination to navigate to. This parameter can be NULL. + A flag that specifies the category of the pidl. This affects how + navigation is accomplished + + + + + Browse to an object + + A pointer to an object to browse to. If the object cannot be browsed, + an error value is returned. + A flag that specifies the category of the pidl. This affects how + navigation is accomplished. + + + + + Creates a results folder and fills it with items. + + An interface pointer on the source object that will fill the IResultsFolder + One of the EXPLORER_BROWSER_FILL_FLAGS + + + + + Removes all items from the results folder. + + + + + + Gets an interface for the current view of the browser. + + A reference to the desired interface ID. + When this method returns, contains the interface pointer requested in riid. + This will typically be IShellView or IShellView2. + + + + + Internal class that contains interop declarations for + functions that are not benign and are performance critical. + + + + + Specifies behaviors for known folders. + + + + + No behaviors are defined. + + + + + Prevents a per-user known folder from being + redirected to a network location. + + + + + The known folder can be roamed through PC-to-PC synchronization. + + + + + Creates the known folder when the user first logs on. + + + + + Specifies the categories for known folders. + + + + + The folder category is not specified. + + + + + The folder is a virtual folder. Virtual folders are not part + of the file system. For example, Control Panel and + Printers are virtual folders. A number of properties + such as folder path and redirection do not apply to this category. + + + + + The folder is fixed. Fixed file system folders are not + managed by the Shell and are usually given a permanent + path when the system is installed. For example, the + Windows and Program Files folders are fixed folders. + A number of properties such as redirection do not apply + to this category. + + + + + The folder is a common folder. Common folders are + used for sharing data and settings + accessible by all users of a system. For example, + all users share a common Documents folder as well + as their per-user Documents folder. + + + + + Each user has their own copy of the folder. Per-user folders + are those stored under each user's profile and + accessible only by that user. + + + + + Structure used internally to store property values for + a known folder. This structure holds the information + returned in the FOLDER_DEFINITION structure, and + resources referenced by fields in NativeFolderDefinition, + such as icon and tool tip. + + + + + Contains the GUID identifiers for well-known folders. + + + + + Returns the friendly name for a specified folder. + + The Guid identifier for a known folder. + A value. + + + + Returns a sorted list of name, guid pairs for + all known folders. + + + + + + Computer + + + + + Conflicts + + + + + Control Panel + + + + + Desktop + + + + + Internet Explorer + + + + + Network + + + + + Printers + + + + + Sync Center + + + + + Network Connections + + + + + Sync Setup + + + + + Sync Results + + + + + Recycle Bin + + + + + Fonts + + + + + Startup + + + + + Programs + + + + + Start Menu + + + + + Recent Items + + + + + SendTo + + + + + Documents + + + + + Favorites + + + + + Network Shortcuts + + + + + Printer Shortcuts + + + + + Templates + + + + + Startup + + + + + Programs + + + + + Start Menu + + + + + Public Desktop + + + + + ProgramData + + + + + Templates + + + + + Public Documents + + + + + Roaming + + + + + Local + + + + + LocalLow + + + + + Temporary Internet Files + + + + + Cookies + + + + + History + + + + + System32 + + + + + System32 + + + + + Windows + + + + + The user's username (%USERNAME%) + + + + + Pictures + + + + + Program Files + + + + + Common Files + + + + + Program Files + + + + + Common Files + + + + + Program Files + + + + + Common Files + + + + + Administrative Tools + + + + + Administrative Tools + + + + + Music + + + + + Videos + + + + + Public Pictures + + + + + Public Music + + + + + Public Videos + + + + + Resources + + + + + None + + + + + OEM Links + + + + + Temporary Burn Folder + + + + + Users + + + + + Playlists + + + + + Sample Playlists + + + + + Sample Music + + + + + Sample Pictures + + + + + Sample Videos + + + + + Slide Shows + + + + + Public + + + + + Programs and Features + + + + + Installed Updates + + + + + Get Programs + + + + + Downloads + + + + + Public Downloads + + + + + Searches + + + + + Quick Launch + + + + + Contacts + + + + + Gadgets + + + + + Gadgets + + + + + Tree property value folder + + + + + GameExplorer + + + + + GameExplorer + + + + + Saved Games + + + + + Games + + + + + Recorded TV + + + + + Microsoft Office Outlook + + + + + Offline Files + + + + + Links + + + + + The user's full name (for instance, Jean Philippe Bagel) entered when the user account was created. + + + + + Search home + + + + + Original Images + + + + + UserProgramFiles + + + + + UserProgramFilesCommon + + + + + Ringtones + + + + + PublicRingtones + + + + + UsersLibraries + + + + + DocumentsLibrary + + + + + MusicLibrary + + + + + PicturesLibrary + + + + + VideosLibrary + + + + + RecordedTVLibrary + + + + + OtherUsers + + + + + DeviceMetadataStore + + + + + Libraries + + + + + UserPinned + + + + + ImplicitAppShortcuts + + + + + The FolderTypes values represent a view template applied to a folder, + usually based on its intended use and contents. + + + + + No particular content type has been detected or specified. This value is not supported in Windows 7 and later systems. + + + + + The folder is invalid. There are several things that can cause this judgement: hard disk errors, file system errors, and compression errors among them. + + + + + The folder contains document files. These can be of mixed format—.doc, .txt, and others. + + + + + Image files, such as .jpg, .tif, or .png files. + + + + + Windows 7 and later. The folder contains audio files, such as .mp3 and .wma files. + + + + + A list of music files displayed in Icons view. This value is not supported in Windows 7 and later systems. + + + + + The folder is the Games folder found in the Start menu. + + + + + The Control Panel in category view. This is a virtual folder. + + + + + The Control Panel in classic view. This is a virtual folder. + + + + + Printers that have been added to the system. This is a virtual folder. + + + + + The Recycle Bin. This is a virtual folder. + + + + + The software explorer window used by the Add or Remove Programs control panel icon. + + + + + The folder is a compressed archive, such as a compressed file with a .zip file name extension. + + + + + An e-mail-related folder that contains contact information. + + + + + A default library view without a more specific template. This value is not supported in Windows 7 and later systems. + + + + + The Network Explorer folder. + + + + + The folder is the FOLDERID_UsersFiles folder. + + + + + Windows 7 and later. The folder contains search results, but they are of mixed or no specific type. + + + + + Windows 7 and later. The folder is a library, but of no specified type. + + + + + Windows 7 and later. The folder contains video files. These can be of mixed format—.wmv, .mov, and others. + + + + + Windows 7 and later. The view shown when the user clicks the Windows Explorer button on the taskbar. + + + + + Windows 7 and later. The homegroup view. + + + + + Windows 7 and later. A folder that contains communication-related files such as e-mails, calendar information, and contact information. + + + + + Windows 7 and later. The folder contains recorded television broadcasts. + + + + + Windows 7 and later. The folder contains saved game states. + + + + + Windows 7 and later. The folder contains federated search OpenSearch results. + + + + + Windows 7 and later. Before you search. + + + + + Windows 7 and later. A user's Searches folder, normally found at C:\Users\username\Searches. + + + + + Creates the helper class for known folders. + + + + + Returns the native known folder (IKnownFolderNative) given a PID list + + + + + + + Returns a known folder given a globally unique identifier. + + A GUID for the requested known folder. + A known folder representing the specified name. + Thrown if the given Known Folder ID is invalid. + + + + Returns a known folder given a globally unique identifier. + + A GUID for the requested known folder. + A known folder representing the specified name. Returns null if Known Folder is not found or could not be created. + + + + Given a native KnownFolder (IKnownFolderNative), create the right type of + IKnownFolder object (FileSystemKnownFolder or NonFileSystemKnownFolder) + + Native Known Folder + + + + + Returns the known folder given its canonical name. + + A non-localized canonical name for the known folder, such as MyComputer. + A known folder representing the specified name. + Thrown if the given canonical name is invalid or if the KnownFolder could not be created. + + + + Returns a known folder given its shell path, such as C:\users\public\documents or + ::{645FF040-5081-101B-9F08-00AA002F954E} for the Recycle Bin. + + The path for the requested known folder; either a physical path or a virtual path. + A known folder representing the specified name. + + + + Returns a known folder given its shell namespace parsing name, such as + ::{645FF040-5081-101B-9F08-00AA002F954E} for the Recycle Bin. + + The parsing name (or path) for the requested known folder. + A known folder representing the specified name. + Thrown if the given parsing name is invalid. + + + + Defines properties for known folders that identify the path of standard known folders. + + + + + Gets a strongly-typed read-only collection of all the registered known folders. + + + + + Gets the metadata for the Computer folder. + + An object. + + + + Gets the metadata for the Conflict folder. + + An object. + + + + Gets the metadata for the ControlPanel folder. + + An object. + + + + Gets the metadata for the Desktop folder. + + An object. + + + + Gets the metadata for the Internet folder. + + An object. + + + + Gets the metadata for the Network folder. + + An object. + + + + Gets the metadata for the Printers folder. + + An object. + + + + Gets the metadata for the SyncManager folder. + + An object. + + + + Gets the metadata for the Connections folder. + + An object. + + + + Gets the metadata for the SyncSetup folder. + + An object. + + + + Gets the metadata for the SyncResults folder. + + An object. + + + + Gets the metadata for the RecycleBin folder. + + An object. + + + + Gets the metadata for the Fonts folder. + + An object. + + + + Gets the metadata for the Startup folder. + + An object. + + + + Gets the metadata for the Programs folder. + + An object. + + + + Gets the metadata for the per-user StartMenu folder. + + An object. + + + + Gets the metadata for the per-user Recent folder. + + An object. + + + + Gets the metadata for the per-user SendTo folder. + + An object. + + + + Gets the metadata for the per-user Documents folder. + + An object. + + + + Gets the metadata for the per-user Favorites folder. + + An object. + + + + Gets the metadata for the NetHood folder. + + An object. + + + + Gets the metadata for the PrintHood folder. + + An object. + + + + Gets the metadata for the Templates folder. + + An object. + + + + Gets the metadata for the CommonStartup folder. + + An object. + + + + Gets the metadata for the CommonPrograms folder. + + An object. + + + + Gets the metadata for the CommonStartMenu folder. + + An object. + + + + Gets the metadata for the PublicDesktop folder. + + An object. + + + + Gets the metadata for the ProgramData folder. + + An object. + + + + Gets the metadata for the CommonTemplates folder. + + An object. + + + + Gets the metadata for the PublicDocuments folder. + + An object. + + + + Gets the metadata for the RoamingAppData folder. + + An object. + + + + Gets the metadata for the per-user LocalAppData + folder. + + An object. + + + + Gets the metadata for the LocalAppDataLow folder. + + An object. + + + + Gets the metadata for the InternetCache folder. + + An object. + + + + Gets the metadata for the Cookies folder. + + An object. + + + + Gets the metadata for the History folder. + + An object. + + + + Gets the metadata for the System folder. + + An object. + + + + Gets the metadata for the SystemX86 + folder. + + An object. + + + + Gets the metadata for the Windows folder. + + An object. + + + + Gets the metadata for the Profile folder. + + An object. + + + + Gets the metadata for the per-user Pictures folder. + + An object. + + + + Gets the metadata for the ProgramFilesX86 folder. + + An object. + + + + Gets the metadata for the ProgramFilesCommonX86 folder. + + An object. + + + + Gets the metadata for the ProgramsFilesX64 folder. + + An object. + + + + Gets the metadata for the ProgramFilesCommonX64 folder. + + An object. + + + + Gets the metadata for the ProgramFiles folder. + + An object. + + + + Gets the metadata for the ProgramFilesCommon folder. + + An object. + + + + Gets the metadata for the AdminTools folder. + + An object. + + + + Gets the metadata for the CommonAdminTools folder. + + An object. + + + + Gets the metadata for the per-user Music folder. + + An object. + + + + Gets the metadata for the Videos folder. + + An object. + + + + Gets the metadata for the PublicPictures folder. + + An object. + + + + Gets the metadata for the PublicMusic folder. + + An object. + + + + Gets the metadata for the PublicVideos folder. + + An object. + + + + Gets the metadata for the ResourceDir folder. + + An object. + + + + Gets the metadata for the LocalizedResourcesDir folder. + + An object. + + + + Gets the metadata for the CommonOEMLinks folder. + + An object. + + + + Gets the metadata for the CDBurning folder. + + An object. + + + + Gets the metadata for the UserProfiles folder. + + An object. + + + + Gets the metadata for the Playlists folder. + + An object. + + + + Gets the metadata for the SamplePlaylists folder. + + An object. + + + + Gets the metadata for the SampleMusic folder. + + An object. + + + + Gets the metadata for the SamplePictures folder. + + An object. + + + + Gets the metadata for the SampleVideos folder. + + An object. + + + + Gets the metadata for the PhotoAlbums folder. + + An object. + + + + Gets the metadata for the Public folder. + + An object. + + + + Gets the metadata for the ChangeRemovePrograms folder. + + An object. + + + + Gets the metadata for the AppUpdates folder. + + An object. + + + + Gets the metadata for the AddNewPrograms folder. + + An object. + + + + Gets the metadata for the per-user Downloads folder. + + An object. + + + + Gets the metadata for the PublicDownloads folder. + + An object. + + + + Gets the metadata for the per-user SavedSearches folder. + + An object. + + + + Gets the metadata for the per-user QuickLaunch folder. + + An object. + + + + Gets the metadata for the Contacts folder. + + An object. + + + + Gets the metadata for the SidebarParts folder. + + An object. + + + + Gets the metadata for the SidebarDefaultParts folder. + + An object. + + + + Gets the metadata for the TreeProperties folder. + + An object. + + + + Gets the metadata for the PublicGameTasks folder. + + An object. + + + + Gets the metadata for the GameTasks folder. + + An object. + + + + Gets the metadata for the per-user SavedGames folder. + + An object. + + + + Gets the metadata for the Games folder. + + An object. + + + + Gets the metadata for the RecordedTV folder. + + An object. + This folder is not used. + + + + Gets the metadata for the SearchMapi folder. + + An object. + + + + Gets the metadata for the SearchCsc folder. + + An object. + + + + Gets the metadata for the per-user Links folder. + + An object. + + + + Gets the metadata for the UsersFiles folder. + + An object. + + + + Gets the metadata for the SearchHome folder. + + An object. + + + + Gets the metadata for the OriginalImages folder. + + An object. + + + + Gets the metadata for the UserProgramFiles folder. + + + + + Gets the metadata for the UserProgramFilesCommon folder. + + + + + Gets the metadata for the Ringtones folder. + + + + + Gets the metadata for the PublicRingtones folder. + + + + + Gets the metadata for the UsersLibraries folder. + + + + + Gets the metadata for the DocumentsLibrary folder. + + + + + Gets the metadata for the MusicLibrary folder. + + + + + Gets the metadata for the PicturesLibrary folder. + + + + + Gets the metadata for the VideosLibrary folder. + + + + + Gets the metadata for the RecordedTVLibrary folder. + + + + + Gets the metadata for the OtherUsers folder. + + + + + Gets the metadata for the DeviceMetadataStore folder. + + + + + Gets the metadata for the Libraries folder. + + + + + Gets the metadata for the UserPinned folder. + + + + + Gets the metadata for the ImplicitAppShortcuts folder. + + + + + Internal class to represent the KnownFolder settings/properties + + + + + Populates a structure that contains + this known folder's properties. + + + + + Gets the path of this this known folder. + + + Returns false if the folder is virtual, or a boolean + value that indicates whether this known folder exists. + + Native IKnownFolder reference + + A containing the path, or if this known folder does not exist. + + + + + Gets the path for this known folder. + + A object. + + + + Gets the category designation for this known folder. + + A value. + + + + Gets this known folder's canonical name. + + A object. + + + + Gets this known folder's description. + + A object. + + + + Gets the unique identifier for this known folder's parent folder. + + A value. + + + + Gets this known folder's relative path. + + A object. + + + + Gets this known folder's tool tip text. + + A object. + + + + Gets the resource identifier for this + known folder's tool tip text. + + A object. + + + + Gets this known folder's localized name. + + A object. + + + + Gets the resource identifier for this + known folder's localized name. + + A object. + + + + Gets this known folder's security attributes. + + A object. + + + + Gets this known folder's file attributes, + such as "read-only". + + A value. + + + + Gets an value that describes this known folder's behaviors. + + A value. + + + + Gets the unique identifier for this known folder's type. + + A value. + + + + Gets a string representation of this known folder's type. + + A object. + + + + Gets the unique identifier for this known folder. + + A value. + + + + Gets a value that indicates whether this known folder's path exists on the computer. + + A bool value. + If this property value is false, + the folder might be a virtual folder ( property will + be for virtual folders) + + + + Gets a value that states whether this known folder + can have its path set to a new value, + including any restrictions on the redirection. + + A value. + + + + Specifies the redirection capabilities for known folders. + + + + + Redirection capability is unknown. + + + + + The known folder can be redirected. + + + + + The known folder can be redirected. + Currently, redirection exists only for + common and user folders; fixed and virtual folders + cannot be redirected. + + + + + Redirection is not allowed. + + + + + The folder cannot be redirected because it is + already redirected by group policy. + + + + + The folder cannot be redirected because the policy + prohibits redirecting this folder. + + + + + The folder cannot be redirected because the calling + application does not have sufficient permissions. + + + + + Contains special retrieval options for known folders. + + + + + A Serch Connector folder in the Shell Namespace + + + + + Indicates whether this feature is supported on the current platform. + + + + + CommonFileDialog AddPlace locations + + + + + At the bottom of the Favorites or Places list. + + + + + At the top of the Favorites or Places list. + + + + + One of the values that indicates how the ShellObject DisplayName should look. + + + + + Returns the display name relative to the desktop. + + + + + Returns the parsing name relative to the parent folder. + + + + + Returns the path relative to the parent folder in a + friendly format as displayed in an address bar. + + + + + Returns the parsing name relative to the desktop. + + + + + Returns the editing name relative to the parent folder. + + + + + Returns the editing name relative to the desktop. + + + + + Returns the display name relative to the file system path. + + + + + Returns the display name relative to a URL. + + + + + Available Library folder types + + + + + General Items + + + + + Documents + + + + + Music + + + + + Pictures + + + + + Videos + + + + + Flags controlling the appearance of a window + + + + + Hides the window and activates another window. + + + + + Activates and displays the window (including restoring + it to its original size and position). + + + + + Minimizes the window. + + + + + Maximizes the window. + + + + + Similar to , except that the window + is not activated. + + + + + Activates the window and displays it in its current size + and position. + + + + + Minimizes the window and activates the next top-level window. + + + + + Minimizes the window and does not activate it. + + + + + Similar to , except that the window is not + activated. + + + + + Activates and displays the window, restoring it to its original + size and position. + + + + + Sets the show state based on the initial value specified when + the process was created. + + + + + Minimizes a window, even if the thread owning the window is not + responding. Use this only to minimize windows from a different + thread. + + + + + Provides a set of flags to be used with + to indicate the operation in methods. + + + + + An implicit comparison between the value of the property and the value of the constant. + + + + + The value of the property and the value of the constant must be equal. + + + + + The value of the property and the value of the constant must not be equal. + + + + + The value of the property must be less than the value of the constant. + + + + + The value of the property must be greater than the value of the constant. + + + + + The value of the property must be less than or equal to the value of the constant. + + + + + The value of the property must be greater than or equal to the value of the constant. + + + + + The value of the property must begin with the value of the constant. + + + + + The value of the property must end with the value of the constant. + + + + + The value of the property must contain the value of the constant. + + + + + The value of the property must not contain the value of the constant. + + + + + The value of the property must match the value of the constant, where '?' + matches any single character and '*' matches any sequence of characters. + + + + + The value of the property must contain a word that is the value of the constant. + + + + + The value of the property must contain a word that begins with the value of the constant. + + + + + The application is free to interpret this in any suitable way. + + + + + Set of flags to be used with . + + + + + Indicates that the values of the subterms are combined by "AND". + + + + + Indicates that the values of the subterms are combined by "OR". + + + + + Indicates a "NOT" comparison of subterms. + + + + + Indicates that the node is a comparison between a property and a + constant value using a . + + + + + Used to describe the view mode. + + + + + The view is not specified. + + + + + This should have the same affect as Unspecified. + + + + + The minimum valid enumeration value. Used for validation purposes only. + + + + + Details view. + + + + + Tiles view. + + + + + Icons view. + + + + + Windows 7 and later. List view. + + + + + Windows 7 and later. Content view. + + + + + The maximum valid enumeration value. Used for validation purposes only. + + + + + The direction in which the items are sorted. + + + + + A default value for sort direction, this value should not be used; + instead use Descending or Ascending. + + + + + The items are sorted in descending order. Whether the sort is alphabetical, numerical, + and so on, is determined by the data type of the column indicated in propkey. + + + + + The items are sorted in ascending order. Whether the sort is alphabetical, numerical, + and so on, is determined by the data type of the column indicated in propkey. + + + + + Provides a set of flags to be used with IQueryParser::SetOption and + IQueryParser::GetOption to indicate individual options. + + + + + The value should be VT_LPWSTR and the path to a file containing a schema binary. + + + + + The value must be VT_EMPTY (the default) or a VT_UI4 that is an LCID. It is used + as the locale of contents (not keywords) in the query to be searched for, when no + other information is available. The default value is the current keyboard locale. + Retrieving the value always returns a VT_UI4. + + + + + This option is used to override the default word breaker used when identifying keywords + in queries. The default word breaker is chosen according to the language of the keywords + (cf. SQSO_LANGUAGE_KEYWORDS below). When setting this option, the value should be VT_EMPTY + for using the default word breaker, or a VT_UNKNOWN with an object supporting + the IWordBreaker interface. Retrieving the option always returns a VT_UNKNOWN with an object + supporting the IWordBreaker interface. + + + + + The value should be VT_EMPTY or VT_BOOL with VARIANT_TRUE to allow natural query + syntax (the default) or VT_BOOL with VARIANT_FALSE to allow only advanced query syntax. + Retrieving the option always returns a VT_BOOL. + This option is now deprecated, use SQSO_SYNTAX. + + + + + The value should be VT_BOOL with VARIANT_TRUE to generate query expressions + as if each word in the query had a star appended to it (unless followed by punctuation + other than a parenthesis), or VT_EMPTY or VT_BOOL with VARIANT_FALSE to + use the words as they are (the default). A word-wheeling application + will generally want to set this option to true. + Retrieving the option always returns a VT_BOOL. + + + + + Reserved. The value should be VT_EMPTY (the default) or VT_I4. + Retrieving the option always returns a VT_I4. + + + + + The value must be a VT_UI4 that is a LANGID. It defaults to the default user UI language. + + + + + The value must be a VT_UI4 that is a STRUCTURED_QUERY_SYNTAX value. + It defaults to SQS_NATURAL_QUERY_SYNTAX. + + + + + The value must be a VT_BLOB that is a copy of a TIME_ZONE_INFORMATION structure. + It defaults to the current time zone. + + + + + This setting decides what connector should be assumed between conditions when none is specified. + The value must be a VT_UI4 that is a CONDITION_TYPE. Only CT_AND_CONDITION and CT_OR_CONDITION + are valid. It defaults to CT_AND_CONDITION. + + + + + This setting decides whether there are special requirements on the case of connector keywords (such + as AND or OR). The value must be a VT_UI4 that is a CASE_REQUIREMENT value. + It defaults to CASE_REQUIREMENT_UPPER_IF_AQS. + + + + + Provides a set of flags to be used with IQueryParser::SetMultiOption + to indicate individual options. + + + + + The key should be property name P. The value should be a + VT_UNKNOWN with an IEnumVARIANT which has two values: a VT_BSTR that is another + property name Q and a VT_I4 that is a CONDITION_OPERATION cop. A predicate with + property name P, some operation and a value V will then be replaced by a predicate + with property name Q, operation cop and value V before further processing happens. + + + + + The key should be a value type name V. The value should be a + VT_LPWSTR with a property name P. A predicate with no property name and a value of type + V (or any subtype of V) will then use property P. + + + + + The key should be a value type name V. The value should be a + VT_UNKNOWN with a IConditionGenerator G. The GenerateForLeaf method of + G will then be applied to any predicate with value type V and if it returns a query + expression, that will be used. If it returns NULL, normal processing will be used + instead. + + + + + The key should be a property name P. The value should be a VT_VECTOR|VT_LPWSTR, + where each string is a property name. The count must be at least one. This "map" will be + added to those of the loaded schema and used during resolution. A second call with the + same key will replace the current map. If the value is VT_NULL, the map will be removed. + + + + + Used by IQueryParserManager::SetOption to set parsing options. + This can be used to specify schemas and localization options. + + + + + A VT_LPWSTR containing the name of the file that contains the schema binary. + The default value is StructuredQuerySchema.bin for the SystemIndex catalog + and StructuredQuerySchemaTrivial.bin for the trivial catalog. + + + + + Either a VT_BOOL or a VT_LPWSTR. If the value is a VT_BOOL and is FALSE, + a pre-localized schema will not be used. If the value is a VT_BOOL and is TRUE, + IQueryParserManager will use the pre-localized schema binary in + "%ALLUSERSPROFILE%\Microsoft\Windows". If the value is a VT_LPWSTR, the value should + contain the full path of the folder in which the pre-localized schema binary can be found. + The default value is VT_BOOL with TRUE. + + + + + A VT_LPWSTR containing the full path to the folder that contains the + unlocalized schema binary. The default value is "%SYSTEMROOT%\System32". + + + + + A VT_LPWSTR containing the full path to the folder that contains the + localized schema binary that can be read and written to as needed. + The default value is "%LOCALAPPDATA%\Microsoft\Windows". + + + + + A VT_BOOL. If TRUE, then the paths for pre-localized and localized binaries + have "\(LCID)" appended to them, where language code identifier (LCID) is + the decimal locale ID for the localized language. The default is TRUE. + + + + + A VT_UNKNOWN with an object supporting ISchemaLocalizerSupport. + This object will be used instead of the default localizer support object. + + + + + A Shell Library in the Shell Namespace + + + + + Creates a shell library in the Libraries Known Folder, + using the given IKnownFolder + + KnownFolder from which to create the new Shell Library + If true , opens the library in read-only mode. + + + + Creates a shell library in the Libraries Known Folder, + using the given shell library name. + + The name of this library + Allow overwriting an existing library; if one exists with the same name + + + + Creates a shell library in a given Known Folder, + using the given shell library name. + + The name of this library + The known folder + Override an existing library with the same name + + + + Creates a shell library in a given local folder, + using the given shell library name. + + The name of this library + The path to the local folder + Override an existing library with the same name + + + + Close the library, and release its associated file system resources + + + + + Load the library using a number of options + + The name of the library + If true, loads the library in read-only mode. + A ShellLibrary Object + + + + Load the library using a number of options + + The name of the library. + The path to the library. + If true, opens the library in read-only mode. + A ShellLibrary Object + + + + Load the library using a number of options + + IShellItem + read-only flag + A ShellLibrary Object + + + + Load the library using a number of options + + A known folder. + If true, opens the library in read-only mode. + A ShellLibrary Object + + + + Shows the library management dialog which enables users to mange the library folders and default save location. + + The name of the library + The path to the library. + The parent window,or IntPtr.Zero for no parent + A title for the library management dialog, or null to use the library name as the title + An optional help string to display for the library management dialog + If true, do not show warning dialogs about locations that cannot be indexed + If the library is already open in read-write mode, the dialog will not save the changes. + + + + Shows the library management dialog which enables users to mange the library folders and default save location. + + The name of the library + The parent window,or IntPtr.Zero for no parent + A title for the library management dialog, or null to use the library name as the title + An optional help string to display for the library management dialog + If true, do not show warning dialogs about locations that cannot be indexed + If the library is already open in read-write mode, the dialog will not save the changes. + + + + Shows the library management dialog which enables users to mange the library folders and default save location. + + A known folder. + The parent window,or IntPtr.Zero for no parent + A title for the library management dialog, or null to use the library name as the title + An optional help string to display for the library management dialog + If true, do not show warning dialogs about locations that cannot be indexed + If the library is already open in read-write mode, the dialog will not save the changes. + + + + Add a new FileSystemFolder or SearchConnector + + The folder to add to the library. + + + + Add an existing folder to this library + + The path to the folder to be added to the library. + + + + Clear all items of this Library + + + + + Remove a folder or search connector + + The item to remove. + true if the item was removed. + + + + Remove a folder or search connector + + The path of the item to remove. + true if the item was removed. + + + + Release resources + + Indicates that this was called from Dispose(), rather than from the finalizer. + + + + Release resources + + + + + Retrieves the collection enumerator. + + The enumerator. + + + + Retrieves the collection enumerator. + + The enumerator. + + + + Determines if an item with the specified path exists in the collection. + + The path of the item. + true if the item exists in the collection. + + + + Determines if a folder exists in the collection. + + The folder. + true, if the folder exists in the collection. + + + + Searches for the specified FileSystemFolder and returns the zero-based index of the + first occurrence within Library list. + + The item to search for. + The index of the item in the collection, or -1 if the item does not exist. + + + + Inserts a FileSystemFolder at the specified index. + + The index to insert at. + The FileSystemFolder to insert. + + + + Removes an item at the specified index. + + The index to remove. + + + + Copies the collection to an array. + + The array to copy to. + The index in the array at which to start the copy. + + + + The name of the library, every library must + have a name + + Will throw if no Icon is set + + + + The Resource Reference to the icon. + + + + + One of predefined Library types + + Will throw if no Library Type is set + + + + The Guid of the Library type + + Will throw if no Library Type is set + + + + By default, this folder is the first location + added to the library. The default save folder + is both the default folder where files can + be saved, and also where the library XML + file will be saved, if no other path is specified + + + + + Whether the library will be pinned to the + Explorer Navigation Pane + + + + + Get a the known folder FOLDERID_Libraries + + + + + Retrieves the folder at the specified index + + The index of the folder to retrieve. + A folder. + + + + The count of the items in the list. + + + + + Indicates whether this list is read-only or not. + + + + + Indicates whether this feature is supported on the current platform. + + + + + Defines the abstract base class for the common file dialogs. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified title. + + The title to display in the dialog. + + + + Tries to set the File(s) Type Combo to match the value in + 'DefaultExtension'. Only doing this if 'this' is a Save dialog + as it makes no sense to do this if only Opening a file. + + + The native/IFileDialog instance. + + + + + Adds a location, such as a folder, library, search connector, or known folder, to the list of + places available for a user to open or save items. This method actually adds an item + to the Favorite Links or Places section of the Open/Save dialog. + + The item to add to the places list. + One of the enumeration values that indicates placement of the item in the list. + + + + Adds a location (folder, library, search connector, known folder) to the list of + places available for the user to open or save items. This method actually adds an item + to the Favorite Links or Places section of the Open/Save dialog. Overload method + takes in a string for the path. + + The item to add to the places list. + One of the enumeration values that indicates placement of the item in the list. + + + + Displays the dialog. + + Window handle of any top-level window that will own the modal dialog box. + A object. + + + + Displays the dialog. + + Top-level WPF window that will own the modal dialog box. + A object. + + + + Displays the dialog. + + A object. + + + + Removes the current selection. + + + + + Returns if change to the colleciton is allowed. + + true if collection change is allowed. + + + + Applies changes to the collection. + + + + + Determines if changes to a specific property are allowed. + + The name of the property. + The control propertyName applies to. + true if the property change is allowed. + + + + Called when a control currently in the collection + has a property changed. + + The name of the property changed. + The control whose property has changed. + + + + Ensures that the user has selected one or more files. + + + The dialog has not been dismissed yet or the dialog was cancelled. + + + + + Ensures that the user has selected one or more files. + + + The dialog has not been dismissed yet or the dialog was cancelled. + + + + + Throws an exception when the dialog is showing preventing + a requested change to a property or the visible set of controls. + + The message to include in the exception. + The dialog is in an + invalid state to perform the requested operation. + + + + Get the IFileDialogCustomize interface, preparing to add controls. + + + + + Raises the event just before the dialog is about to return with a result. + + The event data. + + + + Raises the to stop navigation to a particular location. + + Cancelable event arguments. + + + + Raises the event when the user navigates to a new folder. + + The event data. + + + + Raises the event when the user changes the selection in the dialog's view. + + The event data. + + + + Raises the event when the dialog is opened to notify the + application of the initial chosen filetype. + + The event data. + + + + Raises the event when the dialog is opened. + + The event data. + + + + Releases the unmanaged resources used by the CommonFileDialog class and optionally + releases the managed resources. + + true to release both managed and unmanaged resources; + false to release only unmanaged resources. + + + + Releases the resources used by the current instance of the CommonFileDialog class. + + + + + The collection of names selected by the user. + + + + + Raised just before the dialog is about to return with a result. Occurs when the user clicks on the Open + or Save button on a file dialog box. + + + + + Raised just before the user navigates to a new folder. + + + + + Raised when the user navigates to a new folder. + + + + + Raised when the user changes the selection in the dialog's view. + + + + + Raised when the dialog is opened to notify the application of the initial chosen filetype. + + + + + Raised when the dialog is opening. + + + + + Gets the collection of controls for the dialog. + + + + + Gets the filters used by the dialog. + + + + + Gets or sets the dialog title. + + A object. + + + + Gets or sets a value that determines whether the file must exist beforehand. + + A value. true if the file must exist. + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that specifies whether the returned file must be in an existing folder. + + A value. true if the file must exist. + This property cannot be set when the dialog is visible. + + + Gets or sets a value that determines whether to validate file names. + + A value. true to check for situations that would prevent an application from opening the selected file, such as sharing violations or access denied errors. + This property cannot be set when the dialog is visible. + + + + + Gets or sets a value that determines whether read-only items are returned. + Default value for CommonOpenFileDialog is true (allow read-only files) and + CommonSaveFileDialog is false (don't allow read-only files). + + A value. true includes read-only items. + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that determines the restore directory. + + + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that controls whether + to show or hide the list of pinned places that + the user can choose. + + A value. true if the list is visible; otherwise false. + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that controls whether to show or hide the list of places where the user has recently opened or saved items. + + A value. + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that controls whether to show hidden items. + + A value.true to show the items; otherwise false. + This property cannot be set when the dialog is visible. + + + + Gets or sets a value that controls whether + properties can be edited. + + A value. + + + + Gets or sets a value that controls whether shortcuts should be treated as their target items, allowing an application to open a .lnk file. + + A value. true indicates that shortcuts should be treated as their targets. + This property cannot be set when the dialog is visible. + + + + Gets or sets the default file extension to be added to file names. If the value is null + or string.Empty, the extension is not added to the file names. + + + + + Gets the index for the currently selected file type. + + + + + Gets the selected filename. + + A object. + This property cannot be used when multiple files are selected. + + + + Gets the selected item as a ShellObject. + + A object. + This property cannot be used when multiple files + are selected. + + + + Gets or sets the initial directory displayed when the dialog is shown. + A null or empty string indicates that the dialog is using the default directory. + + A object. + + + + Gets or sets a location that is always selected when the dialog is opened, + regardless of previous user action. A null value implies that the dialog is using + the default location. + + + + + Sets the folder and path used as a default if there is not a recently used folder value available. + + + + + Sets the location (ShellContainer + used as a default if there is not a recently used folder value available. + + + + + Gets or sets a value that enables a calling application + to associate a GUID with a dialog's persisted state. + + + + + Default file name. + + + + + Indicates whether this feature is supported on the current platform. + + + + + Creates the push button controls used by the Common File Dialog. + + + + + Defines the properties and constructors for all prominent controls in the Common File Dialog. + + + + + Defines an abstract class that supports shared functionality for the + common file dialog controls. + + + + + Holds the text that is displayed for this control. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the text. + + The text of the common file dialog control. + + + + Creates a new instance of this class with the specified name and text. + + The name of the common file dialog control. + The text of the common file dialog control. + + + + Attach the custom control itself to the specified dialog + + the target dialog + + + + Gets or sets the text string that is displayed on the control. + + + + + Gets or sets a value that determines if this control is enabled. + + + + + Gets or sets a boolean value that indicates whether + this control is visible. + + + + + Has this control been added to the dialog + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Gets or sets the prominent value of this control. + + Only one control can be specified as prominent. If more than one control is specified prominent, + then an 'E_UNEXPECTED' exception will be thrown when these controls are added to the dialog. + A group box control can only be specified as prominent if it contains one control and that control is of type 'CommonFileDialogProminentControl'. + + + + + Initializes a new instance of this class. + + + + + Initializes a new instance of this class with the text only. + + The text to display for this control. + + + + Initializes a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Attach the PushButton control to the dialog object + + Target dialog + + + + Occurs when the user clicks the control. This event is routed from COM via the event sink. + + + + + Creates the check button controls used by the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Creates a new instance of this class with the specified text and check state. + + The text to display for this control. + The check state of this control. + + + + Creates a new instance of this class with the specified name, text and check state. + + The name of this control. + The text to display for this control. + The check state of this control. + + + + Attach the CheckButton control to the dialog object. + + the target dialog + + + + Gets or sets the state of the check box. + + + + + Occurs when the user changes the check state. + + + + + Creates the ComboBox controls in the Common File Dialog. + + + + + Specifies a property, event and method that indexed controls need + to implement. + + + + not sure where else to put this, so leaving here for now. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + + Text to display for this control + + + + Raises the SelectedIndexChanged event if this control is + enabled. + + Because this method is defined in an interface, we can either + have it as public, or make it private and explicitly implement (like below). + Making it public doesn't really help as its only internal (but can't have this + internal because of the interface) + + + + + Attach the ComboBox control to the dialog object + + The target dialog + + + + Gets the collection of CommonFileDialogComboBoxItem objects. + + + + + Gets or sets the current index of the selected item. + + + + + Occurs when the SelectedIndex is changed. + + + + By initializing the SelectedIndexChanged event with an empty + delegate, it is not necessary to check + if the SelectedIndexChanged is not null. + + + + + + Creates a ComboBoxItem for the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to use for the combo box item. + + + + Gets or sets the string that is displayed for this item. + + + + + Provides a strongly typed collection for dialog controls. + + DialogControl + + + + Inserts an dialog control at the specified index. + + The location to insert the control. + The item to insert. + A control with + the same name already exists in this collection -or- + the control is being hosted by another dialog -or- the associated dialog is + showing and cannot be modified. + + + + Removes the control at the specified index. + + The location of the control to remove. + + The associated dialog is + showing and cannot be modified. + + + + Recursively searches for the control who's id matches the value + passed in the parameter. + + + An integer containing the identifier of the + control being searched for. + + A DialogControl who's id matches the value of the + parameter. + + + + + Recursively searches for a given control id in the + collection passed via the parameter. + + + A Collection<CommonFileDialogControl> + An int containing the identifier of the control + being searched for. + + A DialogControl who's Id matches the value of the + parameter. + + + + + Defines the indexer that supports accessing controls by name. + + + Control names are case sensitive. + This indexer is useful when the dialog is created in XAML + rather than constructed in code. + + The name cannot be null or a zero-length string. + If there is more than one control with the same name, only the first control will be returned. + + + + Stores the file extensions used when filtering files in File Open and File Save dialogs. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified display name and + file extension list. + + The name of this filter. + The list of extensions in + this filter. See remarks. + The can use a semicolon(";") + or comma (",") to separate extensions. Extensions can be prefaced + with a period (".") or with the file wild card specifier "*.". + + The cannot be null or a + zero-length string. + + + + + Internal helper that generates a single filter + specification for this filter, used by the COM API. + + Filter specification for this filter + + + + + Returns a string representation for this filter that includes + the display name and the list of extensions. + + A . + + + + Gets or sets the display name for this filter. + + + The value for this property cannot be set to null or a + zero-length string. + + + + + Gets a collection of the individual extensions + described by this filter. + + + + + Gets or sets a value that controls whether the extensions are displayed. + + + + + Provides a strongly typed collection for file dialog filters. + + + + + Creates the event data associated with event. + + + + + + Creates a new instance of this class. + + The name of the folder. + + + + Gets or sets the name of the folder. + + + + + Represents a group box control for the Common File Dialog. + note + + + + Creates a new instance of this class. + + + + + Create a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Initializes the item collection for this class. + + + + + Attach the GroupBox control to the dialog object + + Target dialog + + + + Gets the collection of controls for this group box. + + + + + Defines the label controls in the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Attach this control to the dialog object + + Target dialog + + + + Defines the menu controls for the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Attach the Menu control to the dialog object. + + the target dialog + + + + Gets the collection of CommonFileDialogMenuItem objects. + + + + + Creates the CommonFileDialogMenuItem items for the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Attach this control to the dialog object + + Target dialog + + + + Occurs when a user clicks a menu item. + + + + + Represents a radio button list for the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + + The name of this control. + + + + Occurs when the user changes the SelectedIndex. + + Because this method is defined in an interface, we can either + have it as public, or make it private and explicitly implement (like below). + Making it public doesn't really help as its only internal (but can't have this + internal because of the interface) + + + + + Attach the RadioButtonList control to the dialog object + + The target dialog + + + + Gets the collection of CommonFileDialogRadioButtonListItem objects + + + + + Gets or sets the current index of the selected item. + + + + + Occurs when the user changes the SelectedIndex. + + + + By initializing the SelectedIndexChanged event with an empty + delegate, we can skip the test to determine + if the SelectedIndexChanged is null. + test. + + + + + Represents a list item for the CommonFileDialogRadioButtonList object. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The string that you want to display for this list item. + + + + Gets or sets the string that will be displayed for this list item. + + + + + Specifies identifiers to indicate the return value of a CommonFileDialog dialog. + + + + + Default value for enumeration, a dialog box should never return this value. + + + + + The dialog box return value is OK (usually sent from a button labeled OK or Save). + + + + + The dialog box return value is Cancel (usually sent from a button labeled Cancel). + + + + + Defines the class for the simplest separator controls. + + + + + Attach the Separator control to the dialog object + + Target dialog + + + + Defines the class of commonly used file filters. + + + + + Gets a value that specifies the filter for *.txt files. + + + + + Gets a value that specifies the filter for picture files. + + + + + Gets a value that specifies the filter for Microsoft Office files. + + + + + Defines the text box controls in the Common File Dialog. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified text. + + The text to display for this control. + + + + Creates a new instance of this class with the specified name and text. + + The name of this control. + The text to display for this control. + + + + Holds an instance of the customized (/native) dialog and should + be null until after the Attach() call is made. + + + + + Attach the TextBox control to the dialog object + + Target dialog + + + + Gets or sets a value for the text string contained in the CommonFileDialogTextBox. + + + + + Creates a Vista or Windows 7 Common File Dialog, allowing the user to select one or more files. + + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + + The name of this dialog. + + + + Gets a collection of the selected file names. + + This property should only be used when the + + property is true. + + + + Gets a collection of the selected items as ShellObject objects. + + This property should only be used when the + + property is true. + + + + Gets or sets a value that determines whether the user can select more than one file. + + + + + Gets or sets a value that determines whether the user can select folders or files. + Default value is false. + + + + + Gets or sets a value that determines whether the user can select non-filesystem items, + such as Library, Search Connectors, or Known Folders. + + + + + Creates a Vista or Windows 7 Common File Dialog, allowing the user to select the filename and location for a saved file. + + + to save a file. Associated enumeration: . + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + + The name of this dialog. + + + + Sets an item to appear as the initial entry in a Save As dialog. + + The initial entry to be set in the dialog. + The name of the item is displayed in the file name edit box, + and the containing folder is opened in the view. This would generally be + used when the application is saving an item that already exists. + + + + Specifies which properties will be collected in the save dialog. + + True to show default properties for the currently selected + filetype in addition to the properties specified by propertyList. False to show only properties + specified by pList. + List of properties to collect. This parameter can be null. + + + SetCollectedPropertyKeys can be called at any time before the dialog is displayed or while it + is visible. If different properties are to be collected depending on the chosen filetype, + then SetCollectedProperties can be called in response to CommonFileDialog::FileTypeChanged event. + Note: By default, no properties are collected in the save dialog. + + + + + Gets or sets a value that controls whether to prompt before + overwriting an existing file of the same name. Default value is true. + + + This property cannot be changed when the dialog is showing. + + + + + Gets or sets a value that controls whether to prompt for creation if the item returned in the save dialog does not exist. + + Note that this does not actually create the item. + + This property cannot be changed when the dialog is showing. + + + + + Gets or sets a value that controls whether to the save dialog + displays in expanded mode. + + Expanded mode controls whether the dialog + shows folders for browsing or hides them. + + This property cannot be changed when the dialog is showing. + + + + + Gets or sets a value that controls whether the + returned file name has a file extension that matches the + currently selected file type. If necessary, the dialog appends the correct + file extension. + + + This property cannot be changed when the dialog is showing. + + + + + Retrieves the set of property values for a saved item or an item in the process of being saved. + + Collection of property values collected from the save dialog + This property can be called while the dialog is showing to retrieve the current + set of values in the metadata collection pane. It can also be called after the dialog + has closed, to retrieve the final set of values. The call to this method will fail + unless property collection has been turned on with a call to SetCollectedPropertyKeys method. + + + + + Internal class that contains interop declarations for + functions that are considered benign but that + are performance critical. + + + Functions that are benign but not performance critical + should be located in the NativeMethods class. + + + + + An in-memory property store cache + + + + + Gets the state of a property stored in the cache + + + + + + + + Gets the valeu and state of a property in the cache + + + + + + + + + Sets the state of a property in the cache. + + + + + + + + Sets the value and state in the cache. + + + + + + + + + A property store + + + + + Gets the number of properties contained in the property store. + + + + + + + Get a property key located at a specific index. + + + + + + + + Gets the value of a property from the store + + + + + + + + Sets the value of a property in the store + + + + + + + + Commits the changes. + + + + + + Sets the specified iconic thumbnail for the specified window. + This is typically done in response to a DWM message. + + The window handle. + The thumbnail bitmap. + + + + Sets the specified peek (live preview) bitmap for the specified + window. This is typically done in response to a DWM message. + + The window handle. + The thumbnail bitmap. + Whether to display a standard window + frame around the bitmap. + + + + Sets the specified peek (live preview) bitmap for the specified + window. This is typically done in response to a DWM message. + + The window handle. + The thumbnail bitmap. + The client area offset at which to display + the specified bitmap. The rest of the parent window will be + displayed as "remembered" by the DWM. + Whether to display a standard window + frame around the bitmap. + + + + Call this method to either enable custom previews on the taskbar (second argument as true) + or to disable (second argument as false). If called with True, the method will call DwmSetWindowAttribute + for the specific window handle and let DWM know that we will be providing a custom bitmap for the thumbnail + as well as Aero peek. + + + + + + + Defines a partial class that implements helper methods for retrieving Shell properties + using a canonical name, property key, or a strongly-typed property. Also provides + access to all the strongly-typed system properties and default properties collections. + + + + + Returns a property available in the default property collection using + the given property key. + + The property key. + An IShellProperty. + + + + Returns a property available in the default property collection using + the given canonical name. + + The canonical name. + An IShellProperty. + + + + Returns a strongly typed property available in the default property collection using + the given property key. + + The type of property to retrieve. + The property key. + A strongly-typed ShellProperty for the given property key. + + + + Returns a strongly typed property available in the default property collection using + the given canonical name. + + The type of property to retrieve. + The canonical name. + A strongly-typed ShellProperty for the given canonical name. + + + + Returns the shell property writer used when writing multiple properties. + + A ShellPropertyWriter. + Use the Using pattern with the returned ShellPropertyWriter or + manually call the Close method on the writer to commit the changes + and dispose the writer + + + + Cleans up memory + + + + + Cleans up memory + + + + + Gets all the properties for the system through an accessor. + + + + + Gets the collection of all the default properties for this item. + + + + + .System Properties + + + + + Base class for all the strongly-typed properties + + + + + Name: System.AcquisitionID -- PKEY_AcquisitionID + Description: Hash to determine acquisition session. + + Type: Int32 -- VT_I4 + FormatID: {65A98875-3C80-40AB-ABBC-EFDAF77DBEE2}, 100 + + + + + Name: System.ApplicationName -- PKEY_ApplicationName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 18 (PIDSI_APPNAME) + + + + + Name: System.Author -- PKEY_Author + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 4 (PIDSI_AUTHOR) + + + + + Name: System.Capacity -- PKEY_Capacity + Description: The amount of total space in bytes. + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 3 (PID_VOLUME_CAPACITY) (Filesystem Volume Properties) + + + + + Name: System.Category -- PKEY_Category + Description: Legacy code treats this as VT_LPSTR. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 2 (PIDDSI_CATEGORY) + + + + + Name: System.Comment -- PKEY_Comment + Description: Comments. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 6 (PIDSI_COMMENTS) + + + + + Name: System.Company -- PKEY_Company + Description: The company or publisher. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 15 (PIDDSI_COMPANY) + + + + + Name: System.ComputerName -- PKEY_ComputerName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 5 (PID_COMPUTERNAME) + + + + + Name: System.ContainedItems -- PKEY_ContainedItems + Description: The list of type of items, this item contains. For example, this item contains urls, attachments etc. + This is represented as a vector array of GUIDs where each GUID represents certain type. + + Type: Multivalue Guid -- VT_VECTOR | VT_CLSID (For variants: VT_ARRAY | VT_CLSID) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 29 + + + + + Name: System.ContentStatus -- PKEY_ContentStatus + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 27 + + + + + Name: System.ContentType -- PKEY_ContentType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 26 + + + + + Name: System.Copyright -- PKEY_Copyright + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 11 (PIDMSI_COPYRIGHT) + + + + + Name: System.DateAccessed -- PKEY_DateAccessed + Description: The time of the last access to the item. The Indexing Service friendly name is 'access'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 16 (PID_STG_ACCESSTIME) + + + + + Name: System.DateAcquired -- PKEY_DateAcquired + Description: The time the file entered the system via acquisition. This is not the same as System.DateImported. + Examples are when pictures are acquired from a camera, or when music is purchased online. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {2CBAA8F5-D81F-47CA-B17A-F8D822300131}, 100 + + + + + Name: System.DateArchived -- PKEY_DateArchived + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {43F8D7B7-A444-4F87-9383-52271C9B915C}, 100 + + + + + Name: System.DateCompleted -- PKEY_DateCompleted + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {72FAB781-ACDA-43E5-B155-B2434F85E678}, 100 + + + + + Name: System.DateCreated -- PKEY_DateCreated + Description: The date and time the item was created. The Indexing Service friendly name is 'create'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 15 (PID_STG_CREATETIME) + + + + + Name: System.DateImported -- PKEY_DateImported + Description: The time the file is imported into a separate database. This is not the same as System.DateAcquired. (Eg, 2003:05:22 13:55:04) + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 18258 + + + + + Name: System.DateModified -- PKEY_DateModified + Description: The date and time of the last write to the item. The Indexing Service friendly name is 'write'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 14 (PID_STG_WRITETIME) + + + + + Name: System.DescriptionID -- PKEY_DescriptionID + Description: The contents of a SHDESCRIPTIONID structure as a buffer of bytes. + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 2 (PID_DESCRIPTIONID) + + + + + Name: System.DueDate -- PKEY_DueDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {3F8472B5-E0AF-4DB2-8071-C53FE76AE7CE}, 100 + + + + + Name: System.EndDate -- PKEY_EndDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {C75FAA05-96FD-49E7-9CB4-9F601082D553}, 100 + + + + + Name: System.FileAllocationSize -- PKEY_FileAllocationSize + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 18 (PID_STG_ALLOCSIZE) + + + + + Name: System.FileAttributes -- PKEY_FileAttributes + Description: This is the WIN32_FIND_DATA dwFileAttributes for the file-based item. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 13 (PID_STG_ATTRIBUTES) + + + + + Name: System.FileCount -- PKEY_FileCount + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 12 + + + + + Name: System.FileDescription -- PKEY_FileDescription + Description: This is a user-friendly description of the file. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 3 (PIDVSI_FileDescription) + + + + + Name: System.FileExtension -- PKEY_FileExtension + Description: This is the file extension of the file based item, including the leading period. + + If System.FileName is VT_EMPTY, then this property should be too. Otherwise, it should be derived + appropriately by the data source from System.FileName. If System.FileName does not have a file + extension, this value should be VT_EMPTY. + + To obtain the type of any item (including an item that is not a file), use System.ItemType. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" ".txt" + "\\server\share\mydir\goodnews.doc" ".doc" + "\\server\share\numbers.xls" ".xls" + "\\server\share\folder" VT_EMPTY + "c:\foo\MyFolder" VT_EMPTY + [desktop] VT_EMPTY + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E4F10A3C-49E6-405D-8288-A23BD4EEAA6C}, 100 + + + + + Name: System.FileFRN -- PKEY_FileFRN + Description: This is the unique file ID, also known as the File Reference Number. For a given file, this is the same value + as is found in the structure variable FILE_ID_BOTH_DIR_INFO.FileId, via GetFileInformationByHandleEx(). + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 21 (PID_STG_FRN) + + + + + Name: System.FileName -- PKEY_FileName + Description: This is the file name (including extension) of the file. + + It is possible that the item might not exist on a filesystem (ie, it may not be opened + using CreateFile). Nonetheless, if the item is represented as a file from the logical sense + (and its name follows standard Win32 file-naming syntax), then the data source should emit this property. + + If an item is not a file, then the value for this property is VT_EMPTY. See + System.ItemNameDisplay. + + This has the same value as System.ParsingName for items that are provided by the Shell's file folder. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "hello.txt" + "\\server\share\mydir\goodnews.doc" "goodnews.doc" + "\\server\share\numbers.xls" "numbers.xls" + "c:\foo\MyFolder" "MyFolder" + (email message) VT_EMPTY + (song on portable device) "song.wma" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {41CF5AE0-F75A-4806-BD87-59C7D9248EB9}, 100 + + + + + Name: System.FileOwner -- PKEY_FileOwner + Description: This is the owner of the file, according to the file system. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Misc) {9B174B34-40FF-11D2-A27E-00C04FC30871}, 4 (PID_MISC_OWNER) + + + + + Name: System.FileVersion -- PKEY_FileVersion + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 4 (PIDVSI_FileVersion) + + + + + Name: System.FindData -- PKEY_FindData + Description: WIN32_FIND_DATAW in buffer of bytes. + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 0 (PID_FINDDATA) + + + + + Name: System.FlagColor -- PKEY_FlagColor + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {67DF94DE-0CA7-4D6F-B792-053A3E4F03CF}, 100 + + + + + Name: System.FlagColorText -- PKEY_FlagColorText + Description: This is the user-friendly form of System.FlagColor. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {45EAE747-8E2A-40AE-8CBF-CA52ABA6152A}, 100 + + + + + Name: System.FlagStatus -- PKEY_FlagStatus + Description: Status of Flag. Values: (0=none 1=white 2=Red). cdoPR_FLAG_STATUS + + Type: Int32 -- VT_I4 + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 12 + + + + + Name: System.FlagStatusText -- PKEY_FlagStatusText + Description: This is the user-friendly form of System.FlagStatus. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DC54FD2E-189D-4871-AA01-08C2F57A4ABC}, 100 + + + + + Name: System.FreeSpace -- PKEY_FreeSpace + Description: The amount of free space in bytes. + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 2 (PID_VOLUME_FREE) (Filesystem Volume Properties) + + + + + Name: System.FullText -- PKEY_FullText + Description: This PKEY is used to specify search terms that should be applied as broadly as possible, + across all valid properties for the data source(s) being searched. It should not be + emitted from a data source. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1E3EE840-BC2B-476C-8237-2ACD1A839B22}, 6 + + + + + Name: System.Identity -- PKEY_Identity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A26F4AFC-7346-4299-BE47-EB1AE613139F}, 100 + + + + + Name: System.ImageParsingName -- PKEY_ImageParsingName + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D7750EE0-C6A4-48EC-B53E-B87B52E6D073}, 100 + + + + + Name: System.Importance -- PKEY_Importance + Description: + Type: Int32 -- VT_I4 + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 11 + + + + + Name: System.ImportanceText -- PKEY_ImportanceText + Description: This is the user-friendly form of System.Importance. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A3B29791-7713-4E1D-BB40-17DB85F01831}, 100 + + + + + Name: System.InfoTipText -- PKEY_InfoTipText + Description: The text (with formatted property values) to show in the infotip. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 17 + + + + + Name: System.InternalName -- PKEY_InternalName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 5 (PIDVSI_InternalName) + + + + + Name: System.IsAttachment -- PKEY_IsAttachment + Description: Identifies if this item is an attachment. + + Type: Boolean -- VT_BOOL + FormatID: {F23F425C-71A1-4FA8-922F-678EA4A60408}, 100 + + + + + Name: System.IsDefaultNonOwnerSaveLocation -- PKEY_IsDefaultNonOwnerSaveLocation + Description: Identifies the default save location for a library for non-owners of the library + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 5 + + + + + Name: System.IsDefaultSaveLocation -- PKEY_IsDefaultSaveLocation + Description: Identifies the default save location for a library for the owner of the library + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 3 + + + + + Name: System.IsDeleted -- PKEY_IsDeleted + Description: + Type: Boolean -- VT_BOOL + FormatID: {5CDA5FC8-33EE-4FF3-9094-AE7BD8868C4D}, 100 + + + + + Name: System.IsEncrypted -- PKEY_IsEncrypted + Description: Is the item encrypted? + + Type: Boolean -- VT_BOOL + FormatID: {90E5E14E-648B-4826-B2AA-ACAF790E3513}, 10 + + + + + Name: System.IsFlagged -- PKEY_IsFlagged + Description: + Type: Boolean -- VT_BOOL + FormatID: {5DA84765-E3FF-4278-86B0-A27967FBDD03}, 100 + + + + + Name: System.IsFlaggedComplete -- PKEY_IsFlaggedComplete + Description: + Type: Boolean -- VT_BOOL + FormatID: {A6F360D2-55F9-48DE-B909-620E090A647C}, 100 + + + + + Name: System.IsIncomplete -- PKEY_IsIncomplete + Description: Identifies if the message was not completely received for some error condition. + + Type: Boolean -- VT_BOOL + FormatID: {346C8BD1-2E6A-4C45-89A4-61B78E8E700F}, 100 + + + + + Name: System.IsLocationSupported -- PKEY_IsLocationSupported + Description: A bool value to know if a location is supported (locally indexable, or remotely indexed). + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 8 + + + + + Name: System.IsPinnedToNameSpaceTree -- PKEY_IsPinnedToNameSpaceTree + Description: A bool value to know if a shell folder is pinned to the navigation pane + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 2 + + + + + Name: System.IsRead -- PKEY_IsRead + Description: Has the item been read? + + Type: Boolean -- VT_BOOL + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 10 + + + + + Name: System.IsSearchOnlyItem -- PKEY_IsSearchOnlyItem + Description: Identifies if a location or a library is search only + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 4 + + + + + Name: System.IsSendToTarget -- PKEY_IsSendToTarget + Description: Provided by certain shell folders. Return TRUE if the folder is a valid Send To target. + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 33 + + + + + Name: System.IsShared -- PKEY_IsShared + Description: Is this item shared? This only checks for ACLs that are not inherited. + + Type: Boolean -- VT_BOOL + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 100 + + + + + Name: System.ItemAuthors -- PKEY_ItemAuthors + Description: This is the generic list of authors associated with an item. + + For example, the artist name for a track is the item author. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D0A04F0A-462A-48A4-BB2F-3706E88DBD7D}, 100 + + + + + Name: System.ItemClassType -- PKEY_ItemClassType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {048658AD-2DB8-41A4-BBB6-AC1EF1207EB1}, 100 + + + + + Name: System.ItemDate -- PKEY_ItemDate + Description: This is the main date for an item. The date of interest. + + For example, for photos this maps to System.Photo.DateTaken. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {F7DB74B4-4287-4103-AFBA-F1B13DCD75CF}, 100 + + + + + Name: System.ItemFolderNameDisplay -- PKEY_ItemFolderNameDisplay + Description: This is the user-friendly display name of the parent folder of an item. + + If System.ItemFolderPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it + should be derived appropriately by the data source from System.ItemFolderPathDisplay. + + If the folder is a file folder, the value will be localized if a localized name is available. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "bar" + "\\server\share\mydir\goodnews.doc" "mydir" + "\\server\share\numbers.xls" "share" + "c:\foo\MyFolder" "foo" + "/Mailbox Account/Inbox/'Re: Hello!'" "Inbox" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 2 (PID_STG_DIRECTORY) + + + + + Name: System.ItemFolderPathDisplay -- PKEY_ItemFolderPathDisplay + Description: This is the user-friendly display path of the parent folder of an item. + + If System.ItemPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it should + be derived appropriately by the data source from System.ItemPathDisplay. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "c:\foo\bar" + "\\server\share\mydir\goodnews.doc" "\\server\share\mydir" + "\\server\share\numbers.xls" "\\server\share" + "c:\foo\MyFolder" "c:\foo" + "/Mailbox Account/Inbox/'Re: Hello!'" "/Mailbox Account/Inbox" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 6 + + + + + Name: System.ItemFolderPathDisplayNarrow -- PKEY_ItemFolderPathDisplayNarrow + Description: This is the user-friendly display path of the parent folder of an item. The format of the string + should be tailored such that the folder name comes first, to optimize for a narrow viewing column. + + If the folder is a file folder, the value includes localized names if they are present. + + If System.ItemFolderPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it should + be derived appropriately by the data source from System.ItemFolderPathDisplay. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "bar (c:\foo)" + "\\server\share\mydir\goodnews.doc" "mydir (\\server\share)" + "\\server\share\numbers.xls" "share (\\server)" + "c:\foo\MyFolder" "foo (c:\)" + "/Mailbox Account/Inbox/'Re: Hello!'" "Inbox (/Mailbox Account)" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DABD30ED-0043-4789-A7F8-D013A4736622}, 100 + + + + + Name: System.ItemName -- PKEY_ItemName + Description: This is the base-name of the System.ItemNameDisplay. + + If the item is a file this property + includes the extension in all cases, and will be localized if a localized name is available. + + If the item is a message, then the value of this property does not include the forwarding or + reply prefixes (see System.ItemNamePrefix). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6B8DA074-3B5C-43BC-886F-0A2CDCE00B6F}, 100 + + + + + Name: System.ItemNameDisplay -- PKEY_ItemNameDisplay + Description: This is the display name in "most complete" form. This is the best effort unique representation + of the name of an item that makes sense for end users to read. It is the concatentation of + System.ItemNamePrefix and System.ItemName. + + If the item is a file this property + includes the extension in all cases, and will be localized if a localized name is available. + + There are acceptable cases when System.FileName is not VT_EMPTY, yet the value of this property + is completely different. Email messages are a key example. If the item is an email message, + the item name is likely the subject. In that case, the value must be the concatenation of the + System.ItemNamePrefix and System.ItemName. Since the value of System.ItemNamePrefix excludes + any trailing whitespace, the concatenation must include a whitespace when generating System.ItemNameDisplay. + + Note that this property is not guaranteed to be unique, but the idea is to promote the most likely + candidate that can be unique and also makes sense for end users. For example, for documents, you + might think about using System.Title as the System.ItemNameDisplay, but in practice the title of + the documents may not be useful or unique enough to be of value as the sole System.ItemNameDisplay. + Instead, providing the value of System.FileName as the value of System.ItemNameDisplay is a better + candidate. In Windows Mail, the emails are stored in the file system as .eml files and the + System.FileName for those files are not human-friendly as they contain GUIDs. In this example, + promoting System.Subject as System.ItemNameDisplay makes more sense. + + Compatibility notes: + + Shell folder implementations on Vista: use PKEY_ItemNameDisplay for the name column when + you want Explorer to call ISF::GetDisplayNameOf(SHGDN_NORMAL) to get the value of the name. Use + another PKEY (like PKEY_ItemName) when you want Explorer to call either the folder's property store or + ISF2::GetDetailsEx in order to get the value of the name. + + Shell folder implementations on XP: the first column needs to be the name column, and Explorer + will call ISF::GetDisplayNameOf to get the value of the name. The PKEY/SCID does not matter. + + Example values: + + File: "hello.txt" + Message: "Re: Let's talk about Tom's argyle socks!" + Device folder: "song.wma" + Folder: "Documents" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 10 (PID_STG_NAME) + + + + + Name: System.ItemNamePrefix -- PKEY_ItemNamePrefix + Description: This is the prefix of an item, used for email messages. + where the subject begins with "Re:" which is the prefix. + + If the item is a file, then the value of this property is VT_EMPTY. + + If the item is a message, then the value of this property is the forwarding or reply + prefixes (including delimiting colon, but no whitespace), or VT_EMPTY if there is no prefix. + + Example values: + + System.ItemNamePrefix System.ItemName System.ItemNameDisplay + --------------------- ------------------- ---------------------- + VT_EMPTY "Great day" "Great day" + "Re:" "Great day" "Re: Great day" + "Fwd: " "Monthly budget" "Fwd: Monthly budget" + VT_EMPTY "accounts.xls" "accounts.xls" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D7313FF1-A77A-401C-8C99-3DBDD68ADD36}, 100 + + + + + Name: System.ItemParticipants -- PKEY_ItemParticipants + Description: This is the generic list of people associated with an item and who contributed + to the item. + + For example, this is the combination of people in the To list, Cc list and + sender of an email message. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D4D0AA16-9948-41A4-AA85-D97FF9646993}, 100 + + + + + Name: System.ItemPathDisplay -- PKEY_ItemPathDisplay + Description: This is the user-friendly display path to the item. + + If the item is a file or folder this property + includes the extension in all cases, and will be localized if a localized name is available. + + For other items,this is the user-friendly equivalent, assuming the item exists in hierarchical storage. + + Unlike System.ItemUrl, this property value does not include the URL scheme. + + To parse an item path, use System.ItemUrl or System.ParsingPath. To reference shell + namespace items using shell APIs, use System.ParsingPath. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "c:\foo\bar\hello.txt" + "\\server\share\mydir\goodnews.doc" "\\server\share\mydir\goodnews.doc" + "\\server\share\numbers.xls" "\\server\share\numbers.xls" + "c:\foo\MyFolder" "c:\foo\MyFolder" + "/Mailbox Account/Inbox/'Re: Hello!'" "/Mailbox Account/Inbox/'Re: Hello!'" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 7 + + + + + Name: System.ItemPathDisplayNarrow -- PKEY_ItemPathDisplayNarrow + Description: This is the user-friendly display path to the item. The format of the string should be + tailored such that the name comes first, to optimize for a narrow viewing column. + + If the item is a file, the value excludes the file extension, and includes localized names if they are present. + If the item is a message, the value includes the System.ItemNamePrefix. + + To parse an item path, use System.ItemUrl or System.ParsingPath. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "hello (c:\foo\bar)" + "\\server\share\mydir\goodnews.doc" "goodnews (\\server\share\mydir)" + "\\server\share\folder" "folder (\\server\share)" + "c:\foo\MyFolder" "MyFolder (c:\foo)" + "/Mailbox Account/Inbox/'Re: Hello!'" "Re: Hello! (/Mailbox Account/Inbox)" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 8 + + + + + Name: System.ItemType -- PKEY_ItemType + Description: This is the canonical type of the item and is intended to be programmatically + parsed. + + If there is no canonical type, the value is VT_EMPTY. + + If the item is a file (ie, System.FileName is not VT_EMPTY), the value is the same as + System.FileExtension. + + Use System.ItemTypeText when you want to display the type to end users in a view. (If + the item is a file, passing the System.ItemType value to PSFormatForDisplay will + result in the same value as System.ItemTypeText.) + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" ".txt" + "\\server\share\mydir\goodnews.doc" ".doc" + "\\server\share\folder" "Directory" + "c:\foo\MyFolder" "Directory" + [desktop] "Folder" + "/Mailbox Account/Inbox/'Re: Hello!'" "MAPI/IPM.Message" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 11 + + + + + Name: System.ItemTypeText -- PKEY_ItemTypeText + Description: This is the user friendly type name of the item. This is not intended to be + programmatically parsed. + + If System.ItemType is VT_EMPTY, the value of this property is also VT_EMPTY. + + If the item is a file, the value of this property is the same as if you passed the + file's System.ItemType value to PSFormatForDisplay. + + This property should not be confused with System.Kind, where System.Kind is a high-level + user friendly kind name. For example, for a document, System.Kind = "Document" and + System.Item.Type = ".doc" and System.Item.TypeText = "Microsoft Word Document" + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "Text File" + "\\server\share\mydir\goodnews.doc" "Microsoft Word Document" + "\\server\share\folder" "File Folder" + "c:\foo\MyFolder" "File Folder" + "/Mailbox Account/Inbox/'Re: Hello!'" "Outlook E-Mail Message" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 4 (PID_STG_STORAGETYPE) + + + + + Name: System.ItemUrl -- PKEY_ItemUrl + Description: This always represents a well formed URL that points to the item. + + To reference shell namespace items using shell APIs, use System.ParsingPath. + + Example values: + + Files: "file:///c:/foo/bar/hello.txt" + "csc://{GUID}/..." + Messages: "mapi://..." + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 9 (DISPID_QUERY_VIRTUALPATH) + + + + + Name: System.Keywords -- PKEY_Keywords + Description: The keywords for the item. Also referred to as tags. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 5 (PIDSI_KEYWORDS) + + + + + Name: System.Kind -- PKEY_Kind + Description: System.Kind is used to map extensions to various .Search folders. + Extensions are mapped to Kinds at HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\KindMap + The list of kinds is not extensible. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {1E3EE840-BC2B-476C-8237-2ACD1A839B22}, 3 + + + + + Name: System.KindText -- PKEY_KindText + Description: This is the user-friendly form of System.Kind. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F04BEF95-C585-4197-A2B7-DF46FDC9EE6D}, 100 + + + + + Name: System.Language -- PKEY_Language + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 28 + + + + + Name: System.MileageInformation -- PKEY_MileageInformation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FDF84370-031A-4ADD-9E91-0D775F1C6605}, 100 + + + + + Name: System.MIMEType -- PKEY_MIMEType + Description: The MIME type. Eg, for EML files: 'message/rfc822'. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B63E350-9CCC-11D0-BCDB-00805FCCCE04}, 5 + + + + + Name: System.NamespaceCLSID -- PKEY_NamespaceCLSID + Description: The CLSID of the name space extension for an item, the object that implements IShellFolder for this item + + Type: Guid -- VT_CLSID + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 6 + + + + + Name: System.Null -- PKEY_Null + Description: + Type: Null -- VT_NULL + FormatID: {00000000-0000-0000-0000-000000000000}, 0 + + + + + Name: System.OfflineAvailability -- PKEY_OfflineAvailability + Description: + Type: UInt32 -- VT_UI4 + FormatID: {A94688B6-7D9F-4570-A648-E3DFC0AB2B3F}, 100 + + + + + Name: System.OfflineStatus -- PKEY_OfflineStatus + Description: + Type: UInt32 -- VT_UI4 + FormatID: {6D24888F-4718-4BDA-AFED-EA0FB4386CD8}, 100 + + + + + Name: System.OriginalFileName -- PKEY_OriginalFileName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 6 + + + + + Name: System.OwnerSID -- PKEY_OwnerSID + Description: SID of the user that owns the library. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 6 + + + + + Name: System.ParentalRating -- PKEY_ParentalRating + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 21 (PIDMSI_PARENTAL_RATING) + + + + + Name: System.ParentalRatingReason -- PKEY_ParentalRatingReason + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {10984E0A-F9F2-4321-B7EF-BAF195AF4319}, 100 + + + + + Name: System.ParentalRatingsOrganization -- PKEY_ParentalRatingsOrganization + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A7FE0840-1344-46F0-8D37-52ED712A4BF9}, 100 + + + + + Name: System.ParsingBindContext -- PKEY_ParsingBindContext + Description: used to get the IBindCtx for an item for parsing + + Type: Any -- VT_NULL Legacy code may treat this as VT_UNKNOWN. + FormatID: {DFB9A04D-362F-4CA3-B30B-0254B17B5B84}, 100 + + + + + Name: System.ParsingName -- PKEY_ParsingName + Description: The shell namespace name of an item relative to a parent folder. This name may be passed to + IShellFolder::ParseDisplayName() of the parent shell folder. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 24 + + + + + Name: System.ParsingPath -- PKEY_ParsingPath + Description: This is the shell namespace path to the item. This path may be passed to + SHParseDisplayName to parse the path to the correct shell folder. + + If the item is a file, the value is identical to System.ItemPathDisplay. + + If the item cannot be accessed through the shell namespace, this value is VT_EMPTY. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 30 + + + + + Name: System.PerceivedType -- PKEY_PerceivedType + Description: The perceived type of a shell item, based upon its canonical type. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 9 + + + + + Name: System.PercentFull -- PKEY_PercentFull + Description: The amount filled as a percentage, multiplied by 100 (ie, the valid range is 0 through 100). + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 5 (Filesystem Volume Properties) + + + + + Name: System.Priority -- PKEY_Priority + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {9C1FCF74-2D97-41BA-B4AE-CB2E3661A6E4}, 5 + + + + + Name: System.PriorityText -- PKEY_PriorityText + Description: This is the user-friendly form of System.Priority. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D98BE98B-B86B-4095-BF52-9D23B2E0A752}, 100 + + + + + Name: System.Project -- PKEY_Project + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {39A7F922-477C-48DE-8BC8-B28441E342E3}, 100 + + + + + Name: System.ProviderItemID -- PKEY_ProviderItemID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F21D9941-81F0-471A-ADEE-4E74B49217ED}, 100 + + + + + Name: System.Rating -- PKEY_Rating + Description: Indicates the users preference rating of an item on a scale of 1-99 (1-12 = One Star, + 13-37 = Two Stars, 38-62 = Three Stars, 63-87 = Four Stars, 88-99 = Five Stars). + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 9 (PIDMSI_RATING) + + + + + Name: System.RatingText -- PKEY_RatingText + Description: This is the user-friendly form of System.Rating. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {90197CA7-FD8F-4E8C-9DA3-B57E1E609295}, 100 + + + + + Name: System.Sensitivity -- PKEY_Sensitivity + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {F8D3F6AC-4874-42CB-BE59-AB454B30716A}, 100 + + + + + Name: System.SensitivityText -- PKEY_SensitivityText + Description: This is the user-friendly form of System.Sensitivity. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D0C7F054-3F72-4725-8527-129A577CB269}, 100 + + + + + Name: System.SFGAOFlags -- PKEY_SFGAOFlags + Description: IShellFolder::GetAttributesOf flags, with SFGAO_PKEYSFGAOMASK attributes masked out. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 25 + + + + + Name: System.SharedWith -- PKEY_SharedWith + Description: Who is the item shared with? + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 200 + + + + + Name: System.ShareUserRating -- PKEY_ShareUserRating + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 12 (PIDMSI_SHARE_USER_RATING) + + + + + Name: System.SharingStatus -- PKEY_SharingStatus + Description: What is the item's sharing status (not shared, shared, everyone (homegroup or everyone), or private)? + + Type: UInt32 -- VT_UI4 + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 300 + + + + + Name: System.SimpleRating -- PKEY_SimpleRating + Description: Indicates the users preference rating of an item on a scale of 0-5 (0=unrated, 1=One Star, 2=Two Stars, 3=Three Stars, + 4=Four Stars, 5=Five Stars) + + Type: UInt32 -- VT_UI4 + FormatID: {A09F084E-AD41-489F-8076-AA5BE3082BCA}, 100 + + + + + Name: System.Size -- PKEY_Size + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 12 (PID_STG_SIZE) + + + + + Name: System.SoftwareUsed -- PKEY_SoftwareUsed + Description: PropertyTagSoftwareUsed + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 305 + + + + + Name: System.SourceItem -- PKEY_SourceItem + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {668CDFA5-7A1B-4323-AE4B-E527393A1D81}, 100 + + + + + Name: System.StartDate -- PKEY_StartDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {48FD6EC8-8A12-4CDF-A03E-4EC5A511EDDE}, 100 + + + + + Name: System.Status -- PKEY_Status + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_IntSite) {000214A1-0000-0000-C000-000000000046}, 9 + + + + + Name: System.Subject -- PKEY_Subject + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 3 (PIDSI_SUBJECT) + + + + + Name: System.Thumbnail -- PKEY_Thumbnail + Description: A data that represents the thumbnail in VT_CF format. + + Type: Clipboard -- VT_CF + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 17 (PIDSI_THUMBNAIL) + + + + + Name: System.ThumbnailCacheId -- PKEY_ThumbnailCacheId + Description: Unique value that can be used as a key to cache thumbnails. The value changes when the name, volume, or data modified + of an item changes. + + Type: UInt64 -- VT_UI8 + FormatID: {446D16B1-8DAD-4870-A748-402EA43D788C}, 100 + + + + + Name: System.ThumbnailStream -- PKEY_ThumbnailStream + Description: Data that represents the thumbnail in VT_STREAM format that GDI+/WindowsCodecs supports (jpg, png, etc). + + Type: Stream -- VT_STREAM + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 27 + + + + + Name: System.Title -- PKEY_Title + Description: Title of item. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 2 (PIDSI_TITLE) + + + + + Name: System.TotalFileSize -- PKEY_TotalFileSize + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 14 + + + + + Name: System.Trademarks -- PKEY_Trademarks + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 9 (PIDVSI_Trademarks) + + + + + System.AppUserModel Properties + + + + + System.Audio Properties + + + + + System.Calendar Properties + + + + + System.Communication Properties + + + + + System.Computer Properties + + + + + System.Contact Properties + + + + + System.Device Properties + + + + + System.DeviceInterface Properties + + + + + System.Devices Properties + + + + + System.Document Properties + + + + + System.DRM Properties + + + + + System.GPS Properties + + + + + System.Identity Properties + + + + + System.IdentityProvider Properties + + + + + System.Image Properties + + + + + System.Journal Properties + + + + + System.LayoutPattern Properties + + + + + System.Link Properties + + + + + System.Media Properties + + + + + System.Message Properties + + + + + System.Music Properties + + + + + System.Note Properties + + + + + System.Photo Properties + + + + + System.PropGroup Properties + + + + + System.PropList Properties + + + + + System.RecordedTV Properties + + + + + System.Search Properties + + + + + System.Shell Properties + + + + + System.Software Properties + + + + + System.Sync Properties + + + + + System.Task Properties + + + + + System.Video Properties + + + + + System.Volume Properties + + + + + System.AppUserModel Properties + + + + + Name: System.AppUserModel.ExcludeFromShowInNewInstall -- PKEY_AppUserModel_ExcludeFromShowInNewInstall + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 8 + + + + + Name: System.AppUserModel.ID -- PKEY_AppUserModel_ID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 5 + + + + + Name: System.AppUserModel.IsDestListSeparator -- PKEY_AppUserModel_IsDestListSeparator + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 6 + + + + + Name: System.AppUserModel.PreventPinning -- PKEY_AppUserModel_PreventPinning + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 9 + + + + + Name: System.AppUserModel.RelaunchCommand -- PKEY_AppUserModel_RelaunchCommand + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 2 + + + + + Name: System.AppUserModel.RelaunchDisplayNameResource -- PKEY_AppUserModel_RelaunchDisplayNameResource + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 4 + + + + + Name: System.AppUserModel.RelaunchIconResource -- PKEY_AppUserModel_RelaunchIconResource + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 3 + + + + + System.Audio Properties + + + + + Name: System.Audio.ChannelCount -- PKEY_Audio_ChannelCount + Description: Indicates the channel count for the audio file. Values: 1 (mono), 2 (stereo). + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 7 (PIDASI_CHANNEL_COUNT) + + + + + Name: System.Audio.Compression -- PKEY_Audio_Compression + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 10 (PIDASI_COMPRESSION) + + + + + Name: System.Audio.EncodingBitrate -- PKEY_Audio_EncodingBitrate + Description: Indicates the average data rate in Hz for the audio file in "bits per second". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 4 (PIDASI_AVG_DATA_RATE) + + + + + Name: System.Audio.Format -- PKEY_Audio_Format + Description: Indicates the format of the audio file. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_BSTR. + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 2 (PIDASI_FORMAT) + + + + + Name: System.Audio.IsVariableBitRate -- PKEY_Audio_IsVariableBitRate + Description: + Type: Boolean -- VT_BOOL + FormatID: {E6822FEE-8C17-4D62-823C-8E9CFCBD1D5C}, 100 + + + + + Name: System.Audio.PeakValue -- PKEY_Audio_PeakValue + Description: + Type: UInt32 -- VT_UI4 + FormatID: {2579E5D0-1116-4084-BD9A-9B4F7CB4DF5E}, 100 + + + + + Name: System.Audio.SampleRate -- PKEY_Audio_SampleRate + Description: Indicates the audio sample rate for the audio file in "samples per second". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 5 (PIDASI_SAMPLE_RATE) + + + + + Name: System.Audio.SampleSize -- PKEY_Audio_SampleSize + Description: Indicates the audio sample size for the audio file in "bits per sample". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 6 (PIDASI_SAMPLE_SIZE) + + + + + Name: System.Audio.StreamName -- PKEY_Audio_StreamName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 9 (PIDASI_STREAM_NAME) + + + + + Name: System.Audio.StreamNumber -- PKEY_Audio_StreamNumber + Description: + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 8 (PIDASI_STREAM_NUMBER) + + + + + System.Calendar Properties + + + + + Name: System.Calendar.Duration -- PKEY_Calendar_Duration + Description: The duration as specified in a string. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {293CA35A-09AA-4DD2-B180-1FE245728A52}, 100 + + + + + Name: System.Calendar.IsOnline -- PKEY_Calendar_IsOnline + Description: Identifies if the event is an online event. + + Type: Boolean -- VT_BOOL + FormatID: {BFEE9149-E3E2-49A7-A862-C05988145CEC}, 100 + + + + + Name: System.Calendar.IsRecurring -- PKEY_Calendar_IsRecurring + Description: + Type: Boolean -- VT_BOOL + FormatID: {315B9C8D-80A9-4EF9-AE16-8E746DA51D70}, 100 + + + + + Name: System.Calendar.Location -- PKEY_Calendar_Location + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F6272D18-CECC-40B1-B26A-3911717AA7BD}, 100 + + + + + Name: System.Calendar.OptionalAttendeeAddresses -- PKEY_Calendar_OptionalAttendeeAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D55BAE5A-3892-417A-A649-C6AC5AAAEAB3}, 100 + + + + + Name: System.Calendar.OptionalAttendeeNames -- PKEY_Calendar_OptionalAttendeeNames + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {09429607-582D-437F-84C3-DE93A2B24C3C}, 100 + + + + + Name: System.Calendar.OrganizerAddress -- PKEY_Calendar_OrganizerAddress + Description: Address of the organizer organizing the event. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {744C8242-4DF5-456C-AB9E-014EFB9021E3}, 100 + + + + + Name: System.Calendar.OrganizerName -- PKEY_Calendar_OrganizerName + Description: Name of the organizer organizing the event. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AAA660F9-9865-458E-B484-01BC7FE3973E}, 100 + + + + + Name: System.Calendar.ReminderTime -- PKEY_Calendar_ReminderTime + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {72FC5BA4-24F9-4011-9F3F-ADD27AFAD818}, 100 + + + + + Name: System.Calendar.RequiredAttendeeAddresses -- PKEY_Calendar_RequiredAttendeeAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {0BA7D6C3-568D-4159-AB91-781A91FB71E5}, 100 + + + + + Name: System.Calendar.RequiredAttendeeNames -- PKEY_Calendar_RequiredAttendeeNames + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {B33AF30B-F552-4584-936C-CB93E5CDA29F}, 100 + + + + + Name: System.Calendar.Resources -- PKEY_Calendar_Resources + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {00F58A38-C54B-4C40-8696-97235980EAE1}, 100 + + + + + Name: System.Calendar.ResponseStatus -- PKEY_Calendar_ResponseStatus + Description: This property stores the status of the user responses to meetings in her calendar. + + Type: UInt16 -- VT_UI2 + FormatID: {188C1F91-3C40-4132-9EC5-D8B03B72A8A2}, 100 + + + + + Name: System.Calendar.ShowTimeAs -- PKEY_Calendar_ShowTimeAs + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {5BF396D4-5EB2-466F-BDE9-2FB3F2361D6E}, 100 + + + + + Name: System.Calendar.ShowTimeAsText -- PKEY_Calendar_ShowTimeAsText + Description: This is the user-friendly form of System.Calendar.ShowTimeAs. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {53DA57CF-62C0-45C4-81DE-7610BCEFD7F5}, 100 + + + + + System.Communication Properties + + + + + Name: System.Communication.AccountName -- PKEY_Communication_AccountName + Description: Account Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 9 + + + + + Name: System.Communication.DateItemExpires -- PKEY_Communication_DateItemExpires + Description: Date the item expires due to the retention policy. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {428040AC-A177-4C8A-9760-F6F761227F9A}, 100 + + + + + Name: System.Communication.FollowupIconIndex -- PKEY_Communication_FollowupIconIndex + Description: This is the icon index used on messages marked for followup. + + Type: Int32 -- VT_I4 + FormatID: {83A6347E-6FE4-4F40-BA9C-C4865240D1F4}, 100 + + + + + Name: System.Communication.HeaderItem -- PKEY_Communication_HeaderItem + Description: This property will be true if the item is a header item which means the item hasn't been fully downloaded. + + Type: Boolean -- VT_BOOL + FormatID: {C9C34F84-2241-4401-B607-BD20ED75AE7F}, 100 + + + + + Name: System.Communication.PolicyTag -- PKEY_Communication_PolicyTag + Description: This a string used to identify the retention policy applied to the item. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {EC0B4191-AB0B-4C66-90B6-C6637CDEBBAB}, 100 + + + + + Name: System.Communication.SecurityFlags -- PKEY_Communication_SecurityFlags + Description: Security flags associated with the item to know if the item is encrypted, signed or DRM enabled. + + Type: Int32 -- VT_I4 + FormatID: {8619A4B6-9F4D-4429-8C0F-B996CA59E335}, 100 + + + + + Name: System.Communication.Suffix -- PKEY_Communication_Suffix + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {807B653A-9E91-43EF-8F97-11CE04EE20C5}, 100 + + + + + Name: System.Communication.TaskStatus -- PKEY_Communication_TaskStatus + Description: + Type: UInt16 -- VT_UI2 + FormatID: {BE1A72C6-9A1D-46B7-AFE7-AFAF8CEF4999}, 100 + + + + + Name: System.Communication.TaskStatusText -- PKEY_Communication_TaskStatusText + Description: This is the user-friendly form of System.Communication.TaskStatus. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A6744477-C237-475B-A075-54F34498292A}, 100 + + + + + System.Computer Properties + + + + + Name: System.Computer.DecoratedFreeSpace -- PKEY_Computer_DecoratedFreeSpace + Description: Free space and total space: "%s free of %s" + + Type: Multivalue UInt64 -- VT_VECTOR | VT_UI8 (For variants: VT_ARRAY | VT_UI8) + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 7 (Filesystem Volume Properties) + + + + + System.Contact Properties + + + + + Name: System.Contact.Anniversary -- PKEY_Contact_Anniversary + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {9AD5BADB-CEA7-4470-A03D-B84E51B9949E}, 100 + + + + + Name: System.Contact.AssistantName -- PKEY_Contact_AssistantName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CD102C9C-5540-4A88-A6F6-64E4981C8CD1}, 100 + + + + + Name: System.Contact.AssistantTelephone -- PKEY_Contact_AssistantTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9A93244D-A7AD-4FF8-9B99-45EE4CC09AF6}, 100 + + + + + Name: System.Contact.Birthday -- PKEY_Contact_Birthday + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 47 + + + + + Name: System.Contact.BusinessAddress -- PKEY_Contact_BusinessAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {730FB6DD-CF7C-426B-A03F-BD166CC9EE24}, 100 + + + + + Name: System.Contact.BusinessAddressCity -- PKEY_Contact_BusinessAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {402B5934-EC5A-48C3-93E6-85E86A2D934E}, 100 + + + + + Name: System.Contact.BusinessAddressCountry -- PKEY_Contact_BusinessAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {B0B87314-FCF6-4FEB-8DFF-A50DA6AF561C}, 100 + + + + + Name: System.Contact.BusinessAddressPostalCode -- PKEY_Contact_BusinessAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E1D4A09E-D758-4CD1-B6EC-34A8B5A73F80}, 100 + + + + + Name: System.Contact.BusinessAddressPostOfficeBox -- PKEY_Contact_BusinessAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BC4E71CE-17F9-48D5-BEE9-021DF0EA5409}, 100 + + + + + Name: System.Contact.BusinessAddressState -- PKEY_Contact_BusinessAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {446F787F-10C4-41CB-A6C4-4D0343551597}, 100 + + + + + Name: System.Contact.BusinessAddressStreet -- PKEY_Contact_BusinessAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DDD1460F-C0BF-4553-8CE4-10433C908FB0}, 100 + + + + + Name: System.Contact.BusinessFaxNumber -- PKEY_Contact_BusinessFaxNumber + Description: Business fax number of the contact. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {91EFF6F3-2E27-42CA-933E-7C999FBE310B}, 100 + + + + + Name: System.Contact.BusinessHomePage -- PKEY_Contact_BusinessHomePage + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {56310920-2491-4919-99CE-EADB06FAFDB2}, 100 + + + + + Name: System.Contact.BusinessTelephone -- PKEY_Contact_BusinessTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6A15E5A0-0A1E-4CD7-BB8C-D2F1B0C929BC}, 100 + + + + + Name: System.Contact.CallbackTelephone -- PKEY_Contact_CallbackTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BF53D1C3-49E0-4F7F-8567-5A821D8AC542}, 100 + + + + + Name: System.Contact.CarTelephone -- PKEY_Contact_CarTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8FDC6DEA-B929-412B-BA90-397A257465FE}, 100 + + + + + Name: System.Contact.Children -- PKEY_Contact_Children + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D4729704-8EF1-43EF-9024-2BD381187FD5}, 100 + + + + + Name: System.Contact.CompanyMainTelephone -- PKEY_Contact_CompanyMainTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8589E481-6040-473D-B171-7FA89C2708ED}, 100 + + + + + Name: System.Contact.Department -- PKEY_Contact_Department + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FC9F7306-FF8F-4D49-9FB6-3FFE5C0951EC}, 100 + + + + + Name: System.Contact.EmailAddress -- PKEY_Contact_EmailAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F8FA7FA3-D12B-4785-8A4E-691A94F7A3E7}, 100 + + + + + Name: System.Contact.EmailAddress2 -- PKEY_Contact_EmailAddress2 + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {38965063-EDC8-4268-8491-B7723172CF29}, 100 + + + + + Name: System.Contact.EmailAddress3 -- PKEY_Contact_EmailAddress3 + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {644D37B4-E1B3-4BAD-B099-7E7C04966ACA}, 100 + + + + + Name: System.Contact.EmailAddresses -- PKEY_Contact_EmailAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {84D8F337-981D-44B3-9615-C7596DBA17E3}, 100 + + + + + Name: System.Contact.EmailName -- PKEY_Contact_EmailName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CC6F4F24-6083-4BD4-8754-674D0DE87AB8}, 100 + + + + + Name: System.Contact.FileAsName -- PKEY_Contact_FileAsName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F1A24AA7-9CA7-40F6-89EC-97DEF9FFE8DB}, 100 + + + + + Name: System.Contact.FirstName -- PKEY_Contact_FirstName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {14977844-6B49-4AAD-A714-A4513BF60460}, 100 + + + + + Name: System.Contact.FullName -- PKEY_Contact_FullName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {635E9051-50A5-4BA2-B9DB-4ED056C77296}, 100 + + + + + Name: System.Contact.Gender -- PKEY_Contact_Gender + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3C8CEE58-D4F0-4CF9-B756-4E5D24447BCD}, 100 + + + + + Name: System.Contact.GenderValue -- PKEY_Contact_GenderValue + Description: + Type: UInt16 -- VT_UI2 + FormatID: {3C8CEE58-D4F0-4CF9-B756-4E5D24447BCD}, 101 + + + + + Name: System.Contact.Hobbies -- PKEY_Contact_Hobbies + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {5DC2253F-5E11-4ADF-9CFE-910DD01E3E70}, 100 + + + + + Name: System.Contact.HomeAddress -- PKEY_Contact_HomeAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {98F98354-617A-46B8-8560-5B1B64BF1F89}, 100 + + + + + Name: System.Contact.HomeAddressCity -- PKEY_Contact_HomeAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 65 + + + + + Name: System.Contact.HomeAddressCountry -- PKEY_Contact_HomeAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {08A65AA1-F4C9-43DD-9DDF-A33D8E7EAD85}, 100 + + + + + Name: System.Contact.HomeAddressPostalCode -- PKEY_Contact_HomeAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8AFCC170-8A46-4B53-9EEE-90BAE7151E62}, 100 + + + + + Name: System.Contact.HomeAddressPostOfficeBox -- PKEY_Contact_HomeAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7B9F6399-0A3F-4B12-89BD-4ADC51C918AF}, 100 + + + + + Name: System.Contact.HomeAddressState -- PKEY_Contact_HomeAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C89A23D0-7D6D-4EB8-87D4-776A82D493E5}, 100 + + + + + Name: System.Contact.HomeAddressStreet -- PKEY_Contact_HomeAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0ADEF160-DB3F-4308-9A21-06237B16FA2A}, 100 + + + + + Name: System.Contact.HomeFaxNumber -- PKEY_Contact_HomeFaxNumber + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {660E04D6-81AB-4977-A09F-82313113AB26}, 100 + + + + + Name: System.Contact.HomeTelephone -- PKEY_Contact_HomeTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 20 + + + + + Name: System.Contact.IMAddress -- PKEY_Contact_IMAddress + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D68DBD8A-3374-4B81-9972-3EC30682DB3D}, 100 + + + + + Name: System.Contact.Initials -- PKEY_Contact_Initials + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F3D8F40D-50CB-44A2-9718-40CB9119495D}, 100 + + + + + Name: System.Contact.JobTitle -- PKEY_Contact_JobTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 6 + + + + + Name: System.Contact.Label -- PKEY_Contact_Label + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {97B0AD89-DF49-49CC-834E-660974FD755B}, 100 + + + + + Name: System.Contact.LastName -- PKEY_Contact_LastName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8F367200-C270-457C-B1D4-E07C5BCD90C7}, 100 + + + + + Name: System.Contact.MailingAddress -- PKEY_Contact_MailingAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C0AC206A-827E-4650-95AE-77E2BB74FCC9}, 100 + + + + + Name: System.Contact.MiddleName -- PKEY_Contact_MiddleName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 71 + + + + + Name: System.Contact.MobileTelephone -- PKEY_Contact_MobileTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 35 + + + + + Name: System.Contact.NickName -- PKEY_Contact_NickName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 74 + + + + + Name: System.Contact.OfficeLocation -- PKEY_Contact_OfficeLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 7 + + + + + Name: System.Contact.OtherAddress -- PKEY_Contact_OtherAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {508161FA-313B-43D5-83A1-C1ACCF68622C}, 100 + + + + + Name: System.Contact.OtherAddressCity -- PKEY_Contact_OtherAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6E682923-7F7B-4F0C-A337-CFCA296687BF}, 100 + + + + + Name: System.Contact.OtherAddressCountry -- PKEY_Contact_OtherAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8F167568-0AAE-4322-8ED9-6055B7B0E398}, 100 + + + + + Name: System.Contact.OtherAddressPostalCode -- PKEY_Contact_OtherAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {95C656C1-2ABF-4148-9ED3-9EC602E3B7CD}, 100 + + + + + Name: System.Contact.OtherAddressPostOfficeBox -- PKEY_Contact_OtherAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8B26EA41-058F-43F6-AECC-4035681CE977}, 100 + + + + + Name: System.Contact.OtherAddressState -- PKEY_Contact_OtherAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {71B377D6-E570-425F-A170-809FAE73E54E}, 100 + + + + + Name: System.Contact.OtherAddressStreet -- PKEY_Contact_OtherAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FF962609-B7D6-4999-862D-95180D529AEA}, 100 + + + + + Name: System.Contact.PagerTelephone -- PKEY_Contact_PagerTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D6304E01-F8F5-4F45-8B15-D024A6296789}, 100 + + + + + Name: System.Contact.PersonalTitle -- PKEY_Contact_PersonalTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 69 + + + + + Name: System.Contact.PrimaryAddressCity -- PKEY_Contact_PrimaryAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C8EA94F0-A9E3-4969-A94B-9C62A95324E0}, 100 + + + + + Name: System.Contact.PrimaryAddressCountry -- PKEY_Contact_PrimaryAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E53D799D-0F3F-466E-B2FF-74634A3CB7A4}, 100 + + + + + Name: System.Contact.PrimaryAddressPostalCode -- PKEY_Contact_PrimaryAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {18BBD425-ECFD-46EF-B612-7B4A6034EDA0}, 100 + + + + + Name: System.Contact.PrimaryAddressPostOfficeBox -- PKEY_Contact_PrimaryAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE5EF3C7-46E1-484E-9999-62C5308394C1}, 100 + + + + + Name: System.Contact.PrimaryAddressState -- PKEY_Contact_PrimaryAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F1176DFE-7138-4640-8B4C-AE375DC70A6D}, 100 + + + + + Name: System.Contact.PrimaryAddressStreet -- PKEY_Contact_PrimaryAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {63C25B20-96BE-488F-8788-C09C407AD812}, 100 + + + + + Name: System.Contact.PrimaryEmailAddress -- PKEY_Contact_PrimaryEmailAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 48 + + + + + Name: System.Contact.PrimaryTelephone -- PKEY_Contact_PrimaryTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 25 + + + + + Name: System.Contact.Profession -- PKEY_Contact_Profession + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7268AF55-1CE4-4F6E-A41F-B6E4EF10E4A9}, 100 + + + + + Name: System.Contact.SpouseName -- PKEY_Contact_SpouseName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9D2408B6-3167-422B-82B0-F583B7A7CFE3}, 100 + + + + + Name: System.Contact.Suffix -- PKEY_Contact_Suffix + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 73 + + + + + Name: System.Contact.TelexNumber -- PKEY_Contact_TelexNumber + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C554493C-C1F7-40C1-A76C-EF8C0614003E}, 100 + + + + + Name: System.Contact.TTYTDDTelephone -- PKEY_Contact_TTYTDDTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AAF16BAC-2B55-45E6-9F6D-415EB94910DF}, 100 + + + + + Name: System.Contact.WebPage -- PKEY_Contact_WebPage + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 18 + + + + + Contact.JA Properties + + + + + Contact.JA Properties + + + + + Name: System.Contact.JA.CompanyNamePhonetic -- PKEY_Contact_JA_CompanyNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 2 + + + + + Name: System.Contact.JA.FirstNamePhonetic -- PKEY_Contact_JA_FirstNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 3 + + + + + Name: System.Contact.JA.LastNamePhonetic -- PKEY_Contact_JA_LastNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 4 + + + + + System.Device Properties + + + + + Name: System.Device.PrinterURL -- PKEY_Device_PrinterURL + Description: Printer information Printer URL. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B48F35A-BE6E-4F17-B108-3C4073D1669A}, 15 + + + + + System.DeviceInterface Properties + + + + + Name: System.DeviceInterface.PrinterDriverDirectory -- PKEY_DeviceInterface_PrinterDriverDirectory + Description: Printer information Printer Driver Directory. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {847C66DE-B8D6-4AF9-ABC3-6F4F926BC039}, 14 + + + + + Name: System.DeviceInterface.PrinterDriverName -- PKEY_DeviceInterface_PrinterDriverName + Description: Printer information Driver Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AFC47170-14F5-498C-8F30-B0D19BE449C6}, 11 + + + + + Name: System.DeviceInterface.PrinterName -- PKEY_DeviceInterface_PrinterName + Description: Printer information Printer Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0A7B84EF-0C27-463F-84EF-06C5070001BE}, 10 + + + + + Name: System.DeviceInterface.PrinterPortName -- PKEY_DeviceInterface_PrinterPortName + Description: Printer information Port Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {EEC7B761-6F94-41B1-949F-C729720DD13C}, 12 + + + + + System.Devices Properties + + + + + Name: System.Devices.BatteryLife -- PKEY_Devices_BatteryLife + Description: Remaining battery life of the device as an integer between 0 and 100 percent. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 10 + + + + + Name: System.Devices.BatteryPlusCharging -- PKEY_Devices_BatteryPlusCharging + Description: Remaining battery life of the device as an integer between 0 and 100 percent and the device's charging state. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 22 + + + + + Name: System.Devices.BatteryPlusChargingText -- PKEY_Devices_BatteryPlusChargingText + Description: Remaining battery life of the device and the device's charging state as a string. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 23 + + + + + Name: System.Devices.Category -- PKEY_Devices_Category_Desc_Singular + Description: Singular form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 91 + + + + + Name: System.Devices.CategoryGroup -- PKEY_Devices_CategoryGroup_Desc + Description: Plural form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 94 + + + + + Name: System.Devices.CategoryPlural -- PKEY_Devices_Category_Desc_Plural + Description: Plural form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 92 + + + + + Name: System.Devices.ChargingState -- PKEY_Devices_ChargingState + Description: Boolean value representing if the device is currently charging. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 11 + + + + + Name: System.Devices.Connected -- PKEY_Devices_IsConnected + Description: Device connection state. If VARIANT_TRUE, indicates the device is currently connected to the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 55 + + + + + Name: System.Devices.ContainerId -- PKEY_Devices_ContainerId + Description: Device container ID. + + Type: Guid -- VT_CLSID + FormatID: {8C7ED206-3F8A-4827-B3AB-AE9E1FAEFC6C}, 2 + + + + + Name: System.Devices.DefaultTooltip -- PKEY_Devices_DefaultTooltip + Description: Tooltip for default state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 153 + + + + + Name: System.Devices.DeviceDescription1 -- PKEY_Devices_DeviceDescription1 + Description: First line of descriptive text about the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 81 + + + + + Name: System.Devices.DeviceDescription2 -- PKEY_Devices_DeviceDescription2 + Description: Second line of descriptive text about the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 82 + + + + + Name: System.Devices.DiscoveryMethod -- PKEY_Devices_DiscoveryMethod + Description: Device discovery method. This indicates on what transport or physical connection the device is discovered. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 52 + + + + + Name: System.Devices.FriendlyName -- PKEY_Devices_FriendlyName + Description: Device friendly name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 12288 + + + + + Name: System.Devices.FunctionPaths -- PKEY_Devices_FunctionPaths + Description: Available functions for this device. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 3 + + + + + Name: System.Devices.InterfacePaths -- PKEY_Devices_InterfacePaths + Description: Available interfaces for this device. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 2 + + + + + Name: System.Devices.IsDefault -- PKEY_Devices_IsDefaultDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 86 + + + + + Name: System.Devices.IsNetworkConnected -- PKEY_Devices_IsNetworkDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 85 + + + + + Name: System.Devices.IsShared -- PKEY_Devices_IsSharedDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 84 + + + + + Name: System.Devices.IsSoftwareInstalling -- PKEY_Devices_IsSoftwareInstalling + Description: If VARIANT_TRUE, the device installer is currently installing software. + + Type: Boolean -- VT_BOOL + FormatID: {83DA6326-97A6-4088-9453-A1923F573B29}, 9 + + + + + Name: System.Devices.LaunchDeviceStageFromExplorer -- PKEY_Devices_LaunchDeviceStageFromExplorer + Description: Indicates whether to launch Device Stage or not + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 77 + + + + + Name: System.Devices.LocalMachine -- PKEY_Devices_IsLocalMachine + Description: If VARIANT_TRUE, the device in question is actually the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 70 + + + + + Name: System.Devices.Manufacturer -- PKEY_Devices_Manufacturer + Description: Device manufacturer. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8192 + + + + + Name: System.Devices.MissedCalls -- PKEY_Devices_MissedCalls + Description: Number of missed calls on the device. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 5 + + + + + Name: System.Devices.ModelName -- PKEY_Devices_ModelName + Description: Model name of the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8194 + + + + + Name: System.Devices.ModelNumber -- PKEY_Devices_ModelNumber + Description: Model number of the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8195 + + + + + Name: System.Devices.NetworkedTooltip -- PKEY_Devices_NetworkedTooltip + Description: Tooltip for connection state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 152 + + + + + Name: System.Devices.NetworkName -- PKEY_Devices_NetworkName + Description: Name of the device's network. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 7 + + + + + Name: System.Devices.NetworkType -- PKEY_Devices_NetworkType + Description: String representing the type of the device's network. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 8 + + + + + Name: System.Devices.NewPictures -- PKEY_Devices_NewPictures + Description: Number of new pictures on the device. + + Type: UInt16 -- VT_UI2 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 4 + + + + + Name: System.Devices.Notification -- PKEY_Devices_Notification + Description: Device Notification Property. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {06704B0C-E830-4C81-9178-91E4E95A80A0}, 3 + + + + + Name: System.Devices.NotificationStore -- PKEY_Devices_NotificationStore + Description: Device Notification Store. + + Type: Object -- VT_UNKNOWN + FormatID: {06704B0C-E830-4C81-9178-91E4E95A80A0}, 2 + + + + + Name: System.Devices.NotWorkingProperly -- PKEY_Devices_IsNotWorkingProperly + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 83 + + + + + Name: System.Devices.Paired -- PKEY_Devices_IsPaired + Description: Device paired state. If VARIANT_TRUE, indicates the device is not paired with the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 56 + + + + + Name: System.Devices.PrimaryCategory -- PKEY_Devices_PrimaryCategory + Description: Primary category group for this device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 10 + + + + + Name: System.Devices.Roaming -- PKEY_Devices_Roaming + Description: Status indicator used to indicate if the device is roaming. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 9 + + + + + Name: System.Devices.SafeRemovalRequired -- PKEY_Devices_SafeRemovalRequired + Description: Indicates if a device requires safe removal or not + + Type: Boolean -- VT_BOOL + FormatID: {AFD97640-86A3-4210-B67C-289C41AABE55}, 2 + + + + + Name: System.Devices.SharedTooltip -- PKEY_Devices_SharedTooltip + Description: Tooltip for sharing state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 151 + + + + + Name: System.Devices.SignalStrength -- PKEY_Devices_SignalStrength + Description: Device signal strength. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 2 + + + + + Name: System.Devices.Status1 -- PKEY_Devices_Status1 + Description: 1st line of device status. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 257 + + + + + Name: System.Devices.Status2 -- PKEY_Devices_Status2 + Description: 2nd line of device status. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 258 + + + + + Name: System.Devices.StorageCapacity -- PKEY_Devices_StorageCapacity + Description: Total storage capacity of the device. + + Type: UInt64 -- VT_UI8 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 12 + + + + + Name: System.Devices.StorageFreeSpace -- PKEY_Devices_StorageFreeSpace + Description: Total free space of the storage of the device. + + Type: UInt64 -- VT_UI8 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 13 + + + + + Name: System.Devices.StorageFreeSpacePercent -- PKEY_Devices_StorageFreeSpacePercent + Description: Total free space of the storage of the device as a percentage. + + Type: UInt32 -- VT_UI4 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 14 + + + + + Name: System.Devices.TextMessages -- PKEY_Devices_TextMessages + Description: Number of unread text messages on the device. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 3 + + + + + Name: System.Devices.Voicemail -- PKEY_Devices_Voicemail + Description: Status indicator used to indicate if the device has voicemail. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 6 + + + + + Devices.Notifications Properties + + + + + Devices.Notifications Properties + + + + + Name: System.Devices.Notifications.LowBattery -- PKEY_Devices_Notification_LowBattery + Description: Device Low Battery Notification. + + Type: Byte -- VT_UI1 + FormatID: {C4C07F2B-8524-4E66-AE3A-A6235F103BEB}, 2 + + + + + Name: System.Devices.Notifications.MissedCall -- PKEY_Devices_Notification_MissedCall + Description: Device Missed Call Notification. + + Type: Byte -- VT_UI1 + FormatID: {6614EF48-4EFE-4424-9EDA-C79F404EDF3E}, 2 + + + + + Name: System.Devices.Notifications.NewMessage -- PKEY_Devices_Notification_NewMessage + Description: Device New Message Notification. + + Type: Byte -- VT_UI1 + FormatID: {2BE9260A-2012-4742-A555-F41B638B7DCB}, 2 + + + + + Name: System.Devices.Notifications.NewVoicemail -- PKEY_Devices_Notification_NewVoicemail + Description: Device Voicemail Notification. + + Type: Byte -- VT_UI1 + FormatID: {59569556-0A08-4212-95B9-FAE2AD6413DB}, 2 + + + + + Name: System.Devices.Notifications.StorageFull -- PKEY_Devices_Notification_StorageFull + Description: Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 2 + + + + + Name: System.Devices.Notifications.StorageFullLinkText -- PKEY_Devices_Notification_StorageFullLinkText + Description: Link Text for the Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 3 + + + + + System.Document Properties + + + + + Name: System.Document.ByteCount -- PKEY_Document_ByteCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 4 (PIDDSI_BYTECOUNT) + + + + + Name: System.Document.CharacterCount -- PKEY_Document_CharacterCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 16 (PIDSI_CHARCOUNT) + + + + + Name: System.Document.ClientID -- PKEY_Document_ClientID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {276D7BB0-5B34-4FB0-AA4B-158ED12A1809}, 100 + + + + + Name: System.Document.Contributor -- PKEY_Document_Contributor + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {F334115E-DA1B-4509-9B3D-119504DC7ABB}, 100 + + + + + Name: System.Document.DateCreated -- PKEY_Document_DateCreated + Description: This property is stored in the document, not obtained from the file system. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 12 (PIDSI_CREATE_DTM) + + + + + Name: System.Document.DatePrinted -- PKEY_Document_DatePrinted + Description: Legacy name: "DocLastPrinted". + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 11 (PIDSI_LASTPRINTED) + + + + + Name: System.Document.DateSaved -- PKEY_Document_DateSaved + Description: Legacy name: "DocLastSavedTm". + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 13 (PIDSI_LASTSAVE_DTM) + + + + + Name: System.Document.Division -- PKEY_Document_Division + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1E005EE6-BF27-428B-B01C-79676ACD2870}, 100 + + + + + Name: System.Document.DocumentID -- PKEY_Document_DocumentID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E08805C8-E395-40DF-80D2-54F0D6C43154}, 100 + + + + + Name: System.Document.HiddenSlideCount -- PKEY_Document_HiddenSlideCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 9 (PIDDSI_HIDDENCOUNT) + + + + + Name: System.Document.LastAuthor -- PKEY_Document_LastAuthor + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 8 (PIDSI_LASTAUTHOR) + + + + + Name: System.Document.LineCount -- PKEY_Document_LineCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 5 (PIDDSI_LINECOUNT) + + + + + Name: System.Document.Manager -- PKEY_Document_Manager + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 14 (PIDDSI_MANAGER) + + + + + Name: System.Document.MultimediaClipCount -- PKEY_Document_MultimediaClipCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 10 (PIDDSI_MMCLIPCOUNT) + + + + + Name: System.Document.NoteCount -- PKEY_Document_NoteCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 8 (PIDDSI_NOTECOUNT) + + + + + Name: System.Document.PageCount -- PKEY_Document_PageCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 14 (PIDSI_PAGECOUNT) + + + + + Name: System.Document.ParagraphCount -- PKEY_Document_ParagraphCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 6 (PIDDSI_PARCOUNT) + + + + + Name: System.Document.PresentationFormat -- PKEY_Document_PresentationFormat + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 3 (PIDDSI_PRESFORMAT) + + + + + Name: System.Document.RevisionNumber -- PKEY_Document_RevisionNumber + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 9 (PIDSI_REVNUMBER) + + + + + Name: System.Document.Security -- PKEY_Document_Security + Description: Access control information, from SummaryInfo propset + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 19 + + + + + Name: System.Document.SlideCount -- PKEY_Document_SlideCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 7 (PIDDSI_SLIDECOUNT) + + + + + Name: System.Document.Template -- PKEY_Document_Template + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 7 (PIDSI_TEMPLATE) + + + + + Name: System.Document.TotalEditingTime -- PKEY_Document_TotalEditingTime + Description: 100ns units, not milliseconds. VT_FILETIME for IPropertySetStorage handlers (legacy) + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 10 (PIDSI_EDITTIME) + + + + + Name: System.Document.Version -- PKEY_Document_Version + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 29 + + + + + Name: System.Document.WordCount -- PKEY_Document_WordCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 15 (PIDSI_WORDCOUNT) + + + + + System.DRM Properties + + + + + Name: System.DRM.DatePlayExpires -- PKEY_DRM_DatePlayExpires + Description: Indicates when play expires for digital rights management. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 6 (PIDDRSI_PLAYEXPIRES) + + + + + Name: System.DRM.DatePlayStarts -- PKEY_DRM_DatePlayStarts + Description: Indicates when play starts for digital rights management. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 5 (PIDDRSI_PLAYSTARTS) + + + + + Name: System.DRM.Description -- PKEY_DRM_Description + Description: Displays the description for digital rights management. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 3 (PIDDRSI_DESCRIPTION) + + + + + Name: System.DRM.IsProtected -- PKEY_DRM_IsProtected + Description: + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 2 (PIDDRSI_PROTECTED) + + + + + Name: System.DRM.PlayCount -- PKEY_DRM_PlayCount + Description: Indicates the play count for digital rights management. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 4 (PIDDRSI_PLAYCOUNT) + + + + + System.GPS Properties + + + + + Name: System.GPS.Altitude -- PKEY_GPS_Altitude + Description: Indicates the altitude based on the reference in PKEY_GPS_AltitudeRef. Calculated from PKEY_GPS_AltitudeNumerator and + PKEY_GPS_AltitudeDenominator + + Type: Double -- VT_R8 + FormatID: {827EDB4F-5B73-44A7-891D-FDFFABEA35CA}, 100 + + + + + Name: System.GPS.AltitudeDenominator -- PKEY_GPS_AltitudeDenominator + Description: Denominator of PKEY_GPS_Altitude + + Type: UInt32 -- VT_UI4 + FormatID: {78342DCB-E358-4145-AE9A-6BFE4E0F9F51}, 100 + + + + + Name: System.GPS.AltitudeNumerator -- PKEY_GPS_AltitudeNumerator + Description: Numerator of PKEY_GPS_Altitude + + Type: UInt32 -- VT_UI4 + FormatID: {2DAD1EB7-816D-40D3-9EC3-C9773BE2AADE}, 100 + + + + + Name: System.GPS.AltitudeRef -- PKEY_GPS_AltitudeRef + Description: Indicates the reference for the altitude property. (eg: above sea level, below sea level, absolute value) + + Type: Byte -- VT_UI1 + FormatID: {46AC629D-75EA-4515-867F-6DC4321C5844}, 100 + + + + + Name: System.GPS.AreaInformation -- PKEY_GPS_AreaInformation + Description: Represents the name of the GPS area + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {972E333E-AC7E-49F1-8ADF-A70D07A9BCAB}, 100 + + + + + Name: System.GPS.Date -- PKEY_GPS_Date + Description: Date and time of the GPS record + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {3602C812-0F3B-45F0-85AD-603468D69423}, 100 + + + + + Name: System.GPS.DestBearing -- PKEY_GPS_DestBearing + Description: Indicates the bearing to the destination point. Calculated from PKEY_GPS_DestBearingNumerator and + PKEY_GPS_DestBearingDenominator. + + Type: Double -- VT_R8 + FormatID: {C66D4B3C-E888-47CC-B99F-9DCA3EE34DEA}, 100 + + + + + Name: System.GPS.DestBearingDenominator -- PKEY_GPS_DestBearingDenominator + Description: Denominator of PKEY_GPS_DestBearing + + Type: UInt32 -- VT_UI4 + FormatID: {7ABCF4F8-7C3F-4988-AC91-8D2C2E97ECA5}, 100 + + + + + Name: System.GPS.DestBearingNumerator -- PKEY_GPS_DestBearingNumerator + Description: Numerator of PKEY_GPS_DestBearing + + Type: UInt32 -- VT_UI4 + FormatID: {BA3B1DA9-86EE-4B5D-A2A4-A271A429F0CF}, 100 + + + + + Name: System.GPS.DestBearingRef -- PKEY_GPS_DestBearingRef + Description: Indicates the reference used for the giving the bearing to the destination point. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9AB84393-2A0F-4B75-BB22-7279786977CB}, 100 + + + + + Name: System.GPS.DestDistance -- PKEY_GPS_DestDistance + Description: Indicates the distance to the destination point. Calculated from PKEY_GPS_DestDistanceNumerator and + PKEY_GPS_DestDistanceDenominator. + + Type: Double -- VT_R8 + FormatID: {A93EAE04-6804-4F24-AC81-09B266452118}, 100 + + + + + Name: System.GPS.DestDistanceDenominator -- PKEY_GPS_DestDistanceDenominator + Description: Denominator of PKEY_GPS_DestDistance + + Type: UInt32 -- VT_UI4 + FormatID: {9BC2C99B-AC71-4127-9D1C-2596D0D7DCB7}, 100 + + + + + Name: System.GPS.DestDistanceNumerator -- PKEY_GPS_DestDistanceNumerator + Description: Numerator of PKEY_GPS_DestDistance + + Type: UInt32 -- VT_UI4 + FormatID: {2BDA47DA-08C6-4FE1-80BC-A72FC517C5D0}, 100 + + + + + Name: System.GPS.DestDistanceRef -- PKEY_GPS_DestDistanceRef + Description: Indicates the unit used to express the distance to the destination. (eg: kilometers, miles, knots) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {ED4DF2D3-8695-450B-856F-F5C1C53ACB66}, 100 + + + + + Name: System.GPS.DestLatitude -- PKEY_GPS_DestLatitude + Description: Indicates the latitude of the destination point. This is an array of three values. Index 0 is the degrees, index 1 + is the minutes, index 2 is the seconds. Each is calculated from the values in PKEY_GPS_DestLatitudeNumerator and + PKEY_GPS_DestLatitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {9D1D7CC5-5C39-451C-86B3-928E2D18CC47}, 100 + + + + + Name: System.GPS.DestLatitudeDenominator -- PKEY_GPS_DestLatitudeDenominator + Description: Denominator of PKEY_GPS_DestLatitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {3A372292-7FCA-49A7-99D5-E47BB2D4E7AB}, 100 + + + + + Name: System.GPS.DestLatitudeNumerator -- PKEY_GPS_DestLatitudeNumerator + Description: Numerator of PKEY_GPS_DestLatitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {ECF4B6F6-D5A6-433C-BB92-4076650FC890}, 100 + + + + + Name: System.GPS.DestLatitudeRef -- PKEY_GPS_DestLatitudeRef + Description: Indicates whether the latitude destination point is north or south latitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CEA820B9-CE61-4885-A128-005D9087C192}, 100 + + + + + Name: System.GPS.DestLongitude -- PKEY_GPS_DestLongitude + Description: Indicates the latitude of the destination point. This is an array of three values. Index 0 is the degrees, index 1 + is the minutes, index 2 is the seconds. Each is calculated from the values in PKEY_GPS_DestLongitudeNumerator and + PKEY_GPS_DestLongitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {47A96261-CB4C-4807-8AD3-40B9D9DBC6BC}, 100 + + + + + Name: System.GPS.DestLongitudeDenominator -- PKEY_GPS_DestLongitudeDenominator + Description: Denominator of PKEY_GPS_DestLongitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {425D69E5-48AD-4900-8D80-6EB6B8D0AC86}, 100 + + + + + Name: System.GPS.DestLongitudeNumerator -- PKEY_GPS_DestLongitudeNumerator + Description: Numerator of PKEY_GPS_DestLongitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {A3250282-FB6D-48D5-9A89-DBCACE75CCCF}, 100 + + + + + Name: System.GPS.DestLongitudeRef -- PKEY_GPS_DestLongitudeRef + Description: Indicates whether the longitude destination point is east or west longitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {182C1EA6-7C1C-4083-AB4B-AC6C9F4ED128}, 100 + + + + + Name: System.GPS.Differential -- PKEY_GPS_Differential + Description: Indicates whether differential correction was applied to the GPS receiver + + Type: UInt16 -- VT_UI2 + FormatID: {AAF4EE25-BD3B-4DD7-BFC4-47F77BB00F6D}, 100 + + + + + Name: System.GPS.DOP -- PKEY_GPS_DOP + Description: Indicates the GPS DOP (data degree of precision). Calculated from PKEY_GPS_DOPNumerator and PKEY_GPS_DOPDenominator + + Type: Double -- VT_R8 + FormatID: {0CF8FB02-1837-42F1-A697-A7017AA289B9}, 100 + + + + + Name: System.GPS.DOPDenominator -- PKEY_GPS_DOPDenominator + Description: Denominator of PKEY_GPS_DOP + + Type: UInt32 -- VT_UI4 + FormatID: {A0BE94C5-50BA-487B-BD35-0654BE8881ED}, 100 + + + + + Name: System.GPS.DOPNumerator -- PKEY_GPS_DOPNumerator + Description: Numerator of PKEY_GPS_DOP + + Type: UInt32 -- VT_UI4 + FormatID: {47166B16-364F-4AA0-9F31-E2AB3DF449C3}, 100 + + + + + Name: System.GPS.ImgDirection -- PKEY_GPS_ImgDirection + Description: Indicates direction of the image when it was captured. Calculated from PKEY_GPS_ImgDirectionNumerator and + PKEY_GPS_ImgDirectionDenominator. + + Type: Double -- VT_R8 + FormatID: {16473C91-D017-4ED9-BA4D-B6BAA55DBCF8}, 100 + + + + + Name: System.GPS.ImgDirectionDenominator -- PKEY_GPS_ImgDirectionDenominator + Description: Denominator of PKEY_GPS_ImgDirection + + Type: UInt32 -- VT_UI4 + FormatID: {10B24595-41A2-4E20-93C2-5761C1395F32}, 100 + + + + + Name: System.GPS.ImgDirectionNumerator -- PKEY_GPS_ImgDirectionNumerator + Description: Numerator of PKEY_GPS_ImgDirection + + Type: UInt32 -- VT_UI4 + FormatID: {DC5877C7-225F-45F7-BAC7-E81334B6130A}, 100 + + + + + Name: System.GPS.ImgDirectionRef -- PKEY_GPS_ImgDirectionRef + Description: Indicates reference for giving the direction of the image when it was captured. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A4AAA5B7-1AD0-445F-811A-0F8F6E67F6B5}, 100 + + + + + Name: System.GPS.Latitude -- PKEY_GPS_Latitude + Description: Indicates the latitude. This is an array of three values. Index 0 is the degrees, index 1 is the minutes, index 2 + is the seconds. Each is calculated from the values in PKEY_GPS_LatitudeNumerator and PKEY_GPS_LatitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {8727CFFF-4868-4EC6-AD5B-81B98521D1AB}, 100 + + + + + Name: System.GPS.LatitudeDenominator -- PKEY_GPS_LatitudeDenominator + Description: Denominator of PKEY_GPS_Latitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {16E634EE-2BFF-497B-BD8A-4341AD39EEB9}, 100 + + + + + Name: System.GPS.LatitudeNumerator -- PKEY_GPS_LatitudeNumerator + Description: Numerator of PKEY_GPS_Latitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {7DDAAAD1-CCC8-41AE-B750-B2CB8031AEA2}, 100 + + + + + Name: System.GPS.LatitudeRef -- PKEY_GPS_LatitudeRef + Description: Indicates whether latitude is north or south latitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {029C0252-5B86-46C7-ACA0-2769FFC8E3D4}, 100 + + + + + Name: System.GPS.Longitude -- PKEY_GPS_Longitude + Description: Indicates the longitude. This is an array of three values. Index 0 is the degrees, index 1 is the minutes, index 2 + is the seconds. Each is calculated from the values in PKEY_GPS_LongitudeNumerator and PKEY_GPS_LongitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {C4C4DBB2-B593-466B-BBDA-D03D27D5E43A}, 100 + + + + + Name: System.GPS.LongitudeDenominator -- PKEY_GPS_LongitudeDenominator + Description: Denominator of PKEY_GPS_Longitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {BE6E176C-4534-4D2C-ACE5-31DEDAC1606B}, 100 + + + + + Name: System.GPS.LongitudeNumerator -- PKEY_GPS_LongitudeNumerator + Description: Numerator of PKEY_GPS_Longitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {02B0F689-A914-4E45-821D-1DDA452ED2C4}, 100 + + + + + Name: System.GPS.LongitudeRef -- PKEY_GPS_LongitudeRef + Description: Indicates whether longitude is east or west longitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {33DCF22B-28D5-464C-8035-1EE9EFD25278}, 100 + + + + + Name: System.GPS.MapDatum -- PKEY_GPS_MapDatum + Description: Indicates the geodetic survey data used by the GPS receiver + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2CA2DAE6-EDDC-407D-BEF1-773942ABFA95}, 100 + + + + + Name: System.GPS.MeasureMode -- PKEY_GPS_MeasureMode + Description: Indicates the GPS measurement mode. (eg: 2-dimensional, 3-dimensional) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A015ED5D-AAEA-4D58-8A86-3C586920EA0B}, 100 + + + + + Name: System.GPS.ProcessingMethod -- PKEY_GPS_ProcessingMethod + Description: Indicates the name of the method used for location finding + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {59D49E61-840F-4AA9-A939-E2099B7F6399}, 100 + + + + + Name: System.GPS.Satellites -- PKEY_GPS_Satellites + Description: Indicates the GPS satellites used for measurements + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {467EE575-1F25-4557-AD4E-B8B58B0D9C15}, 100 + + + + + Name: System.GPS.Speed -- PKEY_GPS_Speed + Description: Indicates the speed of the GPS receiver movement. Calculated from PKEY_GPS_SpeedNumerator and + PKEY_GPS_SpeedDenominator. + + Type: Double -- VT_R8 + FormatID: {DA5D0862-6E76-4E1B-BABD-70021BD25494}, 100 + + + + + Name: System.GPS.SpeedDenominator -- PKEY_GPS_SpeedDenominator + Description: Denominator of PKEY_GPS_Speed + + Type: UInt32 -- VT_UI4 + FormatID: {7D122D5A-AE5E-4335-8841-D71E7CE72F53}, 100 + + + + + Name: System.GPS.SpeedNumerator -- PKEY_GPS_SpeedNumerator + Description: Numerator of PKEY_GPS_Speed + + Type: UInt32 -- VT_UI4 + FormatID: {ACC9CE3D-C213-4942-8B48-6D0820F21C6D}, 100 + + + + + Name: System.GPS.SpeedRef -- PKEY_GPS_SpeedRef + Description: Indicates the unit used to express the speed of the GPS receiver movement. (eg: kilometers per hour, + miles per hour, knots). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {ECF7F4C9-544F-4D6D-9D98-8AD79ADAF453}, 100 + + + + + Name: System.GPS.Status -- PKEY_GPS_Status + Description: Indicates the status of the GPS receiver when the image was recorded. (eg: measurement in progress, + measurement interoperability). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {125491F4-818F-46B2-91B5-D537753617B2}, 100 + + + + + Name: System.GPS.Track -- PKEY_GPS_Track + Description: Indicates the direction of the GPS receiver movement. Calculated from PKEY_GPS_TrackNumerator and + PKEY_GPS_TrackDenominator. + + Type: Double -- VT_R8 + FormatID: {76C09943-7C33-49E3-9E7E-CDBA872CFADA}, 100 + + + + + Name: System.GPS.TrackDenominator -- PKEY_GPS_TrackDenominator + Description: Denominator of PKEY_GPS_Track + + Type: UInt32 -- VT_UI4 + FormatID: {C8D1920C-01F6-40C0-AC86-2F3A4AD00770}, 100 + + + + + Name: System.GPS.TrackNumerator -- PKEY_GPS_TrackNumerator + Description: Numerator of PKEY_GPS_Track + + Type: UInt32 -- VT_UI4 + FormatID: {702926F4-44A6-43E1-AE71-45627116893B}, 100 + + + + + Name: System.GPS.TrackRef -- PKEY_GPS_TrackRef + Description: Indicates reference for the direction of the GPS receiver movement. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {35DBE6FE-44C3-4400-AAAE-D2C799C407E8}, 100 + + + + + Name: System.GPS.VersionID -- PKEY_GPS_VersionID + Description: Indicates the version of the GPS information + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {22704DA4-C6B2-4A99-8E56-F16DF8C92599}, 100 + + + + + System.Identity Properties + + + + + Name: System.Identity.Blob -- PKEY_Identity_Blob + Description: Blob used to import/export identities + + Type: Blob -- VT_BLOB + FormatID: {8C3B93A4-BAED-1A83-9A32-102EE313F6EB}, 100 + + + + + Name: System.Identity.DisplayName -- PKEY_Identity_DisplayName + Description: Display Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7D683FC9-D155-45A8-BB1F-89D19BCB792F}, 100 + + + + + Name: System.Identity.IsMeIdentity -- PKEY_Identity_IsMeIdentity + Description: Is it Me Identity + + Type: Boolean -- VT_BOOL + FormatID: {A4108708-09DF-4377-9DFC-6D99986D5A67}, 100 + + + + + Name: System.Identity.PrimaryEmailAddress -- PKEY_Identity_PrimaryEmailAddress + Description: Primary Email Address + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FCC16823-BAED-4F24-9B32-A0982117F7FA}, 100 + + + + + Name: System.Identity.ProviderID -- PKEY_Identity_ProviderID + Description: Provider ID + + Type: Guid -- VT_CLSID + FormatID: {74A7DE49-FA11-4D3D-A006-DB7E08675916}, 100 + + + + + Name: System.Identity.UniqueID -- PKEY_Identity_UniqueID + Description: Unique ID + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E55FC3B0-2B60-4220-918E-B21E8BF16016}, 100 + + + + + Name: System.Identity.UserName -- PKEY_Identity_UserName + Description: Identity User Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C4322503-78CA-49C6-9ACC-A68E2AFD7B6B}, 100 + + + + + System.IdentityProvider Properties + + + + + Name: System.IdentityProvider.Name -- PKEY_IdentityProvider_Name + Description: Identity Provider Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {B96EFF7B-35CA-4A35-8607-29E3A54C46EA}, 100 + + + + + Name: System.IdentityProvider.Picture -- PKEY_IdentityProvider_Picture + Description: Picture for the Identity Provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2425166F-5642-4864-992F-98FD98F294C3}, 100 + + + + + System.Image Properties + + + + + Name: System.Image.BitDepth -- PKEY_Image_BitDepth + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 7 (PIDISI_BITDEPTH) + + + + + Name: System.Image.ColorSpace -- PKEY_Image_ColorSpace + Description: PropertyTagExifColorSpace + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 40961 + + + + + Name: System.Image.CompressedBitsPerPixel -- PKEY_Image_CompressedBitsPerPixel + Description: Calculated from PKEY_Image_CompressedBitsPerPixelNumerator and PKEY_Image_CompressedBitsPerPixelDenominator. + + Type: Double -- VT_R8 + FormatID: {364B6FA9-37AB-482A-BE2B-AE02F60D4318}, 100 + + + + + Name: System.Image.CompressedBitsPerPixelDenominator -- PKEY_Image_CompressedBitsPerPixelDenominator + Description: Denominator of PKEY_Image_CompressedBitsPerPixel. + + Type: UInt32 -- VT_UI4 + FormatID: {1F8844E1-24AD-4508-9DFD-5326A415CE02}, 100 + + + + + Name: System.Image.CompressedBitsPerPixelNumerator -- PKEY_Image_CompressedBitsPerPixelNumerator + Description: Numerator of PKEY_Image_CompressedBitsPerPixel. + + Type: UInt32 -- VT_UI4 + FormatID: {D21A7148-D32C-4624-8900-277210F79C0F}, 100 + + + + + Name: System.Image.Compression -- PKEY_Image_Compression + Description: Indicates the image compression level. PropertyTagCompression. + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 259 + + + + + Name: System.Image.CompressionText -- PKEY_Image_CompressionText + Description: This is the user-friendly form of System.Image.Compression. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3F08E66F-2F44-4BB9-A682-AC35D2562322}, 100 + + + + + Name: System.Image.Dimensions -- PKEY_Image_Dimensions + Description: Indicates the dimensions of the image. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 13 (PIDISI_DIMENSIONS) + + + + + Name: System.Image.HorizontalResolution -- PKEY_Image_HorizontalResolution + Description: + + Type: Double -- VT_R8 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 5 (PIDISI_RESOLUTIONX) + + + + + Name: System.Image.HorizontalSize -- PKEY_Image_HorizontalSize + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 3 (PIDISI_CX) + + + + + Name: System.Image.ImageID -- PKEY_Image_ImageID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {10DABE05-32AA-4C29-BF1A-63E2D220587F}, 100 + + + + + Name: System.Image.ResolutionUnit -- PKEY_Image_ResolutionUnit + Description: + Type: Int16 -- VT_I2 + FormatID: {19B51FA6-1F92-4A5C-AB48-7DF0ABD67444}, 100 + + + + + Name: System.Image.VerticalResolution -- PKEY_Image_VerticalResolution + Description: + + Type: Double -- VT_R8 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 6 (PIDISI_RESOLUTIONY) + + + + + Name: System.Image.VerticalSize -- PKEY_Image_VerticalSize + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 4 (PIDISI_CY) + + + + + System.Journal Properties + + + + + Name: System.Journal.Contacts -- PKEY_Journal_Contacts + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {DEA7C82C-1D89-4A66-9427-A4E3DEBABCB1}, 100 + + + + + Name: System.Journal.EntryType -- PKEY_Journal_EntryType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {95BEB1FC-326D-4644-B396-CD3ED90E6DDF}, 100 + + + + + System.LayoutPattern Properties + + + + + Name: System.LayoutPattern.ContentViewModeForBrowse -- PKEY_LayoutPattern_ContentViewModeForBrowse + Description: Specifies the layout pattern that the content view mode should apply for this item in the context of browsing. + Register the regvalue under the name of "ContentViewModeLayoutPatternForBrowse". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 500 + + + + + Name: System.LayoutPattern.ContentViewModeForSearch -- PKEY_LayoutPattern_ContentViewModeForSearch + Description: Specifies the layout pattern that the content view mode should apply for this item in the context of searching. + Register the regvalue under the name of "ContentViewModeLayoutPatternForSearch". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 501 + + + + + System.Link Properties + + + + + Name: System.Link.Arguments -- PKEY_Link_Arguments + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {436F2667-14E2-4FEB-B30A-146C53B5B674}, 100 + + + + + Name: System.Link.Comment -- PKEY_Link_Comment + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 5 + + + + + Name: System.Link.DateVisited -- PKEY_Link_DateVisited + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 23 (PKEYs relating to URLs. Used by IE History.) + + + + + Name: System.Link.Description -- PKEY_Link_Description + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 21 (PKEYs relating to URLs. Used by IE History.) + + + + + Name: System.Link.Status -- PKEY_Link_Status + Description: + + Type: Int32 -- VT_I4 + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 3 (PID_LINK_TARGET_TYPE) + + + + + Name: System.Link.TargetExtension -- PKEY_Link_TargetExtension + Description: The file extension of the link target. See System.File.Extension + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {7A7D76F4-B630-4BD7-95FF-37CC51A975C9}, 2 + + + + + Name: System.Link.TargetParsingPath -- PKEY_Link_TargetParsingPath + Description: This is the shell namespace path to the target of the link item. This path may be passed to + SHParseDisplayName to parse the path to the correct shell folder. + + If the target item is a file, the value is identical to System.ItemPathDisplay. + + If the target item cannot be accessed through the shell namespace, this value is VT_EMPTY. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 2 (PID_LINK_TARGET) + + + + + Name: System.Link.TargetSFGAOFlags -- PKEY_Link_TargetSFGAOFlags + Description: IShellFolder::GetAttributesOf flags for the target of a link, with SFGAO_PKEYSFGAOMASK + attributes masked out. + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 8 + + + + + Name: System.Link.TargetSFGAOFlagsStrings -- PKEY_Link_TargetSFGAOFlagsStrings + Description: Expresses the SFGAO flags of a link as string values and is used as a query optimization. See + PKEY_Shell_SFGAOFlagsStrings for possible values of this. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D6942081-D53B-443D-AD47-5E059D9CD27A}, 3 + + + + + Name: System.Link.TargetUrl -- PKEY_Link_TargetUrl + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 2 (PKEYs relating to URLs. Used by IE History.) + + + + + System.Media Properties + + + + + Name: System.Media.AuthorUrl -- PKEY_Media_AuthorUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 32 (PIDMSI_AUTHOR_URL) + + + + + Name: System.Media.AverageLevel -- PKEY_Media_AverageLevel + Description: + Type: UInt32 -- VT_UI4 + FormatID: {09EDD5B6-B301-43C5-9990-D00302EFFD46}, 100 + + + + + Name: System.Media.ClassPrimaryID -- PKEY_Media_ClassPrimaryID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 13 (PIDMSI_CLASS_PRIMARY_ID) + + + + + Name: System.Media.ClassSecondaryID -- PKEY_Media_ClassSecondaryID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 14 (PIDMSI_CLASS_SECONDARY_ID) + + + + + Name: System.Media.CollectionGroupID -- PKEY_Media_CollectionGroupID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 24 (PIDMSI_COLLECTION_GROUP_ID) + + + + + Name: System.Media.CollectionID -- PKEY_Media_CollectionID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 25 (PIDMSI_COLLECTION_ID) + + + + + Name: System.Media.ContentDistributor -- PKEY_Media_ContentDistributor + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 18 (PIDMSI_CONTENTDISTRIBUTOR) + + + + + Name: System.Media.ContentID -- PKEY_Media_ContentID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 26 (PIDMSI_CONTENT_ID) + + + + + Name: System.Media.CreatorApplication -- PKEY_Media_CreatorApplication + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 27 (PIDMSI_TOOL_NAME) + + + + + Name: System.Media.CreatorApplicationVersion -- PKEY_Media_CreatorApplicationVersion + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 28 (PIDMSI_TOOL_VERSION) + + + + + Name: System.Media.DateEncoded -- PKEY_Media_DateEncoded + Description: DateTime is in UTC (in the doc, not file system). + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {2E4B640D-5019-46D8-8881-55414CC5CAA0}, 100 + + + + + Name: System.Media.DateReleased -- PKEY_Media_DateReleased + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE41CC29-6971-4290-B472-F59F2E2F31E2}, 100 + + + + + Name: System.Media.Duration -- PKEY_Media_Duration + Description: 100ns units, not milliseconds + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 3 (PIDASI_TIMELENGTH) + + + + + Name: System.Media.DVDID -- PKEY_Media_DVDID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 15 (PIDMSI_DVDID) + + + + + Name: System.Media.EncodedBy -- PKEY_Media_EncodedBy + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 36 (PIDMSI_ENCODED_BY) + + + + + Name: System.Media.EncodingSettings -- PKEY_Media_EncodingSettings + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 37 (PIDMSI_ENCODING_SETTINGS) + + + + + Name: System.Media.FrameCount -- PKEY_Media_FrameCount + Description: Indicates the frame count for the image. + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 12 (PIDISI_FRAMECOUNT) + + + + + Name: System.Media.MCDI -- PKEY_Media_MCDI + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 16 (PIDMSI_MCDI) + + + + + Name: System.Media.MetadataContentProvider -- PKEY_Media_MetadataContentProvider + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 17 (PIDMSI_PROVIDER) + + + + + Name: System.Media.Producer -- PKEY_Media_Producer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 22 (PIDMSI_PRODUCER) + + + + + Name: System.Media.PromotionUrl -- PKEY_Media_PromotionUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 33 (PIDMSI_PROMOTION_URL) + + + + + Name: System.Media.ProtectionType -- PKEY_Media_ProtectionType + Description: If media is protected, how is it protected? + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 38 + + + + + Name: System.Media.ProviderRating -- PKEY_Media_ProviderRating + Description: Rating (0 - 99) supplied by metadata provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 39 + + + + + Name: System.Media.ProviderStyle -- PKEY_Media_ProviderStyle + Description: Style of music or video, supplied by metadata provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 40 + + + + + Name: System.Media.Publisher -- PKEY_Media_Publisher + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 30 (PIDMSI_PUBLISHER) + + + + + Name: System.Media.SubscriptionContentId -- PKEY_Media_SubscriptionContentId + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9AEBAE7A-9644-487D-A92C-657585ED751A}, 100 + + + + + Name: System.Media.SubTitle -- PKEY_Media_SubTitle + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 38 (PIDSI_MUSIC_SUB_TITLE) + + + + + Name: System.Media.UniqueFileIdentifier -- PKEY_Media_UniqueFileIdentifier + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 35 (PIDMSI_UNIQUE_FILE_IDENTIFIER) + + + + + Name: System.Media.UserNoAutoInfo -- PKEY_Media_UserNoAutoInfo + Description: If true, do NOT alter this file's metadata. Set by user. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 41 + + + + + Name: System.Media.UserWebUrl -- PKEY_Media_UserWebUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 34 (PIDMSI_USER_WEB_URL) + + + + + Name: System.Media.Writer -- PKEY_Media_Writer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 23 (PIDMSI_WRITER) + + + + + Name: System.Media.Year -- PKEY_Media_Year + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 5 (PIDSI_MUSIC_YEAR) + + + + + System.Message Properties + + + + + Name: System.Message.AttachmentContents -- PKEY_Message_AttachmentContents + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3143BF7C-80A8-4854-8880-E2E40189BDD0}, 100 + + + + + Name: System.Message.AttachmentNames -- PKEY_Message_AttachmentNames + Description: The names of the attachments in a message + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 21 + + + + + Name: System.Message.BccAddress -- PKEY_Message_BccAddress + Description: Addresses in Bcc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 2 + + + + + Name: System.Message.BccName -- PKEY_Message_BccName + Description: person names in Bcc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 3 + + + + + Name: System.Message.CcAddress -- PKEY_Message_CcAddress + Description: Addresses in Cc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 4 + + + + + Name: System.Message.CcName -- PKEY_Message_CcName + Description: person names in Cc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 5 + + + + + Name: System.Message.ConversationID -- PKEY_Message_ConversationID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DC8F80BD-AF1E-4289-85B6-3DFC1B493992}, 100 + + + + + Name: System.Message.ConversationIndex -- PKEY_Message_ConversationIndex + Description: + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {DC8F80BD-AF1E-4289-85B6-3DFC1B493992}, 101 + + + + + Name: System.Message.DateReceived -- PKEY_Message_DateReceived + Description: Date and Time communication was received + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 20 + + + + + Name: System.Message.DateSent -- PKEY_Message_DateSent + Description: Date and Time communication was sent + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 19 + + + + + Name: System.Message.Flags -- PKEY_Message_Flags + Description: These are flags associated with email messages to know if a read receipt is pending, etc. + The values stored here by Outlook are defined for PR_MESSAGE_FLAGS on MSDN. + + Type: Int32 -- VT_I4 + FormatID: {A82D9EE7-CA67-4312-965E-226BCEA85023}, 100 + + + + + Name: System.Message.FromAddress -- PKEY_Message_FromAddress + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 13 + + + + + Name: System.Message.FromName -- PKEY_Message_FromName + Description: Address in from field as person name + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 14 + + + + + Name: System.Message.HasAttachments -- PKEY_Message_HasAttachments + Description: + + Type: Boolean -- VT_BOOL + FormatID: {9C1FCF74-2D97-41BA-B4AE-CB2E3661A6E4}, 8 + + + + + Name: System.Message.IsFwdOrReply -- PKEY_Message_IsFwdOrReply + Description: + Type: Int32 -- VT_I4 + FormatID: {9A9BC088-4F6D-469E-9919-E705412040F9}, 100 + + + + + Name: System.Message.MessageClass -- PKEY_Message_MessageClass + Description: What type of outlook msg this is (meeting, task, mail, etc.) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CD9ED458-08CE-418F-A70E-F912C7BB9C5C}, 103 + + + + + Name: System.Message.ProofInProgress -- PKEY_Message_ProofInProgress + Description: This property will be true if the message junk email proofing is still in progress. + + Type: Boolean -- VT_BOOL + FormatID: {9098F33C-9A7D-48A8-8DE5-2E1227A64E91}, 100 + + + + + Name: System.Message.SenderAddress -- PKEY_Message_SenderAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0BE1C8E7-1981-4676-AE14-FDD78F05A6E7}, 100 + + + + + Name: System.Message.SenderName -- PKEY_Message_SenderName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0DA41CFA-D224-4A18-AE2F-596158DB4B3A}, 100 + + + + + Name: System.Message.Store -- PKEY_Message_Store + Description: The store (aka protocol handler) FILE, MAIL, OUTLOOKEXPRESS + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 15 + + + + + Name: System.Message.ToAddress -- PKEY_Message_ToAddress + Description: Addresses in To: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 16 + + + + + Name: System.Message.ToDoFlags -- PKEY_Message_ToDoFlags + Description: Flags associated with a message flagged to know if it's still active, if it was custom flagged, etc. + + Type: Int32 -- VT_I4 + FormatID: {1F856A9F-6900-4ABA-9505-2D5F1B4D66CB}, 100 + + + + + Name: System.Message.ToDoTitle -- PKEY_Message_ToDoTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BCCC8A3C-8CEF-42E5-9B1C-C69079398BC7}, 100 + + + + + Name: System.Message.ToName -- PKEY_Message_ToName + Description: Person names in To: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 17 + + + + + System.Music Properties + + + + + Name: System.Music.AlbumArtist -- PKEY_Music_AlbumArtist + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 13 (PIDSI_MUSIC_ALBUM_ARTIST) + + + + + Name: System.Music.AlbumID -- PKEY_Music_AlbumID + Description: Concatenation of System.Music.AlbumArtist and System.Music.AlbumTitle, suitable for indexing and display. + Used to differentiate albums with the same title from different artists. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 100 + + + + + Name: System.Music.AlbumTitle -- PKEY_Music_AlbumTitle + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 4 (PIDSI_MUSIC_ALBUM) + + + + + Name: System.Music.Artist -- PKEY_Music_Artist + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 2 (PIDSI_MUSIC_ARTIST) + + + + + Name: System.Music.BeatsPerMinute -- PKEY_Music_BeatsPerMinute + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 35 (PIDSI_MUSIC_BEATS_PER_MINUTE) + + + + + Name: System.Music.Composer -- PKEY_Music_Composer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 19 (PIDMSI_COMPOSER) + + + + + Name: System.Music.Conductor -- PKEY_Music_Conductor + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 36 (PIDSI_MUSIC_CONDUCTOR) + + + + + Name: System.Music.ContentGroupDescription -- PKEY_Music_ContentGroupDescription + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 33 (PIDSI_MUSIC_CONTENT_GROUP_DESCRIPTION) + + + + + Name: System.Music.DisplayArtist -- PKEY_Music_DisplayArtist + Description: This property returns the best representation of Album Artist for a given music file + based upon AlbumArtist, ContributingArtist and compilation info. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FD122953-FA93-4EF7-92C3-04C946B2F7C8}, 100 + + + + + Name: System.Music.Genre -- PKEY_Music_Genre + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 11 (PIDSI_MUSIC_GENRE) + + + + + Name: System.Music.InitialKey -- PKEY_Music_InitialKey + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 34 (PIDSI_MUSIC_INITIAL_KEY) + + + + + Name: System.Music.IsCompilation -- PKEY_Music_IsCompilation + Description: Indicates whether the file is part of a compilation. + + Type: Boolean -- VT_BOOL + FormatID: {C449D5CB-9EA4-4809-82E8-AF9D59DED6D1}, 100 + + + + + Name: System.Music.Lyrics -- PKEY_Music_Lyrics + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 12 (PIDSI_MUSIC_LYRICS) + + + + + Name: System.Music.Mood -- PKEY_Music_Mood + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 39 (PIDSI_MUSIC_MOOD) + + + + + Name: System.Music.PartOfSet -- PKEY_Music_PartOfSet + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 37 (PIDSI_MUSIC_PART_OF_SET) + + + + + Name: System.Music.Period -- PKEY_Music_Period + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 31 (PIDMSI_PERIOD) + + + + + Name: System.Music.SynchronizedLyrics -- PKEY_Music_SynchronizedLyrics + Description: + Type: Blob -- VT_BLOB + FormatID: {6B223B6A-162E-4AA9-B39F-05D678FC6D77}, 100 + + + + + Name: System.Music.TrackNumber -- PKEY_Music_TrackNumber + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 7 (PIDSI_MUSIC_TRACK) + + + + + System.Note Properties + + + + + Name: System.Note.Color -- PKEY_Note_Color + Description: + Type: UInt16 -- VT_UI2 + FormatID: {4776CAFA-BCE4-4CB1-A23E-265E76D8EB11}, 100 + + + + + Name: System.Note.ColorText -- PKEY_Note_ColorText + Description: This is the user-friendly form of System.Note.Color. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {46B4E8DE-CDB2-440D-885C-1658EB65B914}, 100 + + + + + System.Photo Properties + + + + + Name: System.Photo.Aperture -- PKEY_Photo_Aperture + Description: PropertyTagExifAperture. Calculated from PKEY_Photo_ApertureNumerator and PKEY_Photo_ApertureDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37378 + + + + + Name: System.Photo.ApertureDenominator -- PKEY_Photo_ApertureDenominator + Description: Denominator of PKEY_Photo_Aperture + + Type: UInt32 -- VT_UI4 + FormatID: {E1A9A38B-6685-46BD-875E-570DC7AD7320}, 100 + + + + + Name: System.Photo.ApertureNumerator -- PKEY_Photo_ApertureNumerator + Description: Numerator of PKEY_Photo_Aperture + + Type: UInt32 -- VT_UI4 + FormatID: {0337ECEC-39FB-4581-A0BD-4C4CC51E9914}, 100 + + + + + Name: System.Photo.Brightness -- PKEY_Photo_Brightness + Description: This is the brightness of the photo. + + Calculated from PKEY_Photo_BrightnessNumerator and PKEY_Photo_BrightnessDenominator. + + The units are "APEX", normally in the range of -99.99 to 99.99. If the numerator of + the recorded value is FFFFFFFF.H, "Unknown" should be indicated. + + Type: Double -- VT_R8 + FormatID: {1A701BF6-478C-4361-83AB-3701BB053C58}, 100 (PropertyTagExifBrightness) + + + + + Name: System.Photo.BrightnessDenominator -- PKEY_Photo_BrightnessDenominator + Description: Denominator of PKEY_Photo_Brightness + + Type: UInt32 -- VT_UI4 + FormatID: {6EBE6946-2321-440A-90F0-C043EFD32476}, 100 + + + + + Name: System.Photo.BrightnessNumerator -- PKEY_Photo_BrightnessNumerator + Description: Numerator of PKEY_Photo_Brightness + + Type: UInt32 -- VT_UI4 + FormatID: {9E7D118F-B314-45A0-8CFB-D654B917C9E9}, 100 + + + + + Name: System.Photo.CameraManufacturer -- PKEY_Photo_CameraManufacturer + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 271 (PropertyTagEquipMake) + + + + + Name: System.Photo.CameraModel -- PKEY_Photo_CameraModel + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 272 (PropertyTagEquipModel) + + + + + Name: System.Photo.CameraSerialNumber -- PKEY_Photo_CameraSerialNumber + Description: Serial number of camera that produced this photo + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 273 + + + + + Name: System.Photo.Contrast -- PKEY_Photo_Contrast + Description: This indicates the direction of contrast processing applied by the camera + when the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {2A785BA9-8D23-4DED-82E6-60A350C86A10}, 100 + + + + + Name: System.Photo.ContrastText -- PKEY_Photo_ContrastText + Description: This is the user-friendly form of System.Photo.Contrast. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {59DDE9F2-5253-40EA-9A8B-479E96C6249A}, 100 + + + + + Name: System.Photo.DateTaken -- PKEY_Photo_DateTaken + Description: PropertyTagExifDTOrig + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 36867 + + + + + Name: System.Photo.DigitalZoom -- PKEY_Photo_DigitalZoom + Description: PropertyTagExifDigitalZoom. Calculated from PKEY_Photo_DigitalZoomNumerator and PKEY_Photo_DigitalZoomDenominator + + Type: Double -- VT_R8 + FormatID: {F85BF840-A925-4BC2-B0C4-8E36B598679E}, 100 + + + + + Name: System.Photo.DigitalZoomDenominator -- PKEY_Photo_DigitalZoomDenominator + Description: Denominator of PKEY_Photo_DigitalZoom + + Type: UInt32 -- VT_UI4 + FormatID: {745BAF0E-E5C1-4CFB-8A1B-D031A0A52393}, 100 + + + + + Name: System.Photo.DigitalZoomNumerator -- PKEY_Photo_DigitalZoomNumerator + Description: Numerator of PKEY_Photo_DigitalZoom + + Type: UInt32 -- VT_UI4 + FormatID: {16CBB924-6500-473B-A5BE-F1599BCBE413}, 100 + + + + + Name: System.Photo.Event -- PKEY_Photo_Event + Description: The event at which the photo was taken + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 18248 + + + + + Name: System.Photo.EXIFVersion -- PKEY_Photo_EXIFVersion + Description: The EXIF version. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D35F743A-EB2E-47F2-A286-844132CB1427}, 100 + + + + + Name: System.Photo.ExposureBias -- PKEY_Photo_ExposureBias + Description: PropertyTagExifExposureBias. Calculated from PKEY_Photo_ExposureBiasNumerator and PKEY_Photo_ExposureBiasDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37380 + + + + + Name: System.Photo.ExposureBiasDenominator -- PKEY_Photo_ExposureBiasDenominator + Description: Denominator of PKEY_Photo_ExposureBias + + Type: Int32 -- VT_I4 + FormatID: {AB205E50-04B7-461C-A18C-2F233836E627}, 100 + + + + + Name: System.Photo.ExposureBiasNumerator -- PKEY_Photo_ExposureBiasNumerator + Description: Numerator of PKEY_Photo_ExposureBias + + Type: Int32 -- VT_I4 + FormatID: {738BF284-1D87-420B-92CF-5834BF6EF9ED}, 100 + + + + + Name: System.Photo.ExposureIndex -- PKEY_Photo_ExposureIndex + Description: PropertyTagExifExposureIndex. Calculated from PKEY_Photo_ExposureIndexNumerator and PKEY_Photo_ExposureIndexDenominator + + Type: Double -- VT_R8 + FormatID: {967B5AF8-995A-46ED-9E11-35B3C5B9782D}, 100 + + + + + Name: System.Photo.ExposureIndexDenominator -- PKEY_Photo_ExposureIndexDenominator + Description: Denominator of PKEY_Photo_ExposureIndex + + Type: UInt32 -- VT_UI4 + FormatID: {93112F89-C28B-492F-8A9D-4BE2062CEE8A}, 100 + + + + + Name: System.Photo.ExposureIndexNumerator -- PKEY_Photo_ExposureIndexNumerator + Description: Numerator of PKEY_Photo_ExposureIndex + + Type: UInt32 -- VT_UI4 + FormatID: {CDEDCF30-8919-44DF-8F4C-4EB2FFDB8D89}, 100 + + + + + Name: System.Photo.ExposureProgram -- PKEY_Photo_ExposureProgram + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 34850 (PropertyTagExifExposureProg) + + + + + Name: System.Photo.ExposureProgramText -- PKEY_Photo_ExposureProgramText + Description: This is the user-friendly form of System.Photo.ExposureProgram. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FEC690B7-5F30-4646-AE47-4CAAFBA884A3}, 100 + + + + + Name: System.Photo.ExposureTime -- PKEY_Photo_ExposureTime + Description: PropertyTagExifExposureTime. Calculated from PKEY_Photo_ExposureTimeNumerator and PKEY_Photo_ExposureTimeDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 33434 + + + + + Name: System.Photo.ExposureTimeDenominator -- PKEY_Photo_ExposureTimeDenominator + Description: Denominator of PKEY_Photo_ExposureTime + + Type: UInt32 -- VT_UI4 + FormatID: {55E98597-AD16-42E0-B624-21599A199838}, 100 + + + + + Name: System.Photo.ExposureTimeNumerator -- PKEY_Photo_ExposureTimeNumerator + Description: Numerator of PKEY_Photo_ExposureTime + + Type: UInt32 -- VT_UI4 + FormatID: {257E44E2-9031-4323-AC38-85C552871B2E}, 100 + + + + + Name: System.Photo.Flash -- PKEY_Photo_Flash + Description: PropertyTagExifFlash + + Type: Byte -- VT_UI1 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37385 + + + + + Name: System.Photo.FlashEnergy -- PKEY_Photo_FlashEnergy + Description: PropertyTagExifFlashEnergy. Calculated from PKEY_Photo_FlashEnergyNumerator and PKEY_Photo_FlashEnergyDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 41483 + + + + + Name: System.Photo.FlashEnergyDenominator -- PKEY_Photo_FlashEnergyDenominator + Description: Denominator of PKEY_Photo_FlashEnergy + + Type: UInt32 -- VT_UI4 + FormatID: {D7B61C70-6323-49CD-A5FC-C84277162C97}, 100 + + + + + Name: System.Photo.FlashEnergyNumerator -- PKEY_Photo_FlashEnergyNumerator + Description: Numerator of PKEY_Photo_FlashEnergy + + Type: UInt32 -- VT_UI4 + FormatID: {FCAD3D3D-0858-400F-AAA3-2F66CCE2A6BC}, 100 + + + + + Name: System.Photo.FlashManufacturer -- PKEY_Photo_FlashManufacturer + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AABAF6C9-E0C5-4719-8585-57B103E584FE}, 100 + + + + + Name: System.Photo.FlashModel -- PKEY_Photo_FlashModel + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FE83BB35-4D1A-42E2-916B-06F3E1AF719E}, 100 + + + + + Name: System.Photo.FlashText -- PKEY_Photo_FlashText + Description: This is the user-friendly form of System.Photo.Flash. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6B8B68F6-200B-47EA-8D25-D8050F57339F}, 100 + + + + + Name: System.Photo.FNumber -- PKEY_Photo_FNumber + Description: PropertyTagExifFNumber. Calculated from PKEY_Photo_FNumberNumerator and PKEY_Photo_FNumberDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 33437 + + + + + Name: System.Photo.FNumberDenominator -- PKEY_Photo_FNumberDenominator + Description: Denominator of PKEY_Photo_FNumber + + Type: UInt32 -- VT_UI4 + FormatID: {E92A2496-223B-4463-A4E3-30EABBA79D80}, 100 + + + + + Name: System.Photo.FNumberNumerator -- PKEY_Photo_FNumberNumerator + Description: Numerator of PKEY_Photo_FNumber + + Type: UInt32 -- VT_UI4 + FormatID: {1B97738A-FDFC-462F-9D93-1957E08BE90C}, 100 + + + + + Name: System.Photo.FocalLength -- PKEY_Photo_FocalLength + Description: PropertyTagExifFocalLength. Calculated from PKEY_Photo_FocalLengthNumerator and PKEY_Photo_FocalLengthDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37386 + + + + + Name: System.Photo.FocalLengthDenominator -- PKEY_Photo_FocalLengthDenominator + Description: Denominator of PKEY_Photo_FocalLength + + Type: UInt32 -- VT_UI4 + FormatID: {305BC615-DCA1-44A5-9FD4-10C0BA79412E}, 100 + + + + + Name: System.Photo.FocalLengthInFilm -- PKEY_Photo_FocalLengthInFilm + Description: + Type: UInt16 -- VT_UI2 + FormatID: {A0E74609-B84D-4F49-B860-462BD9971F98}, 100 + + + + + Name: System.Photo.FocalLengthNumerator -- PKEY_Photo_FocalLengthNumerator + Description: Numerator of PKEY_Photo_FocalLength + + Type: UInt32 -- VT_UI4 + FormatID: {776B6B3B-1E3D-4B0C-9A0E-8FBAF2A8492A}, 100 + + + + + Name: System.Photo.FocalPlaneXResolution -- PKEY_Photo_FocalPlaneXResolution + Description: PropertyTagExifFocalXRes. Calculated from PKEY_Photo_FocalPlaneXResolutionNumerator and + PKEY_Photo_FocalPlaneXResolutionDenominator. + + Type: Double -- VT_R8 + FormatID: {CFC08D97-C6F7-4484-89DD-EBEF4356FE76}, 100 + + + + + Name: System.Photo.FocalPlaneXResolutionDenominator -- PKEY_Photo_FocalPlaneXResolutionDenominator + Description: Denominator of PKEY_Photo_FocalPlaneXResolution + + Type: UInt32 -- VT_UI4 + FormatID: {0933F3F5-4786-4F46-A8E8-D64DD37FA521}, 100 + + + + + Name: System.Photo.FocalPlaneXResolutionNumerator -- PKEY_Photo_FocalPlaneXResolutionNumerator + Description: Numerator of PKEY_Photo_FocalPlaneXResolution + + Type: UInt32 -- VT_UI4 + FormatID: {DCCB10AF-B4E2-4B88-95F9-031B4D5AB490}, 100 + + + + + Name: System.Photo.FocalPlaneYResolution -- PKEY_Photo_FocalPlaneYResolution + Description: PropertyTagExifFocalYRes. Calculated from PKEY_Photo_FocalPlaneYResolutionNumerator and + PKEY_Photo_FocalPlaneYResolutionDenominator. + + Type: Double -- VT_R8 + FormatID: {4FFFE4D0-914F-4AC4-8D6F-C9C61DE169B1}, 100 + + + + + Name: System.Photo.FocalPlaneYResolutionDenominator -- PKEY_Photo_FocalPlaneYResolutionDenominator + Description: Denominator of PKEY_Photo_FocalPlaneYResolution + + Type: UInt32 -- VT_UI4 + FormatID: {1D6179A6-A876-4031-B013-3347B2B64DC8}, 100 + + + + + Name: System.Photo.FocalPlaneYResolutionNumerator -- PKEY_Photo_FocalPlaneYResolutionNumerator + Description: Numerator of PKEY_Photo_FocalPlaneYResolution + + Type: UInt32 -- VT_UI4 + FormatID: {A2E541C5-4440-4BA8-867E-75CFC06828CD}, 100 + + + + + Name: System.Photo.GainControl -- PKEY_Photo_GainControl + Description: This indicates the degree of overall image gain adjustment. + + Calculated from PKEY_Photo_GainControlNumerator and PKEY_Photo_GainControlDenominator. + + Type: Double -- VT_R8 + FormatID: {FA304789-00C7-4D80-904A-1E4DCC7265AA}, 100 (PropertyTagExifGainControl) + + + + + Name: System.Photo.GainControlDenominator -- PKEY_Photo_GainControlDenominator + Description: Denominator of PKEY_Photo_GainControl + + Type: UInt32 -- VT_UI4 + FormatID: {42864DFD-9DA4-4F77-BDED-4AAD7B256735}, 100 + + + + + Name: System.Photo.GainControlNumerator -- PKEY_Photo_GainControlNumerator + Description: Numerator of PKEY_Photo_GainControl + + Type: UInt32 -- VT_UI4 + FormatID: {8E8ECF7C-B7B8-4EB8-A63F-0EE715C96F9E}, 100 + + + + + Name: System.Photo.GainControlText -- PKEY_Photo_GainControlText + Description: This is the user-friendly form of System.Photo.GainControl. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C06238B2-0BF9-4279-A723-25856715CB9D}, 100 + + + + + Name: System.Photo.ISOSpeed -- PKEY_Photo_ISOSpeed + Description: PropertyTagExifISOSpeed + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 34855 + + + + + Name: System.Photo.LensManufacturer -- PKEY_Photo_LensManufacturer + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E6DDCAF7-29C5-4F0A-9A68-D19412EC7090}, 100 + + + + + Name: System.Photo.LensModel -- PKEY_Photo_LensModel + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E1277516-2B5F-4869-89B1-2E585BD38B7A}, 100 + + + + + Name: System.Photo.LightSource -- PKEY_Photo_LightSource + Description: PropertyTagExifLightSource + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37384 + + + + + Name: System.Photo.MakerNote -- PKEY_Photo_MakerNote + Description: + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {FA303353-B659-4052-85E9-BCAC79549B84}, 100 + + + + + Name: System.Photo.MakerNoteOffset -- PKEY_Photo_MakerNoteOffset + Description: + Type: UInt64 -- VT_UI8 + FormatID: {813F4124-34E6-4D17-AB3E-6B1F3C2247A1}, 100 + + + + + Name: System.Photo.MaxAperture -- PKEY_Photo_MaxAperture + Description: Calculated from PKEY_Photo_MaxApertureNumerator and PKEY_Photo_MaxApertureDenominator + + Type: Double -- VT_R8 + FormatID: {08F6D7C2-E3F2-44FC-AF1E-5AA5C81A2D3E}, 100 + + + + + Name: System.Photo.MaxApertureDenominator -- PKEY_Photo_MaxApertureDenominator + Description: Denominator of PKEY_Photo_MaxAperture + + Type: UInt32 -- VT_UI4 + FormatID: {C77724D4-601F-46C5-9B89-C53F93BCEB77}, 100 + + + + + Name: System.Photo.MaxApertureNumerator -- PKEY_Photo_MaxApertureNumerator + Description: Numerator of PKEY_Photo_MaxAperture + + Type: UInt32 -- VT_UI4 + FormatID: {C107E191-A459-44C5-9AE6-B952AD4B906D}, 100 + + + + + Name: System.Photo.MeteringMode -- PKEY_Photo_MeteringMode + Description: PropertyTagExifMeteringMode + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37383 + + + + + Name: System.Photo.MeteringModeText -- PKEY_Photo_MeteringModeText + Description: This is the user-friendly form of System.Photo.MeteringMode. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F628FD8C-7BA8-465A-A65B-C5AA79263A9E}, 100 + + + + + Name: System.Photo.Orientation -- PKEY_Photo_Orientation + Description: This is the image orientation viewed in terms of rows and columns. + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 274 (PropertyTagOrientation) + + + + + Name: System.Photo.OrientationText -- PKEY_Photo_OrientationText + Description: This is the user-friendly form of System.Photo.Orientation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A9EA193C-C511-498A-A06B-58E2776DCC28}, 100 + + + + + Name: System.Photo.PeopleNames -- PKEY_Photo_PeopleNames + Description: The people tags on an image. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: {E8309B6E-084C-49B4-B1FC-90A80331B638}, 100 + + + + + Name: System.Photo.PhotometricInterpretation -- PKEY_Photo_PhotometricInterpretation + Description: This is the pixel composition. In JPEG compressed data, a JPEG marker is used + instead of this property. + + Type: UInt16 -- VT_UI2 + FormatID: {341796F1-1DF9-4B1C-A564-91BDEFA43877}, 100 + + + + + Name: System.Photo.PhotometricInterpretationText -- PKEY_Photo_PhotometricInterpretationText + Description: This is the user-friendly form of System.Photo.PhotometricInterpretation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {821437D6-9EAB-4765-A589-3B1CBBD22A61}, 100 + + + + + Name: System.Photo.ProgramMode -- PKEY_Photo_ProgramMode + Description: This is the class of the program used by the camera to set exposure when the + picture is taken. + + Type: UInt32 -- VT_UI4 + FormatID: {6D217F6D-3F6A-4825-B470-5F03CA2FBE9B}, 100 + + + + + Name: System.Photo.ProgramModeText -- PKEY_Photo_ProgramModeText + Description: This is the user-friendly form of System.Photo.ProgramMode. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7FE3AA27-2648-42F3-89B0-454E5CB150C3}, 100 + + + + + Name: System.Photo.RelatedSoundFile -- PKEY_Photo_RelatedSoundFile + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {318A6B45-087F-4DC2-B8CC-05359551FC9E}, 100 + + + + + Name: System.Photo.Saturation -- PKEY_Photo_Saturation + Description: This indicates the direction of saturation processing applied by the camera when + the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {49237325-A95A-4F67-B211-816B2D45D2E0}, 100 + + + + + Name: System.Photo.SaturationText -- PKEY_Photo_SaturationText + Description: This is the user-friendly form of System.Photo.Saturation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {61478C08-B600-4A84-BBE4-E99C45F0A072}, 100 + + + + + Name: System.Photo.Sharpness -- PKEY_Photo_Sharpness + Description: This indicates the direction of sharpness processing applied by the camera when + the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {FC6976DB-8349-4970-AE97-B3C5316A08F0}, 100 + + + + + Name: System.Photo.SharpnessText -- PKEY_Photo_SharpnessText + Description: This is the user-friendly form of System.Photo.Sharpness. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {51EC3F47-DD50-421D-8769-334F50424B1E}, 100 + + + + + Name: System.Photo.ShutterSpeed -- PKEY_Photo_ShutterSpeed + Description: PropertyTagExifShutterSpeed. Calculated from PKEY_Photo_ShutterSpeedNumerator and PKEY_Photo_ShutterSpeedDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37377 + + + + + Name: System.Photo.ShutterSpeedDenominator -- PKEY_Photo_ShutterSpeedDenominator + Description: Denominator of PKEY_Photo_ShutterSpeed + + Type: Int32 -- VT_I4 + FormatID: {E13D8975-81C7-4948-AE3F-37CAE11E8FF7}, 100 + + + + + Name: System.Photo.ShutterSpeedNumerator -- PKEY_Photo_ShutterSpeedNumerator + Description: Numerator of PKEY_Photo_ShutterSpeed + + Type: Int32 -- VT_I4 + FormatID: {16EA4042-D6F4-4BCA-8349-7C78D30FB333}, 100 + + + + + Name: System.Photo.SubjectDistance -- PKEY_Photo_SubjectDistance + Description: PropertyTagExifSubjectDist. Calculated from PKEY_Photo_SubjectDistanceNumerator and PKEY_Photo_SubjectDistanceDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37382 + + + + + Name: System.Photo.SubjectDistanceDenominator -- PKEY_Photo_SubjectDistanceDenominator + Description: Denominator of PKEY_Photo_SubjectDistance + + Type: UInt32 -- VT_UI4 + FormatID: {0C840A88-B043-466D-9766-D4B26DA3FA77}, 100 + + + + + Name: System.Photo.SubjectDistanceNumerator -- PKEY_Photo_SubjectDistanceNumerator + Description: Numerator of PKEY_Photo_SubjectDistance + + Type: UInt32 -- VT_UI4 + FormatID: {8AF4961C-F526-43E5-AA81-DB768219178D}, 100 + + + + + Name: System.Photo.TagViewAggregate -- PKEY_Photo_TagViewAggregate + Description: A read-only aggregation of tag-like properties for use in building views. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: {B812F15D-C2D8-4BBF-BACD-79744346113F}, 100 + + + + + Name: System.Photo.TranscodedForSync -- PKEY_Photo_TranscodedForSync + Description: + Type: Boolean -- VT_BOOL + FormatID: {9A8EBB75-6458-4E82-BACB-35C0095B03BB}, 100 + + + + + Name: System.Photo.WhiteBalance -- PKEY_Photo_WhiteBalance + Description: This indicates the white balance mode set when the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {EE3D3D8A-5381-4CFA-B13B-AAF66B5F4EC9}, 100 + + + + + Name: System.Photo.WhiteBalanceText -- PKEY_Photo_WhiteBalanceText + Description: This is the user-friendly form of System.Photo.WhiteBalance. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6336B95E-C7A7-426D-86FD-7AE3D39C84B4}, 100 + + + + + System.PropGroup Properties + + + + + Name: System.PropGroup.Advanced -- PKEY_PropGroup_Advanced + Description: + Type: Null -- VT_NULL + FormatID: {900A403B-097B-4B95-8AE2-071FDAEEB118}, 100 + + + + + Name: System.PropGroup.Audio -- PKEY_PropGroup_Audio + Description: + Type: Null -- VT_NULL + FormatID: {2804D469-788F-48AA-8570-71B9C187E138}, 100 + + + + + Name: System.PropGroup.Calendar -- PKEY_PropGroup_Calendar + Description: + Type: Null -- VT_NULL + FormatID: {9973D2B5-BFD8-438A-BA94-5349B293181A}, 100 + + + + + Name: System.PropGroup.Camera -- PKEY_PropGroup_Camera + Description: + Type: Null -- VT_NULL + FormatID: {DE00DE32-547E-4981-AD4B-542F2E9007D8}, 100 + + + + + Name: System.PropGroup.Contact -- PKEY_PropGroup_Contact + Description: + Type: Null -- VT_NULL + FormatID: {DF975FD3-250A-4004-858F-34E29A3E37AA}, 100 + + + + + Name: System.PropGroup.Content -- PKEY_PropGroup_Content + Description: + Type: Null -- VT_NULL + FormatID: {D0DAB0BA-368A-4050-A882-6C010FD19A4F}, 100 + + + + + Name: System.PropGroup.Description -- PKEY_PropGroup_Description + Description: + Type: Null -- VT_NULL + FormatID: {8969B275-9475-4E00-A887-FF93B8B41E44}, 100 + + + + + Name: System.PropGroup.FileSystem -- PKEY_PropGroup_FileSystem + Description: + Type: Null -- VT_NULL + FormatID: {E3A7D2C1-80FC-4B40-8F34-30EA111BDC2E}, 100 + + + + + Name: System.PropGroup.General -- PKEY_PropGroup_General + Description: + Type: Null -- VT_NULL + FormatID: {CC301630-B192-4C22-B372-9F4C6D338E07}, 100 + + + + + Name: System.PropGroup.GPS -- PKEY_PropGroup_GPS + Description: + Type: Null -- VT_NULL + FormatID: {F3713ADA-90E3-4E11-AAE5-FDC17685B9BE}, 100 + + + + + Name: System.PropGroup.Image -- PKEY_PropGroup_Image + Description: + Type: Null -- VT_NULL + FormatID: {E3690A87-0FA8-4A2A-9A9F-FCE8827055AC}, 100 + + + + + Name: System.PropGroup.Media -- PKEY_PropGroup_Media + Description: + Type: Null -- VT_NULL + FormatID: {61872CF7-6B5E-4B4B-AC2D-59DA84459248}, 100 + + + + + Name: System.PropGroup.MediaAdvanced -- PKEY_PropGroup_MediaAdvanced + Description: + Type: Null -- VT_NULL + FormatID: {8859A284-DE7E-4642-99BA-D431D044B1EC}, 100 + + + + + Name: System.PropGroup.Message -- PKEY_PropGroup_Message + Description: + Type: Null -- VT_NULL + FormatID: {7FD7259D-16B4-4135-9F97-7C96ECD2FA9E}, 100 + + + + + Name: System.PropGroup.Music -- PKEY_PropGroup_Music + Description: + Type: Null -- VT_NULL + FormatID: {68DD6094-7216-40F1-A029-43FE7127043F}, 100 + + + + + Name: System.PropGroup.Origin -- PKEY_PropGroup_Origin + Description: + Type: Null -- VT_NULL + FormatID: {2598D2FB-5569-4367-95DF-5CD3A177E1A5}, 100 + + + + + Name: System.PropGroup.PhotoAdvanced -- PKEY_PropGroup_PhotoAdvanced + Description: + Type: Null -- VT_NULL + FormatID: {0CB2BF5A-9EE7-4A86-8222-F01E07FDADAF}, 100 + + + + + Name: System.PropGroup.RecordedTV -- PKEY_PropGroup_RecordedTV + Description: + Type: Null -- VT_NULL + FormatID: {E7B33238-6584-4170-A5C0-AC25EFD9DA56}, 100 + + + + + Name: System.PropGroup.Video -- PKEY_PropGroup_Video + Description: + Type: Null -- VT_NULL + FormatID: {BEBE0920-7671-4C54-A3EB-49FDDFC191EE}, 100 + + + + + System.PropList Properties + + + + + Name: System.PropList.ConflictPrompt -- PKEY_PropList_ConflictPrompt + Description: The list of properties to show in the file operation conflict resolution dialog. Properties with empty + values will not be displayed. Register under the regvalue of "ConflictPrompt". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 11 + + + + + Name: System.PropList.ContentViewModeForBrowse -- PKEY_PropList_ContentViewModeForBrowse + Description: The list of properties to show in the content view mode of an item in the context of browsing. + Register the regvalue under the name of "ContentViewModeForBrowse". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 13 + + + + + Name: System.PropList.ContentViewModeForSearch -- PKEY_PropList_ContentViewModeForSearch + Description: The list of properties to show in the content view mode of an item in the context of searching. + Register the regvalue under the name of "ContentViewModeForSearch". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 14 + + + + + Name: System.PropList.ExtendedTileInfo -- PKEY_PropList_ExtendedTileInfo + Description: The list of properties to show in the listview on extended tiles. Register under the regvalue of + "ExtendedTileInfo". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 9 + + + + + Name: System.PropList.FileOperationPrompt -- PKEY_PropList_FileOperationPrompt + Description: The list of properties to show in the file operation confirmation dialog. Properties with empty values + will not be displayed. If this list is not specified, then the InfoTip property list is used instead. + Register under the regvalue of "FileOperationPrompt". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 10 + + + + + Name: System.PropList.FullDetails -- PKEY_PropList_FullDetails + Description: The list of all the properties to show in the details page. Property groups can be included in this list + in order to more easily organize the UI. Register under the regvalue of "FullDetails". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 2 + + + + + Name: System.PropList.InfoTip -- PKEY_PropList_InfoTip + Description: The list of properties to show in the infotip. Properties with empty values will not be displayed. Register + under the regvalue of "InfoTip". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 4 (PID_PROPLIST_INFOTIP) + + + + + Name: System.PropList.NonPersonal -- PKEY_PropList_NonPersonal + Description: The list of properties that are considered 'non-personal'. When told to remove all non-personal properties + from a given file, the system will leave these particular properties untouched. Register under the regvalue + of "NonPersonal". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49D1091F-082E-493F-B23F-D2308AA9668C}, 100 + + + + + Name: System.PropList.PreviewDetails -- PKEY_PropList_PreviewDetails + Description: The list of properties to display in the preview pane. Register under the regvalue of "PreviewDetails". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 8 + + + + + Name: System.PropList.PreviewTitle -- PKEY_PropList_PreviewTitle + Description: The one or two properties to display in the preview pane title section. The optional second property is + displayed as a subtitle. Register under the regvalue of "PreviewTitle". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 6 + + + + + Name: System.PropList.QuickTip -- PKEY_PropList_QuickTip + Description: The list of properties to show in the infotip when the item is on a slow network. Properties with empty + values will not be displayed. Register under the regvalue of "QuickTip". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 5 (PID_PROPLIST_QUICKTIP) + + + + + Name: System.PropList.TileInfo -- PKEY_PropList_TileInfo + Description: The list of properties to show in the listview on tiles. Register under the regvalue of "TileInfo". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 3 (PID_PROPLIST_TILEINFO) + + + + + Name: System.PropList.XPDetailsPanel -- PKEY_PropList_XPDetailsPanel + Description: The list of properties to display in the XP webview details panel. Obsolete. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_WebView) {F2275480-F782-4291-BD94-F13693513AEC}, 0 (PID_DISPLAY_PROPERTIES) + + + + + System.RecordedTV Properties + + + + + Name: System.RecordedTV.ChannelNumber -- PKEY_RecordedTV_ChannelNumber + Description: Example: 42 + + Type: UInt32 -- VT_UI4 + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 7 + + + + + Name: System.RecordedTV.Credits -- PKEY_RecordedTV_Credits + Description: Example: "Don Messick/Frank Welker/Casey Kasem/Heather North/Nicole Jaffe;;;" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 4 + + + + + Name: System.RecordedTV.DateContentExpires -- PKEY_RecordedTV_DateContentExpires + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 15 + + + + + Name: System.RecordedTV.EpisodeName -- PKEY_RecordedTV_EpisodeName + Description: Example: "Nowhere to Hyde" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 2 + + + + + Name: System.RecordedTV.IsATSCContent -- PKEY_RecordedTV_IsATSCContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 16 + + + + + Name: System.RecordedTV.IsClosedCaptioningAvailable -- PKEY_RecordedTV_IsClosedCaptioningAvailable + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 12 + + + + + Name: System.RecordedTV.IsDTVContent -- PKEY_RecordedTV_IsDTVContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 17 + + + + + Name: System.RecordedTV.IsHDContent -- PKEY_RecordedTV_IsHDContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 18 + + + + + Name: System.RecordedTV.IsRepeatBroadcast -- PKEY_RecordedTV_IsRepeatBroadcast + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 13 + + + + + Name: System.RecordedTV.IsSAP -- PKEY_RecordedTV_IsSAP + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 14 + + + + + Name: System.RecordedTV.NetworkAffiliation -- PKEY_RecordedTV_NetworkAffiliation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2C53C813-FB63-4E22-A1AB-0B331CA1E273}, 100 + + + + + Name: System.RecordedTV.OriginalBroadcastDate -- PKEY_RecordedTV_OriginalBroadcastDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {4684FE97-8765-4842-9C13-F006447B178C}, 100 + + + + + Name: System.RecordedTV.ProgramDescription -- PKEY_RecordedTV_ProgramDescription + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 3 + + + + + Name: System.RecordedTV.RecordingTime -- PKEY_RecordedTV_RecordingTime + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {A5477F61-7A82-4ECA-9DDE-98B69B2479B3}, 100 + + + + + Name: System.RecordedTV.StationCallSign -- PKEY_RecordedTV_StationCallSign + Description: Example: "TOONP" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 5 + + + + + Name: System.RecordedTV.StationName -- PKEY_RecordedTV_StationName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1B5439E7-EBA1-4AF8-BDD7-7AF1D4549493}, 100 + + + + + System.Search Properties + + + + + Name: System.Search.AutoSummary -- PKEY_Search_AutoSummary + Description: General Summary of the document. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 2 + + + + + Name: System.Search.ContainerHash -- PKEY_Search_ContainerHash + Description: Hash code used to identify attachments to be deleted based on a common container url + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BCEEE283-35DF-4D53-826A-F36A3EEFC6BE}, 100 + + + + + Name: System.Search.Contents -- PKEY_Search_Contents + Description: The contents of the item. This property is for query restrictions only; it cannot be retrieved in a + query result. The Indexing Service friendly name is 'contents'. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 19 (PID_STG_CONTENTS) + + + + + Name: System.Search.EntryID -- PKEY_Search_EntryID + Description: The entry ID for an item within a given catalog in the Windows Search Index. + This value may be recycled, and therefore is not considered unique over time. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 5 (PROPID_QUERY_WORKID) + + + + + Name: System.Search.ExtendedProperties -- PKEY_Search_ExtendedProperties + Description: + Type: Blob -- VT_BLOB + FormatID: {7B03B546-FA4F-4A52-A2FE-03D5311E5865}, 100 + + + + + Name: System.Search.GatherTime -- PKEY_Search_GatherTime + Description: The Datetime that the Windows Search Gatherer process last pushed properties of this document to the Windows Search Gatherer Plugins. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {0B63E350-9CCC-11D0-BCDB-00805FCCCE04}, 8 + + + + + Name: System.Search.HitCount -- PKEY_Search_HitCount + Description: When using CONTAINS over the Windows Search Index, this is the number of matches of the term. + If there are multiple CONTAINS, an AND computes the min number of hits and an OR the max number of hits. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 4 (PROPID_QUERY_HITCOUNT) + + + + + Name: System.Search.IsClosedDirectory -- PKEY_Search_IsClosedDirectory + Description: If this property is emitted with a value of TRUE, then it indicates that this URL's last modified time applies to all of it's children, and if this URL is deleted then all of it's children are deleted as well. For example, this would be emitted as TRUE when emitting the URL of an email so that all attachments are tied to the last modified time of that email. + + Type: Boolean -- VT_BOOL + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 23 + + + + + Name: System.Search.IsFullyContained -- PKEY_Search_IsFullyContained + Description: Any child URL of a URL which has System.Search.IsClosedDirectory=TRUE must emit System.Search.IsFullyContained=TRUE. This ensures that the URL is not deleted at the end of a crawl because it hasn't been visited (which is the normal mechanism for detecting deletes). For example an email attachment would emit this property + + Type: Boolean -- VT_BOOL + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 24 + + + + + Name: System.Search.QueryFocusedSummary -- PKEY_Search_QueryFocusedSummary + Description: Query Focused Summary of the document. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 3 + + + + + Name: System.Search.QueryFocusedSummaryWithFallback -- PKEY_Search_QueryFocusedSummaryWithFallback + Description: Query Focused Summary of the document, if none is available it returns the AutoSummary. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 4 + + + + + Name: System.Search.Rank -- PKEY_Search_Rank + Description: Relevance rank of row. Ranges from 0-1000. Larger numbers = better matches. Query-time only. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 3 (PROPID_QUERY_RANK) + + + + + Name: System.Search.Store -- PKEY_Search_Store + Description: The identifier for the protocol handler that produced this item. (E.g. MAPI, CSC, FILE etc.) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A06992B3-8CAF-4ED7-A547-B259E32AC9FC}, 100 + + + + + Name: System.Search.UrlToIndex -- PKEY_Search_UrlToIndex + Description: This property should be emitted by a container IFilter for each child URL within the container. The children will eventually be crawled by the indexer if they are within scope. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 2 + + + + + Name: System.Search.UrlToIndexWithModificationTime -- PKEY_Search_UrlToIndexWithModificationTime + Description: This property is the same as System.Search.UrlToIndex except that it includes the time the URL was last modified. This is an optimization for the indexer as it doesn't have to call back into the protocol handler to ask for this information to determine if the content needs to be indexed again. The property is a vector with two elements, a VT_LPWSTR with the URL and a VT_FILETIME for the last modified time. + + Type: Multivalue Any -- VT_VECTOR | VT_NULL (For variants: VT_ARRAY | VT_NULL) + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 12 + + + + + System.Shell Properties + + + + + Name: System.Shell.OmitFromView -- PKEY_Shell_OmitFromView + Description: Set this to a string value of 'True' to omit this item from shell views + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE35258C-C695-4CBC-B982-38B0AD24CED0}, 2 + + + + + Name: System.Shell.SFGAOFlagsStrings -- PKEY_Shell_SFGAOFlagsStrings + Description: Expresses the SFGAO flags as string values and is used as a query optimization. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D6942081-D53B-443D-AD47-5E059D9CD27A}, 2 + + + + + System.Software Properties + + + + + Name: System.Software.DateLastUsed -- PKEY_Software_DateLastUsed + Description: + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {841E4F90-FF59-4D16-8947-E81BBFFAB36D}, 16 + + + + + Name: System.Software.ProductName -- PKEY_Software_ProductName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 7 + + + + + System.Sync Properties + + + + + Name: System.Sync.Comments -- PKEY_Sync_Comments + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 13 + + + + + Name: System.Sync.ConflictDescription -- PKEY_Sync_ConflictDescription + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 4 + + + + + Name: System.Sync.ConflictFirstLocation -- PKEY_Sync_ConflictFirstLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 6 + + + + + Name: System.Sync.ConflictSecondLocation -- PKEY_Sync_ConflictSecondLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 7 + + + + + Name: System.Sync.HandlerCollectionID -- PKEY_Sync_HandlerCollectionID + Description: + Type: Guid -- VT_CLSID + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 2 + + + + + Name: System.Sync.HandlerID -- PKEY_Sync_HandlerID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 3 + + + + + Name: System.Sync.HandlerName -- PKEY_Sync_HandlerName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 2 + + + + + Name: System.Sync.HandlerType -- PKEY_Sync_HandlerType + Description: + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 8 + + + + + Name: System.Sync.HandlerTypeLabel -- PKEY_Sync_HandlerTypeLabel + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 9 + + + + + Name: System.Sync.ItemID -- PKEY_Sync_ItemID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 6 + + + + + Name: System.Sync.ItemName -- PKEY_Sync_ItemName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 3 + + + + + Name: System.Sync.ProgressPercentage -- PKEY_Sync_ProgressPercentage + Description: An integer value between 0 and 100 representing the percentage completed. + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 23 + + + + + Name: System.Sync.State -- PKEY_Sync_State + Description: Sync state. + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 24 + + + + + Name: System.Sync.Status -- PKEY_Sync_Status + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 10 + + + + + System.Task Properties + + + + + Name: System.Task.BillingInformation -- PKEY_Task_BillingInformation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D37D52C6-261C-4303-82B3-08B926AC6F12}, 100 + + + + + Name: System.Task.CompletionStatus -- PKEY_Task_CompletionStatus + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {084D8A0A-E6D5-40DE-BF1F-C8820E7C877C}, 100 + + + + + Name: System.Task.Owner -- PKEY_Task_Owner + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {08C7CC5F-60F2-4494-AD75-55E3E0B5ADD0}, 100 + + + + + System.Video Properties + + + + + Name: System.Video.Compression -- PKEY_Video_Compression + Description: Indicates the level of compression for the video stream. "Compression". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 10 (PIDVSI_COMPRESSION) + + + + + Name: System.Video.Director -- PKEY_Video_Director + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 20 (PIDMSI_DIRECTOR) + + + + + Name: System.Video.EncodingBitrate -- PKEY_Video_EncodingBitrate + Description: Indicates the data rate in "bits per second" for the video stream. "DataRate". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 8 (PIDVSI_DATA_RATE) + + + + + Name: System.Video.FourCC -- PKEY_Video_FourCC + Description: Indicates the 4CC for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 44 + + + + + Name: System.Video.FrameHeight -- PKEY_Video_FrameHeight + Description: Indicates the frame height for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 4 + + + + + Name: System.Video.FrameRate -- PKEY_Video_FrameRate + Description: Indicates the frame rate in "frames per millisecond" for the video stream. "FrameRate". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 6 (PIDVSI_FRAME_RATE) + + + + + Name: System.Video.FrameWidth -- PKEY_Video_FrameWidth + Description: Indicates the frame width for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 3 + + + + + Name: System.Video.HorizontalAspectRatio -- PKEY_Video_HorizontalAspectRatio + Description: Indicates the horizontal portion of the aspect ratio. The X portion of XX:YY, + like 16:9. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 42 + + + + + Name: System.Video.SampleSize -- PKEY_Video_SampleSize + Description: Indicates the sample size in bits for the video stream. "SampleSize". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 9 (PIDVSI_SAMPLE_SIZE) + + + + + Name: System.Video.StreamName -- PKEY_Video_StreamName + Description: Indicates the name for the video stream. "StreamName". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 2 (PIDVSI_STREAM_NAME) + + + + + Name: System.Video.StreamNumber -- PKEY_Video_StreamNumber + Description: "Stream Number". + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 11 (PIDVSI_STREAM_NUMBER) + + + + + Name: System.Video.TotalBitrate -- PKEY_Video_TotalBitrate + Description: Indicates the total data rate in "bits per second" for all video and audio streams. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 43 (PIDVSI_TOTAL_BITRATE) + + + + + Name: System.Video.TranscodedForSync -- PKEY_Video_TranscodedForSync + Description: + Type: Boolean -- VT_BOOL + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 46 + + + + + Name: System.Video.VerticalAspectRatio -- PKEY_Video_VerticalAspectRatio + Description: Indicates the vertical portion of the aspect ratio. The Y portion of + XX:YY, like 16:9. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 45 + + + + + System.Volume Properties + + + + + Name: System.Volume.FileSystem -- PKEY_Volume_FileSystem + Description: Indicates the filesystem of the volume. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 4 (PID_VOLUME_FILESYSTEM) (Filesystem Volume Properties) + + + + + Name: System.Volume.IsMappedDrive -- PKEY_Volume_IsMappedDrive + Description: + Type: Boolean -- VT_BOOL + FormatID: {149C0B69-2C2D-48FC-808F-D318D78C4636}, 2 + + + + + Name: System.Volume.IsRoot -- PKEY_Volume_IsRoot + Description: + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 10 (Filesystem Volume Properties) + + + + + Property store cache state + + + + + Contained in file, not updated. + + + + + Not contained in file. + + + + + Contained in file, has been updated since file was consumed. + + + + + Delineates the format of a property string. + + + Typically use one, or a bitwise combination of + these flags, to specify the format. Some flags are mutually exclusive, + so combinations like ShortTime | LongTime | HideTime are not allowed. + + + + + The format settings specified in the property's .propdesc file. + + + + + The value preceded with the property's display name. + + + This flag is ignored when the hideLabelPrefix attribute of the labelInfo element + in the property's .propinfo file is set to true. + + + + + The string treated as a file name. + + + + + The sizes displayed in kilobytes (KB), regardless of size. + + + This flag applies to properties of Integer types and aligns the values in the column. + + + + + Reserved. + + + + + The time displayed as 'hh:mm am/pm'. + + + + + The time displayed as 'hh:mm:ss am/pm'. + + + + + The time portion of date/time hidden. + + + + + The date displayed as 'MM/DD/YY'. For example, '3/21/04'. + + + + + The date displayed as 'DayOfWeek Month day, year'. + For example, 'Monday, March 21, 2004'. + + + + + The date portion of date/time hidden. + + + + + The friendly date descriptions, such as "Yesterday". + + + + + The text displayed in a text box as a cue for the user, such as 'Enter your name'. + + + The invitation text is returned if formatting failed or the value was empty. + Invitation text is text displayed in a text box as a cue for the user, + Formatting can fail if the data entered + is not of an expected type, such as putting alpha characters in + a phone number field. + + + + + This flag requires UseEditInvitation to also be specified. When the + formatting flags are ReadOnly | UseEditInvitation and the algorithm + would have shown invitation text, a string is returned that indicates + the value is "Unknown" instead of the invitation text. + + + + + The detection of the reading order is not automatic. Useful when converting + to ANSI to omit the Unicode reading order characters. + + + + + Smart display of DateTime values + + + + + Specifies the display types for a property. + + + + + The String Display. This is the default if the property doesn't specify a display type. + + + + + The Number Display. + + + + + The Boolean Display. + + + + + The DateTime Display. + + + + + The Enumerated Display. + + + + + Property Aggregation Type + + + + + The string "Multiple Values" is displayed. + + + + + The first value in the selection is displayed. + + + + + The sum of the selected values is displayed. This flag is never returned + for data types VT_LPWSTR, VT_BOOL, and VT_FILETIME. + + + + + The numerical average of the selected values is displayed. This flag + is never returned for data types VT_LPWSTR, VT_BOOL, and VT_FILETIME. + + + + + The date range of the selected values is displayed. This flag is only + returned for values of the VT_FILETIME data type. + + + + + A concatenated string of all the values is displayed. The order of + individual values in the string is undefined. The concatenated + string omits duplicate values; if a value occurs more than once, + it only appears a single time in the concatenated string. + + + + + The highest of the selected values is displayed. + + + + + The lowest of the selected values is displayed. + + + + + Property Enumeration Types + + + + + Use DisplayText and either RangeMinValue or RangeSetValue. + + + + + Use DisplayText and either RangeMinValue or RangeSetValue + + + + + Use DisplayText + + + + + Use Value or RangeMinValue + + + + + Describes how a property should be treated for display purposes. + + + + + Default value + + + + + The value is displayed as a string. + + + + + The value is displayed as an integer. + + + + + The value is displayed as a date/time. + + + + + A mask for display type values StringType, IntegerType, and DateType. + + + + + The column should be on by default in Details view. + + + + + Will be slow to compute. Perform on a background thread. + + + + + Provided by a handler, not the folder. + + + + + Not displayed in the context menu, but is listed in the More... dialog. + + + + + Not displayed in the user interface (UI). + + + + + VarCmp produces same result as IShellFolder::CompareIDs. + + + + + PSFormatForDisplay produces same result as IShellFolder::CompareIDs. + + + + + Do not sort folders separately. + + + + + Only displayed in the UI. + + + + + Marks columns with values that should be read in a batch. + + + + + Grouping is disabled for this column. + + + + + Can't resize the column. + + + + + The width is the same in all dots per inch (dpi)s. + + + + + Fixed width and height ratio. + + + + + Filters out new display flags. + + + + + Specifies the condition type to use when displaying the property in the query builder user interface (UI). + + + + + The default condition type. + + + + + The string type. + + + + + The size type. + + + + + The date/time type. + + + + + The Boolean type. + + + + + The number type. + + + + + Provides a set of flags to be used with IConditionFactory, + ICondition, and IConditionGenerator to indicate the operation. + + + + + The implicit comparison between the value of the property and the value of the constant. + + + + + The value of the property and the value of the constant must be equal. + + + + + The value of the property and the value of the constant must not be equal. + + + + + The value of the property must be less than the value of the constant. + + + + + The value of the property must be greater than the value of the constant. + + + + + The value of the property must be less than or equal to the value of the constant. + + + + + The value of the property must be greater than or equal to the value of the constant. + + + + + The value of the property must begin with the value of the constant. + + + + + The value of the property must end with the value of the constant. + + + + + The value of the property must contain the value of the constant. + + + + + The value of the property must not contain the value of the constant. + + + + + The value of the property must match the value of the constant, where '?' matches any single character and '*' matches any sequence of characters. + + + + + The value of the property must contain a word that is the value of the constant. + + + + + The value of the property must contain a word that begins with the value of the constant. + + + + + The application is free to interpret this in any suitable way. + + + + + Specifies the property description grouping ranges. + + + + + The individual values. + + + + + The static alphanumeric ranges. + + + + + The static size ranges. + + + + + The dynamically-created ranges. + + + + + The month and year groups. + + + + + The percent groups. + + + + + The enumerated groups. + + + + + Describes the particular wordings of sort offerings. + + + Note that the strings shown are English versions only; + localized strings are used for other locales. + + + + + The default ascending or descending property sort, "Sort going up", "Sort going down". + + + + + The alphabetical sort, "A on top", "Z on top". + + + + + The numerical sort, "Lowest on top", "Highest on top". + + + + + The size sort, "Smallest on top", "Largest on top". + + + + + The chronological sort, "Oldest on top", "Newest on top". + + + + + Describes the attributes of the typeInfo element in the property's .propdesc file. + + + + + The property uses the default values for all attributes. + + + + + The property can have multiple values. + + + These values are stored as a VT_VECTOR in the PROPVARIANT structure. + This value is set by the multipleValues attribute of the typeInfo element in the property's .propdesc file. + + + + + This property cannot be written to. + + + This value is set by the isInnate attribute of the typeInfo element in the property's .propdesc file. + + + + + The property is a group heading. + + + This value is set by the isGroup attribute of the typeInfo element in the property's .propdesc file. + + + + + The user can group by this property. + + + This value is set by the canGroupBy attribute of the typeInfo element in the property's .propdesc file. + + + + + The user can stack by this property. + + + This value is set by the canStackBy attribute of the typeInfo element in the property's .propdesc file. + + + + + This property contains a hierarchy. + + + This value is set by the isTreeProperty attribute of the typeInfo element in the property's .propdesc file. + + + + + Include this property in any full text query that is performed. + + + This value is set by the includeInFullTextQuery attribute of the typeInfo element in the property's .propdesc file. + + + + + This property is meant to be viewed by the user. + + + This influences whether the property shows up in the "Choose Columns" dialog, for example. + This value is set by the isViewable attribute of the typeInfo element in the property's .propdesc file. + + + + + This property is included in the list of properties that can be queried. + + + A queryable property must also be viewable. + This influences whether the property shows up in the query builder UI. + This value is set by the isQueryable attribute of the typeInfo element in the property's .propdesc file. + + + + + Used with an innate property (that is, a value calculated from other property values) to indicate that it can be deleted. + + + Windows Vista with Service Pack 1 (SP1) and later. + This value is used by the Remove Properties user interface (UI) to determine whether to display a check box next to an property that allows that property to be selected for removal. + Note that a property that is not innate can always be purged regardless of the presence or absence of this flag. + + + + + This property is owned by the system. + + + + + A mask used to retrieve all flags. + + + + + Associates property names with property description list strings. + + + + + The property is shown by default. + + + + + The property is centered. + + + + + The property is right aligned. + + + + + The property is shown as the beginning of the next collection of properties in the view. + + + + + The remainder of the view area is filled with the content of this property. + + + + + The property is reverse sorted if it is a property in a list of sorted properties. + + + + + The property is only shown if it is present. + + + + + The property is shown by default in a view (where applicable). + + + + + The property is shown by default in primary column selection user interface (UI). + + + + + The property is shown by default in secondary column selection UI. + + + + + The label is hidden if the view is normally inclined to show the label. + + + + + The property is not displayed as a column in the UI. + + + + + The property is wrapped to the next row. + + + + + A mask used to retrieve all flags. + + + + + Defines the enumeration values for a property type. + + + + + Gets display text from an enumeration information structure. + + + + + Gets an enumeration type from an enumeration information structure. + + + + + Gets a minimum value from an enumeration information structure. + + + + + Gets a set value from an enumeration information structure. + + + + + Gets a value from an enumeration information structure. + + + + + Represents a registered file system Known Folder + + + + + Release resources + + Indicates that this mothod is being called from Dispose() rather than the finalizer. + + + + Gets the path for this known folder. + + A object. + + + + Gets the category designation for this known folder. + + A value. + + + + Gets this known folder's canonical name. + + A object. + + + + Gets this known folder's description. + + A object. + + + + Gets the unique identifier for this known folder's parent folder. + + A value. + + + + Gets this known folder's relative path. + + A object. + + + + Gets this known folder's parsing name. + + A object. + + + + Gets this known folder's tool tip text. + + A object. + + + + Gets the resource identifier for this + known folder's tool tip text. + + A object. + + + + Gets this known folder's localized name. + + A object. + + + + Gets the resource identifier for this + known folder's localized name. + + A object. + + + + Gets this known folder's security attributes. + + A object. + + + + Gets this known folder's file attributes, + such as "read-only". + + A value. + + + + Gets an value that describes this known folder's behaviors. + + A value. + + + + Gets the unique identifier for this known folder's type. + + A value. + + + + Gets a string representation of this known folder's type. + + A object. + + + + Gets the unique identifier for this known folder. + + A value. + + + + Gets a value that indicates whether this known folder's path exists on the computer. + + A bool value. + If this property value is false, + the folder might be a virtual folder ( property will + be for virtual folders) + + + + Gets a value that states whether this known folder + can have its path set to a new value, + including any restrictions on the redirection. + + A value. + + + + Represents a non filesystem item (e.g. virtual items inside Control Panel) + + + + + Represents a Non FileSystem folder (e.g. My Computer, Control Panel) + + + + + Represents a registered non file system Known Folder + + + + + Release resources + + Indicates that this mothod is being called from Dispose() rather than the finalizer. + + + + Gets the path for this known folder. + + A object. + + + + Gets the category designation for this known folder. + + A value. + + + + Gets this known folder's canonical name. + + A object. + + + + Gets this known folder's description. + + A object. + + + + Gets the unique identifier for this known folder's parent folder. + + A value. + + + + Gets this known folder's relative path. + + A object. + + + + Gets this known folder's parsing name. + + A object. + + + + Gets this known folder's tool tip text. + + A object. + + + + Gets the resource identifier for this + known folder's tool tip text. + + A object. + + + + Gets this known folder's localized name. + + A object. + + + + Gets the resource identifier for this + known folder's localized name. + + A object. + + + + Gets this known folder's security attributes. + + A object. + + + + Gets this known folder's file attributes, + such as "read-only". + + A value. + + + + Gets an value that describes this known folder's behaviors. + + A value. + + + + Gets the unique identifier for this known folder's type. + + A value. + + + + Gets a string representation of this known folder's type. + + A object. + + + + Gets the unique identifier for this known folder. + + A value. + + + + Gets a value that indicates whether this known folder's path exists on the computer. + + A bool value. + If this property value is false, + the folder might be a virtual folder ( property will + be for virtual folders) + + + + Gets a value that states whether this known folder + can have its path set to a new value, + including any restrictions on the redirection. + + A value. + + + + Represents the different retrieval options for the thumbnail or icon, + such as extracting the thumbnail or icon from a file, + from the cache only, or from memory only. + + + + + The default behavior loads a thumbnail. If there is no thumbnail for the current ShellItem, + the icon is retrieved. The thumbnail or icon is extracted if it is not currently cached. + + + + + The CacheOnly behavior returns a cached thumbnail if it is available. Allows access to the disk, + but only to retrieve a cached item. If no cached thumbnail is available, a cached per-instance icon is returned but + a thumbnail or icon is not extracted. + + + + + The MemoryOnly behavior returns the item only if it is in memory. The disk is not accessed even if the item is cached. + Note that this only returns an already-cached icon and can fall back to a per-class icon if + an item has a per-instance icon that has not been cached yet. Retrieving a thumbnail, + even if it is cached, always requires the disk to be accessed, so this method should not be + called from the user interface (UI) thread without passing ShellThumbnailCacheOptions.MemoryOnly. + + + + + Represents the format options for the thumbnails and icons. + + + + + The default behavior loads a thumbnail. An HBITMAP for the icon of the item is retrieved if there is no thumbnail for the current Shell Item. + + + + + The ThumbnailOnly behavior returns only the thumbnails, never the icon. Note that not all items have thumbnails + so ShellThumbnailFormatOption.ThumbnailOnly can fail in these cases. + + + + + The IconOnly behavior returns only the icon, never the thumbnail. + + + + + Represents a link to existing FileSystem or Virtual item. + + + + + Path for this file e.g. c:\Windows\file.txt, + + + + + The path for this link + + + + + Gets the location to which this link points to. + + + + + Gets the ShellObject to which this link points to. + + + + + Gets or sets the link's title + + + + + Gets the arguments associated with this link. + + + + + Gets the comments associated with this link. + + + + + Factory class for creating typed ShellProperties. + Generates/caches expressions to create generic ShellProperties. + + + + + Creates a generic ShellProperty. + + PropertyKey + Shell object from which to get property + ShellProperty matching type of value in property. + + + + Creates a generic ShellProperty. + + PropertyKey + IPropertyStore from which to get property + ShellProperty matching type of value in property. + + + + Converts VarEnum to its associated .net Type. + + VarEnum value + Associated .net equivelent. + + + + Creates a property writer capable of setting multiple properties for a given ShellObject. + + + + + Writes the given property key and value. + + The property key. + The value associated with the key. + + + + Writes the given property key and value. To allow truncation of the given value, set allowTruncatedValue + to true. + + The property key. + The value associated with the key. + True to allow truncation (default); otherwise False. + If the writable property store is already + closed. + If AllowTruncatedValue is set to false + and while setting the value on the property it had to be truncated in a string or rounded in + a numeric value. + + + + Writes the specified property given the canonical name and a value. + + The canonical name. + The property value. + + + + Writes the specified property given the canonical name and a value. To allow truncation of the given value, set allowTruncatedValue + to true. + + The canonical name. + The property value. + True to allow truncation (default); otherwise False. + If the given canonical name is not valid. + + + + Writes the specified property using an IShellProperty and a value. + + The property name. + The property value. + + + + Writes the specified property given an IShellProperty and a value. To allow truncation of the given value, set allowTruncatedValue + to true. + + The property name. + The property value. + True to allow truncation (default); otherwise False. + + + + Writes the specified property using a strongly-typed ShellProperty and a value. + + The type of the property name. + The property name. + The property value. + + + + Writes the specified property given a strongly-typed ShellProperty and a value. To allow truncation of the given value, set allowTruncatedValue + to true. + + The type of the property name. + The property name. + The property value. + True to allow truncation (default); otherwise False. + + + + Release the native objects. + + + + + + + + + + Release the native and managed objects. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + + Call this method to commit the writes (calls to WriteProperty method) + and dispose off the writer. + + + + + Reference to parent ShellObject (associated with this writer) + + + + + Provides easy access to all the system properties (property keys and their descriptions) + + + + + Returns the property description for a given property key. + + Property key of the property whose description is required. + Property Description for a given property key + + + + Gets the property description for a given property's canonical name. + + Canonical name of the property whose description is required. + Property Description for a given property key + + + + System Properties + + + + + Name: System.AcquisitionID -- PKEY_AcquisitionID + Description: Hash to determine acquisition session. + + Type: Int32 -- VT_I4 + FormatID: {65A98875-3C80-40AB-ABBC-EFDAF77DBEE2}, 100 + + + + + Name: System.ApplicationName -- PKEY_ApplicationName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 18 (PIDSI_APPNAME) + + + + + Name: System.Author -- PKEY_Author + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 4 (PIDSI_AUTHOR) + + + + + Name: System.Capacity -- PKEY_Capacity + Description: The amount of total space in bytes. + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 3 (PID_VOLUME_CAPACITY) (Filesystem Volume Properties) + + + + + Name: System.Category -- PKEY_Category + Description: Legacy code treats this as VT_LPSTR. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 2 (PIDDSI_CATEGORY) + + + + + Name: System.Comment -- PKEY_Comment + Description: Comments. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 6 (PIDSI_COMMENTS) + + + + + Name: System.Company -- PKEY_Company + Description: The company or publisher. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 15 (PIDDSI_COMPANY) + + + + + Name: System.ComputerName -- PKEY_ComputerName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 5 (PID_COMPUTERNAME) + + + + + Name: System.ContainedItems -- PKEY_ContainedItems + Description: The list of type of items, this item contains. For example, this item contains urls, attachments etc. + This is represented as a vector array of GUIDs where each GUID represents certain type. + + Type: Multivalue Guid -- VT_VECTOR | VT_CLSID (For variants: VT_ARRAY | VT_CLSID) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 29 + + + + + Name: System.ContentStatus -- PKEY_ContentStatus + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 27 + + + + + Name: System.ContentType -- PKEY_ContentType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 26 + + + + + Name: System.Copyright -- PKEY_Copyright + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 11 (PIDMSI_COPYRIGHT) + + + + + Name: System.DateAccessed -- PKEY_DateAccessed + Description: The time of the last access to the item. The Indexing Service friendly name is 'access'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 16 (PID_STG_ACCESSTIME) + + + + + Name: System.DateAcquired -- PKEY_DateAcquired + Description: The time the file entered the system via acquisition. This is not the same as System.DateImported. + Examples are when pictures are acquired from a camera, or when music is purchased online. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {2CBAA8F5-D81F-47CA-B17A-F8D822300131}, 100 + + + + + Name: System.DateArchived -- PKEY_DateArchived + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {43F8D7B7-A444-4F87-9383-52271C9B915C}, 100 + + + + + Name: System.DateCompleted -- PKEY_DateCompleted + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {72FAB781-ACDA-43E5-B155-B2434F85E678}, 100 + + + + + Name: System.DateCreated -- PKEY_DateCreated + Description: The date and time the item was created. The Indexing Service friendly name is 'create'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 15 (PID_STG_CREATETIME) + + + + + Name: System.DateImported -- PKEY_DateImported + Description: The time the file is imported into a separate database. This is not the same as System.DateAcquired. (Eg, 2003:05:22 13:55:04) + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 18258 + + + + + Name: System.DateModified -- PKEY_DateModified + Description: The date and time of the last write to the item. The Indexing Service friendly name is 'write'. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 14 (PID_STG_WRITETIME) + + + + + Name: System.DescriptionID -- PKEY_DescriptionID + Description: The contents of a SHDESCRIPTIONID structure as a buffer of bytes. + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 2 (PID_DESCRIPTIONID) + + + + + Name: System.DueDate -- PKEY_DueDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {3F8472B5-E0AF-4DB2-8071-C53FE76AE7CE}, 100 + + + + + Name: System.EndDate -- PKEY_EndDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {C75FAA05-96FD-49E7-9CB4-9F601082D553}, 100 + + + + + Name: System.FileAllocationSize -- PKEY_FileAllocationSize + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 18 (PID_STG_ALLOCSIZE) + + + + + Name: System.FileAttributes -- PKEY_FileAttributes + Description: This is the WIN32_FIND_DATA dwFileAttributes for the file-based item. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 13 (PID_STG_ATTRIBUTES) + + + + + Name: System.FileCount -- PKEY_FileCount + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 12 + + + + + Name: System.FileDescription -- PKEY_FileDescription + Description: This is a user-friendly description of the file. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 3 (PIDVSI_FileDescription) + + + + + Name: System.FileExtension -- PKEY_FileExtension + Description: This is the file extension of the file based item, including the leading period. + + If System.FileName is VT_EMPTY, then this property should be too. Otherwise, it should be derived + appropriately by the data source from System.FileName. If System.FileName does not have a file + extension, this value should be VT_EMPTY. + + To obtain the type of any item (including an item that is not a file), use System.ItemType. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" ".txt" + "\\server\share\mydir\goodnews.doc" ".doc" + "\\server\share\numbers.xls" ".xls" + "\\server\share\folder" VT_EMPTY + "c:\foo\MyFolder" VT_EMPTY + [desktop] VT_EMPTY + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E4F10A3C-49E6-405D-8288-A23BD4EEAA6C}, 100 + + + + + Name: System.FileFRN -- PKEY_FileFRN + Description: This is the unique file ID, also known as the File Reference Number. For a given file, this is the same value + as is found in the structure variable FILE_ID_BOTH_DIR_INFO.FileId, via GetFileInformationByHandleEx(). + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 21 (PID_STG_FRN) + + + + + Name: System.FileName -- PKEY_FileName + Description: This is the file name (including extension) of the file. + + It is possible that the item might not exist on a filesystem (ie, it may not be opened + using CreateFile). Nonetheless, if the item is represented as a file from the logical sense + (and its name follows standard Win32 file-naming syntax), then the data source should emit this property. + + If an item is not a file, then the value for this property is VT_EMPTY. See + System.ItemNameDisplay. + + This has the same value as System.ParsingName for items that are provided by the Shell's file folder. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "hello.txt" + "\\server\share\mydir\goodnews.doc" "goodnews.doc" + "\\server\share\numbers.xls" "numbers.xls" + "c:\foo\MyFolder" "MyFolder" + (email message) VT_EMPTY + (song on portable device) "song.wma" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {41CF5AE0-F75A-4806-BD87-59C7D9248EB9}, 100 + + + + + Name: System.FileOwner -- PKEY_FileOwner + Description: This is the owner of the file, according to the file system. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Misc) {9B174B34-40FF-11D2-A27E-00C04FC30871}, 4 (PID_MISC_OWNER) + + + + + Name: System.FileVersion -- PKEY_FileVersion + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 4 (PIDVSI_FileVersion) + + + + + Name: System.FindData -- PKEY_FindData + Description: WIN32_FIND_DATAW in buffer of bytes. + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 0 (PID_FINDDATA) + + + + + Name: System.FlagColor -- PKEY_FlagColor + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {67DF94DE-0CA7-4D6F-B792-053A3E4F03CF}, 100 + + + + + Name: System.FlagColorText -- PKEY_FlagColorText + Description: This is the user-friendly form of System.FlagColor. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {45EAE747-8E2A-40AE-8CBF-CA52ABA6152A}, 100 + + + + + Name: System.FlagStatus -- PKEY_FlagStatus + Description: Status of Flag. Values: (0=none 1=white 2=Red). cdoPR_FLAG_STATUS + + Type: Int32 -- VT_I4 + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 12 + + + + + Name: System.FlagStatusText -- PKEY_FlagStatusText + Description: This is the user-friendly form of System.FlagStatus. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DC54FD2E-189D-4871-AA01-08C2F57A4ABC}, 100 + + + + + Name: System.FreeSpace -- PKEY_FreeSpace + Description: The amount of free space in bytes. + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 2 (PID_VOLUME_FREE) (Filesystem Volume Properties) + + + + + Name: System.FullText -- PKEY_FullText + Description: This PKEY is used to specify search terms that should be applied as broadly as possible, + across all valid properties for the data source(s) being searched. It should not be + emitted from a data source. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1E3EE840-BC2B-476C-8237-2ACD1A839B22}, 6 + + + + + Name: System.Identity -- PKEY_Identity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A26F4AFC-7346-4299-BE47-EB1AE613139F}, 100 + + + + + Name: System.ImageParsingName -- PKEY_ImageParsingName + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D7750EE0-C6A4-48EC-B53E-B87B52E6D073}, 100 + + + + + Name: System.Importance -- PKEY_Importance + Description: + Type: Int32 -- VT_I4 + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 11 + + + + + Name: System.ImportanceText -- PKEY_ImportanceText + Description: This is the user-friendly form of System.Importance. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A3B29791-7713-4E1D-BB40-17DB85F01831}, 100 + + + + + Name: System.InfoTipText -- PKEY_InfoTipText + Description: The text (with formatted property values) to show in the infotip. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 17 + + + + + Name: System.InternalName -- PKEY_InternalName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 5 (PIDVSI_InternalName) + + + + + Name: System.IsAttachment -- PKEY_IsAttachment + Description: Identifies if this item is an attachment. + + Type: Boolean -- VT_BOOL + FormatID: {F23F425C-71A1-4FA8-922F-678EA4A60408}, 100 + + + + + Name: System.IsDefaultNonOwnerSaveLocation -- PKEY_IsDefaultNonOwnerSaveLocation + Description: Identifies the default save location for a library for non-owners of the library + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 5 + + + + + Name: System.IsDefaultSaveLocation -- PKEY_IsDefaultSaveLocation + Description: Identifies the default save location for a library for the owner of the library + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 3 + + + + + Name: System.IsDeleted -- PKEY_IsDeleted + Description: + Type: Boolean -- VT_BOOL + FormatID: {5CDA5FC8-33EE-4FF3-9094-AE7BD8868C4D}, 100 + + + + + Name: System.IsEncrypted -- PKEY_IsEncrypted + Description: Is the item encrypted? + + Type: Boolean -- VT_BOOL + FormatID: {90E5E14E-648B-4826-B2AA-ACAF790E3513}, 10 + + + + + Name: System.IsFlagged -- PKEY_IsFlagged + Description: + Type: Boolean -- VT_BOOL + FormatID: {5DA84765-E3FF-4278-86B0-A27967FBDD03}, 100 + + + + + Name: System.IsFlaggedComplete -- PKEY_IsFlaggedComplete + Description: + Type: Boolean -- VT_BOOL + FormatID: {A6F360D2-55F9-48DE-B909-620E090A647C}, 100 + + + + + Name: System.IsIncomplete -- PKEY_IsIncomplete + Description: Identifies if the message was not completely received for some error condition. + + Type: Boolean -- VT_BOOL + FormatID: {346C8BD1-2E6A-4C45-89A4-61B78E8E700F}, 100 + + + + + Name: System.IsLocationSupported -- PKEY_IsLocationSupported + Description: A bool value to know if a location is supported (locally indexable, or remotely indexed). + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 8 + + + + + Name: System.IsPinnedToNameSpaceTree -- PKEY_IsPinnedToNameSpaceTree + Description: A bool value to know if a shell folder is pinned to the navigation pane + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 2 + + + + + Name: System.IsRead -- PKEY_IsRead + Description: Has the item been read? + + Type: Boolean -- VT_BOOL + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 10 + + + + + Name: System.IsSearchOnlyItem -- PKEY_IsSearchOnlyItem + Description: Identifies if a location or a library is search only + + Type: Boolean -- VT_BOOL + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 4 + + + + + Name: System.IsSendToTarget -- PKEY_IsSendToTarget + Description: Provided by certain shell folders. Return TRUE if the folder is a valid Send To target. + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 33 + + + + + Name: System.IsShared -- PKEY_IsShared + Description: Is this item shared? This only checks for ACLs that are not inherited. + + Type: Boolean -- VT_BOOL + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 100 + + + + + Name: System.ItemAuthors -- PKEY_ItemAuthors + Description: This is the generic list of authors associated with an item. + + For example, the artist name for a track is the item author. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D0A04F0A-462A-48A4-BB2F-3706E88DBD7D}, 100 + + + + + Name: System.ItemClassType -- PKEY_ItemClassType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {048658AD-2DB8-41A4-BBB6-AC1EF1207EB1}, 100 + + + + + Name: System.ItemDate -- PKEY_ItemDate + Description: This is the main date for an item. The date of interest. + + For example, for photos this maps to System.Photo.DateTaken. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {F7DB74B4-4287-4103-AFBA-F1B13DCD75CF}, 100 + + + + + Name: System.ItemFolderNameDisplay -- PKEY_ItemFolderNameDisplay + Description: This is the user-friendly display name of the parent folder of an item. + + If System.ItemFolderPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it + should be derived appropriately by the data source from System.ItemFolderPathDisplay. + + If the folder is a file folder, the value will be localized if a localized name is available. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "bar" + "\\server\share\mydir\goodnews.doc" "mydir" + "\\server\share\numbers.xls" "share" + "c:\foo\MyFolder" "foo" + "/Mailbox Account/Inbox/'Re: Hello!'" "Inbox" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 2 (PID_STG_DIRECTORY) + + + + + Name: System.ItemFolderPathDisplay -- PKEY_ItemFolderPathDisplay + Description: This is the user-friendly display path of the parent folder of an item. + + If System.ItemPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it should + be derived appropriately by the data source from System.ItemPathDisplay. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "c:\foo\bar" + "\\server\share\mydir\goodnews.doc" "\\server\share\mydir" + "\\server\share\numbers.xls" "\\server\share" + "c:\foo\MyFolder" "c:\foo" + "/Mailbox Account/Inbox/'Re: Hello!'" "/Mailbox Account/Inbox" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 6 + + + + + Name: System.ItemFolderPathDisplayNarrow -- PKEY_ItemFolderPathDisplayNarrow + Description: This is the user-friendly display path of the parent folder of an item. The format of the string + should be tailored such that the folder name comes first, to optimize for a narrow viewing column. + + If the folder is a file folder, the value includes localized names if they are present. + + If System.ItemFolderPathDisplay is VT_EMPTY, then this property should be too. Otherwise, it should + be derived appropriately by the data source from System.ItemFolderPathDisplay. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "bar (c:\foo)" + "\\server\share\mydir\goodnews.doc" "mydir (\\server\share)" + "\\server\share\numbers.xls" "share (\\server)" + "c:\foo\MyFolder" "foo (c:\)" + "/Mailbox Account/Inbox/'Re: Hello!'" "Inbox (/Mailbox Account)" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DABD30ED-0043-4789-A7F8-D013A4736622}, 100 + + + + + Name: System.ItemName -- PKEY_ItemName + Description: This is the base-name of the System.ItemNameDisplay. + + If the item is a file this property + includes the extension in all cases, and will be localized if a localized name is available. + + If the item is a message, then the value of this property does not include the forwarding or + reply prefixes (see System.ItemNamePrefix). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6B8DA074-3B5C-43BC-886F-0A2CDCE00B6F}, 100 + + + + + Name: System.ItemNameDisplay -- PKEY_ItemNameDisplay + Description: This is the display name in "most complete" form. This is the best effort unique representation + of the name of an item that makes sense for end users to read. It is the concatentation of + System.ItemNamePrefix and System.ItemName. + + If the item is a file this property + includes the extension in all cases, and will be localized if a localized name is available. + + There are acceptable cases when System.FileName is not VT_EMPTY, yet the value of this property + is completely different. Email messages are a key example. If the item is an email message, + the item name is likely the subject. In that case, the value must be the concatenation of the + System.ItemNamePrefix and System.ItemName. Since the value of System.ItemNamePrefix excludes + any trailing whitespace, the concatenation must include a whitespace when generating System.ItemNameDisplay. + + Note that this property is not guaranteed to be unique, but the idea is to promote the most likely + candidate that can be unique and also makes sense for end users. For example, for documents, you + might think about using System.Title as the System.ItemNameDisplay, but in practice the title of + the documents may not be useful or unique enough to be of value as the sole System.ItemNameDisplay. + Instead, providing the value of System.FileName as the value of System.ItemNameDisplay is a better + candidate. In Windows Mail, the emails are stored in the file system as .eml files and the + System.FileName for those files are not human-friendly as they contain GUIDs. In this example, + promoting System.Subject as System.ItemNameDisplay makes more sense. + + Compatibility notes: + + Shell folder implementations on Vista: use PKEY_ItemNameDisplay for the name column when + you want Explorer to call ISF::GetDisplayNameOf(SHGDN_NORMAL) to get the value of the name. Use + another PKEY (like PKEY_ItemName) when you want Explorer to call either the folder's property store or + ISF2::GetDetailsEx in order to get the value of the name. + + Shell folder implementations on XP: the first column needs to be the name column, and Explorer + will call ISF::GetDisplayNameOf to get the value of the name. The PKEY/SCID does not matter. + + Example values: + + File: "hello.txt" + Message: "Re: Let's talk about Tom's argyle socks!" + Device folder: "song.wma" + Folder: "Documents" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 10 (PID_STG_NAME) + + + + + Name: System.ItemNamePrefix -- PKEY_ItemNamePrefix + Description: This is the prefix of an item, used for email messages. + where the subject begins with "Re:" which is the prefix. + + If the item is a file, then the value of this property is VT_EMPTY. + + If the item is a message, then the value of this property is the forwarding or reply + prefixes (including delimiting colon, but no whitespace), or VT_EMPTY if there is no prefix. + + Example values: + + System.ItemNamePrefix System.ItemName System.ItemNameDisplay + --------------------- ------------------- ---------------------- + VT_EMPTY "Great day" "Great day" + "Re:" "Great day" "Re: Great day" + "Fwd: " "Monthly budget" "Fwd: Monthly budget" + VT_EMPTY "accounts.xls" "accounts.xls" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D7313FF1-A77A-401C-8C99-3DBDD68ADD36}, 100 + + + + + Name: System.ItemParticipants -- PKEY_ItemParticipants + Description: This is the generic list of people associated with an item and who contributed + to the item. + + For example, this is the combination of people in the To list, Cc list and + sender of an email message. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D4D0AA16-9948-41A4-AA85-D97FF9646993}, 100 + + + + + Name: System.ItemPathDisplay -- PKEY_ItemPathDisplay + Description: This is the user-friendly display path to the item. + + If the item is a file or folder this property + includes the extension in all cases, and will be localized if a localized name is available. + + For other items,this is the user-friendly equivalent, assuming the item exists in hierarchical storage. + + Unlike System.ItemUrl, this property value does not include the URL scheme. + + To parse an item path, use System.ItemUrl or System.ParsingPath. To reference shell + namespace items using shell APIs, use System.ParsingPath. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "c:\foo\bar\hello.txt" + "\\server\share\mydir\goodnews.doc" "\\server\share\mydir\goodnews.doc" + "\\server\share\numbers.xls" "\\server\share\numbers.xls" + "c:\foo\MyFolder" "c:\foo\MyFolder" + "/Mailbox Account/Inbox/'Re: Hello!'" "/Mailbox Account/Inbox/'Re: Hello!'" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 7 + + + + + Name: System.ItemPathDisplayNarrow -- PKEY_ItemPathDisplayNarrow + Description: This is the user-friendly display path to the item. The format of the string should be + tailored such that the name comes first, to optimize for a narrow viewing column. + + If the item is a file, the value excludes the file extension, and includes localized names if they are present. + If the item is a message, the value includes the System.ItemNamePrefix. + + To parse an item path, use System.ItemUrl or System.ParsingPath. + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "hello (c:\foo\bar)" + "\\server\share\mydir\goodnews.doc" "goodnews (\\server\share\mydir)" + "\\server\share\folder" "folder (\\server\share)" + "c:\foo\MyFolder" "MyFolder (c:\foo)" + "/Mailbox Account/Inbox/'Re: Hello!'" "Re: Hello! (/Mailbox Account/Inbox)" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 8 + + + + + Name: System.ItemType -- PKEY_ItemType + Description: This is the canonical type of the item and is intended to be programmatically + parsed. + + If there is no canonical type, the value is VT_EMPTY. + + If the item is a file (ie, System.FileName is not VT_EMPTY), the value is the same as + System.FileExtension. + + Use System.ItemTypeText when you want to display the type to end users in a view. (If + the item is a file, passing the System.ItemType value to PSFormatForDisplay will + result in the same value as System.ItemTypeText.) + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" ".txt" + "\\server\share\mydir\goodnews.doc" ".doc" + "\\server\share\folder" "Directory" + "c:\foo\MyFolder" "Directory" + [desktop] "Folder" + "/Mailbox Account/Inbox/'Re: Hello!'" "MAPI/IPM.Message" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 11 + + + + + Name: System.ItemTypeText -- PKEY_ItemTypeText + Description: This is the user friendly type name of the item. This is not intended to be + programmatically parsed. + + If System.ItemType is VT_EMPTY, the value of this property is also VT_EMPTY. + + If the item is a file, the value of this property is the same as if you passed the + file's System.ItemType value to PSFormatForDisplay. + + This property should not be confused with System.Kind, where System.Kind is a high-level + user friendly kind name. For example, for a document, System.Kind = "Document" and + System.Item.Type = ".doc" and System.Item.TypeText = "Microsoft Word Document" + + Example values: + + If the path is... The property value is... + ----------------- ------------------------ + "c:\foo\bar\hello.txt" "Text File" + "\\server\share\mydir\goodnews.doc" "Microsoft Word Document" + "\\server\share\folder" "File Folder" + "c:\foo\MyFolder" "File Folder" + "/Mailbox Account/Inbox/'Re: Hello!'" "Outlook E-Mail Message" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 4 (PID_STG_STORAGETYPE) + + + + + Name: System.ItemUrl -- PKEY_ItemUrl + Description: This always represents a well formed URL that points to the item. + + To reference shell namespace items using shell APIs, use System.ParsingPath. + + Example values: + + Files: "file:///c:/foo/bar/hello.txt" + "csc://{GUID}/..." + Messages: "mapi://..." + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 9 (DISPID_QUERY_VIRTUALPATH) + + + + + Name: System.Keywords -- PKEY_Keywords + Description: The keywords for the item. Also referred to as tags. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 5 (PIDSI_KEYWORDS) + + + + + Name: System.Kind -- PKEY_Kind + Description: System.Kind is used to map extensions to various .Search folders. + Extensions are mapped to Kinds at HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\KindMap + The list of kinds is not extensible. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {1E3EE840-BC2B-476C-8237-2ACD1A839B22}, 3 + + + + + Name: System.KindText -- PKEY_KindText + Description: This is the user-friendly form of System.Kind. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F04BEF95-C585-4197-A2B7-DF46FDC9EE6D}, 100 + + + + + Name: System.Language -- PKEY_Language + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 28 + + + + + Name: System.MileageInformation -- PKEY_MileageInformation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FDF84370-031A-4ADD-9E91-0D775F1C6605}, 100 + + + + + Name: System.MIMEType -- PKEY_MIMEType + Description: The MIME type. Eg, for EML files: 'message/rfc822'. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B63E350-9CCC-11D0-BCDB-00805FCCCE04}, 5 + + + + + Name: System.NamespaceCLSID -- PKEY_NamespaceCLSID + Description: The CLSID of the name space extension for an item, the object that implements IShellFolder for this item + + Type: Guid -- VT_CLSID + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 6 + + + + + Name: System.Null -- PKEY_Null + Description: + Type: Null -- VT_NULL + FormatID: {00000000-0000-0000-0000-000000000000}, 0 + + + + + Name: System.OfflineAvailability -- PKEY_OfflineAvailability + Description: + Type: UInt32 -- VT_UI4 + FormatID: {A94688B6-7D9F-4570-A648-E3DFC0AB2B3F}, 100 + + + + + Name: System.OfflineStatus -- PKEY_OfflineStatus + Description: + Type: UInt32 -- VT_UI4 + FormatID: {6D24888F-4718-4BDA-AFED-EA0FB4386CD8}, 100 + + + + + Name: System.OriginalFileName -- PKEY_OriginalFileName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 6 + + + + + Name: System.OwnerSID -- PKEY_OwnerSID + Description: SID of the user that owns the library. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5D76B67F-9B3D-44BB-B6AE-25DA4F638A67}, 6 + + + + + Name: System.ParentalRating -- PKEY_ParentalRating + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 21 (PIDMSI_PARENTAL_RATING) + + + + + Name: System.ParentalRatingReason -- PKEY_ParentalRatingReason + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {10984E0A-F9F2-4321-B7EF-BAF195AF4319}, 100 + + + + + Name: System.ParentalRatingsOrganization -- PKEY_ParentalRatingsOrganization + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A7FE0840-1344-46F0-8D37-52ED712A4BF9}, 100 + + + + + Name: System.ParsingBindContext -- PKEY_ParsingBindContext + Description: used to get the IBindCtx for an item for parsing + + Type: Any -- VT_NULL Legacy code may treat this as VT_UNKNOWN. + FormatID: {DFB9A04D-362F-4CA3-B30B-0254B17B5B84}, 100 + + + + + Name: System.ParsingName -- PKEY_ParsingName + Description: The shell namespace name of an item relative to a parent folder. This name may be passed to + IShellFolder::ParseDisplayName() of the parent shell folder. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 24 + + + + + Name: System.ParsingPath -- PKEY_ParsingPath + Description: This is the shell namespace path to the item. This path may be passed to + SHParseDisplayName to parse the path to the correct shell folder. + + If the item is a file, the value is identical to System.ItemPathDisplay. + + If the item cannot be accessed through the shell namespace, this value is VT_EMPTY. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 30 + + + + + Name: System.PerceivedType -- PKEY_PerceivedType + Description: The perceived type of a shell item, based upon its canonical type. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 9 + + + + + Name: System.PercentFull -- PKEY_PercentFull + Description: The amount filled as a percentage, multiplied by 100 (ie, the valid range is 0 through 100). + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 5 (Filesystem Volume Properties) + + + + + Name: System.Priority -- PKEY_Priority + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {9C1FCF74-2D97-41BA-B4AE-CB2E3661A6E4}, 5 + + + + + Name: System.PriorityText -- PKEY_PriorityText + Description: This is the user-friendly form of System.Priority. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D98BE98B-B86B-4095-BF52-9D23B2E0A752}, 100 + + + + + Name: System.Project -- PKEY_Project + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {39A7F922-477C-48DE-8BC8-B28441E342E3}, 100 + + + + + Name: System.ProviderItemID -- PKEY_ProviderItemID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F21D9941-81F0-471A-ADEE-4E74B49217ED}, 100 + + + + + Name: System.Rating -- PKEY_Rating + Description: Indicates the users preference rating of an item on a scale of 1-99 (1-12 = One Star, + 13-37 = Two Stars, 38-62 = Three Stars, 63-87 = Four Stars, 88-99 = Five Stars). + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 9 (PIDMSI_RATING) + + + + + Name: System.RatingText -- PKEY_RatingText + Description: This is the user-friendly form of System.Rating. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {90197CA7-FD8F-4E8C-9DA3-B57E1E609295}, 100 + + + + + Name: System.Sensitivity -- PKEY_Sensitivity + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {F8D3F6AC-4874-42CB-BE59-AB454B30716A}, 100 + + + + + Name: System.SensitivityText -- PKEY_SensitivityText + Description: This is the user-friendly form of System.Sensitivity. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D0C7F054-3F72-4725-8527-129A577CB269}, 100 + + + + + Name: System.SFGAOFlags -- PKEY_SFGAOFlags + Description: IShellFolder::GetAttributesOf flags, with SFGAO_PKEYSFGAOMASK attributes masked out. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 25 + + + + + Name: System.SharedWith -- PKEY_SharedWith + Description: Who is the item shared with? + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 200 + + + + + Name: System.ShareUserRating -- PKEY_ShareUserRating + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 12 (PIDMSI_SHARE_USER_RATING) + + + + + Name: System.SharingStatus -- PKEY_SharingStatus + Description: What is the item's sharing status (not shared, shared, everyone (homegroup or everyone), or private)? + + Type: UInt32 -- VT_UI4 + FormatID: {EF884C5B-2BFE-41BB-AAE5-76EEDF4F9902}, 300 + + + + + Name: System.SimpleRating -- PKEY_SimpleRating + Description: Indicates the users preference rating of an item on a scale of 0-5 (0=unrated, 1=One Star, 2=Two Stars, 3=Three Stars, + 4=Four Stars, 5=Five Stars) + + Type: UInt32 -- VT_UI4 + FormatID: {A09F084E-AD41-489F-8076-AA5BE3082BCA}, 100 + + + + + Name: System.Size -- PKEY_Size + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 12 (PID_STG_SIZE) + + + + + Name: System.SoftwareUsed -- PKEY_SoftwareUsed + Description: PropertyTagSoftwareUsed + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 305 + + + + + Name: System.SourceItem -- PKEY_SourceItem + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {668CDFA5-7A1B-4323-AE4B-E527393A1D81}, 100 + + + + + Name: System.StartDate -- PKEY_StartDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {48FD6EC8-8A12-4CDF-A03E-4EC5A511EDDE}, 100 + + + + + Name: System.Status -- PKEY_Status + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_IntSite) {000214A1-0000-0000-C000-000000000046}, 9 + + + + + Name: System.Subject -- PKEY_Subject + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 3 (PIDSI_SUBJECT) + + + + + Name: System.Thumbnail -- PKEY_Thumbnail + Description: A data that represents the thumbnail in VT_CF format. + + Type: Clipboard -- VT_CF + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 17 (PIDSI_THUMBNAIL) + + + + + Name: System.ThumbnailCacheId -- PKEY_ThumbnailCacheId + Description: Unique value that can be used as a key to cache thumbnails. The value changes when the name, volume, or data modified + of an item changes. + + Type: UInt64 -- VT_UI8 + FormatID: {446D16B1-8DAD-4870-A748-402EA43D788C}, 100 + + + + + Name: System.ThumbnailStream -- PKEY_ThumbnailStream + Description: Data that represents the thumbnail in VT_STREAM format that GDI+/WindowsCodecs supports (jpg, png, etc). + + Type: Stream -- VT_STREAM + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 27 + + + + + Name: System.Title -- PKEY_Title + Description: Title of item. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 2 (PIDSI_TITLE) + + + + + Name: System.TotalFileSize -- PKEY_TotalFileSize + Description: + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_ShellDetails) {28636AA6-953D-11D2-B5D6-00C04FD918D0}, 14 + + + + + Name: System.Trademarks -- PKEY_Trademarks + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 9 (PIDVSI_Trademarks) + + + + + AppUserModel Properties + + + + + Name: System.AppUserModel.ExcludeFromShowInNewInstall -- PKEY_AppUserModel_ExcludeFromShowInNewInstall + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 8 + + + + + Name: System.AppUserModel.ID -- PKEY_AppUserModel_ID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 5 + + + + + Name: System.AppUserModel.IsDestListSeparator -- PKEY_AppUserModel_IsDestListSeparator + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 6 + + + + + Name: System.AppUserModel.PreventPinning -- PKEY_AppUserModel_PreventPinning + Description: + Type: Boolean -- VT_BOOL + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 9 + + + + + Name: System.AppUserModel.RelaunchCommand -- PKEY_AppUserModel_RelaunchCommand + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 2 + + + + + Name: System.AppUserModel.RelaunchDisplayNameResource -- PKEY_AppUserModel_RelaunchDisplayNameResource + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 4 + + + + + Name: System.AppUserModel.RelaunchIconResource -- PKEY_AppUserModel_RelaunchIconResource + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9F4C2855-9F79-4B39-A8D0-E1D42DE1D5F3}, 3 + + + + + Audio Properties + + + + + Name: System.Audio.ChannelCount -- PKEY_Audio_ChannelCount + Description: Indicates the channel count for the audio file. Values: 1 (mono), 2 (stereo). + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 7 (PIDASI_CHANNEL_COUNT) + + + + + Name: System.Audio.Compression -- PKEY_Audio_Compression + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 10 (PIDASI_COMPRESSION) + + + + + Name: System.Audio.EncodingBitrate -- PKEY_Audio_EncodingBitrate + Description: Indicates the average data rate in Hz for the audio file in "bits per second". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 4 (PIDASI_AVG_DATA_RATE) + + + + + Name: System.Audio.Format -- PKEY_Audio_Format + Description: Indicates the format of the audio file. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) Legacy code may treat this as VT_BSTR. + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 2 (PIDASI_FORMAT) + + + + + Name: System.Audio.IsVariableBitRate -- PKEY_Audio_IsVariableBitRate + Description: + Type: Boolean -- VT_BOOL + FormatID: {E6822FEE-8C17-4D62-823C-8E9CFCBD1D5C}, 100 + + + + + Name: System.Audio.PeakValue -- PKEY_Audio_PeakValue + Description: + Type: UInt32 -- VT_UI4 + FormatID: {2579E5D0-1116-4084-BD9A-9B4F7CB4DF5E}, 100 + + + + + Name: System.Audio.SampleRate -- PKEY_Audio_SampleRate + Description: Indicates the audio sample rate for the audio file in "samples per second". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 5 (PIDASI_SAMPLE_RATE) + + + + + Name: System.Audio.SampleSize -- PKEY_Audio_SampleSize + Description: Indicates the audio sample size for the audio file in "bits per sample". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 6 (PIDASI_SAMPLE_SIZE) + + + + + Name: System.Audio.StreamName -- PKEY_Audio_StreamName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 9 (PIDASI_STREAM_NAME) + + + + + Name: System.Audio.StreamNumber -- PKEY_Audio_StreamNumber + Description: + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 8 (PIDASI_STREAM_NUMBER) + + + + + Calendar Properties + + + + + Name: System.Calendar.Duration -- PKEY_Calendar_Duration + Description: The duration as specified in a string. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {293CA35A-09AA-4DD2-B180-1FE245728A52}, 100 + + + + + Name: System.Calendar.IsOnline -- PKEY_Calendar_IsOnline + Description: Identifies if the event is an online event. + + Type: Boolean -- VT_BOOL + FormatID: {BFEE9149-E3E2-49A7-A862-C05988145CEC}, 100 + + + + + Name: System.Calendar.IsRecurring -- PKEY_Calendar_IsRecurring + Description: + Type: Boolean -- VT_BOOL + FormatID: {315B9C8D-80A9-4EF9-AE16-8E746DA51D70}, 100 + + + + + Name: System.Calendar.Location -- PKEY_Calendar_Location + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F6272D18-CECC-40B1-B26A-3911717AA7BD}, 100 + + + + + Name: System.Calendar.OptionalAttendeeAddresses -- PKEY_Calendar_OptionalAttendeeAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D55BAE5A-3892-417A-A649-C6AC5AAAEAB3}, 100 + + + + + Name: System.Calendar.OptionalAttendeeNames -- PKEY_Calendar_OptionalAttendeeNames + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {09429607-582D-437F-84C3-DE93A2B24C3C}, 100 + + + + + Name: System.Calendar.OrganizerAddress -- PKEY_Calendar_OrganizerAddress + Description: Address of the organizer organizing the event. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {744C8242-4DF5-456C-AB9E-014EFB9021E3}, 100 + + + + + Name: System.Calendar.OrganizerName -- PKEY_Calendar_OrganizerName + Description: Name of the organizer organizing the event. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AAA660F9-9865-458E-B484-01BC7FE3973E}, 100 + + + + + Name: System.Calendar.ReminderTime -- PKEY_Calendar_ReminderTime + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {72FC5BA4-24F9-4011-9F3F-ADD27AFAD818}, 100 + + + + + Name: System.Calendar.RequiredAttendeeAddresses -- PKEY_Calendar_RequiredAttendeeAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {0BA7D6C3-568D-4159-AB91-781A91FB71E5}, 100 + + + + + Name: System.Calendar.RequiredAttendeeNames -- PKEY_Calendar_RequiredAttendeeNames + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {B33AF30B-F552-4584-936C-CB93E5CDA29F}, 100 + + + + + Name: System.Calendar.Resources -- PKEY_Calendar_Resources + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {00F58A38-C54B-4C40-8696-97235980EAE1}, 100 + + + + + Name: System.Calendar.ResponseStatus -- PKEY_Calendar_ResponseStatus + Description: This property stores the status of the user responses to meetings in her calendar. + + Type: UInt16 -- VT_UI2 + FormatID: {188C1F91-3C40-4132-9EC5-D8B03B72A8A2}, 100 + + + + + Name: System.Calendar.ShowTimeAs -- PKEY_Calendar_ShowTimeAs + Description: + + Type: UInt16 -- VT_UI2 + FormatID: {5BF396D4-5EB2-466F-BDE9-2FB3F2361D6E}, 100 + + + + + Name: System.Calendar.ShowTimeAsText -- PKEY_Calendar_ShowTimeAsText + Description: This is the user-friendly form of System.Calendar.ShowTimeAs. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {53DA57CF-62C0-45C4-81DE-7610BCEFD7F5}, 100 + + + + + Communication Properties + + + + + Name: System.Communication.AccountName -- PKEY_Communication_AccountName + Description: Account Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 9 + + + + + Name: System.Communication.DateItemExpires -- PKEY_Communication_DateItemExpires + Description: Date the item expires due to the retention policy. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {428040AC-A177-4C8A-9760-F6F761227F9A}, 100 + + + + + Name: System.Communication.FollowupIconIndex -- PKEY_Communication_FollowupIconIndex + Description: This is the icon index used on messages marked for followup. + + Type: Int32 -- VT_I4 + FormatID: {83A6347E-6FE4-4F40-BA9C-C4865240D1F4}, 100 + + + + + Name: System.Communication.HeaderItem -- PKEY_Communication_HeaderItem + Description: This property will be true if the item is a header item which means the item hasn't been fully downloaded. + + Type: Boolean -- VT_BOOL + FormatID: {C9C34F84-2241-4401-B607-BD20ED75AE7F}, 100 + + + + + Name: System.Communication.PolicyTag -- PKEY_Communication_PolicyTag + Description: This a string used to identify the retention policy applied to the item. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {EC0B4191-AB0B-4C66-90B6-C6637CDEBBAB}, 100 + + + + + Name: System.Communication.SecurityFlags -- PKEY_Communication_SecurityFlags + Description: Security flags associated with the item to know if the item is encrypted, signed or DRM enabled. + + Type: Int32 -- VT_I4 + FormatID: {8619A4B6-9F4D-4429-8C0F-B996CA59E335}, 100 + + + + + Name: System.Communication.Suffix -- PKEY_Communication_Suffix + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {807B653A-9E91-43EF-8F97-11CE04EE20C5}, 100 + + + + + Name: System.Communication.TaskStatus -- PKEY_Communication_TaskStatus + Description: + Type: UInt16 -- VT_UI2 + FormatID: {BE1A72C6-9A1D-46B7-AFE7-AFAF8CEF4999}, 100 + + + + + Name: System.Communication.TaskStatusText -- PKEY_Communication_TaskStatusText + Description: This is the user-friendly form of System.Communication.TaskStatus. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A6744477-C237-475B-A075-54F34498292A}, 100 + + + + + Computer Properties + + + + + Name: System.Computer.DecoratedFreeSpace -- PKEY_Computer_DecoratedFreeSpace + Description: Free space and total space: "%s free of %s" + + Type: Multivalue UInt64 -- VT_VECTOR | VT_UI8 (For variants: VT_ARRAY | VT_UI8) + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 7 (Filesystem Volume Properties) + + + + + Contact Properties + + + + + Name: System.Contact.Anniversary -- PKEY_Contact_Anniversary + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {9AD5BADB-CEA7-4470-A03D-B84E51B9949E}, 100 + + + + + Name: System.Contact.AssistantName -- PKEY_Contact_AssistantName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CD102C9C-5540-4A88-A6F6-64E4981C8CD1}, 100 + + + + + Name: System.Contact.AssistantTelephone -- PKEY_Contact_AssistantTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9A93244D-A7AD-4FF8-9B99-45EE4CC09AF6}, 100 + + + + + Name: System.Contact.Birthday -- PKEY_Contact_Birthday + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 47 + + + + + Name: System.Contact.BusinessAddress -- PKEY_Contact_BusinessAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {730FB6DD-CF7C-426B-A03F-BD166CC9EE24}, 100 + + + + + Name: System.Contact.BusinessAddressCity -- PKEY_Contact_BusinessAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {402B5934-EC5A-48C3-93E6-85E86A2D934E}, 100 + + + + + Name: System.Contact.BusinessAddressCountry -- PKEY_Contact_BusinessAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {B0B87314-FCF6-4FEB-8DFF-A50DA6AF561C}, 100 + + + + + Name: System.Contact.BusinessAddressPostalCode -- PKEY_Contact_BusinessAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E1D4A09E-D758-4CD1-B6EC-34A8B5A73F80}, 100 + + + + + Name: System.Contact.BusinessAddressPostOfficeBox -- PKEY_Contact_BusinessAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BC4E71CE-17F9-48D5-BEE9-021DF0EA5409}, 100 + + + + + Name: System.Contact.BusinessAddressState -- PKEY_Contact_BusinessAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {446F787F-10C4-41CB-A6C4-4D0343551597}, 100 + + + + + Name: System.Contact.BusinessAddressStreet -- PKEY_Contact_BusinessAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DDD1460F-C0BF-4553-8CE4-10433C908FB0}, 100 + + + + + Name: System.Contact.BusinessFaxNumber -- PKEY_Contact_BusinessFaxNumber + Description: Business fax number of the contact. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {91EFF6F3-2E27-42CA-933E-7C999FBE310B}, 100 + + + + + Name: System.Contact.BusinessHomePage -- PKEY_Contact_BusinessHomePage + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {56310920-2491-4919-99CE-EADB06FAFDB2}, 100 + + + + + Name: System.Contact.BusinessTelephone -- PKEY_Contact_BusinessTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6A15E5A0-0A1E-4CD7-BB8C-D2F1B0C929BC}, 100 + + + + + Name: System.Contact.CallbackTelephone -- PKEY_Contact_CallbackTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BF53D1C3-49E0-4F7F-8567-5A821D8AC542}, 100 + + + + + Name: System.Contact.CarTelephone -- PKEY_Contact_CarTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8FDC6DEA-B929-412B-BA90-397A257465FE}, 100 + + + + + Name: System.Contact.Children -- PKEY_Contact_Children + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D4729704-8EF1-43EF-9024-2BD381187FD5}, 100 + + + + + Name: System.Contact.CompanyMainTelephone -- PKEY_Contact_CompanyMainTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8589E481-6040-473D-B171-7FA89C2708ED}, 100 + + + + + Name: System.Contact.Department -- PKEY_Contact_Department + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FC9F7306-FF8F-4D49-9FB6-3FFE5C0951EC}, 100 + + + + + Name: System.Contact.EmailAddress -- PKEY_Contact_EmailAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F8FA7FA3-D12B-4785-8A4E-691A94F7A3E7}, 100 + + + + + Name: System.Contact.EmailAddress2 -- PKEY_Contact_EmailAddress2 + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {38965063-EDC8-4268-8491-B7723172CF29}, 100 + + + + + Name: System.Contact.EmailAddress3 -- PKEY_Contact_EmailAddress3 + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {644D37B4-E1B3-4BAD-B099-7E7C04966ACA}, 100 + + + + + Name: System.Contact.EmailAddresses -- PKEY_Contact_EmailAddresses + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {84D8F337-981D-44B3-9615-C7596DBA17E3}, 100 + + + + + Name: System.Contact.EmailName -- PKEY_Contact_EmailName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CC6F4F24-6083-4BD4-8754-674D0DE87AB8}, 100 + + + + + Name: System.Contact.FileAsName -- PKEY_Contact_FileAsName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F1A24AA7-9CA7-40F6-89EC-97DEF9FFE8DB}, 100 + + + + + Name: System.Contact.FirstName -- PKEY_Contact_FirstName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {14977844-6B49-4AAD-A714-A4513BF60460}, 100 + + + + + Name: System.Contact.FullName -- PKEY_Contact_FullName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {635E9051-50A5-4BA2-B9DB-4ED056C77296}, 100 + + + + + Name: System.Contact.Gender -- PKEY_Contact_Gender + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3C8CEE58-D4F0-4CF9-B756-4E5D24447BCD}, 100 + + + + + Name: System.Contact.GenderValue -- PKEY_Contact_GenderValue + Description: + Type: UInt16 -- VT_UI2 + FormatID: {3C8CEE58-D4F0-4CF9-B756-4E5D24447BCD}, 101 + + + + + Name: System.Contact.Hobbies -- PKEY_Contact_Hobbies + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {5DC2253F-5E11-4ADF-9CFE-910DD01E3E70}, 100 + + + + + Name: System.Contact.HomeAddress -- PKEY_Contact_HomeAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {98F98354-617A-46B8-8560-5B1B64BF1F89}, 100 + + + + + Name: System.Contact.HomeAddressCity -- PKEY_Contact_HomeAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 65 + + + + + Name: System.Contact.HomeAddressCountry -- PKEY_Contact_HomeAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {08A65AA1-F4C9-43DD-9DDF-A33D8E7EAD85}, 100 + + + + + Name: System.Contact.HomeAddressPostalCode -- PKEY_Contact_HomeAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8AFCC170-8A46-4B53-9EEE-90BAE7151E62}, 100 + + + + + Name: System.Contact.HomeAddressPostOfficeBox -- PKEY_Contact_HomeAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7B9F6399-0A3F-4B12-89BD-4ADC51C918AF}, 100 + + + + + Name: System.Contact.HomeAddressState -- PKEY_Contact_HomeAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C89A23D0-7D6D-4EB8-87D4-776A82D493E5}, 100 + + + + + Name: System.Contact.HomeAddressStreet -- PKEY_Contact_HomeAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0ADEF160-DB3F-4308-9A21-06237B16FA2A}, 100 + + + + + Name: System.Contact.HomeFaxNumber -- PKEY_Contact_HomeFaxNumber + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {660E04D6-81AB-4977-A09F-82313113AB26}, 100 + + + + + Name: System.Contact.HomeTelephone -- PKEY_Contact_HomeTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 20 + + + + + Name: System.Contact.IMAddress -- PKEY_Contact_IMAddress + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D68DBD8A-3374-4B81-9972-3EC30682DB3D}, 100 + + + + + Name: System.Contact.Initials -- PKEY_Contact_Initials + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F3D8F40D-50CB-44A2-9718-40CB9119495D}, 100 + + + + + Name: System.Contact.JobTitle -- PKEY_Contact_JobTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 6 + + + + + Name: System.Contact.Label -- PKEY_Contact_Label + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {97B0AD89-DF49-49CC-834E-660974FD755B}, 100 + + + + + Name: System.Contact.LastName -- PKEY_Contact_LastName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8F367200-C270-457C-B1D4-E07C5BCD90C7}, 100 + + + + + Name: System.Contact.MailingAddress -- PKEY_Contact_MailingAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C0AC206A-827E-4650-95AE-77E2BB74FCC9}, 100 + + + + + Name: System.Contact.MiddleName -- PKEY_Contact_MiddleName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 71 + + + + + Name: System.Contact.MobileTelephone -- PKEY_Contact_MobileTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 35 + + + + + Name: System.Contact.NickName -- PKEY_Contact_NickName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 74 + + + + + Name: System.Contact.OfficeLocation -- PKEY_Contact_OfficeLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 7 + + + + + Name: System.Contact.OtherAddress -- PKEY_Contact_OtherAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {508161FA-313B-43D5-83A1-C1ACCF68622C}, 100 + + + + + Name: System.Contact.OtherAddressCity -- PKEY_Contact_OtherAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6E682923-7F7B-4F0C-A337-CFCA296687BF}, 100 + + + + + Name: System.Contact.OtherAddressCountry -- PKEY_Contact_OtherAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8F167568-0AAE-4322-8ED9-6055B7B0E398}, 100 + + + + + Name: System.Contact.OtherAddressPostalCode -- PKEY_Contact_OtherAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {95C656C1-2ABF-4148-9ED3-9EC602E3B7CD}, 100 + + + + + Name: System.Contact.OtherAddressPostOfficeBox -- PKEY_Contact_OtherAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {8B26EA41-058F-43F6-AECC-4035681CE977}, 100 + + + + + Name: System.Contact.OtherAddressState -- PKEY_Contact_OtherAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {71B377D6-E570-425F-A170-809FAE73E54E}, 100 + + + + + Name: System.Contact.OtherAddressStreet -- PKEY_Contact_OtherAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FF962609-B7D6-4999-862D-95180D529AEA}, 100 + + + + + Name: System.Contact.PagerTelephone -- PKEY_Contact_PagerTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D6304E01-F8F5-4F45-8B15-D024A6296789}, 100 + + + + + Name: System.Contact.PersonalTitle -- PKEY_Contact_PersonalTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 69 + + + + + Name: System.Contact.PrimaryAddressCity -- PKEY_Contact_PrimaryAddressCity + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C8EA94F0-A9E3-4969-A94B-9C62A95324E0}, 100 + + + + + Name: System.Contact.PrimaryAddressCountry -- PKEY_Contact_PrimaryAddressCountry + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E53D799D-0F3F-466E-B2FF-74634A3CB7A4}, 100 + + + + + Name: System.Contact.PrimaryAddressPostalCode -- PKEY_Contact_PrimaryAddressPostalCode + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {18BBD425-ECFD-46EF-B612-7B4A6034EDA0}, 100 + + + + + Name: System.Contact.PrimaryAddressPostOfficeBox -- PKEY_Contact_PrimaryAddressPostOfficeBox + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE5EF3C7-46E1-484E-9999-62C5308394C1}, 100 + + + + + Name: System.Contact.PrimaryAddressState -- PKEY_Contact_PrimaryAddressState + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F1176DFE-7138-4640-8B4C-AE375DC70A6D}, 100 + + + + + Name: System.Contact.PrimaryAddressStreet -- PKEY_Contact_PrimaryAddressStreet + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {63C25B20-96BE-488F-8788-C09C407AD812}, 100 + + + + + Name: System.Contact.PrimaryEmailAddress -- PKEY_Contact_PrimaryEmailAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 48 + + + + + Name: System.Contact.PrimaryTelephone -- PKEY_Contact_PrimaryTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 25 + + + + + Name: System.Contact.Profession -- PKEY_Contact_Profession + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7268AF55-1CE4-4F6E-A41F-B6E4EF10E4A9}, 100 + + + + + Name: System.Contact.SpouseName -- PKEY_Contact_SpouseName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9D2408B6-3167-422B-82B0-F583B7A7CFE3}, 100 + + + + + Name: System.Contact.Suffix -- PKEY_Contact_Suffix + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {176DC63C-2688-4E89-8143-A347800F25E9}, 73 + + + + + Name: System.Contact.TelexNumber -- PKEY_Contact_TelexNumber + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C554493C-C1F7-40C1-A76C-EF8C0614003E}, 100 + + + + + Name: System.Contact.TTYTDDTelephone -- PKEY_Contact_TTYTDDTelephone + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AAF16BAC-2B55-45E6-9F6D-415EB94910DF}, 100 + + + + + Name: System.Contact.WebPage -- PKEY_Contact_WebPage + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 18 + + + + + JA Properties + + + + + Name: System.Contact.JA.CompanyNamePhonetic -- PKEY_Contact_JA_CompanyNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 2 + + + + + Name: System.Contact.JA.FirstNamePhonetic -- PKEY_Contact_JA_FirstNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 3 + + + + + Name: System.Contact.JA.LastNamePhonetic -- PKEY_Contact_JA_LastNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 4 + + + + + JA Properties + + + + + Name: System.Contact.JA.CompanyNamePhonetic -- PKEY_Contact_JA_CompanyNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 2 + + + + + Name: System.Contact.JA.FirstNamePhonetic -- PKEY_Contact_JA_FirstNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 3 + + + + + Name: System.Contact.JA.LastNamePhonetic -- PKEY_Contact_JA_LastNamePhonetic + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {897B3694-FE9E-43E6-8066-260F590C0100}, 4 + + + + + Device Properties + + + + + Name: System.Device.PrinterURL -- PKEY_Device_PrinterURL + Description: Printer information Printer URL. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B48F35A-BE6E-4F17-B108-3C4073D1669A}, 15 + + + + + DeviceInterface Properties + + + + + Name: System.DeviceInterface.PrinterDriverDirectory -- PKEY_DeviceInterface_PrinterDriverDirectory + Description: Printer information Printer Driver Directory. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {847C66DE-B8D6-4AF9-ABC3-6F4F926BC039}, 14 + + + + + Name: System.DeviceInterface.PrinterDriverName -- PKEY_DeviceInterface_PrinterDriverName + Description: Printer information Driver Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AFC47170-14F5-498C-8F30-B0D19BE449C6}, 11 + + + + + Name: System.DeviceInterface.PrinterName -- PKEY_DeviceInterface_PrinterName + Description: Printer information Printer Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0A7B84EF-0C27-463F-84EF-06C5070001BE}, 10 + + + + + Name: System.DeviceInterface.PrinterPortName -- PKEY_DeviceInterface_PrinterPortName + Description: Printer information Port Name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {EEC7B761-6F94-41B1-949F-C729720DD13C}, 12 + + + + + Devices Properties + + + + + Name: System.Devices.BatteryLife -- PKEY_Devices_BatteryLife + Description: Remaining battery life of the device as an integer between 0 and 100 percent. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 10 + + + + + Name: System.Devices.BatteryPlusCharging -- PKEY_Devices_BatteryPlusCharging + Description: Remaining battery life of the device as an integer between 0 and 100 percent and the device's charging state. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 22 + + + + + Name: System.Devices.BatteryPlusChargingText -- PKEY_Devices_BatteryPlusChargingText + Description: Remaining battery life of the device and the device's charging state as a string. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 23 + + + + + Name: System.Devices.Category -- PKEY_Devices_Category_Desc_Singular + Description: Singular form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 91 + + + + + Name: System.Devices.CategoryGroup -- PKEY_Devices_CategoryGroup_Desc + Description: Plural form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 94 + + + + + Name: System.Devices.CategoryPlural -- PKEY_Devices_Category_Desc_Plural + Description: Plural form of device category. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 92 + + + + + Name: System.Devices.ChargingState -- PKEY_Devices_ChargingState + Description: Boolean value representing if the device is currently charging. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 11 + + + + + Name: System.Devices.Connected -- PKEY_Devices_IsConnected + Description: Device connection state. If VARIANT_TRUE, indicates the device is currently connected to the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 55 + + + + + Name: System.Devices.ContainerId -- PKEY_Devices_ContainerId + Description: Device container ID. + + Type: Guid -- VT_CLSID + FormatID: {8C7ED206-3F8A-4827-B3AB-AE9E1FAEFC6C}, 2 + + + + + Name: System.Devices.DefaultTooltip -- PKEY_Devices_DefaultTooltip + Description: Tooltip for default state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 153 + + + + + Name: System.Devices.DeviceDescription1 -- PKEY_Devices_DeviceDescription1 + Description: First line of descriptive text about the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 81 + + + + + Name: System.Devices.DeviceDescription2 -- PKEY_Devices_DeviceDescription2 + Description: Second line of descriptive text about the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 82 + + + + + Name: System.Devices.DiscoveryMethod -- PKEY_Devices_DiscoveryMethod + Description: Device discovery method. This indicates on what transport or physical connection the device is discovered. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 52 + + + + + Name: System.Devices.FriendlyName -- PKEY_Devices_FriendlyName + Description: Device friendly name. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 12288 + + + + + Name: System.Devices.FunctionPaths -- PKEY_Devices_FunctionPaths + Description: Available functions for this device. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 3 + + + + + Name: System.Devices.InterfacePaths -- PKEY_Devices_InterfacePaths + Description: Available interfaces for this device. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 2 + + + + + Name: System.Devices.IsDefault -- PKEY_Devices_IsDefaultDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 86 + + + + + Name: System.Devices.IsNetworkConnected -- PKEY_Devices_IsNetworkDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 85 + + + + + Name: System.Devices.IsShared -- PKEY_Devices_IsSharedDevice + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 84 + + + + + Name: System.Devices.IsSoftwareInstalling -- PKEY_Devices_IsSoftwareInstalling + Description: If VARIANT_TRUE, the device installer is currently installing software. + + Type: Boolean -- VT_BOOL + FormatID: {83DA6326-97A6-4088-9453-A1923F573B29}, 9 + + + + + Name: System.Devices.LaunchDeviceStageFromExplorer -- PKEY_Devices_LaunchDeviceStageFromExplorer + Description: Indicates whether to launch Device Stage or not + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 77 + + + + + Name: System.Devices.LocalMachine -- PKEY_Devices_IsLocalMachine + Description: If VARIANT_TRUE, the device in question is actually the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 70 + + + + + Name: System.Devices.Manufacturer -- PKEY_Devices_Manufacturer + Description: Device manufacturer. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8192 + + + + + Name: System.Devices.MissedCalls -- PKEY_Devices_MissedCalls + Description: Number of missed calls on the device. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 5 + + + + + Name: System.Devices.ModelName -- PKEY_Devices_ModelName + Description: Model name of the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8194 + + + + + Name: System.Devices.ModelNumber -- PKEY_Devices_ModelNumber + Description: Model number of the device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {656A3BB3-ECC0-43FD-8477-4AE0404A96CD}, 8195 + + + + + Name: System.Devices.NetworkedTooltip -- PKEY_Devices_NetworkedTooltip + Description: Tooltip for connection state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 152 + + + + + Name: System.Devices.NetworkName -- PKEY_Devices_NetworkName + Description: Name of the device's network. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 7 + + + + + Name: System.Devices.NetworkType -- PKEY_Devices_NetworkType + Description: String representing the type of the device's network. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 8 + + + + + Name: System.Devices.NewPictures -- PKEY_Devices_NewPictures + Description: Number of new pictures on the device. + + Type: UInt16 -- VT_UI2 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 4 + + + + + Name: System.Devices.Notification -- PKEY_Devices_Notification + Description: Device Notification Property. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {06704B0C-E830-4C81-9178-91E4E95A80A0}, 3 + + + + + Name: System.Devices.NotificationStore -- PKEY_Devices_NotificationStore + Description: Device Notification Store. + + Type: Object -- VT_UNKNOWN + FormatID: {06704B0C-E830-4C81-9178-91E4E95A80A0}, 2 + + + + + Name: System.Devices.NotWorkingProperly -- PKEY_Devices_IsNotWorkingProperly + Description: If VARIANT_TRUE, the device is not working properly. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 83 + + + + + Name: System.Devices.Paired -- PKEY_Devices_IsPaired + Description: Device paired state. If VARIANT_TRUE, indicates the device is not paired with the computer. + + Type: Boolean -- VT_BOOL + FormatID: {78C34FC8-104A-4ACA-9EA4-524D52996E57}, 56 + + + + + Name: System.Devices.PrimaryCategory -- PKEY_Devices_PrimaryCategory + Description: Primary category group for this device. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 10 + + + + + Name: System.Devices.Roaming -- PKEY_Devices_Roaming + Description: Status indicator used to indicate if the device is roaming. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 9 + + + + + Name: System.Devices.SafeRemovalRequired -- PKEY_Devices_SafeRemovalRequired + Description: Indicates if a device requires safe removal or not + + Type: Boolean -- VT_BOOL + FormatID: {AFD97640-86A3-4210-B67C-289C41AABE55}, 2 + + + + + Name: System.Devices.SharedTooltip -- PKEY_Devices_SharedTooltip + Description: Tooltip for sharing state + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {880F70A2-6082-47AC-8AAB-A739D1A300C3}, 151 + + + + + Name: System.Devices.SignalStrength -- PKEY_Devices_SignalStrength + Description: Device signal strength. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 2 + + + + + Name: System.Devices.Status1 -- PKEY_Devices_Status1 + Description: 1st line of device status. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 257 + + + + + Name: System.Devices.Status2 -- PKEY_Devices_Status2 + Description: 2nd line of device status. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D08DD4C0-3A9E-462E-8290-7B636B2576B9}, 258 + + + + + Name: System.Devices.StorageCapacity -- PKEY_Devices_StorageCapacity + Description: Total storage capacity of the device. + + Type: UInt64 -- VT_UI8 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 12 + + + + + Name: System.Devices.StorageFreeSpace -- PKEY_Devices_StorageFreeSpace + Description: Total free space of the storage of the device. + + Type: UInt64 -- VT_UI8 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 13 + + + + + Name: System.Devices.StorageFreeSpacePercent -- PKEY_Devices_StorageFreeSpacePercent + Description: Total free space of the storage of the device as a percentage. + + Type: UInt32 -- VT_UI4 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 14 + + + + + Name: System.Devices.TextMessages -- PKEY_Devices_TextMessages + Description: Number of unread text messages on the device. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 3 + + + + + Name: System.Devices.Voicemail -- PKEY_Devices_Voicemail + Description: Status indicator used to indicate if the device has voicemail. + + Type: Byte -- VT_UI1 + FormatID: {49CD1F76-5626-4B17-A4E8-18B4AA1A2213}, 6 + + + + + Notifications Properties + + + + + Name: System.Devices.Notifications.LowBattery -- PKEY_Devices_Notification_LowBattery + Description: Device Low Battery Notification. + + Type: Byte -- VT_UI1 + FormatID: {C4C07F2B-8524-4E66-AE3A-A6235F103BEB}, 2 + + + + + Name: System.Devices.Notifications.MissedCall -- PKEY_Devices_Notification_MissedCall + Description: Device Missed Call Notification. + + Type: Byte -- VT_UI1 + FormatID: {6614EF48-4EFE-4424-9EDA-C79F404EDF3E}, 2 + + + + + Name: System.Devices.Notifications.NewMessage -- PKEY_Devices_Notification_NewMessage + Description: Device New Message Notification. + + Type: Byte -- VT_UI1 + FormatID: {2BE9260A-2012-4742-A555-F41B638B7DCB}, 2 + + + + + Name: System.Devices.Notifications.NewVoicemail -- PKEY_Devices_Notification_NewVoicemail + Description: Device Voicemail Notification. + + Type: Byte -- VT_UI1 + FormatID: {59569556-0A08-4212-95B9-FAE2AD6413DB}, 2 + + + + + Name: System.Devices.Notifications.StorageFull -- PKEY_Devices_Notification_StorageFull + Description: Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 2 + + + + + Name: System.Devices.Notifications.StorageFullLinkText -- PKEY_Devices_Notification_StorageFullLinkText + Description: Link Text for the Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 3 + + + + + Notifications Properties + + + + + Name: System.Devices.Notifications.LowBattery -- PKEY_Devices_Notification_LowBattery + Description: Device Low Battery Notification. + + Type: Byte -- VT_UI1 + FormatID: {C4C07F2B-8524-4E66-AE3A-A6235F103BEB}, 2 + + + + + Name: System.Devices.Notifications.MissedCall -- PKEY_Devices_Notification_MissedCall + Description: Device Missed Call Notification. + + Type: Byte -- VT_UI1 + FormatID: {6614EF48-4EFE-4424-9EDA-C79F404EDF3E}, 2 + + + + + Name: System.Devices.Notifications.NewMessage -- PKEY_Devices_Notification_NewMessage + Description: Device New Message Notification. + + Type: Byte -- VT_UI1 + FormatID: {2BE9260A-2012-4742-A555-F41B638B7DCB}, 2 + + + + + Name: System.Devices.Notifications.NewVoicemail -- PKEY_Devices_Notification_NewVoicemail + Description: Device Voicemail Notification. + + Type: Byte -- VT_UI1 + FormatID: {59569556-0A08-4212-95B9-FAE2AD6413DB}, 2 + + + + + Name: System.Devices.Notifications.StorageFull -- PKEY_Devices_Notification_StorageFull + Description: Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 2 + + + + + Name: System.Devices.Notifications.StorageFullLinkText -- PKEY_Devices_Notification_StorageFullLinkText + Description: Link Text for the Device Storage Full Notification. + + Type: UInt64 -- VT_UI8 + FormatID: {A0E00EE1-F0C7-4D41-B8E7-26A7BD8D38B0}, 3 + + + + + Document Properties + + + + + Name: System.Document.ByteCount -- PKEY_Document_ByteCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 4 (PIDDSI_BYTECOUNT) + + + + + Name: System.Document.CharacterCount -- PKEY_Document_CharacterCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 16 (PIDSI_CHARCOUNT) + + + + + Name: System.Document.ClientID -- PKEY_Document_ClientID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {276D7BB0-5B34-4FB0-AA4B-158ED12A1809}, 100 + + + + + Name: System.Document.Contributor -- PKEY_Document_Contributor + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {F334115E-DA1B-4509-9B3D-119504DC7ABB}, 100 + + + + + Name: System.Document.DateCreated -- PKEY_Document_DateCreated + Description: This property is stored in the document, not obtained from the file system. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 12 (PIDSI_CREATE_DTM) + + + + + Name: System.Document.DatePrinted -- PKEY_Document_DatePrinted + Description: Legacy name: "DocLastPrinted". + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 11 (PIDSI_LASTPRINTED) + + + + + Name: System.Document.DateSaved -- PKEY_Document_DateSaved + Description: Legacy name: "DocLastSavedTm". + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 13 (PIDSI_LASTSAVE_DTM) + + + + + Name: System.Document.Division -- PKEY_Document_Division + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1E005EE6-BF27-428B-B01C-79676ACD2870}, 100 + + + + + Name: System.Document.DocumentID -- PKEY_Document_DocumentID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E08805C8-E395-40DF-80D2-54F0D6C43154}, 100 + + + + + Name: System.Document.HiddenSlideCount -- PKEY_Document_HiddenSlideCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 9 (PIDDSI_HIDDENCOUNT) + + + + + Name: System.Document.LastAuthor -- PKEY_Document_LastAuthor + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 8 (PIDSI_LASTAUTHOR) + + + + + Name: System.Document.LineCount -- PKEY_Document_LineCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 5 (PIDDSI_LINECOUNT) + + + + + Name: System.Document.Manager -- PKEY_Document_Manager + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 14 (PIDDSI_MANAGER) + + + + + Name: System.Document.MultimediaClipCount -- PKEY_Document_MultimediaClipCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 10 (PIDDSI_MMCLIPCOUNT) + + + + + Name: System.Document.NoteCount -- PKEY_Document_NoteCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 8 (PIDDSI_NOTECOUNT) + + + + + Name: System.Document.PageCount -- PKEY_Document_PageCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 14 (PIDSI_PAGECOUNT) + + + + + Name: System.Document.ParagraphCount -- PKEY_Document_ParagraphCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 6 (PIDDSI_PARCOUNT) + + + + + Name: System.Document.PresentationFormat -- PKEY_Document_PresentationFormat + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 3 (PIDDSI_PRESFORMAT) + + + + + Name: System.Document.RevisionNumber -- PKEY_Document_RevisionNumber + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 9 (PIDSI_REVNUMBER) + + + + + Name: System.Document.Security -- PKEY_Document_Security + Description: Access control information, from SummaryInfo propset + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 19 + + + + + Name: System.Document.SlideCount -- PKEY_Document_SlideCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 7 (PIDDSI_SLIDECOUNT) + + + + + Name: System.Document.Template -- PKEY_Document_Template + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 7 (PIDSI_TEMPLATE) + + + + + Name: System.Document.TotalEditingTime -- PKEY_Document_TotalEditingTime + Description: 100ns units, not milliseconds. VT_FILETIME for IPropertySetStorage handlers (legacy) + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 10 (PIDSI_EDITTIME) + + + + + Name: System.Document.Version -- PKEY_Document_Version + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DocumentSummaryInformation) {D5CDD502-2E9C-101B-9397-08002B2CF9AE}, 29 + + + + + Name: System.Document.WordCount -- PKEY_Document_WordCount + Description: + + Type: Int32 -- VT_I4 + FormatID: (FMTID_SummaryInformation) {F29F85E0-4FF9-1068-AB91-08002B27B3D9}, 15 (PIDSI_WORDCOUNT) + + + + + DRM Properties + + + + + Name: System.DRM.DatePlayExpires -- PKEY_DRM_DatePlayExpires + Description: Indicates when play expires for digital rights management. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 6 (PIDDRSI_PLAYEXPIRES) + + + + + Name: System.DRM.DatePlayStarts -- PKEY_DRM_DatePlayStarts + Description: Indicates when play starts for digital rights management. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 5 (PIDDRSI_PLAYSTARTS) + + + + + Name: System.DRM.Description -- PKEY_DRM_Description + Description: Displays the description for digital rights management. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 3 (PIDDRSI_DESCRIPTION) + + + + + Name: System.DRM.IsProtected -- PKEY_DRM_IsProtected + Description: + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 2 (PIDDRSI_PROTECTED) + + + + + Name: System.DRM.PlayCount -- PKEY_DRM_PlayCount + Description: Indicates the play count for digital rights management. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_DRM) {AEAC19E4-89AE-4508-B9B7-BB867ABEE2ED}, 4 (PIDDRSI_PLAYCOUNT) + + + + + GPS Properties + + + + + Name: System.GPS.Altitude -- PKEY_GPS_Altitude + Description: Indicates the altitude based on the reference in PKEY_GPS_AltitudeRef. Calculated from PKEY_GPS_AltitudeNumerator and + PKEY_GPS_AltitudeDenominator + + Type: Double -- VT_R8 + FormatID: {827EDB4F-5B73-44A7-891D-FDFFABEA35CA}, 100 + + + + + Name: System.GPS.AltitudeDenominator -- PKEY_GPS_AltitudeDenominator + Description: Denominator of PKEY_GPS_Altitude + + Type: UInt32 -- VT_UI4 + FormatID: {78342DCB-E358-4145-AE9A-6BFE4E0F9F51}, 100 + + + + + Name: System.GPS.AltitudeNumerator -- PKEY_GPS_AltitudeNumerator + Description: Numerator of PKEY_GPS_Altitude + + Type: UInt32 -- VT_UI4 + FormatID: {2DAD1EB7-816D-40D3-9EC3-C9773BE2AADE}, 100 + + + + + Name: System.GPS.AltitudeRef -- PKEY_GPS_AltitudeRef + Description: Indicates the reference for the altitude property. (eg: above sea level, below sea level, absolute value) + + Type: Byte -- VT_UI1 + FormatID: {46AC629D-75EA-4515-867F-6DC4321C5844}, 100 + + + + + Name: System.GPS.AreaInformation -- PKEY_GPS_AreaInformation + Description: Represents the name of the GPS area + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {972E333E-AC7E-49F1-8ADF-A70D07A9BCAB}, 100 + + + + + Name: System.GPS.Date -- PKEY_GPS_Date + Description: Date and time of the GPS record + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {3602C812-0F3B-45F0-85AD-603468D69423}, 100 + + + + + Name: System.GPS.DestBearing -- PKEY_GPS_DestBearing + Description: Indicates the bearing to the destination point. Calculated from PKEY_GPS_DestBearingNumerator and + PKEY_GPS_DestBearingDenominator. + + Type: Double -- VT_R8 + FormatID: {C66D4B3C-E888-47CC-B99F-9DCA3EE34DEA}, 100 + + + + + Name: System.GPS.DestBearingDenominator -- PKEY_GPS_DestBearingDenominator + Description: Denominator of PKEY_GPS_DestBearing + + Type: UInt32 -- VT_UI4 + FormatID: {7ABCF4F8-7C3F-4988-AC91-8D2C2E97ECA5}, 100 + + + + + Name: System.GPS.DestBearingNumerator -- PKEY_GPS_DestBearingNumerator + Description: Numerator of PKEY_GPS_DestBearing + + Type: UInt32 -- VT_UI4 + FormatID: {BA3B1DA9-86EE-4B5D-A2A4-A271A429F0CF}, 100 + + + + + Name: System.GPS.DestBearingRef -- PKEY_GPS_DestBearingRef + Description: Indicates the reference used for the giving the bearing to the destination point. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9AB84393-2A0F-4B75-BB22-7279786977CB}, 100 + + + + + Name: System.GPS.DestDistance -- PKEY_GPS_DestDistance + Description: Indicates the distance to the destination point. Calculated from PKEY_GPS_DestDistanceNumerator and + PKEY_GPS_DestDistanceDenominator. + + Type: Double -- VT_R8 + FormatID: {A93EAE04-6804-4F24-AC81-09B266452118}, 100 + + + + + Name: System.GPS.DestDistanceDenominator -- PKEY_GPS_DestDistanceDenominator + Description: Denominator of PKEY_GPS_DestDistance + + Type: UInt32 -- VT_UI4 + FormatID: {9BC2C99B-AC71-4127-9D1C-2596D0D7DCB7}, 100 + + + + + Name: System.GPS.DestDistanceNumerator -- PKEY_GPS_DestDistanceNumerator + Description: Numerator of PKEY_GPS_DestDistance + + Type: UInt32 -- VT_UI4 + FormatID: {2BDA47DA-08C6-4FE1-80BC-A72FC517C5D0}, 100 + + + + + Name: System.GPS.DestDistanceRef -- PKEY_GPS_DestDistanceRef + Description: Indicates the unit used to express the distance to the destination. (eg: kilometers, miles, knots) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {ED4DF2D3-8695-450B-856F-F5C1C53ACB66}, 100 + + + + + Name: System.GPS.DestLatitude -- PKEY_GPS_DestLatitude + Description: Indicates the latitude of the destination point. This is an array of three values. Index 0 is the degrees, index 1 + is the minutes, index 2 is the seconds. Each is calculated from the values in PKEY_GPS_DestLatitudeNumerator and + PKEY_GPS_DestLatitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {9D1D7CC5-5C39-451C-86B3-928E2D18CC47}, 100 + + + + + Name: System.GPS.DestLatitudeDenominator -- PKEY_GPS_DestLatitudeDenominator + Description: Denominator of PKEY_GPS_DestLatitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {3A372292-7FCA-49A7-99D5-E47BB2D4E7AB}, 100 + + + + + Name: System.GPS.DestLatitudeNumerator -- PKEY_GPS_DestLatitudeNumerator + Description: Numerator of PKEY_GPS_DestLatitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {ECF4B6F6-D5A6-433C-BB92-4076650FC890}, 100 + + + + + Name: System.GPS.DestLatitudeRef -- PKEY_GPS_DestLatitudeRef + Description: Indicates whether the latitude destination point is north or south latitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CEA820B9-CE61-4885-A128-005D9087C192}, 100 + + + + + Name: System.GPS.DestLongitude -- PKEY_GPS_DestLongitude + Description: Indicates the latitude of the destination point. This is an array of three values. Index 0 is the degrees, index 1 + is the minutes, index 2 is the seconds. Each is calculated from the values in PKEY_GPS_DestLongitudeNumerator and + PKEY_GPS_DestLongitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {47A96261-CB4C-4807-8AD3-40B9D9DBC6BC}, 100 + + + + + Name: System.GPS.DestLongitudeDenominator -- PKEY_GPS_DestLongitudeDenominator + Description: Denominator of PKEY_GPS_DestLongitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {425D69E5-48AD-4900-8D80-6EB6B8D0AC86}, 100 + + + + + Name: System.GPS.DestLongitudeNumerator -- PKEY_GPS_DestLongitudeNumerator + Description: Numerator of PKEY_GPS_DestLongitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {A3250282-FB6D-48D5-9A89-DBCACE75CCCF}, 100 + + + + + Name: System.GPS.DestLongitudeRef -- PKEY_GPS_DestLongitudeRef + Description: Indicates whether the longitude destination point is east or west longitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {182C1EA6-7C1C-4083-AB4B-AC6C9F4ED128}, 100 + + + + + Name: System.GPS.Differential -- PKEY_GPS_Differential + Description: Indicates whether differential correction was applied to the GPS receiver + + Type: UInt16 -- VT_UI2 + FormatID: {AAF4EE25-BD3B-4DD7-BFC4-47F77BB00F6D}, 100 + + + + + Name: System.GPS.DOP -- PKEY_GPS_DOP + Description: Indicates the GPS DOP (data degree of precision). Calculated from PKEY_GPS_DOPNumerator and PKEY_GPS_DOPDenominator + + Type: Double -- VT_R8 + FormatID: {0CF8FB02-1837-42F1-A697-A7017AA289B9}, 100 + + + + + Name: System.GPS.DOPDenominator -- PKEY_GPS_DOPDenominator + Description: Denominator of PKEY_GPS_DOP + + Type: UInt32 -- VT_UI4 + FormatID: {A0BE94C5-50BA-487B-BD35-0654BE8881ED}, 100 + + + + + Name: System.GPS.DOPNumerator -- PKEY_GPS_DOPNumerator + Description: Numerator of PKEY_GPS_DOP + + Type: UInt32 -- VT_UI4 + FormatID: {47166B16-364F-4AA0-9F31-E2AB3DF449C3}, 100 + + + + + Name: System.GPS.ImgDirection -- PKEY_GPS_ImgDirection + Description: Indicates direction of the image when it was captured. Calculated from PKEY_GPS_ImgDirectionNumerator and + PKEY_GPS_ImgDirectionDenominator. + + Type: Double -- VT_R8 + FormatID: {16473C91-D017-4ED9-BA4D-B6BAA55DBCF8}, 100 + + + + + Name: System.GPS.ImgDirectionDenominator -- PKEY_GPS_ImgDirectionDenominator + Description: Denominator of PKEY_GPS_ImgDirection + + Type: UInt32 -- VT_UI4 + FormatID: {10B24595-41A2-4E20-93C2-5761C1395F32}, 100 + + + + + Name: System.GPS.ImgDirectionNumerator -- PKEY_GPS_ImgDirectionNumerator + Description: Numerator of PKEY_GPS_ImgDirection + + Type: UInt32 -- VT_UI4 + FormatID: {DC5877C7-225F-45F7-BAC7-E81334B6130A}, 100 + + + + + Name: System.GPS.ImgDirectionRef -- PKEY_GPS_ImgDirectionRef + Description: Indicates reference for giving the direction of the image when it was captured. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A4AAA5B7-1AD0-445F-811A-0F8F6E67F6B5}, 100 + + + + + Name: System.GPS.Latitude -- PKEY_GPS_Latitude + Description: Indicates the latitude. This is an array of three values. Index 0 is the degrees, index 1 is the minutes, index 2 + is the seconds. Each is calculated from the values in PKEY_GPS_LatitudeNumerator and PKEY_GPS_LatitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {8727CFFF-4868-4EC6-AD5B-81B98521D1AB}, 100 + + + + + Name: System.GPS.LatitudeDenominator -- PKEY_GPS_LatitudeDenominator + Description: Denominator of PKEY_GPS_Latitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {16E634EE-2BFF-497B-BD8A-4341AD39EEB9}, 100 + + + + + Name: System.GPS.LatitudeNumerator -- PKEY_GPS_LatitudeNumerator + Description: Numerator of PKEY_GPS_Latitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {7DDAAAD1-CCC8-41AE-B750-B2CB8031AEA2}, 100 + + + + + Name: System.GPS.LatitudeRef -- PKEY_GPS_LatitudeRef + Description: Indicates whether latitude is north or south latitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {029C0252-5B86-46C7-ACA0-2769FFC8E3D4}, 100 + + + + + Name: System.GPS.Longitude -- PKEY_GPS_Longitude + Description: Indicates the longitude. This is an array of three values. Index 0 is the degrees, index 1 is the minutes, index 2 + is the seconds. Each is calculated from the values in PKEY_GPS_LongitudeNumerator and PKEY_GPS_LongitudeDenominator. + + Type: Multivalue Double -- VT_VECTOR | VT_R8 (For variants: VT_ARRAY | VT_R8) + FormatID: {C4C4DBB2-B593-466B-BBDA-D03D27D5E43A}, 100 + + + + + Name: System.GPS.LongitudeDenominator -- PKEY_GPS_LongitudeDenominator + Description: Denominator of PKEY_GPS_Longitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {BE6E176C-4534-4D2C-ACE5-31DEDAC1606B}, 100 + + + + + Name: System.GPS.LongitudeNumerator -- PKEY_GPS_LongitudeNumerator + Description: Numerator of PKEY_GPS_Longitude + + Type: Multivalue UInt32 -- VT_VECTOR | VT_UI4 (For variants: VT_ARRAY | VT_UI4) + FormatID: {02B0F689-A914-4E45-821D-1DDA452ED2C4}, 100 + + + + + Name: System.GPS.LongitudeRef -- PKEY_GPS_LongitudeRef + Description: Indicates whether longitude is east or west longitude + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {33DCF22B-28D5-464C-8035-1EE9EFD25278}, 100 + + + + + Name: System.GPS.MapDatum -- PKEY_GPS_MapDatum + Description: Indicates the geodetic survey data used by the GPS receiver + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2CA2DAE6-EDDC-407D-BEF1-773942ABFA95}, 100 + + + + + Name: System.GPS.MeasureMode -- PKEY_GPS_MeasureMode + Description: Indicates the GPS measurement mode. (eg: 2-dimensional, 3-dimensional) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A015ED5D-AAEA-4D58-8A86-3C586920EA0B}, 100 + + + + + Name: System.GPS.ProcessingMethod -- PKEY_GPS_ProcessingMethod + Description: Indicates the name of the method used for location finding + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {59D49E61-840F-4AA9-A939-E2099B7F6399}, 100 + + + + + Name: System.GPS.Satellites -- PKEY_GPS_Satellites + Description: Indicates the GPS satellites used for measurements + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {467EE575-1F25-4557-AD4E-B8B58B0D9C15}, 100 + + + + + Name: System.GPS.Speed -- PKEY_GPS_Speed + Description: Indicates the speed of the GPS receiver movement. Calculated from PKEY_GPS_SpeedNumerator and + PKEY_GPS_SpeedDenominator. + + Type: Double -- VT_R8 + FormatID: {DA5D0862-6E76-4E1B-BABD-70021BD25494}, 100 + + + + + Name: System.GPS.SpeedDenominator -- PKEY_GPS_SpeedDenominator + Description: Denominator of PKEY_GPS_Speed + + Type: UInt32 -- VT_UI4 + FormatID: {7D122D5A-AE5E-4335-8841-D71E7CE72F53}, 100 + + + + + Name: System.GPS.SpeedNumerator -- PKEY_GPS_SpeedNumerator + Description: Numerator of PKEY_GPS_Speed + + Type: UInt32 -- VT_UI4 + FormatID: {ACC9CE3D-C213-4942-8B48-6D0820F21C6D}, 100 + + + + + Name: System.GPS.SpeedRef -- PKEY_GPS_SpeedRef + Description: Indicates the unit used to express the speed of the GPS receiver movement. (eg: kilometers per hour, + miles per hour, knots). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {ECF7F4C9-544F-4D6D-9D98-8AD79ADAF453}, 100 + + + + + Name: System.GPS.Status -- PKEY_GPS_Status + Description: Indicates the status of the GPS receiver when the image was recorded. (eg: measurement in progress, + measurement interoperability). + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {125491F4-818F-46B2-91B5-D537753617B2}, 100 + + + + + Name: System.GPS.Track -- PKEY_GPS_Track + Description: Indicates the direction of the GPS receiver movement. Calculated from PKEY_GPS_TrackNumerator and + PKEY_GPS_TrackDenominator. + + Type: Double -- VT_R8 + FormatID: {76C09943-7C33-49E3-9E7E-CDBA872CFADA}, 100 + + + + + Name: System.GPS.TrackDenominator -- PKEY_GPS_TrackDenominator + Description: Denominator of PKEY_GPS_Track + + Type: UInt32 -- VT_UI4 + FormatID: {C8D1920C-01F6-40C0-AC86-2F3A4AD00770}, 100 + + + + + Name: System.GPS.TrackNumerator -- PKEY_GPS_TrackNumerator + Description: Numerator of PKEY_GPS_Track + + Type: UInt32 -- VT_UI4 + FormatID: {702926F4-44A6-43E1-AE71-45627116893B}, 100 + + + + + Name: System.GPS.TrackRef -- PKEY_GPS_TrackRef + Description: Indicates reference for the direction of the GPS receiver movement. (eg: true direction, magnetic direction) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {35DBE6FE-44C3-4400-AAAE-D2C799C407E8}, 100 + + + + + Name: System.GPS.VersionID -- PKEY_GPS_VersionID + Description: Indicates the version of the GPS information + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {22704DA4-C6B2-4A99-8E56-F16DF8C92599}, 100 + + + + + Identity Properties + + + + + Name: System.Identity.Blob -- PKEY_Identity_Blob + Description: Blob used to import/export identities + + Type: Blob -- VT_BLOB + FormatID: {8C3B93A4-BAED-1A83-9A32-102EE313F6EB}, 100 + + + + + Name: System.Identity.DisplayName -- PKEY_Identity_DisplayName + Description: Display Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7D683FC9-D155-45A8-BB1F-89D19BCB792F}, 100 + + + + + Name: System.Identity.IsMeIdentity -- PKEY_Identity_IsMeIdentity + Description: Is it Me Identity + + Type: Boolean -- VT_BOOL + FormatID: {A4108708-09DF-4377-9DFC-6D99986D5A67}, 100 + + + + + Name: System.Identity.PrimaryEmailAddress -- PKEY_Identity_PrimaryEmailAddress + Description: Primary Email Address + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FCC16823-BAED-4F24-9B32-A0982117F7FA}, 100 + + + + + Name: System.Identity.ProviderID -- PKEY_Identity_ProviderID + Description: Provider ID + + Type: Guid -- VT_CLSID + FormatID: {74A7DE49-FA11-4D3D-A006-DB7E08675916}, 100 + + + + + Name: System.Identity.UniqueID -- PKEY_Identity_UniqueID + Description: Unique ID + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E55FC3B0-2B60-4220-918E-B21E8BF16016}, 100 + + + + + Name: System.Identity.UserName -- PKEY_Identity_UserName + Description: Identity User Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C4322503-78CA-49C6-9ACC-A68E2AFD7B6B}, 100 + + + + + IdentityProvider Properties + + + + + Name: System.IdentityProvider.Name -- PKEY_IdentityProvider_Name + Description: Identity Provider Name + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {B96EFF7B-35CA-4A35-8607-29E3A54C46EA}, 100 + + + + + Name: System.IdentityProvider.Picture -- PKEY_IdentityProvider_Picture + Description: Picture for the Identity Provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2425166F-5642-4864-992F-98FD98F294C3}, 100 + + + + + Image Properties + + + + + Name: System.Image.BitDepth -- PKEY_Image_BitDepth + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 7 (PIDISI_BITDEPTH) + + + + + Name: System.Image.ColorSpace -- PKEY_Image_ColorSpace + Description: PropertyTagExifColorSpace + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 40961 + + + + + Name: System.Image.CompressedBitsPerPixel -- PKEY_Image_CompressedBitsPerPixel + Description: Calculated from PKEY_Image_CompressedBitsPerPixelNumerator and PKEY_Image_CompressedBitsPerPixelDenominator. + + Type: Double -- VT_R8 + FormatID: {364B6FA9-37AB-482A-BE2B-AE02F60D4318}, 100 + + + + + Name: System.Image.CompressedBitsPerPixelDenominator -- PKEY_Image_CompressedBitsPerPixelDenominator + Description: Denominator of PKEY_Image_CompressedBitsPerPixel. + + Type: UInt32 -- VT_UI4 + FormatID: {1F8844E1-24AD-4508-9DFD-5326A415CE02}, 100 + + + + + Name: System.Image.CompressedBitsPerPixelNumerator -- PKEY_Image_CompressedBitsPerPixelNumerator + Description: Numerator of PKEY_Image_CompressedBitsPerPixel. + + Type: UInt32 -- VT_UI4 + FormatID: {D21A7148-D32C-4624-8900-277210F79C0F}, 100 + + + + + Name: System.Image.Compression -- PKEY_Image_Compression + Description: Indicates the image compression level. PropertyTagCompression. + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 259 + + + + + Name: System.Image.CompressionText -- PKEY_Image_CompressionText + Description: This is the user-friendly form of System.Image.Compression. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3F08E66F-2F44-4BB9-A682-AC35D2562322}, 100 + + + + + Name: System.Image.Dimensions -- PKEY_Image_Dimensions + Description: Indicates the dimensions of the image. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 13 (PIDISI_DIMENSIONS) + + + + + Name: System.Image.HorizontalResolution -- PKEY_Image_HorizontalResolution + Description: + + Type: Double -- VT_R8 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 5 (PIDISI_RESOLUTIONX) + + + + + Name: System.Image.HorizontalSize -- PKEY_Image_HorizontalSize + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 3 (PIDISI_CX) + + + + + Name: System.Image.ImageID -- PKEY_Image_ImageID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {10DABE05-32AA-4C29-BF1A-63E2D220587F}, 100 + + + + + Name: System.Image.ResolutionUnit -- PKEY_Image_ResolutionUnit + Description: + Type: Int16 -- VT_I2 + FormatID: {19B51FA6-1F92-4A5C-AB48-7DF0ABD67444}, 100 + + + + + Name: System.Image.VerticalResolution -- PKEY_Image_VerticalResolution + Description: + + Type: Double -- VT_R8 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 6 (PIDISI_RESOLUTIONY) + + + + + Name: System.Image.VerticalSize -- PKEY_Image_VerticalSize + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 4 (PIDISI_CY) + + + + + Journal Properties + + + + + Name: System.Journal.Contacts -- PKEY_Journal_Contacts + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {DEA7C82C-1D89-4A66-9427-A4E3DEBABCB1}, 100 + + + + + Name: System.Journal.EntryType -- PKEY_Journal_EntryType + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {95BEB1FC-326D-4644-B396-CD3ED90E6DDF}, 100 + + + + + LayoutPattern Properties + + + + + Name: System.LayoutPattern.ContentViewModeForBrowse -- PKEY_LayoutPattern_ContentViewModeForBrowse + Description: Specifies the layout pattern that the content view mode should apply for this item in the context of browsing. + Register the regvalue under the name of "ContentViewModeLayoutPatternForBrowse". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 500 + + + + + Name: System.LayoutPattern.ContentViewModeForSearch -- PKEY_LayoutPattern_ContentViewModeForSearch + Description: Specifies the layout pattern that the content view mode should apply for this item in the context of searching. + Register the regvalue under the name of "ContentViewModeLayoutPatternForSearch". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 501 + + + + + Link Properties + + + + + Name: System.Link.Arguments -- PKEY_Link_Arguments + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {436F2667-14E2-4FEB-B30A-146C53B5B674}, 100 + + + + + Name: System.Link.Comment -- PKEY_Link_Comment + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 5 + + + + + Name: System.Link.DateVisited -- PKEY_Link_DateVisited + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 23 (PKEYs relating to URLs. Used by IE History.) + + + + + Name: System.Link.Description -- PKEY_Link_Description + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 21 (PKEYs relating to URLs. Used by IE History.) + + + + + Name: System.Link.Status -- PKEY_Link_Status + Description: + + Type: Int32 -- VT_I4 + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 3 (PID_LINK_TARGET_TYPE) + + + + + Name: System.Link.TargetExtension -- PKEY_Link_TargetExtension + Description: The file extension of the link target. See System.File.Extension + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {7A7D76F4-B630-4BD7-95FF-37CC51A975C9}, 2 + + + + + Name: System.Link.TargetParsingPath -- PKEY_Link_TargetParsingPath + Description: This is the shell namespace path to the target of the link item. This path may be passed to + SHParseDisplayName to parse the path to the correct shell folder. + + If the target item is a file, the value is identical to System.ItemPathDisplay. + + If the target item cannot be accessed through the shell namespace, this value is VT_EMPTY. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 2 (PID_LINK_TARGET) + + + + + Name: System.Link.TargetSFGAOFlags -- PKEY_Link_TargetSFGAOFlags + Description: IShellFolder::GetAttributesOf flags for the target of a link, with SFGAO_PKEYSFGAOMASK + attributes masked out. + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_LINK) {B9B4B3FC-2B51-4A42-B5D8-324146AFCF25}, 8 + + + + + Name: System.Link.TargetSFGAOFlagsStrings -- PKEY_Link_TargetSFGAOFlagsStrings + Description: Expresses the SFGAO flags of a link as string values and is used as a query optimization. See + PKEY_Shell_SFGAOFlagsStrings for possible values of this. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D6942081-D53B-443D-AD47-5E059D9CD27A}, 3 + + + + + Name: System.Link.TargetUrl -- PKEY_Link_TargetUrl + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {5CBF2787-48CF-4208-B90E-EE5E5D420294}, 2 (PKEYs relating to URLs. Used by IE History.) + + + + + Media Properties + + + + + Name: System.Media.AuthorUrl -- PKEY_Media_AuthorUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 32 (PIDMSI_AUTHOR_URL) + + + + + Name: System.Media.AverageLevel -- PKEY_Media_AverageLevel + Description: + Type: UInt32 -- VT_UI4 + FormatID: {09EDD5B6-B301-43C5-9990-D00302EFFD46}, 100 + + + + + Name: System.Media.ClassPrimaryID -- PKEY_Media_ClassPrimaryID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 13 (PIDMSI_CLASS_PRIMARY_ID) + + + + + Name: System.Media.ClassSecondaryID -- PKEY_Media_ClassSecondaryID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 14 (PIDMSI_CLASS_SECONDARY_ID) + + + + + Name: System.Media.CollectionGroupID -- PKEY_Media_CollectionGroupID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 24 (PIDMSI_COLLECTION_GROUP_ID) + + + + + Name: System.Media.CollectionID -- PKEY_Media_CollectionID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 25 (PIDMSI_COLLECTION_ID) + + + + + Name: System.Media.ContentDistributor -- PKEY_Media_ContentDistributor + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 18 (PIDMSI_CONTENTDISTRIBUTOR) + + + + + Name: System.Media.ContentID -- PKEY_Media_ContentID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 26 (PIDMSI_CONTENT_ID) + + + + + Name: System.Media.CreatorApplication -- PKEY_Media_CreatorApplication + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 27 (PIDMSI_TOOL_NAME) + + + + + Name: System.Media.CreatorApplicationVersion -- PKEY_Media_CreatorApplicationVersion + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 28 (PIDMSI_TOOL_VERSION) + + + + + Name: System.Media.DateEncoded -- PKEY_Media_DateEncoded + Description: DateTime is in UTC (in the doc, not file system). + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {2E4B640D-5019-46D8-8881-55414CC5CAA0}, 100 + + + + + Name: System.Media.DateReleased -- PKEY_Media_DateReleased + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE41CC29-6971-4290-B472-F59F2E2F31E2}, 100 + + + + + Name: System.Media.Duration -- PKEY_Media_Duration + Description: 100ns units, not milliseconds + + Type: UInt64 -- VT_UI8 + FormatID: (FMTID_AudioSummaryInformation) {64440490-4C8B-11D1-8B70-080036B11A03}, 3 (PIDASI_TIMELENGTH) + + + + + Name: System.Media.DVDID -- PKEY_Media_DVDID + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 15 (PIDMSI_DVDID) + + + + + Name: System.Media.EncodedBy -- PKEY_Media_EncodedBy + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 36 (PIDMSI_ENCODED_BY) + + + + + Name: System.Media.EncodingSettings -- PKEY_Media_EncodingSettings + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 37 (PIDMSI_ENCODING_SETTINGS) + + + + + Name: System.Media.FrameCount -- PKEY_Media_FrameCount + Description: Indicates the frame count for the image. + + Type: UInt32 -- VT_UI4 + FormatID: (PSGUID_IMAGESUMMARYINFORMATION) {6444048F-4C8B-11D1-8B70-080036B11A03}, 12 (PIDISI_FRAMECOUNT) + + + + + Name: System.Media.MCDI -- PKEY_Media_MCDI + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 16 (PIDMSI_MCDI) + + + + + Name: System.Media.MetadataContentProvider -- PKEY_Media_MetadataContentProvider + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 17 (PIDMSI_PROVIDER) + + + + + Name: System.Media.Producer -- PKEY_Media_Producer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 22 (PIDMSI_PRODUCER) + + + + + Name: System.Media.PromotionUrl -- PKEY_Media_PromotionUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 33 (PIDMSI_PROMOTION_URL) + + + + + Name: System.Media.ProtectionType -- PKEY_Media_ProtectionType + Description: If media is protected, how is it protected? + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 38 + + + + + Name: System.Media.ProviderRating -- PKEY_Media_ProviderRating + Description: Rating (0 - 99) supplied by metadata provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 39 + + + + + Name: System.Media.ProviderStyle -- PKEY_Media_ProviderStyle + Description: Style of music or video, supplied by metadata provider + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 40 + + + + + Name: System.Media.Publisher -- PKEY_Media_Publisher + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 30 (PIDMSI_PUBLISHER) + + + + + Name: System.Media.SubscriptionContentId -- PKEY_Media_SubscriptionContentId + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {9AEBAE7A-9644-487D-A92C-657585ED751A}, 100 + + + + + Name: System.Media.SubTitle -- PKEY_Media_SubTitle + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 38 (PIDSI_MUSIC_SUB_TITLE) + + + + + Name: System.Media.UniqueFileIdentifier -- PKEY_Media_UniqueFileIdentifier + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 35 (PIDMSI_UNIQUE_FILE_IDENTIFIER) + + + + + Name: System.Media.UserNoAutoInfo -- PKEY_Media_UserNoAutoInfo + Description: If true, do NOT alter this file's metadata. Set by user. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 41 + + + + + Name: System.Media.UserWebUrl -- PKEY_Media_UserWebUrl + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 34 (PIDMSI_USER_WEB_URL) + + + + + Name: System.Media.Writer -- PKEY_Media_Writer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 23 (PIDMSI_WRITER) + + + + + Name: System.Media.Year -- PKEY_Media_Year + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 5 (PIDSI_MUSIC_YEAR) + + + + + Message Properties + + + + + Name: System.Message.AttachmentContents -- PKEY_Message_AttachmentContents + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {3143BF7C-80A8-4854-8880-E2E40189BDD0}, 100 + + + + + Name: System.Message.AttachmentNames -- PKEY_Message_AttachmentNames + Description: The names of the attachments in a message + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 21 + + + + + Name: System.Message.BccAddress -- PKEY_Message_BccAddress + Description: Addresses in Bcc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 2 + + + + + Name: System.Message.BccName -- PKEY_Message_BccName + Description: person names in Bcc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 3 + + + + + Name: System.Message.CcAddress -- PKEY_Message_CcAddress + Description: Addresses in Cc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 4 + + + + + Name: System.Message.CcName -- PKEY_Message_CcName + Description: person names in Cc: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 5 + + + + + Name: System.Message.ConversationID -- PKEY_Message_ConversationID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DC8F80BD-AF1E-4289-85B6-3DFC1B493992}, 100 + + + + + Name: System.Message.ConversationIndex -- PKEY_Message_ConversationIndex + Description: + + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {DC8F80BD-AF1E-4289-85B6-3DFC1B493992}, 101 + + + + + Name: System.Message.DateReceived -- PKEY_Message_DateReceived + Description: Date and Time communication was received + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 20 + + + + + Name: System.Message.DateSent -- PKEY_Message_DateSent + Description: Date and Time communication was sent + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 19 + + + + + Name: System.Message.Flags -- PKEY_Message_Flags + Description: These are flags associated with email messages to know if a read receipt is pending, etc. + The values stored here by Outlook are defined for PR_MESSAGE_FLAGS on MSDN. + + Type: Int32 -- VT_I4 + FormatID: {A82D9EE7-CA67-4312-965E-226BCEA85023}, 100 + + + + + Name: System.Message.FromAddress -- PKEY_Message_FromAddress + Description: + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 13 + + + + + Name: System.Message.FromName -- PKEY_Message_FromName + Description: Address in from field as person name + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 14 + + + + + Name: System.Message.HasAttachments -- PKEY_Message_HasAttachments + Description: + + Type: Boolean -- VT_BOOL + FormatID: {9C1FCF74-2D97-41BA-B4AE-CB2E3661A6E4}, 8 + + + + + Name: System.Message.IsFwdOrReply -- PKEY_Message_IsFwdOrReply + Description: + Type: Int32 -- VT_I4 + FormatID: {9A9BC088-4F6D-469E-9919-E705412040F9}, 100 + + + + + Name: System.Message.MessageClass -- PKEY_Message_MessageClass + Description: What type of outlook msg this is (meeting, task, mail, etc.) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CD9ED458-08CE-418F-A70E-F912C7BB9C5C}, 103 + + + + + Name: System.Message.ProofInProgress -- PKEY_Message_ProofInProgress + Description: This property will be true if the message junk email proofing is still in progress. + + Type: Boolean -- VT_BOOL + FormatID: {9098F33C-9A7D-48A8-8DE5-2E1227A64E91}, 100 + + + + + Name: System.Message.SenderAddress -- PKEY_Message_SenderAddress + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0BE1C8E7-1981-4676-AE14-FDD78F05A6E7}, 100 + + + + + Name: System.Message.SenderName -- PKEY_Message_SenderName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0DA41CFA-D224-4A18-AE2F-596158DB4B3A}, 100 + + + + + Name: System.Message.Store -- PKEY_Message_Store + Description: The store (aka protocol handler) FILE, MAIL, OUTLOOKEXPRESS + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 15 + + + + + Name: System.Message.ToAddress -- PKEY_Message_ToAddress + Description: Addresses in To: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 16 + + + + + Name: System.Message.ToDoFlags -- PKEY_Message_ToDoFlags + Description: Flags associated with a message flagged to know if it's still active, if it was custom flagged, etc. + + Type: Int32 -- VT_I4 + FormatID: {1F856A9F-6900-4ABA-9505-2D5F1B4D66CB}, 100 + + + + + Name: System.Message.ToDoTitle -- PKEY_Message_ToDoTitle + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BCCC8A3C-8CEF-42E5-9B1C-C69079398BC7}, 100 + + + + + Name: System.Message.ToName -- PKEY_Message_ToName + Description: Person names in To: field + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {E3E0584C-B788-4A5A-BB20-7F5A44C9ACDD}, 17 + + + + + Music Properties + + + + + Name: System.Music.AlbumArtist -- PKEY_Music_AlbumArtist + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 13 (PIDSI_MUSIC_ALBUM_ARTIST) + + + + + Name: System.Music.AlbumID -- PKEY_Music_AlbumID + Description: Concatenation of System.Music.AlbumArtist and System.Music.AlbumTitle, suitable for indexing and display. + Used to differentiate albums with the same title from different artists. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 100 + + + + + Name: System.Music.AlbumTitle -- PKEY_Music_AlbumTitle + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 4 (PIDSI_MUSIC_ALBUM) + + + + + Name: System.Music.Artist -- PKEY_Music_Artist + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 2 (PIDSI_MUSIC_ARTIST) + + + + + Name: System.Music.BeatsPerMinute -- PKEY_Music_BeatsPerMinute + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 35 (PIDSI_MUSIC_BEATS_PER_MINUTE) + + + + + Name: System.Music.Composer -- PKEY_Music_Composer + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 19 (PIDMSI_COMPOSER) + + + + + Name: System.Music.Conductor -- PKEY_Music_Conductor + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 36 (PIDSI_MUSIC_CONDUCTOR) + + + + + Name: System.Music.ContentGroupDescription -- PKEY_Music_ContentGroupDescription + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 33 (PIDSI_MUSIC_CONTENT_GROUP_DESCRIPTION) + + + + + Name: System.Music.DisplayArtist -- PKEY_Music_DisplayArtist + Description: This property returns the best representation of Album Artist for a given music file + based upon AlbumArtist, ContributingArtist and compilation info. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FD122953-FA93-4EF7-92C3-04C946B2F7C8}, 100 + + + + + Name: System.Music.Genre -- PKEY_Music_Genre + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 11 (PIDSI_MUSIC_GENRE) + + + + + Name: System.Music.InitialKey -- PKEY_Music_InitialKey + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 34 (PIDSI_MUSIC_INITIAL_KEY) + + + + + Name: System.Music.IsCompilation -- PKEY_Music_IsCompilation + Description: Indicates whether the file is part of a compilation. + + Type: Boolean -- VT_BOOL + FormatID: {C449D5CB-9EA4-4809-82E8-AF9D59DED6D1}, 100 + + + + + Name: System.Music.Lyrics -- PKEY_Music_Lyrics + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 12 (PIDSI_MUSIC_LYRICS) + + + + + Name: System.Music.Mood -- PKEY_Music_Mood + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 39 (PIDSI_MUSIC_MOOD) + + + + + Name: System.Music.PartOfSet -- PKEY_Music_PartOfSet + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 37 (PIDSI_MUSIC_PART_OF_SET) + + + + + Name: System.Music.Period -- PKEY_Music_Period + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 31 (PIDMSI_PERIOD) + + + + + Name: System.Music.SynchronizedLyrics -- PKEY_Music_SynchronizedLyrics + Description: + Type: Blob -- VT_BLOB + FormatID: {6B223B6A-162E-4AA9-B39F-05D678FC6D77}, 100 + + + + + Name: System.Music.TrackNumber -- PKEY_Music_TrackNumber + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_MUSIC) {56A3372E-CE9C-11D2-9F0E-006097C686F6}, 7 (PIDSI_MUSIC_TRACK) + + + + + Note Properties + + + + + Name: System.Note.Color -- PKEY_Note_Color + Description: + Type: UInt16 -- VT_UI2 + FormatID: {4776CAFA-BCE4-4CB1-A23E-265E76D8EB11}, 100 + + + + + Name: System.Note.ColorText -- PKEY_Note_ColorText + Description: This is the user-friendly form of System.Note.Color. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {46B4E8DE-CDB2-440D-885C-1658EB65B914}, 100 + + + + + Photo Properties + + + + + Name: System.Photo.Aperture -- PKEY_Photo_Aperture + Description: PropertyTagExifAperture. Calculated from PKEY_Photo_ApertureNumerator and PKEY_Photo_ApertureDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37378 + + + + + Name: System.Photo.ApertureDenominator -- PKEY_Photo_ApertureDenominator + Description: Denominator of PKEY_Photo_Aperture + + Type: UInt32 -- VT_UI4 + FormatID: {E1A9A38B-6685-46BD-875E-570DC7AD7320}, 100 + + + + + Name: System.Photo.ApertureNumerator -- PKEY_Photo_ApertureNumerator + Description: Numerator of PKEY_Photo_Aperture + + Type: UInt32 -- VT_UI4 + FormatID: {0337ECEC-39FB-4581-A0BD-4C4CC51E9914}, 100 + + + + + Name: System.Photo.Brightness -- PKEY_Photo_Brightness + Description: This is the brightness of the photo. + + Calculated from PKEY_Photo_BrightnessNumerator and PKEY_Photo_BrightnessDenominator. + + The units are "APEX", normally in the range of -99.99 to 99.99. If the numerator of + the recorded value is FFFFFFFF.H, "Unknown" should be indicated. + + Type: Double -- VT_R8 + FormatID: {1A701BF6-478C-4361-83AB-3701BB053C58}, 100 (PropertyTagExifBrightness) + + + + + Name: System.Photo.BrightnessDenominator -- PKEY_Photo_BrightnessDenominator + Description: Denominator of PKEY_Photo_Brightness + + Type: UInt32 -- VT_UI4 + FormatID: {6EBE6946-2321-440A-90F0-C043EFD32476}, 100 + + + + + Name: System.Photo.BrightnessNumerator -- PKEY_Photo_BrightnessNumerator + Description: Numerator of PKEY_Photo_Brightness + + Type: UInt32 -- VT_UI4 + FormatID: {9E7D118F-B314-45A0-8CFB-D654B917C9E9}, 100 + + + + + Name: System.Photo.CameraManufacturer -- PKEY_Photo_CameraManufacturer + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 271 (PropertyTagEquipMake) + + + + + Name: System.Photo.CameraModel -- PKEY_Photo_CameraModel + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 272 (PropertyTagEquipModel) + + + + + Name: System.Photo.CameraSerialNumber -- PKEY_Photo_CameraSerialNumber + Description: Serial number of camera that produced this photo + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 273 + + + + + Name: System.Photo.Contrast -- PKEY_Photo_Contrast + Description: This indicates the direction of contrast processing applied by the camera + when the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {2A785BA9-8D23-4DED-82E6-60A350C86A10}, 100 + + + + + Name: System.Photo.ContrastText -- PKEY_Photo_ContrastText + Description: This is the user-friendly form of System.Photo.Contrast. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {59DDE9F2-5253-40EA-9A8B-479E96C6249A}, 100 + + + + + Name: System.Photo.DateTaken -- PKEY_Photo_DateTaken + Description: PropertyTagExifDTOrig + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 36867 + + + + + Name: System.Photo.DigitalZoom -- PKEY_Photo_DigitalZoom + Description: PropertyTagExifDigitalZoom. Calculated from PKEY_Photo_DigitalZoomNumerator and PKEY_Photo_DigitalZoomDenominator + + Type: Double -- VT_R8 + FormatID: {F85BF840-A925-4BC2-B0C4-8E36B598679E}, 100 + + + + + Name: System.Photo.DigitalZoomDenominator -- PKEY_Photo_DigitalZoomDenominator + Description: Denominator of PKEY_Photo_DigitalZoom + + Type: UInt32 -- VT_UI4 + FormatID: {745BAF0E-E5C1-4CFB-8A1B-D031A0A52393}, 100 + + + + + Name: System.Photo.DigitalZoomNumerator -- PKEY_Photo_DigitalZoomNumerator + Description: Numerator of PKEY_Photo_DigitalZoom + + Type: UInt32 -- VT_UI4 + FormatID: {16CBB924-6500-473B-A5BE-F1599BCBE413}, 100 + + + + + Name: System.Photo.Event -- PKEY_Photo_Event + Description: The event at which the photo was taken + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 18248 + + + + + Name: System.Photo.EXIFVersion -- PKEY_Photo_EXIFVersion + Description: The EXIF version. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D35F743A-EB2E-47F2-A286-844132CB1427}, 100 + + + + + Name: System.Photo.ExposureBias -- PKEY_Photo_ExposureBias + Description: PropertyTagExifExposureBias. Calculated from PKEY_Photo_ExposureBiasNumerator and PKEY_Photo_ExposureBiasDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37380 + + + + + Name: System.Photo.ExposureBiasDenominator -- PKEY_Photo_ExposureBiasDenominator + Description: Denominator of PKEY_Photo_ExposureBias + + Type: Int32 -- VT_I4 + FormatID: {AB205E50-04B7-461C-A18C-2F233836E627}, 100 + + + + + Name: System.Photo.ExposureBiasNumerator -- PKEY_Photo_ExposureBiasNumerator + Description: Numerator of PKEY_Photo_ExposureBias + + Type: Int32 -- VT_I4 + FormatID: {738BF284-1D87-420B-92CF-5834BF6EF9ED}, 100 + + + + + Name: System.Photo.ExposureIndex -- PKEY_Photo_ExposureIndex + Description: PropertyTagExifExposureIndex. Calculated from PKEY_Photo_ExposureIndexNumerator and PKEY_Photo_ExposureIndexDenominator + + Type: Double -- VT_R8 + FormatID: {967B5AF8-995A-46ED-9E11-35B3C5B9782D}, 100 + + + + + Name: System.Photo.ExposureIndexDenominator -- PKEY_Photo_ExposureIndexDenominator + Description: Denominator of PKEY_Photo_ExposureIndex + + Type: UInt32 -- VT_UI4 + FormatID: {93112F89-C28B-492F-8A9D-4BE2062CEE8A}, 100 + + + + + Name: System.Photo.ExposureIndexNumerator -- PKEY_Photo_ExposureIndexNumerator + Description: Numerator of PKEY_Photo_ExposureIndex + + Type: UInt32 -- VT_UI4 + FormatID: {CDEDCF30-8919-44DF-8F4C-4EB2FFDB8D89}, 100 + + + + + Name: System.Photo.ExposureProgram -- PKEY_Photo_ExposureProgram + Description: + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 34850 (PropertyTagExifExposureProg) + + + + + Name: System.Photo.ExposureProgramText -- PKEY_Photo_ExposureProgramText + Description: This is the user-friendly form of System.Photo.ExposureProgram. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FEC690B7-5F30-4646-AE47-4CAAFBA884A3}, 100 + + + + + Name: System.Photo.ExposureTime -- PKEY_Photo_ExposureTime + Description: PropertyTagExifExposureTime. Calculated from PKEY_Photo_ExposureTimeNumerator and PKEY_Photo_ExposureTimeDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 33434 + + + + + Name: System.Photo.ExposureTimeDenominator -- PKEY_Photo_ExposureTimeDenominator + Description: Denominator of PKEY_Photo_ExposureTime + + Type: UInt32 -- VT_UI4 + FormatID: {55E98597-AD16-42E0-B624-21599A199838}, 100 + + + + + Name: System.Photo.ExposureTimeNumerator -- PKEY_Photo_ExposureTimeNumerator + Description: Numerator of PKEY_Photo_ExposureTime + + Type: UInt32 -- VT_UI4 + FormatID: {257E44E2-9031-4323-AC38-85C552871B2E}, 100 + + + + + Name: System.Photo.Flash -- PKEY_Photo_Flash + Description: PropertyTagExifFlash + + Type: Byte -- VT_UI1 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37385 + + + + + Name: System.Photo.FlashEnergy -- PKEY_Photo_FlashEnergy + Description: PropertyTagExifFlashEnergy. Calculated from PKEY_Photo_FlashEnergyNumerator and PKEY_Photo_FlashEnergyDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 41483 + + + + + Name: System.Photo.FlashEnergyDenominator -- PKEY_Photo_FlashEnergyDenominator + Description: Denominator of PKEY_Photo_FlashEnergy + + Type: UInt32 -- VT_UI4 + FormatID: {D7B61C70-6323-49CD-A5FC-C84277162C97}, 100 + + + + + Name: System.Photo.FlashEnergyNumerator -- PKEY_Photo_FlashEnergyNumerator + Description: Numerator of PKEY_Photo_FlashEnergy + + Type: UInt32 -- VT_UI4 + FormatID: {FCAD3D3D-0858-400F-AAA3-2F66CCE2A6BC}, 100 + + + + + Name: System.Photo.FlashManufacturer -- PKEY_Photo_FlashManufacturer + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {AABAF6C9-E0C5-4719-8585-57B103E584FE}, 100 + + + + + Name: System.Photo.FlashModel -- PKEY_Photo_FlashModel + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {FE83BB35-4D1A-42E2-916B-06F3E1AF719E}, 100 + + + + + Name: System.Photo.FlashText -- PKEY_Photo_FlashText + Description: This is the user-friendly form of System.Photo.Flash. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6B8B68F6-200B-47EA-8D25-D8050F57339F}, 100 + + + + + Name: System.Photo.FNumber -- PKEY_Photo_FNumber + Description: PropertyTagExifFNumber. Calculated from PKEY_Photo_FNumberNumerator and PKEY_Photo_FNumberDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 33437 + + + + + Name: System.Photo.FNumberDenominator -- PKEY_Photo_FNumberDenominator + Description: Denominator of PKEY_Photo_FNumber + + Type: UInt32 -- VT_UI4 + FormatID: {E92A2496-223B-4463-A4E3-30EABBA79D80}, 100 + + + + + Name: System.Photo.FNumberNumerator -- PKEY_Photo_FNumberNumerator + Description: Numerator of PKEY_Photo_FNumber + + Type: UInt32 -- VT_UI4 + FormatID: {1B97738A-FDFC-462F-9D93-1957E08BE90C}, 100 + + + + + Name: System.Photo.FocalLength -- PKEY_Photo_FocalLength + Description: PropertyTagExifFocalLength. Calculated from PKEY_Photo_FocalLengthNumerator and PKEY_Photo_FocalLengthDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37386 + + + + + Name: System.Photo.FocalLengthDenominator -- PKEY_Photo_FocalLengthDenominator + Description: Denominator of PKEY_Photo_FocalLength + + Type: UInt32 -- VT_UI4 + FormatID: {305BC615-DCA1-44A5-9FD4-10C0BA79412E}, 100 + + + + + Name: System.Photo.FocalLengthInFilm -- PKEY_Photo_FocalLengthInFilm + Description: + Type: UInt16 -- VT_UI2 + FormatID: {A0E74609-B84D-4F49-B860-462BD9971F98}, 100 + + + + + Name: System.Photo.FocalLengthNumerator -- PKEY_Photo_FocalLengthNumerator + Description: Numerator of PKEY_Photo_FocalLength + + Type: UInt32 -- VT_UI4 + FormatID: {776B6B3B-1E3D-4B0C-9A0E-8FBAF2A8492A}, 100 + + + + + Name: System.Photo.FocalPlaneXResolution -- PKEY_Photo_FocalPlaneXResolution + Description: PropertyTagExifFocalXRes. Calculated from PKEY_Photo_FocalPlaneXResolutionNumerator and + PKEY_Photo_FocalPlaneXResolutionDenominator. + + Type: Double -- VT_R8 + FormatID: {CFC08D97-C6F7-4484-89DD-EBEF4356FE76}, 100 + + + + + Name: System.Photo.FocalPlaneXResolutionDenominator -- PKEY_Photo_FocalPlaneXResolutionDenominator + Description: Denominator of PKEY_Photo_FocalPlaneXResolution + + Type: UInt32 -- VT_UI4 + FormatID: {0933F3F5-4786-4F46-A8E8-D64DD37FA521}, 100 + + + + + Name: System.Photo.FocalPlaneXResolutionNumerator -- PKEY_Photo_FocalPlaneXResolutionNumerator + Description: Numerator of PKEY_Photo_FocalPlaneXResolution + + Type: UInt32 -- VT_UI4 + FormatID: {DCCB10AF-B4E2-4B88-95F9-031B4D5AB490}, 100 + + + + + Name: System.Photo.FocalPlaneYResolution -- PKEY_Photo_FocalPlaneYResolution + Description: PropertyTagExifFocalYRes. Calculated from PKEY_Photo_FocalPlaneYResolutionNumerator and + PKEY_Photo_FocalPlaneYResolutionDenominator. + + Type: Double -- VT_R8 + FormatID: {4FFFE4D0-914F-4AC4-8D6F-C9C61DE169B1}, 100 + + + + + Name: System.Photo.FocalPlaneYResolutionDenominator -- PKEY_Photo_FocalPlaneYResolutionDenominator + Description: Denominator of PKEY_Photo_FocalPlaneYResolution + + Type: UInt32 -- VT_UI4 + FormatID: {1D6179A6-A876-4031-B013-3347B2B64DC8}, 100 + + + + + Name: System.Photo.FocalPlaneYResolutionNumerator -- PKEY_Photo_FocalPlaneYResolutionNumerator + Description: Numerator of PKEY_Photo_FocalPlaneYResolution + + Type: UInt32 -- VT_UI4 + FormatID: {A2E541C5-4440-4BA8-867E-75CFC06828CD}, 100 + + + + + Name: System.Photo.GainControl -- PKEY_Photo_GainControl + Description: This indicates the degree of overall image gain adjustment. + + Calculated from PKEY_Photo_GainControlNumerator and PKEY_Photo_GainControlDenominator. + + Type: Double -- VT_R8 + FormatID: {FA304789-00C7-4D80-904A-1E4DCC7265AA}, 100 (PropertyTagExifGainControl) + + + + + Name: System.Photo.GainControlDenominator -- PKEY_Photo_GainControlDenominator + Description: Denominator of PKEY_Photo_GainControl + + Type: UInt32 -- VT_UI4 + FormatID: {42864DFD-9DA4-4F77-BDED-4AAD7B256735}, 100 + + + + + Name: System.Photo.GainControlNumerator -- PKEY_Photo_GainControlNumerator + Description: Numerator of PKEY_Photo_GainControl + + Type: UInt32 -- VT_UI4 + FormatID: {8E8ECF7C-B7B8-4EB8-A63F-0EE715C96F9E}, 100 + + + + + Name: System.Photo.GainControlText -- PKEY_Photo_GainControlText + Description: This is the user-friendly form of System.Photo.GainControl. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C06238B2-0BF9-4279-A723-25856715CB9D}, 100 + + + + + Name: System.Photo.ISOSpeed -- PKEY_Photo_ISOSpeed + Description: PropertyTagExifISOSpeed + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 34855 + + + + + Name: System.Photo.LensManufacturer -- PKEY_Photo_LensManufacturer + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E6DDCAF7-29C5-4F0A-9A68-D19412EC7090}, 100 + + + + + Name: System.Photo.LensModel -- PKEY_Photo_LensModel + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {E1277516-2B5F-4869-89B1-2E585BD38B7A}, 100 + + + + + Name: System.Photo.LightSource -- PKEY_Photo_LightSource + Description: PropertyTagExifLightSource + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37384 + + + + + Name: System.Photo.MakerNote -- PKEY_Photo_MakerNote + Description: + Type: Buffer -- VT_VECTOR | VT_UI1 (For variants: VT_ARRAY | VT_UI1) + FormatID: {FA303353-B659-4052-85E9-BCAC79549B84}, 100 + + + + + Name: System.Photo.MakerNoteOffset -- PKEY_Photo_MakerNoteOffset + Description: + Type: UInt64 -- VT_UI8 + FormatID: {813F4124-34E6-4D17-AB3E-6B1F3C2247A1}, 100 + + + + + Name: System.Photo.MaxAperture -- PKEY_Photo_MaxAperture + Description: Calculated from PKEY_Photo_MaxApertureNumerator and PKEY_Photo_MaxApertureDenominator + + Type: Double -- VT_R8 + FormatID: {08F6D7C2-E3F2-44FC-AF1E-5AA5C81A2D3E}, 100 + + + + + Name: System.Photo.MaxApertureDenominator -- PKEY_Photo_MaxApertureDenominator + Description: Denominator of PKEY_Photo_MaxAperture + + Type: UInt32 -- VT_UI4 + FormatID: {C77724D4-601F-46C5-9B89-C53F93BCEB77}, 100 + + + + + Name: System.Photo.MaxApertureNumerator -- PKEY_Photo_MaxApertureNumerator + Description: Numerator of PKEY_Photo_MaxAperture + + Type: UInt32 -- VT_UI4 + FormatID: {C107E191-A459-44C5-9AE6-B952AD4B906D}, 100 + + + + + Name: System.Photo.MeteringMode -- PKEY_Photo_MeteringMode + Description: PropertyTagExifMeteringMode + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37383 + + + + + Name: System.Photo.MeteringModeText -- PKEY_Photo_MeteringModeText + Description: This is the user-friendly form of System.Photo.MeteringMode. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {F628FD8C-7BA8-465A-A65B-C5AA79263A9E}, 100 + + + + + Name: System.Photo.Orientation -- PKEY_Photo_Orientation + Description: This is the image orientation viewed in terms of rows and columns. + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 274 (PropertyTagOrientation) + + + + + Name: System.Photo.OrientationText -- PKEY_Photo_OrientationText + Description: This is the user-friendly form of System.Photo.Orientation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A9EA193C-C511-498A-A06B-58E2776DCC28}, 100 + + + + + Name: System.Photo.PeopleNames -- PKEY_Photo_PeopleNames + Description: The people tags on an image. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: {E8309B6E-084C-49B4-B1FC-90A80331B638}, 100 + + + + + Name: System.Photo.PhotometricInterpretation -- PKEY_Photo_PhotometricInterpretation + Description: This is the pixel composition. In JPEG compressed data, a JPEG marker is used + instead of this property. + + Type: UInt16 -- VT_UI2 + FormatID: {341796F1-1DF9-4B1C-A564-91BDEFA43877}, 100 + + + + + Name: System.Photo.PhotometricInterpretationText -- PKEY_Photo_PhotometricInterpretationText + Description: This is the user-friendly form of System.Photo.PhotometricInterpretation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {821437D6-9EAB-4765-A589-3B1CBBD22A61}, 100 + + + + + Name: System.Photo.ProgramMode -- PKEY_Photo_ProgramMode + Description: This is the class of the program used by the camera to set exposure when the + picture is taken. + + Type: UInt32 -- VT_UI4 + FormatID: {6D217F6D-3F6A-4825-B470-5F03CA2FBE9B}, 100 + + + + + Name: System.Photo.ProgramModeText -- PKEY_Photo_ProgramModeText + Description: This is the user-friendly form of System.Photo.ProgramMode. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7FE3AA27-2648-42F3-89B0-454E5CB150C3}, 100 + + + + + Name: System.Photo.RelatedSoundFile -- PKEY_Photo_RelatedSoundFile + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {318A6B45-087F-4DC2-B8CC-05359551FC9E}, 100 + + + + + Name: System.Photo.Saturation -- PKEY_Photo_Saturation + Description: This indicates the direction of saturation processing applied by the camera when + the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {49237325-A95A-4F67-B211-816B2D45D2E0}, 100 + + + + + Name: System.Photo.SaturationText -- PKEY_Photo_SaturationText + Description: This is the user-friendly form of System.Photo.Saturation. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {61478C08-B600-4A84-BBE4-E99C45F0A072}, 100 + + + + + Name: System.Photo.Sharpness -- PKEY_Photo_Sharpness + Description: This indicates the direction of sharpness processing applied by the camera when + the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {FC6976DB-8349-4970-AE97-B3C5316A08F0}, 100 + + + + + Name: System.Photo.SharpnessText -- PKEY_Photo_SharpnessText + Description: This is the user-friendly form of System.Photo.Sharpness. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {51EC3F47-DD50-421D-8769-334F50424B1E}, 100 + + + + + Name: System.Photo.ShutterSpeed -- PKEY_Photo_ShutterSpeed + Description: PropertyTagExifShutterSpeed. Calculated from PKEY_Photo_ShutterSpeedNumerator and PKEY_Photo_ShutterSpeedDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37377 + + + + + Name: System.Photo.ShutterSpeedDenominator -- PKEY_Photo_ShutterSpeedDenominator + Description: Denominator of PKEY_Photo_ShutterSpeed + + Type: Int32 -- VT_I4 + FormatID: {E13D8975-81C7-4948-AE3F-37CAE11E8FF7}, 100 + + + + + Name: System.Photo.ShutterSpeedNumerator -- PKEY_Photo_ShutterSpeedNumerator + Description: Numerator of PKEY_Photo_ShutterSpeed + + Type: Int32 -- VT_I4 + FormatID: {16EA4042-D6F4-4BCA-8349-7C78D30FB333}, 100 + + + + + Name: System.Photo.SubjectDistance -- PKEY_Photo_SubjectDistance + Description: PropertyTagExifSubjectDist. Calculated from PKEY_Photo_SubjectDistanceNumerator and PKEY_Photo_SubjectDistanceDenominator + + Type: Double -- VT_R8 + FormatID: (FMTID_ImageProperties) {14B81DA1-0135-4D31-96D9-6CBFC9671A99}, 37382 + + + + + Name: System.Photo.SubjectDistanceDenominator -- PKEY_Photo_SubjectDistanceDenominator + Description: Denominator of PKEY_Photo_SubjectDistance + + Type: UInt32 -- VT_UI4 + FormatID: {0C840A88-B043-466D-9766-D4B26DA3FA77}, 100 + + + + + Name: System.Photo.SubjectDistanceNumerator -- PKEY_Photo_SubjectDistanceNumerator + Description: Numerator of PKEY_Photo_SubjectDistance + + Type: UInt32 -- VT_UI4 + FormatID: {8AF4961C-F526-43E5-AA81-DB768219178D}, 100 + + + + + Name: System.Photo.TagViewAggregate -- PKEY_Photo_TagViewAggregate + Description: A read-only aggregation of tag-like properties for use in building views. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) Legacy code may treat this as VT_LPSTR. + FormatID: {B812F15D-C2D8-4BBF-BACD-79744346113F}, 100 + + + + + Name: System.Photo.TranscodedForSync -- PKEY_Photo_TranscodedForSync + Description: + Type: Boolean -- VT_BOOL + FormatID: {9A8EBB75-6458-4E82-BACB-35C0095B03BB}, 100 + + + + + Name: System.Photo.WhiteBalance -- PKEY_Photo_WhiteBalance + Description: This indicates the white balance mode set when the image was shot. + + Type: UInt32 -- VT_UI4 + FormatID: {EE3D3D8A-5381-4CFA-B13B-AAF66B5F4EC9}, 100 + + + + + Name: System.Photo.WhiteBalanceText -- PKEY_Photo_WhiteBalanceText + Description: This is the user-friendly form of System.Photo.WhiteBalance. Not intended to be parsed + programmatically. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6336B95E-C7A7-426D-86FD-7AE3D39C84B4}, 100 + + + + + PropGroup Properties + + + + + Name: System.PropGroup.Advanced -- PKEY_PropGroup_Advanced + Description: + Type: Null -- VT_NULL + FormatID: {900A403B-097B-4B95-8AE2-071FDAEEB118}, 100 + + + + + Name: System.PropGroup.Audio -- PKEY_PropGroup_Audio + Description: + Type: Null -- VT_NULL + FormatID: {2804D469-788F-48AA-8570-71B9C187E138}, 100 + + + + + Name: System.PropGroup.Calendar -- PKEY_PropGroup_Calendar + Description: + Type: Null -- VT_NULL + FormatID: {9973D2B5-BFD8-438A-BA94-5349B293181A}, 100 + + + + + Name: System.PropGroup.Camera -- PKEY_PropGroup_Camera + Description: + Type: Null -- VT_NULL + FormatID: {DE00DE32-547E-4981-AD4B-542F2E9007D8}, 100 + + + + + Name: System.PropGroup.Contact -- PKEY_PropGroup_Contact + Description: + Type: Null -- VT_NULL + FormatID: {DF975FD3-250A-4004-858F-34E29A3E37AA}, 100 + + + + + Name: System.PropGroup.Content -- PKEY_PropGroup_Content + Description: + Type: Null -- VT_NULL + FormatID: {D0DAB0BA-368A-4050-A882-6C010FD19A4F}, 100 + + + + + Name: System.PropGroup.Description -- PKEY_PropGroup_Description + Description: + Type: Null -- VT_NULL + FormatID: {8969B275-9475-4E00-A887-FF93B8B41E44}, 100 + + + + + Name: System.PropGroup.FileSystem -- PKEY_PropGroup_FileSystem + Description: + Type: Null -- VT_NULL + FormatID: {E3A7D2C1-80FC-4B40-8F34-30EA111BDC2E}, 100 + + + + + Name: System.PropGroup.General -- PKEY_PropGroup_General + Description: + Type: Null -- VT_NULL + FormatID: {CC301630-B192-4C22-B372-9F4C6D338E07}, 100 + + + + + Name: System.PropGroup.GPS -- PKEY_PropGroup_GPS + Description: + Type: Null -- VT_NULL + FormatID: {F3713ADA-90E3-4E11-AAE5-FDC17685B9BE}, 100 + + + + + Name: System.PropGroup.Image -- PKEY_PropGroup_Image + Description: + Type: Null -- VT_NULL + FormatID: {E3690A87-0FA8-4A2A-9A9F-FCE8827055AC}, 100 + + + + + Name: System.PropGroup.Media -- PKEY_PropGroup_Media + Description: + Type: Null -- VT_NULL + FormatID: {61872CF7-6B5E-4B4B-AC2D-59DA84459248}, 100 + + + + + Name: System.PropGroup.MediaAdvanced -- PKEY_PropGroup_MediaAdvanced + Description: + Type: Null -- VT_NULL + FormatID: {8859A284-DE7E-4642-99BA-D431D044B1EC}, 100 + + + + + Name: System.PropGroup.Message -- PKEY_PropGroup_Message + Description: + Type: Null -- VT_NULL + FormatID: {7FD7259D-16B4-4135-9F97-7C96ECD2FA9E}, 100 + + + + + Name: System.PropGroup.Music -- PKEY_PropGroup_Music + Description: + Type: Null -- VT_NULL + FormatID: {68DD6094-7216-40F1-A029-43FE7127043F}, 100 + + + + + Name: System.PropGroup.Origin -- PKEY_PropGroup_Origin + Description: + Type: Null -- VT_NULL + FormatID: {2598D2FB-5569-4367-95DF-5CD3A177E1A5}, 100 + + + + + Name: System.PropGroup.PhotoAdvanced -- PKEY_PropGroup_PhotoAdvanced + Description: + Type: Null -- VT_NULL + FormatID: {0CB2BF5A-9EE7-4A86-8222-F01E07FDADAF}, 100 + + + + + Name: System.PropGroup.RecordedTV -- PKEY_PropGroup_RecordedTV + Description: + Type: Null -- VT_NULL + FormatID: {E7B33238-6584-4170-A5C0-AC25EFD9DA56}, 100 + + + + + Name: System.PropGroup.Video -- PKEY_PropGroup_Video + Description: + Type: Null -- VT_NULL + FormatID: {BEBE0920-7671-4C54-A3EB-49FDDFC191EE}, 100 + + + + + PropList Properties + + + + + Name: System.PropList.ConflictPrompt -- PKEY_PropList_ConflictPrompt + Description: The list of properties to show in the file operation conflict resolution dialog. Properties with empty + values will not be displayed. Register under the regvalue of "ConflictPrompt". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 11 + + + + + Name: System.PropList.ContentViewModeForBrowse -- PKEY_PropList_ContentViewModeForBrowse + Description: The list of properties to show in the content view mode of an item in the context of browsing. + Register the regvalue under the name of "ContentViewModeForBrowse". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 13 + + + + + Name: System.PropList.ContentViewModeForSearch -- PKEY_PropList_ContentViewModeForSearch + Description: The list of properties to show in the content view mode of an item in the context of searching. + Register the regvalue under the name of "ContentViewModeForSearch". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 14 + + + + + Name: System.PropList.ExtendedTileInfo -- PKEY_PropList_ExtendedTileInfo + Description: The list of properties to show in the listview on extended tiles. Register under the regvalue of + "ExtendedTileInfo". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 9 + + + + + Name: System.PropList.FileOperationPrompt -- PKEY_PropList_FileOperationPrompt + Description: The list of properties to show in the file operation confirmation dialog. Properties with empty values + will not be displayed. If this list is not specified, then the InfoTip property list is used instead. + Register under the regvalue of "FileOperationPrompt". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 10 + + + + + Name: System.PropList.FullDetails -- PKEY_PropList_FullDetails + Description: The list of all the properties to show in the details page. Property groups can be included in this list + in order to more easily organize the UI. Register under the regvalue of "FullDetails". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 2 + + + + + Name: System.PropList.InfoTip -- PKEY_PropList_InfoTip + Description: The list of properties to show in the infotip. Properties with empty values will not be displayed. Register + under the regvalue of "InfoTip". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 4 (PID_PROPLIST_INFOTIP) + + + + + Name: System.PropList.NonPersonal -- PKEY_PropList_NonPersonal + Description: The list of properties that are considered 'non-personal'. When told to remove all non-personal properties + from a given file, the system will leave these particular properties untouched. Register under the regvalue + of "NonPersonal". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {49D1091F-082E-493F-B23F-D2308AA9668C}, 100 + + + + + Name: System.PropList.PreviewDetails -- PKEY_PropList_PreviewDetails + Description: The list of properties to display in the preview pane. Register under the regvalue of "PreviewDetails". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 8 + + + + + Name: System.PropList.PreviewTitle -- PKEY_PropList_PreviewTitle + Description: The one or two properties to display in the preview pane title section. The optional second property is + displayed as a subtitle. Register under the regvalue of "PreviewTitle". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 6 + + + + + Name: System.PropList.QuickTip -- PKEY_PropList_QuickTip + Description: The list of properties to show in the infotip when the item is on a slow network. Properties with empty + values will not be displayed. Register under the regvalue of "QuickTip". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 5 (PID_PROPLIST_QUICKTIP) + + + + + Name: System.PropList.TileInfo -- PKEY_PropList_TileInfo + Description: The list of properties to show in the listview on tiles. Register under the regvalue of "TileInfo". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {C9944A21-A406-48FE-8225-AEC7E24C211B}, 3 (PID_PROPLIST_TILEINFO) + + + + + Name: System.PropList.XPDetailsPanel -- PKEY_PropList_XPDetailsPanel + Description: The list of properties to display in the XP webview details panel. Obsolete. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_WebView) {F2275480-F782-4291-BD94-F13693513AEC}, 0 (PID_DISPLAY_PROPERTIES) + + + + + RecordedTV Properties + + + + + Name: System.RecordedTV.ChannelNumber -- PKEY_RecordedTV_ChannelNumber + Description: Example: 42 + + Type: UInt32 -- VT_UI4 + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 7 + + + + + Name: System.RecordedTV.Credits -- PKEY_RecordedTV_Credits + Description: Example: "Don Messick/Frank Welker/Casey Kasem/Heather North/Nicole Jaffe;;;" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 4 + + + + + Name: System.RecordedTV.DateContentExpires -- PKEY_RecordedTV_DateContentExpires + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 15 + + + + + Name: System.RecordedTV.EpisodeName -- PKEY_RecordedTV_EpisodeName + Description: Example: "Nowhere to Hyde" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 2 + + + + + Name: System.RecordedTV.IsATSCContent -- PKEY_RecordedTV_IsATSCContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 16 + + + + + Name: System.RecordedTV.IsClosedCaptioningAvailable -- PKEY_RecordedTV_IsClosedCaptioningAvailable + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 12 + + + + + Name: System.RecordedTV.IsDTVContent -- PKEY_RecordedTV_IsDTVContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 17 + + + + + Name: System.RecordedTV.IsHDContent -- PKEY_RecordedTV_IsHDContent + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 18 + + + + + Name: System.RecordedTV.IsRepeatBroadcast -- PKEY_RecordedTV_IsRepeatBroadcast + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 13 + + + + + Name: System.RecordedTV.IsSAP -- PKEY_RecordedTV_IsSAP + Description: + Type: Boolean -- VT_BOOL + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 14 + + + + + Name: System.RecordedTV.NetworkAffiliation -- PKEY_RecordedTV_NetworkAffiliation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {2C53C813-FB63-4E22-A1AB-0B331CA1E273}, 100 + + + + + Name: System.RecordedTV.OriginalBroadcastDate -- PKEY_RecordedTV_OriginalBroadcastDate + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {4684FE97-8765-4842-9C13-F006447B178C}, 100 + + + + + Name: System.RecordedTV.ProgramDescription -- PKEY_RecordedTV_ProgramDescription + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 3 + + + + + Name: System.RecordedTV.RecordingTime -- PKEY_RecordedTV_RecordingTime + Description: + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {A5477F61-7A82-4ECA-9DDE-98B69B2479B3}, 100 + + + + + Name: System.RecordedTV.StationCallSign -- PKEY_RecordedTV_StationCallSign + Description: Example: "TOONP" + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {6D748DE2-8D38-4CC3-AC60-F009B057C557}, 5 + + + + + Name: System.RecordedTV.StationName -- PKEY_RecordedTV_StationName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {1B5439E7-EBA1-4AF8-BDD7-7AF1D4549493}, 100 + + + + + Search Properties + + + + + Name: System.Search.AutoSummary -- PKEY_Search_AutoSummary + Description: General Summary of the document. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 2 + + + + + Name: System.Search.ContainerHash -- PKEY_Search_ContainerHash + Description: Hash code used to identify attachments to be deleted based on a common container url + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {BCEEE283-35DF-4D53-826A-F36A3EEFC6BE}, 100 + + + + + Name: System.Search.Contents -- PKEY_Search_Contents + Description: The contents of the item. This property is for query restrictions only; it cannot be retrieved in a + query result. The Indexing Service friendly name is 'contents'. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Storage) {B725F130-47EF-101A-A5F1-02608C9EEBAC}, 19 (PID_STG_CONTENTS) + + + + + Name: System.Search.EntryID -- PKEY_Search_EntryID + Description: The entry ID for an item within a given catalog in the Windows Search Index. + This value may be recycled, and therefore is not considered unique over time. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 5 (PROPID_QUERY_WORKID) + + + + + Name: System.Search.ExtendedProperties -- PKEY_Search_ExtendedProperties + Description: + Type: Blob -- VT_BLOB + FormatID: {7B03B546-FA4F-4A52-A2FE-03D5311E5865}, 100 + + + + + Name: System.Search.GatherTime -- PKEY_Search_GatherTime + Description: The Datetime that the Windows Search Gatherer process last pushed properties of this document to the Windows Search Gatherer Plugins. + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {0B63E350-9CCC-11D0-BCDB-00805FCCCE04}, 8 + + + + + Name: System.Search.HitCount -- PKEY_Search_HitCount + Description: When using CONTAINS over the Windows Search Index, this is the number of matches of the term. + If there are multiple CONTAINS, an AND computes the min number of hits and an OR the max number of hits. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 4 (PROPID_QUERY_HITCOUNT) + + + + + Name: System.Search.IsClosedDirectory -- PKEY_Search_IsClosedDirectory + Description: If this property is emitted with a value of TRUE, then it indicates that this URL's last modified time applies to all of it's children, and if this URL is deleted then all of it's children are deleted as well. For example, this would be emitted as TRUE when emitting the URL of an email so that all attachments are tied to the last modified time of that email. + + Type: Boolean -- VT_BOOL + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 23 + + + + + Name: System.Search.IsFullyContained -- PKEY_Search_IsFullyContained + Description: Any child URL of a URL which has System.Search.IsClosedDirectory=TRUE must emit System.Search.IsFullyContained=TRUE. This ensures that the URL is not deleted at the end of a crawl because it hasn't been visited (which is the normal mechanism for detecting deletes). For example an email attachment would emit this property + + Type: Boolean -- VT_BOOL + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 24 + + + + + Name: System.Search.QueryFocusedSummary -- PKEY_Search_QueryFocusedSummary + Description: Query Focused Summary of the document. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 3 + + + + + Name: System.Search.QueryFocusedSummaryWithFallback -- PKEY_Search_QueryFocusedSummaryWithFallback + Description: Query Focused Summary of the document, if none is available it returns the AutoSummary. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {560C36C0-503A-11CF-BAA1-00004C752A9A}, 4 + + + + + Name: System.Search.Rank -- PKEY_Search_Rank + Description: Relevance rank of row. Ranges from 0-1000. Larger numbers = better matches. Query-time only. + + Type: Int32 -- VT_I4 + FormatID: (FMTID_Query) {49691C90-7E17-101A-A91C-08002B2ECDA9}, 3 (PROPID_QUERY_RANK) + + + + + Name: System.Search.Store -- PKEY_Search_Store + Description: The identifier for the protocol handler that produced this item. (E.g. MAPI, CSC, FILE etc.) + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {A06992B3-8CAF-4ED7-A547-B259E32AC9FC}, 100 + + + + + Name: System.Search.UrlToIndex -- PKEY_Search_UrlToIndex + Description: This property should be emitted by a container IFilter for each child URL within the container. The children will eventually be crawled by the indexer if they are within scope. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 2 + + + + + Name: System.Search.UrlToIndexWithModificationTime -- PKEY_Search_UrlToIndexWithModificationTime + Description: This property is the same as System.Search.UrlToIndex except that it includes the time the URL was last modified. This is an optimization for the indexer as it doesn't have to call back into the protocol handler to ask for this information to determine if the content needs to be indexed again. The property is a vector with two elements, a VT_LPWSTR with the URL and a VT_FILETIME for the last modified time. + + Type: Multivalue Any -- VT_VECTOR | VT_NULL (For variants: VT_ARRAY | VT_NULL) + FormatID: {0B63E343-9CCC-11D0-BCDB-00805FCCCE04}, 12 + + + + + Shell Properties + + + + + Name: System.Shell.OmitFromView -- PKEY_Shell_OmitFromView + Description: Set this to a string value of 'True' to omit this item from shell views + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {DE35258C-C695-4CBC-B982-38B0AD24CED0}, 2 + + + + + Name: System.Shell.SFGAOFlagsStrings -- PKEY_Shell_SFGAOFlagsStrings + Description: Expresses the SFGAO flags as string values and is used as a query optimization. + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: {D6942081-D53B-443D-AD47-5E059D9CD27A}, 2 + + + + + Software Properties + + + + + Name: System.Software.DateLastUsed -- PKEY_Software_DateLastUsed + Description: + + Type: DateTime -- VT_FILETIME (For variants: VT_DATE) + FormatID: {841E4F90-FF59-4D16-8947-E81BBFFAB36D}, 16 + + + + + Name: System.Software.ProductName -- PKEY_Software_ProductName + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (PSFMTID_VERSION) {0CEF7D53-FA64-11D1-A203-0000F81FEDEE}, 7 + + + + + Sync Properties + + + + + Name: System.Sync.Comments -- PKEY_Sync_Comments + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 13 + + + + + Name: System.Sync.ConflictDescription -- PKEY_Sync_ConflictDescription + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 4 + + + + + Name: System.Sync.ConflictFirstLocation -- PKEY_Sync_ConflictFirstLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 6 + + + + + Name: System.Sync.ConflictSecondLocation -- PKEY_Sync_ConflictSecondLocation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 7 + + + + + Name: System.Sync.HandlerCollectionID -- PKEY_Sync_HandlerCollectionID + Description: + Type: Guid -- VT_CLSID + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 2 + + + + + Name: System.Sync.HandlerID -- PKEY_Sync_HandlerID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 3 + + + + + Name: System.Sync.HandlerName -- PKEY_Sync_HandlerName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 2 + + + + + Name: System.Sync.HandlerType -- PKEY_Sync_HandlerType + Description: + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 8 + + + + + Name: System.Sync.HandlerTypeLabel -- PKEY_Sync_HandlerTypeLabel + Description: + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 9 + + + + + Name: System.Sync.ItemID -- PKEY_Sync_ItemID + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 6 + + + + + Name: System.Sync.ItemName -- PKEY_Sync_ItemName + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {CE50C159-2FB8-41FD-BE68-D3E042E274BC}, 3 + + + + + Name: System.Sync.ProgressPercentage -- PKEY_Sync_ProgressPercentage + Description: An integer value between 0 and 100 representing the percentage completed. + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 23 + + + + + Name: System.Sync.State -- PKEY_Sync_State + Description: Sync state. + + Type: UInt32 -- VT_UI4 + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 24 + + + + + Name: System.Sync.Status -- PKEY_Sync_Status + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {7BD5533E-AF15-44DB-B8C8-BD6624E1D032}, 10 + + + + + Task Properties + + + + + Name: System.Task.BillingInformation -- PKEY_Task_BillingInformation + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {D37D52C6-261C-4303-82B3-08B926AC6F12}, 100 + + + + + Name: System.Task.CompletionStatus -- PKEY_Task_CompletionStatus + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {084D8A0A-E6D5-40DE-BF1F-C8820E7C877C}, 100 + + + + + Name: System.Task.Owner -- PKEY_Task_Owner + Description: + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: {08C7CC5F-60F2-4494-AD75-55E3E0B5ADD0}, 100 + + + + + Video Properties + + + + + Name: System.Video.Compression -- PKEY_Video_Compression + Description: Indicates the level of compression for the video stream. "Compression". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 10 (PIDVSI_COMPRESSION) + + + + + Name: System.Video.Director -- PKEY_Video_Director + Description: + + Type: Multivalue String -- VT_VECTOR | VT_LPWSTR (For variants: VT_ARRAY | VT_BSTR) + FormatID: (PSGUID_MEDIAFILESUMMARYINFORMATION) {64440492-4C8B-11D1-8B70-080036B11A03}, 20 (PIDMSI_DIRECTOR) + + + + + Name: System.Video.EncodingBitrate -- PKEY_Video_EncodingBitrate + Description: Indicates the data rate in "bits per second" for the video stream. "DataRate". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 8 (PIDVSI_DATA_RATE) + + + + + Name: System.Video.FourCC -- PKEY_Video_FourCC + Description: Indicates the 4CC for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 44 + + + + + Name: System.Video.FrameHeight -- PKEY_Video_FrameHeight + Description: Indicates the frame height for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 4 + + + + + Name: System.Video.FrameRate -- PKEY_Video_FrameRate + Description: Indicates the frame rate in "frames per millisecond" for the video stream. "FrameRate". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 6 (PIDVSI_FRAME_RATE) + + + + + Name: System.Video.FrameWidth -- PKEY_Video_FrameWidth + Description: Indicates the frame width for the video stream. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 3 + + + + + Name: System.Video.HorizontalAspectRatio -- PKEY_Video_HorizontalAspectRatio + Description: Indicates the horizontal portion of the aspect ratio. The X portion of XX:YY, + like 16:9. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 42 + + + + + Name: System.Video.SampleSize -- PKEY_Video_SampleSize + Description: Indicates the sample size in bits for the video stream. "SampleSize". + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 9 (PIDVSI_SAMPLE_SIZE) + + + + + Name: System.Video.StreamName -- PKEY_Video_StreamName + Description: Indicates the name for the video stream. "StreamName". + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 2 (PIDVSI_STREAM_NAME) + + + + + Name: System.Video.StreamNumber -- PKEY_Video_StreamNumber + Description: "Stream Number". + + Type: UInt16 -- VT_UI2 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 11 (PIDVSI_STREAM_NUMBER) + + + + + Name: System.Video.TotalBitrate -- PKEY_Video_TotalBitrate + Description: Indicates the total data rate in "bits per second" for all video and audio streams. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 43 (PIDVSI_TOTAL_BITRATE) + + + + + Name: System.Video.TranscodedForSync -- PKEY_Video_TranscodedForSync + Description: + Type: Boolean -- VT_BOOL + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 46 + + + + + Name: System.Video.VerticalAspectRatio -- PKEY_Video_VerticalAspectRatio + Description: Indicates the vertical portion of the aspect ratio. The Y portion of + XX:YY, like 16:9. + + Type: UInt32 -- VT_UI4 + FormatID: (FMTID_VideoSummaryInformation) {64440491-4C8B-11D1-8B70-080036B11A03}, 45 + + + + + Volume Properties + + + + + Name: System.Volume.FileSystem -- PKEY_Volume_FileSystem + Description: Indicates the filesystem of the volume. + + Type: String -- VT_LPWSTR (For variants: VT_BSTR) + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 4 (PID_VOLUME_FILESYSTEM) (Filesystem Volume Properties) + + + + + Name: System.Volume.IsMappedDrive -- PKEY_Volume_IsMappedDrive + Description: + Type: Boolean -- VT_BOOL + FormatID: {149C0B69-2C2D-48FC-808F-D318D78C4636}, 2 + + + + + Name: System.Volume.IsRoot -- PKEY_Volume_IsRoot + Description: + + Type: Boolean -- VT_BOOL + FormatID: (FMTID_Volume) {9B174B35-40FF-11D2-A27E-00C04FC30871}, 10 (Filesystem Volume Properties) + + + + + Helper class to modify properties for a given window + + + + + Sets a shell property for a given window + + The property to set + Handle to the window that the property will be set on + The value to set for the property + + + + Sets a shell property for a given window + + The property to set + Window that the property will be set on + The value to set for the property + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to AddToMostRecentlyUsedList cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to AlwaysAppendDefaultExtension cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Index was outside the bounds of the CommonFileDialogComboBox.. + + + + + Looks up a localized string similar to File name not available - dialog was canceled.. + + + + + Looks up a localized string similar to Shell item could not be created.. + + + + + Looks up a localized string similar to Handle provided cannot be IntPtr.Zero.. + + + + + Looks up a localized string similar to Multiple files selected - the FileNames property should be used instead.. + + + + + Looks up a localized string similar to Multiple files selected - the Items property should be used instead.. + + + + + Looks up a localized string similar to File name not available - dialog has not closed yet.. + + + + + Looks up a localized string similar to Common File Dialog requires Windows Vista or later.. + + + + + Looks up a localized string similar to Office Files. + + + + + Looks up a localized string similar to All Picture Files. + + + + + Looks up a localized string similar to Text Files. + + + + + Looks up a localized string similar to CreatePrompt cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Custom controls cannot be removed from a File dialog once added.. + + + + + Looks up a localized string similar to Control name cannot be null or zero length.. + + + + + Looks up a localized string similar to CommonFileDialogMenuItem controls can only be added to CommonFileDialogMenu controls.. + + + + + Looks up a localized string similar to Modifying controls collection while dialog is showing is not supported.. + + + + + Looks up a localized string similar to Dialog cannot have more than one control with the same name.. + + + + + Looks up a localized string similar to Dialog control must be removed from current collections first.. + + + + + Looks up a localized string similar to EnsureFileExists cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to EnsurePathExists cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to EnsureReadOnly cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to EnsureValidNames cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Browsing to object failed.. + + + + + Looks up a localized string similar to ExplorerBrowser failed to get current view.. + + + + + Looks up a localized string similar to Unable to get icon size.. + + + + + Looks up a localized string similar to Unexpected error retrieving item count.. + + + + + Looks up a localized string similar to Unexpected error retrieving selected item count.. + + + + + Looks up a localized string similar to Unexpected error retrieving selection.. + + + + + Looks up a localized string similar to Unexpected error retrieving view items.. + + + + + Looks up a localized string similar to The given path does not exist ({0}). + + + + + Looks up a localized string similar to Guid does not identify a known folder.. + + + + + Looks up a localized string similar to ControlPanel Category. + + + + + Looks up a localized string similar to ControlPanel Classic. + + + + + Looks up a localized string similar to Communications. + + + + + Looks up a localized string similar to Compressed Folder. + + + + + Looks up a localized string similar to Contacts. + + + + + Looks up a localized string similar to Documents. + + + + + Looks up a localized string similar to Games. + + + + + Looks up a localized string similar to Generic Library. + + + + + Looks up a localized string similar to Invalid. + + + + + Looks up a localized string similar to Library. + + + + + Looks up a localized string similar to Music. + + + + + Looks up a localized string similar to Music Icons. + + + + + Looks up a localized string similar to Network Explorer. + + + + + Looks up a localized string similar to Not Specified. + + + + + Looks up a localized string similar to Open Search. + + + + + Looks up a localized string similar to Other Users. + + + + + Looks up a localized string similar to Pictures. + + + + + Looks up a localized string similar to Printers. + + + + + Looks up a localized string similar to RecordedTV. + + + + + Looks up a localized string similar to RecycleBin. + + + + + Looks up a localized string similar to Saved Games. + + + + + Looks up a localized string similar to Search Connector. + + + + + Looks up a localized string similar to Searches. + + + + + Looks up a localized string similar to Generic SearchResults. + + + + + Looks up a localized string similar to Software Explorer. + + + + + Looks up a localized string similar to User Files. + + + + + Looks up a localized string similar to Users Libraries. + + + + + Looks up a localized string similar to Videos. + + + + + Looks up a localized string similar to IsExpandedMode cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Custom categories cannot be added while recent documents tracking is turned off.. + + + + + Looks up a localized string similar to The file type is not registered with this application.. + + + + + Looks up a localized string similar to JumpListLink's path is required and cannot be null.. + + + + + Looks up a localized string similar to JumpListLink's title is required and cannot be null.. + + + + + Looks up a localized string similar to Negative numbers are not allowed for the ordinal position.. + + + + + Looks up a localized string similar to Given Known Folder ID is invalid.. + + + + + Looks up a localized string similar to Parsing name is invalid.. + + + + + Looks up a localized string similar to Creation of window has failed, view inner exception for details.. + + + + + Looks up a localized string similar to Window class could not be registered, check inner exception for more details.. + + + + + Looks up a localized string similar to Message filter registration failed.. + + + + + Looks up a localized string similar to No listener handled of that value is registered.. + + + + + Looks up a localized string similar to Cannot create window on the listener thread because there is no existing window on the listener thread.. + + + + + Looks up a localized string similar to NavigateToShortcut cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Parent cannot be null.. + + + + + Looks up a localized string similar to The method or operation is not implemented.. + + + + + Looks up a localized string similar to OverwritePrompt cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to This CanonicalName is not a valid index.. + + + + + Looks up a localized string similar to This PropertyKey is not a valid index.. + + + + + Looks up a localized string similar to Argument CanonicalName cannot be null or empty.. + + + + + Looks up a localized string similar to Index was outside the bounds of the CommonFileDialogRadioButtonList.. + + + + + Looks up a localized string similar to RestoreDirectory cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Retrieved a null shell item from dialog.. + + + + + Looks up a localized string similar to Given property key is invalid.. + + + + + Looks up a localized string similar to Shell Exception has occurred, look at inner exception for information.. + + + + + Looks up a localized string similar to GetParsingName has failed.. + + + + + Looks up a localized string similar to The given CanonicalName is not valid.. + + + + + Looks up a localized string similar to DefaultSaveFolder path not found.. + + + + + Looks up a localized string similar to LibraryName cannot be empty.. + + + + + Looks up a localized string similar to Folder path not found.. + + + + + Looks up a localized string similar to Invalid FolderType Guid.. + + + + + Looks up a localized string similar to The given known folder is not a valid library.. + + + + + Looks up a localized string similar to Can't get the display name.. + + + + + Looks up a localized string similar to Destination array too small, or invalid arrayIndex.. + + + + + Looks up a localized string similar to Must have at least one shell object in the collection.. + + + + + Looks up a localized string similar to Cannot insert items into a read only list.. + + + + + Looks up a localized string similar to Cannot remove items from a read only list.. + + + + + Looks up a localized string similar to Shell item could not be created.. + + + + + Looks up a localized string similar to Shell Object creation requires Windows Vista or higher operating system.. + + + + + Looks up a localized string similar to Unable to Create Shell Item.. + + + + + Looks up a localized string similar to Registration for change notification has failed.. + + + + + Looks up a localized string similar to Unable to change watched events while listening.. + + + + + Looks up a localized string similar to The value on this property cannot be set. To set the property value, use the ShellObject that is associated with this property.. + + + + + Looks up a localized string similar to No constructor found matching requested argument types.. + + + + + Looks up a localized string similar to Unable to set property.. + + + + + Looks up a localized string similar to Unable to get writable property store for this property.. + + + + + Looks up a localized string similar to A value had to be truncated in a string or rounded if a numeric value. Set AllowTruncatedValue to true to prevent this exception.. + + + + + Looks up a localized string similar to This Property is available on Windows 7 only.. + + + + + Looks up a localized string similar to This property only accepts a value of type \"{0}\".. + + + + + Looks up a localized string similar to Unable to set list of sort columns.. + + + + + Looks up a localized string similar to Unable to set visible columns.. + + + + + Looks up a localized string similar to CurrentSize (width or height) cannot be greater than the maximum size: {0}.. + + + + + Looks up a localized string similar to The current ShellObject does not have a thumbnail. Try using ShellThumbnailFormatOption.Default to get the icon for this item.. + + + + + Looks up a localized string similar to The current ShellObject does not have a valid thumbnail handler or there was a problem in extracting the thumbnail for this specific shell object.. + + + + + Looks up a localized string similar to CurrentSize (width or height) cannot be 0.. + + + + + Looks up a localized string similar to ShowHiddenItems cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Show places list cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to The Stock Icon identifier given is invalid ({0}).. + + + + + Looks up a localized string similar to Child control's window handle cannot be zero.. + + + + + Looks up a localized string similar to Parent window handle cannot be zero.. + + + + + Looks up a localized string similar to TabbedThumbnailProxyWindow has not been set.. + + + + + Looks up a localized string similar to A valid active Window is needed to update the Taskbar.. + + + + + Looks up a localized string similar to The array of buttons must contain at least 1 item.. + + + + + Looks up a localized string similar to Tool bar buttons for this window are already added. Please refer to the Remarks section of the AddButtons method for more information on updating the properties or hiding existing buttons.. + + + + + Looks up a localized string similar to Value is already set. It cannot be set more than once.. + + + + + Looks up a localized string similar to The given control has not been added to the taskbar.. + + + + + Looks up a localized string similar to Window handle is invalid.. + + + + + Looks up a localized string similar to This preview has already been added.. + + + + + Looks up a localized string similar to The given preview has not been added to the taskbar.. + + + + + Looks up a localized string similar to Maximum number of buttons allowed is 7.. + + + + + Looks up a localized string similar to Null or empty arrays are not allowed.. + + + + + Encapsulates the data about a window message + + + + + Received windows message. + + + + + The result of registering with the MessageListenerFilter + + + + + Gets the window handle to which the callback was registered. + + + + + Gets the message for which the callback was registered. + + + + + Base class for the Event Args for change notifications raised by . + + + + + The type of the change that happened to the ShellObject + + + + + True if the event was raised as a result of a system interrupt. + + + + + The data that describes a ShellObject event with a single path parameter + + + + + The path of the shell object + + + + + The data that describes a ShellObject renamed event + + + + + The new path of the shell object + + + + + The data that describes a SystemImageUpdated event. + + + + + Gets the index of the system image that has been updated. + + + + + Listens for changes in/on a ShellObject and raises events when they occur. + This class supports all items under the shell namespace including + files, folders and virtual folders (libraries, search results and network items), etc. + + + + + Creates the ShellObjectWatcher for the given ShellObject + + The ShellObject to monitor + Whether to listen for changes recursively (for when monitoring a container) + + + + Start the watcher and begin receiving change notifications. + + If the watcher is running, has no effect. + Registration for notifications should be done before this is called. + + + + + + Stop the watcher and prevent further notifications from being received. + If the watcher is not running, this has no effect. + + + + + Processes all change notifications sent by the Windows Shell. + + The windows message representing the notification event + + + + Disposes ShellObjectWatcher + + + + + + Disposes ShellObjectWatcher. + + + + + Finalizer for ShellObjectWatcher + + + + + Gets whether the watcher is currently running. + + + + + Raised when any event occurs. + + + + + Raised when global events occur. + + + + + Raised when disk events occur. + + + + + Raised when an item is renamed. + + + + + Raised when an item is created. + + + + + Raised when an item is deleted. + + + + + Raised when an item is updated. + + + + + Raised when a directory is updated. + + + + + Raised when a directory is renamed. + + + + + Raised when a directory is created. + + + + + Raised when a directory is deleted. + + + + + Raised when media is inserted. + + + + + Raised when media is removed. + + + + + Raised when a drive is added. + + + + + Raised when a drive is removed. + + + + + Raised when a folder is shared on a network. + + + + + Raised when a folder is unshared from the network. + + + + + Raised when a server is disconnected. + + + + + Raised when a system image is changed. + + + + + Raised when free space changes. + + + + + Raised when a file type association changes. + + + + + Describes the event that has occurred. + Typically, only one event is specified at a time. + If more than one event is specified, + the values contained in the dwItem1 and dwItem2 parameters must be the same, + respectively, for all specified events. + This parameter can be one or more of the following values: + + + + + None + + + + + The name of a nonfolder item has changed. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the previous PIDL or name of the item. + dwItem2 contains the new PIDL or name of the item. + + + + + A nonfolder item has been created. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the item that was created. + dwItem2 is not used and should be NULL. + + + + + A nonfolder item has been deleted. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the item that was deleted. + dwItem2 is not used and should be NULL. + + + + + A folder has been created. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the folder that was created. + dwItem2 is not used and should be NULL. + + + + + A folder has been removed. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the folder that was removed. + dwItem2 is not used and should be NULL. + + + + + Storage media has been inserted into a drive. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the root of the drive that contains the new media. + dwItem2 is not used and should be NULL. + + + + + Storage media has been removed from a drive. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the root of the drive from which the media was removed. + dwItem2 is not used and should be NULL. + + + + + A drive has been removed. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the root of the drive that was removed. + dwItem2 is not used and should be NULL. + + + + + A drive has been added. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the root of the drive that was added. + dwItem2 is not used and should be NULL. + + + + + A folder on the local computer is being shared via the network. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the folder that is being shared. + dwItem2 is not used and should be NULL. + + + + + A folder on the local computer is no longer being shared via the network. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the folder that is no longer being shared. + dwItem2 is not used and should be NULL. + + + + + The attributes of an item or folder have changed. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the item or folder that has changed. + dwItem2 is not used and should be NULL. + + + + + The contents of an existing folder have changed, but the folder still exists and has not been renamed. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the folder that has changed. + dwItem2 is not used and should be NULL. + If a folder has been created, deleted, or renamed, use SHCNE_MKDIR, SHCNE_RMDIR, or SHCNE_RENAMEFOLDER, respectively. + + + + + An existing item (a folder or a nonfolder) has changed, but the item still exists and has not been renamed. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the item that has changed. + dwItem2 is not used and should be NULL. + If a nonfolder item has been created, deleted, or renamed, + use SHCNE_CREATE, SHCNE_DELETE, or SHCNE_RENAMEITEM, respectively, instead. + + + + + The computer has disconnected from a server. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the server from which the computer was disconnected. + dwItem2 is not used and should be NULL. + + + + + An image in the system image list has changed. + SHCNF_DWORD must be specified in uFlags. + dwItem1 is not used and should be NULL. + dwItem2 contains the index in the system image list that has changed. + //verify this is not opposite? + + + + The name of a folder has changed. SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the previous PIDL or name of the folder. + dwItem2 contains the new PIDL or name of the folder. + + + + + The amount of free space on a drive has changed. + SHCNF_IDLIST or SHCNF_PATH must be specified in uFlags. + dwItem1 contains the root of the drive on which the free space changed. + dwItem2 is not used and should be NULL. + + + + + A file type association has changed. + SHCNF_IDLIST must be specified in the uFlags parameter. + dwItem1 and dwItem2 are not used and must be NULL. + + + + + Specifies a combination of all of the disk event identifiers. + + + + + Specifies a combination of all of the global event identifiers. + + + + + All events have occurred. + + + + + The specified event occurred as a result of a system interrupt. + As this value modifies other event values, it cannot be used alone. + + + + + Represents a standard system icon. + + + + + Creates a new StockIcon instance with the specified identifer, default size + and no link overlay or selected states. + + A value that identifies the icon represented by this instance. + + + + Creates a new StockIcon instance with the specified identifer and options. + + A value that identifies the icon represented by this instance. + A value that indicates the size of the stock icon. + A bool value that indicates whether the icon has a link overlay. + A bool value that indicates whether the icon is in a selected state. + + + + Release the native and managed objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects + + + + + + + + + + Gets or sets a value indicating whether the icon appears selected. + + A value. + + + + Gets or sets a value that cotrols whether to put a link overlay on the icon. + + A value. + + + + Gets or sets a value that controls the size of the Stock Icon. + + A value. + + + + Gets or sets the Stock Icon identifier associated with this icon. + + + + + Gets the icon image in format. + + + + + Gets the icon image in format. + + + + + Gets the icon image in format. + + + + + Specifies options for the size of the stock icon. + + + + + Retrieve the small version of the icon, as specified by SM_CXSMICON and SM_CYSMICON system metrics. + + + + + Retrieve the large version of the icon, as specified by SM_CXICON and SM_CYICON system metrics. + + + + + Retrieve the shell-sized icons (instead of the size specified by the system metrics). + + + + + Provides values used to specify which standard icon to retrieve. + + + + + Icon for a document (blank page), no associated program. + + + + + Icon for a document with an associated program. + + + + + Icon for a generic application with no custom icon. + + + + + Icon for a closed folder. + + + + + Icon for an open folder. + + + + + Icon for a 5.25" floppy disk drive. + + + + + Icon for a 3.5" floppy disk drive. + + + + + Icon for a removable drive. + + + + + Icon for a fixed (hard disk) drive. + + + + + Icon for a network drive. + + + + + Icon for a disconnected network drive. + + + + + Icon for a CD drive. + + + + + Icon for a RAM disk drive. + + + + + Icon for an entire network. + + + + + Icon for a computer on the network. + + + + + Icon for a printer. + + + + + Icon for My Network places. + + + + + Icon for search (magnifying glass). + + + + + Icon for help. + + + + + Icon for an overlay indicating shared items. + + + + + Icon for an overlay indicating shortcuts to items. + + + + + Icon for an overlay for slow items. + + + + + Icon for a empty recycle bin. + + + + + Icon for a full recycle bin. + + + + + Icon for audio CD media. + + + + + Icon for a security lock. + + + + + Icon for a auto list. + + + + + Icon for a network printer. + + + + + Icon for a server share. + + + + + Icon for a Fax printer. + + + + + Icon for a networked Fax printer. + + + + + Icon for print to file. + + + + + Icon for a stack. + + + + + Icon for a SVCD media. + + + + + Icon for a folder containing other items. + + + + + Icon for an unknown drive. + + + + + Icon for a DVD drive. + + + + + Icon for DVD media. + + + + + Icon for DVD-RAM media. + + + + + Icon for DVD-RW media. + + + + + Icon for DVD-R media. + + + + + Icon for a DVD-ROM media. + + + + + Icon for CD+ (Enhanced CD) media. + + + + + Icon for CD-RW media. + + + + + Icon for a CD-R media. + + + + + Icon burning a CD. + + + + + Icon for blank CD media. + + + + + Icon for CD-ROM media. + + + + + Icon for audio files. + + + + + Icon for image files. + + + + + Icon for video files. + + + + + Icon for mixed Files. + + + + + Icon for a folder back. + + + + + Icon for a folder front. + + + + + Icon for a security shield. Use for UAC prompts only. + + + + + Icon for a warning. + + + + + Icon for an informational message. + + + + + Icon for an error message. + + + + + Icon for a key. + + + + + Icon for software. + + + + + Icon for a rename. + + + + + Icon for delete. + + + + + Icon for audio DVD media. + + + + + Icon for movie DVD media. + + + + + Icon for enhanced CD media. + + + + + Icon for enhanced DVD media. + + + + + Icon for HD-DVD media. + + + + + Icon for BluRay media. + + + + + Icon for VCD media. + + + + + Icon for DVD+R media. + + + + + Icon for DVD+RW media. + + + + + Icon for desktop computer. + + + + + Icon for mobile computer (laptop/notebook). + + + + + Icon for users. + + + + + Icon for smart media. + + + + + Icon for compact flash. + + + + + Icon for a cell phone. + + + + + Icon for a camera. + + + + + Icon for video camera. + + + + + Icon for audio player. + + + + + Icon for connecting to network. + + + + + Icon for the Internet. + + + + + Icon for a ZIP file. + + + + + Icon for settings. + + + + + HDDVD Drive (all types) + + + + + Icon for BluRay Drive (all types) + + + + + Icon for HDDVD-ROM Media + + + + + Icon for HDDVD-R Media + + + + + Icon for HDDVD-RAM Media + + + + + Icon for BluRay ROM Media + + + + + Icon for BluRay R Media + + + + + Icon for BluRay RE Media (Rewriable and RAM) + + + + + Icon for Clustered disk + + + + + Collection of all the standard system stock icons + + + + + Creates a stock icon collection using the default options for + size, link overlay and selection state. + + + + + Overloaded constructor that takes in size and Boolean values for + link overlay and selected icon state. The settings are applied to + all the stock icons in the collection. + + StockIcon size for all the icons in the collection. + Link Overlay state for all the icons in the collection. + Selection state for all the icons in the collection. + + + + Returns the existing stock icon from the internal cache, or creates a new one + based on the current settings if it's not in the cache. + + Unique identifier for the requested stock icon + Stock Icon based on the identifier given (either from the cache or created new) + + + + Gets the default stock icon size in one of the StockIconSize values. + This size applies to all the stock icons in the collection. + + + + + Gets the default link overlay state for the icon. This property + applies to all the stock icons in the collection. + + + + + Gets the default selected state for the icon. This property + applies to all the stock icons in the collection. + + + + + Gets a collection of all the system stock icons + + + + + Icon for a document (blank page), no associated program. + + + + + Icon for a document with an associated program. + + + + + Icon for a generic application with no custom icon. + + + + + Icon for a closed folder. + + + + + Icon for an open folder. + + + + + Icon for a 5.25" floppy disk drive. + + + + + Icon for a 3.5" floppy disk drive. + + + + + Icon for a removable drive. + + + + + Icon for a fixed (hard disk) drive. + + + + + Icon for a network drive. + + + + + Icon for a disconnected network drive. + + + + + Icon for a CD drive. + + + + + Icon for a RAM disk drive. + + + + + Icon for an entire network. + + + + + Icon for a computer on the network. + + + + + Icon for a printer. + + + + + Icon for My Network places. + + + + + Icon for search (magnifying glass). + + + + + Icon for help. + + + + + Icon for an overlay indicating shared items. + + + + + Icon for an overlay indicating shortcuts to items. + + + + + Icon for an overlay for slow items. + + + + + Icon for a empty recycle bin. + + + + + Icon for a full recycle bin. + + + + + Icon for audio CD media. + + + + + Icon for a security lock. + + + + + Icon for a auto list. + + + + + Icon for a network printer. + + + + + Icon for a server share. + + + + + Icon for a Fax printer. + + + + + Icon for a networked Fax printer. + + + + + Icon for print to file. + + + + + Icon for a stack. + + + + + Icon for a SVCD media. + + + + + Icon for a folder containing other items. + + + + + Icon for an unknown drive. + + + + + Icon for a DVD drive. + + + + + Icon for DVD media. + + + + + Icon for DVD-RAM media. + + + + + Icon for DVD-RW media. + + + + + Icon for DVD-R media. + + + + + Icon for a DVD-ROM media. + + + + + Icon for CD+ (Enhanced CD) media. + + + + + Icon for CD-RW media. + + + + + Icon for a CD-R media. + + + + + Icon burning a CD. + + + + + Icon for blank CD media. + + + + + Icon for CD-ROM media. + + + + + Icon for audio files. + + + + + Icon for image files. + + + + + Icon for video files. + + + + + Icon for mixed Files. + + + + + Icon for a folder back. + + + + + Icon for a folder front. + + + + + Icon for a security shield. Use for UAC prompts only. + + + + + Icon for a warning. + + + + + Icon for an informational message. + + + + + Icon for an error message. + + + + + Icon for a key. + + + + + Icon for software. + + + + + Icon for a rename. + + + + + Icon for delete. + + + + + Icon for audio DVD media. + + + + + Icon for movie DVD media. + + + + + Icon for enhanced CD media. + + + + + Icon for enhanced DVD media. + + + + + Icon for HD-DVD media. + + + + + Icon for BluRay media. + + + + + Icon for VCD media. + + + + + Icon for DVD+R media. + + + + + Icon for DVD+RW media. + + + + + Icon for desktop computer. + + + + + Icon for mobile computer (laptop/notebook). + + + + + Icon for users. + + + + + Icon for smart media. + + + + + Icon for compact flash. + + + + + Icon for a cell phone. + + + + + Icon for a camera. + + + + + Icon for video camera. + + + + + Icon for audio player. + + + + + Icon for connecting to network. + + + + + Icon for the Internet. + + + + + Icon for a ZIP file. + + + + + Icon for settings. + + + + + HDDVD Drive (all types) + + + + + Icon for BluRay Drive (all types) + + + + + Icon for HDDVD-ROM Media + + + + + Icon for HDDVD-R Media + + + + + Icon for HDDVD-RAM Media + + + + + Icon for BluRay ROM Media + + + + + Icon for BluRay R Media + + + + + Icon for BluRay RE Media (Rewriable and RAM) + + + + + Icon for Clustered disk + + + + + Represents a collection of custom categories + + + + + Add the specified category to this collection + + Category to add + + + + Remove the specified category from this collection + + Category item to remove + True if item was removed. + + + + Clear all items from the collection + + + + + Determine if this collection contains the specified item + + Category to search for + True if category was found + + + + Copy this collection to a compatible one-dimensional array, + starting at the specified index of the target array + + Array to copy to + Index of target array to start copy + + + + Returns an enumerator that iterates through this collection. + + Enumerator to iterate through this collection. + + + + Returns an enumerator that iterates through this collection. + + Enumerator to iterate through this collection. + + + + Event to trigger anytime this collection is modified + + + + + Determines if this collection is read-only + + + + + The number of items in this collection + + + + + Represents a collection of jump list items. + + The type of elements in this collection. + + + + Adds the specified item to this collection. + + The item to add. + + + + Removes the first instance of the specified item from the collection. + + The item to remove. + true if an item was removed, otherwise false if no items were removed. + + + + Clears all items from this collection. + + + + + Determines if this collection contains the specified item. + + The search item. + true if an item was found, otherwise false. + + + + Copies this collection to a compatible one-dimensional array, + starting at the specified index of the target array. + + The array name. + The index of the starting element. + + + + Returns an enumerator that iterates through a collection. + + An enumerator to iterate through this collection. + + + + Returns an enumerator that iterates through a collection of a specified type. + + An enumerator to iterate through this collection. + + + + Occurs anytime a change is made to the underlying collection. + + + + + Gets or sets a value that determines if this collection is read-only. + + + + + Gets a count of the items currently in this collection. + + + + + Represents a jump list link object. + + + + + Interface for jump list tasks + + + + + Interface for jump list items + + + + + Gets or sets this item's path + + + + + Initializes a new instance of a JumpListLink with the specified path. + + The path to the item. The path is required for the JumpList Link + The title for the JumpListLink item. The title is required for the JumpList link. + + + + Release the native and managed objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects. + + + + + Implement the finalizer. + + + + + Gets or sets the link's title + + + + + Gets or sets the link's path + + + + + Gets or sets the icon reference (location and index) of the link's icon. + + + + + Gets or sets the object's arguments (passed to the command line). + + + + + Gets or sets the object's working directory. + + + + + Gets or sets the show command of the lauched application. + + + + + Gets an IShellLinkW representation of this object + + + + + Represents a separator in the user task list. The JumpListSeparator control + can only be used in a user task list. + + + + + Release the native and managed objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects. + + + + + Implement the finalizer. + + + + + Gets an IShellLinkW representation of this object + + + + + Event args for when close is selected on a tabbed thumbnail proxy window. + + + + + Event args for various Tabbed Thumbnail related events + + + + + Creates a Event Args for a specific tabbed thumbnail event. + + Window handle for the control/window related to the event + + + + Creates a Event Args for a specific tabbed thumbnail event. + + WPF Control (UIElement) related to the event + + + + Gets the Window handle for the specific control/window that is related to this event. + + For WPF Controls (UIElement) the WindowHandle will be IntPtr.Zero. + Check the WindowsControl property to get the specific control associated with this event. + + + + Gets the WPF Control (UIElement) that is related to this event. This property may be null + for non-WPF applications. + + + + + Creates a Event Args for a specific tabbed thumbnail event. + + Window handle for the control/window related to the event + + + + Creates a Event Args for a specific tabbed thumbnail event. + + WPF Control (UIElement) related to the event + + + + If set to true, the proxy window will not be removed from the taskbar. + + + + + Helper class to capture a control or window as System.Drawing.Bitmap + + + + + Captures a screenshot of the specified window at the specified + bitmap size. NOTE: This method will not accurately capture controls + that are hidden or obstructed (partially or completely) by another control (e.g. hidden tabs, + or MDI child windows that are obstructed by other child windows/forms). + + The window handle. + The requested bitmap size. + A screen capture of the window. + + + + Grabs a snapshot of a WPF UIElement and returns the image as Bitmap. + + Represents the element to take the snapshot from. + Represents the X DPI value used to capture this snapshot. + Represents the Y DPI value used to capture this snapshot. + The requested bitmap width. + The requested bitmap height. + Returns the bitmap (PNG format). + + + + Resizes the given bitmap while maintaining the aspect ratio. + + Original/source bitmap + Maximum width for the new image + Maximum height for the new image + If true and requested image is wider than the source, the new image is resized accordingly. + + + + + Represents the main class for adding and removing tabbed thumbnails on the Taskbar + for child windows and controls. + + + + + Internal dictionary to keep track of the user's window handle and its + corresponding thumbnail preview objects. + + + + + Internal constructor that creates a new dictionary for keeping track of the window handles + and their corresponding thumbnail preview objects. + + + + + Adds a new tabbed thumbnail to the taskbar. + + Thumbnail preview for a specific window handle or control. The preview + object can be initialized with specific properties for the title, bitmap, and tooltip. + If the tabbed thumbnail has already been added + + + + Gets the TabbedThumbnail object associated with the given window handle + + Window handle for the control/window + TabbedThumbnail associated with the given window handle + + + + Gets the TabbedThumbnail object associated with the given control + + Specific control for which the preview object is requested + TabbedThumbnail associated with the given control + + + + Gets the TabbedThumbnail object associated with the given WPF Window + + WPF Control (UIElement) for which the preview object is requested + TabbedThumbnail associated with the given WPF Window + + + + Remove the tabbed thumbnail from the taskbar. + + TabbedThumbnail associated with the control/window that + is to be removed from the taskbar + + + + Remove the tabbed thumbnail from the taskbar. + + TabbedThumbnail associated with the window handle that + is to be removed from the taskbar + + + + Remove the tabbed thumbnail from the taskbar. + + TabbedThumbnail associated with the control that + is to be removed from the taskbar + + + + Remove the tabbed thumbnail from the taskbar. + + TabbedThumbnail associated with the WPF Control (UIElement) that + is to be removed from the taskbar + + + + Sets the given tabbed thumbnail preview object as being active on the taskbar tabbed thumbnails list. + Call this method to keep the application and the taskbar in sync as to which window/control + is currently active (or selected, in the case of tabbed application). + + TabbedThumbnail for the specific control/indow that is currently active in the application + If the control/window is not yet added to the tabbed thumbnails list + + + + Sets the given window handle as being active on the taskbar tabbed thumbnails list. + Call this method to keep the application and the taskbar in sync as to which window/control + is currently active (or selected, in the case of tabbed application). + + Window handle for the control/window that is currently active in the application + If the control/window is not yet added to the tabbed thumbnails list + + + + Sets the given Control/Form window as being active on the taskbar tabbed thumbnails list. + Call this method to keep the application and the taskbar in sync as to which window/control + is currently active (or selected, in the case of tabbed application). + + Control/Form that is currently active in the application + If the control/window is not yet added to the tabbed thumbnails list + + + + Sets the given WPF window as being active on the taskbar tabbed thumbnails list. + Call this method to keep the application and the taskbar in sync as to which window/control + is currently active (or selected, in the case of tabbed application). + + WPF control that is currently active in the application + If the control/window is not yet added to the tabbed thumbnails list + + + + Determines whether the given preview has been added to the taskbar's tabbed thumbnail list. + + The preview to locate on the taskbar's tabbed thumbnail list + true if the tab is already added on the taskbar; otherwise, false. + + + + Determines whether the given window has been added to the taskbar's tabbed thumbnail list. + + The window to locate on the taskbar's tabbed thumbnail list + true if the tab is already added on the taskbar; otherwise, false. + + + + Determines whether the given control has been added to the taskbar's tabbed thumbnail list. + + The preview to locate on the taskbar's tabbed thumbnail list + true if the tab is already added on the taskbar; otherwise, false. + + + + Determines whether the given control has been added to the taskbar's tabbed thumbnail list. + + The preview to locate on the taskbar's tabbed thumbnail list + true if the tab is already added on the taskbar; otherwise, false. + + + + Invalidates all the tabbed thumbnails. This will force the Desktop Window Manager + to not use the cached thumbnail or preview or aero peek and request a new one next time. + + This method should not be called frequently. + Doing so can lead to poor performance as new bitmaps are created and retrieved. + + + + Clear a clip that is already in place and return to the default display of the thumbnail. + + The handle to a window represented in the taskbar. This has to be a top-level window. + + + + Selects a portion of a window's client area to display as that window's thumbnail in the taskbar. + + The handle to a window represented in the taskbar. This has to be a top-level window. + Rectangle structure that specifies a selection within the window's client area, + relative to the upper-left corner of that client area. + If this parameter is null, the clipping area will be cleared and the default display of the thumbnail will be used instead. + + + + Moves an existing thumbnail to a new position in the application's group. + + Preview for the window whose order is being changed. + This value is required, must already be added via AddThumbnailPreview method, and cannot be null. + The preview of the tab window whose thumbnail that previewToChange is inserted to the left of. + This preview must already be added via AddThumbnailPreview. If this value is null, the previewToChange tab is added to the end of the list. + + + + + Event args for the TabbedThumbnailBitmapRequested event. The event allows applications to + provide a bitmap for the tabbed thumbnail's preview and peek. The application should also + set the Handled property if a custom bitmap is provided. + + + + + Creates a Event Args for a TabbedThumbnailBitmapRequested event. + + Window handle for the control/window related to the event + + + + Creates a Event Args for a TabbedThumbnailBitmapRequested event. + + WPF Control (UIElement) related to the event + + + + Gets or sets a value indicating whether the TabbedThumbnailBitmapRequested event was handled. + Set this property if the SetImage method is called with a custom bitmap for the thumbnail/peek. + + + + + Represents a tabbed thumbnail on the taskbar for a given window or a control. + + + + + Creates a new TabbedThumbnail with the given window handle of the parent and + a child control/window's handle (e.g. TabPage or Panel) + + Window handle of the parent window. + This window has to be a top-level window and the handle cannot be null or IntPtr.Zero + Window handle of the child control or window for which a tabbed + thumbnail needs to be displayed + + + + Creates a new TabbedThumbnail with the given window handle of the parent and + a child control (e.g. TabPage or Panel) + + Window handle of the parent window. + This window has to be a top-level window and the handle cannot be null or IntPtr.Zero + Child control for which a tabbed thumbnail needs to be displayed + This method can also be called when using a WindowsFormHost control in a WPF application. + Call this method with the main WPF Window's handle, and windowsFormHost.Child control. + + + + Creates a new TabbedThumbnail with the given window handle of the parent and + a WPF child Window. For WindowsFormHost control, use TabbedThumbnail(IntPtr, Control) overload and pass + the WindowsFormHost.Child as the second parameter. + + Parent window for the UIElement control. + This window has to be a top-level window and the handle cannot be null + WPF Control (UIElement) for which a tabbed thumbnail needs to be displayed + Offset point used for displaying the peek bitmap. This setting is + recomended for hidden WPF controls as it is difficult to calculate their offset. + + + + Sets the window icon for this thumbnail preview + + System.Drawing.Icon for the window/control associated with this preview + + + + Sets the window icon for this thumbnail preview + + Icon handle (hIcon) for the window/control associated with this preview + This method will not release the icon handle. It is the caller's responsibility to release the icon handle. + + + + Override the thumbnail and peek bitmap. + By providing this bitmap manually, Thumbnail Window manager will provide the + Desktop Window Manager (DWM) this bitmap instead of rendering one automatically. + Use this property to update the bitmap whenever the control is updated and the user + needs to be shown a new thumbnail on the taskbar preview (or aero peek). + + The image to use. + + If the bitmap doesn't have the right dimensions, the DWM may scale it or not + render certain areas as appropriate - it is the user's responsibility + to render a bitmap with the proper dimensions. + + + + + Override the thumbnail and peek bitmap. + By providing this bitmap manually, Thumbnail Window manager will provide the + Desktop Window Manager (DWM) this bitmap instead of rendering one automatically. + Use this property to update the bitmap whenever the control is updated and the user + needs to be shown a new thumbnail on the taskbar preview (or aero peek). + + The image to use. + + If the bitmap doesn't have the right dimensions, the DWM may scale it or not + render certain areas as appropriate - it is the user's responsibility + to render a bitmap with the proper dimensions. + + + + + Override the thumbnail and peek bitmap. + By providing this bitmap manually, Thumbnail Window manager will provide the + Desktop Window Manager (DWM) this bitmap instead of rendering one automatically. + Use this property to update the bitmap whenever the control is updated and the user + needs to be shown a new thumbnail on the taskbar preview (or aero peek). + + A bitmap handle for the image to use. + When the TabbedThumbnail is finalized, this class will delete the provided hBitmap. + + If the bitmap doesn't have the right dimensions, the DWM may scale it or not + render certain areas as appropriate - it is the user's responsibility + to render a bitmap with the proper dimensions. + + + + + Invalidate any existing thumbnail preview. Calling this method + will force DWM to request a new bitmap next time user previews the thumbnails + or requests Aero peek preview. + + + + + Returns true if the thumbnail was removed from the taskbar; false if it was not. + + Returns true if the thumbnail was removed from the taskbar; false if it was not. + + + + + + + + + Release the native objects. + + + + + Release the native objects. + + + + + + Title for the window shown as the taskbar thumbnail. + + + + + Tooltip to be shown for this thumbnail on the taskbar. + By default this is full title of the window shown on the taskbar. + + + + + Specifies that only a portion of the window's client area + should be used in the window's thumbnail. + A value of null will clear the clipping area and use the default thumbnail. + + + + + Specifies whether a standard window frame will be displayed + around the bitmap. If the bitmap represents a top-level window, + you would probably set this flag to true. If the bitmap + represents a child window (or a frameless window), you would + probably set this flag to false. + + + + + Gets or sets the offset used for displaying the peek bitmap. This setting is + recomended for hidden WPF controls as it is difficult to calculate their offset. + + + + + This event is raised when the Title property changes. + + + + + This event is raised when the Tooltip property changes. + + + + + The event that occurs when a tab is closed on the taskbar thumbnail preview. + + + + + The event that occurs when a tab is maximized via the taskbar thumbnail preview (context menu). + + + + + The event that occurs when a tab is minimized via the taskbar thumbnail preview (context menu). + + + + + The event that occurs when a tab is activated (clicked) on the taskbar thumbnail preview. + + + + + The event that occurs when a thumbnail or peek bitmap is requested by the user. + + + + + + + + + + Release the native objects. + + + + + Known category to display + + + + + Don't display either known category. You must have at least one + user task or custom category link in order to not see the + default 'Recent' known category + + + + + Display the 'Recent' known category + + + + + Display the 'Frequent' known category + + + + + Represents the thumbnail progress bar state. + + + + + No progress is displayed. + + + + + The progress is indeterminate (marquee). + + + + + Normal progress is displayed. + + + + + An error occurred (red). + + + + + The operation is paused (yellow). + + + + + WPARAM value for a THUMBBUTTON being clicked. + + + + + Sets the window's application id by its window handle. + + The window handle. + The application id. + + + + Thumbnail Alpha Types + + + + + Let the system decide. + + + + + No transparency + + + + + Has transparency + + + + + Defines the properties used by a Shell Property. + + + + + Gets a formatted, Unicode string representation of a property value. + + One or more PropertyDescriptionFormat flags + chosen to produce the desired display format. + The formatted value as a string. + + + + Gets the property key that identifies this property. + + + + + Get the property description object. + + + + + Gets the case-sensitive name of the property as it is known to the system, + regardless of its localized name. + + + + + Gets the value for this property using the generic Object type. + + + To obtain a specific type for this value, use the more strongly-typed + Property<T> class. + You can only set a value for this type using the Property<T> + class. + + + + + Gets the System.Type value for this property. + + + + + Gets the image reference path and icon index associated with a property value. + This API is only available in Windows 7. + + + + + Creates a readonly collection of IProperty objects. + + + + + Creates a new Property collection given an IPropertyStore object + + IPropertyStore + + + + Creates a new Property collection given an IShellItem2 native interface + + Parent ShellObject + + + + Creates a new ShellPropertyCollection object with the specified file or folder path. + + The path to the file or folder. + + + + Checks if a property with the given canonical name is available. + + The canonical name of the property. + True if available, false otherwise. + + + + Checks if a property with the given property key is available. + + The property key. + True if available, false otherwise. + + + + Release the native and managed objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects. + + + + + Implement the finalizer. + + + + + Gets the property associated with the supplied canonical name string. + The canonical name property is case-sensitive. + + + The canonical name. + The property associated with the canonical name, if found. + Throws IndexOutOfRangeException + if no matching property is found. + + + + Gets a property associated with the supplied property key. + + + The property key. + The property associated with the property key, if found. + Throws IndexOutOfRangeException + if no matching property is found. + + + + Defines the shell property description information for a property. + + + + + Gets the localized display string that describes the current sort order. + + Indicates the sort order should + reference the string "Z on top"; otherwise, the sort order should reference the string "A on top". + The sort description for this property. + The string retrieved by this method is determined by flags set in the + sortDescription attribute of the labelInfo element in the property's .propdesc file. + + + + Release the native objects + + Indicates that this is being called from Dispose(), rather than the finalizer. + + + + Release the native objects + + + + + Release the native objects + + + + + Gets the case-sensitive name of a property as it is known to the system, + regardless of its localized name. + + + + + Gets the property key identifying the underlying property. + + + + + Gets the display name of the property as it is shown in any user interface (UI). + + + + + Gets the text used in edit controls hosted in various dialog boxes. + + + + + Gets the VarEnum OLE type for this property. + + + + + Gets the .NET system type for a value of this property, or + null if the value is empty. + + + + + Gets the current data type used to display the property. + + + + + Gets the default user interface (UI) column width for this property. + + + + + Gets a value that describes how the property values are displayed when + multiple items are selected in the user interface (UI). + + + + + Gets a list of the possible values for this property. + + + + + Gets the column state flag, which describes how the property + should be treated by interfaces or APIs that use this flag. + + + + + Gets the condition type to use when displaying the property in + the query builder user interface (UI). This influences the list + of predicate conditions (for example, equals, less than, and + contains) that are shown for this property. + + For more information, see the conditionType attribute + of the typeInfo element in the property's .propdesc file. + + + + Gets the default condition operation to use + when displaying the property in the query builder user + interface (UI). This influences the list of predicate conditions + (for example, equals, less than, and contains) that are shown + for this property. + + For more information, see the conditionType attribute of the + typeInfo element in the property's .propdesc file. + + + + Gets the method used when a view is grouped by this property. + + The information retrieved by this method comes from + the groupingRange attribute of the typeInfo element in the + property's .propdesc file. + + + + Gets the current sort description flags for the property, + which indicate the particular wordings of sort offerings. + + The settings retrieved by this method are set + through the sortDescription attribute of the labelInfo + element in the property's .propdesc file. + + + + Gets a set of flags that describe the uses and capabilities of the property. + + + + + Gets the current set of flags governing the property's view. + + + + + Gets a value that determines if the native property description is present on the system. + + + + + Get the native property description COM interface + + + + + Indicate flags that modify the property store object retrieved by methods + that create a property store, such as IShellItem2::GetPropertyStore or + IPropertyStoreFactory::GetPropertyStore. + + + + + Meaning to a calling process: Return a read-only property store that contains all + properties. Slow items (offline files) are not opened. + Combination with other flags: Can be overridden by other flags. + + + + + Meaning to a calling process: Include only properties directly from the property + handler, which opens the file on the disk, network, or device. Meaning to a file + folder: Only include properties directly from the handler. + + Meaning to other folders: When delegating to a file folder, pass this flag on + to the file folder; do not do any multiplexing (MUX). When not delegating to a + file folder, ignore this flag instead of returning a failure code. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY, + GPS_FASTPROPERTIESONLY, or GPS_BESTEFFORT. + + + + + Meaning to a calling process: Can write properties to the item. + Note: The store may contain fewer properties than a read-only store. + + Meaning to a file folder: ReadWrite. + + Meaning to other folders: ReadWrite. Note: When using default MUX, + return a single unmultiplexed store because the default MUX does not support ReadWrite. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY, GPS_FASTPROPERTIESONLY, + GPS_BESTEFFORT, or GPS_DELAYCREATION. Implies GPS_HANDLERPROPERTIESONLY. + + + + + Meaning to a calling process: Provides a writable store, with no initial properties, + that exists for the lifetime of the Shell item instance; basically, a property bag + attached to the item instance. + + Meaning to a file folder: Not applicable. Handled by the Shell item. + + Meaning to other folders: Not applicable. Handled by the Shell item. + + Combination with other flags: Cannot be combined with any other flag. Implies GPS_READWRITE + + + + + Meaning to a calling process: Provides a store that does not involve reading from the + disk or network. Note: Some values may be different, or missing, compared to a store + without this flag. + + Meaning to a file folder: Include the "innate" and "fallback" stores only. Do not load the handler. + + Meaning to other folders: Include only properties that are available in memory or can + be computed very quickly (no properties from disk, network, or peripheral IO devices). + This is normally only data sources from the IDLIST. When delegating to other folders, pass this flag on to them. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY, GPS_READWRITE, + GPS_HANDLERPROPERTIESONLY, or GPS_DELAYCREATION. + + + + + Meaning to a calling process: Open a slow item (offline file) if necessary. + Meaning to a file folder: Retrieve a file from offline storage, if necessary. + Note: Without this flag, the handler is not created for offline files. + + Meaning to other folders: Do not return any properties that are very slow. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY or GPS_FASTPROPERTIESONLY. + + + + + Meaning to a calling process: Delay memory-intensive operations, such as file access, until + a property is requested that requires such access. + + Meaning to a file folder: Do not create the handler until needed; for example, either + GetCount/GetAt or GetValue, where the innate store does not satisfy the request. + Note: GetValue might fail due to file access problems. + + Meaning to other folders: If the folder has memory-intensive properties, such as + delegating to a file folder or network access, it can optimize performance by + supporting IDelayedPropertyStoreFactory and splitting up its properties into a + fast and a slow store. It can then use delayed MUX to recombine them. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY or + GPS_READWRITE + + + + + Meaning to a calling process: Succeed at getting the store, even if some + properties are not returned. Note: Some values may be different, or missing, + compared to a store without this flag. + + Meaning to a file folder: Succeed and return a store, even if the handler or + innate store has an error during creation. Only fail if substores fail. + + Meaning to other folders: Succeed on getting the store, even if some properties + are not returned. + + Combination with other flags: Cannot be combined with GPS_TEMPORARY, + GPS_READWRITE, or GPS_HANDLERPROPERTIESONLY. + + + + + Mask for valid GETPROPERTYSTOREFLAGS values. + + + + + The specified items can be copied. + + + + + The specified items can be moved. + + + + + Shortcuts can be created for the specified items. This flag has the same value as DROPEFFECT. + The normal use of this flag is to add a Create Shortcut item to the shortcut menu that is displayed + during drag-and-drop operations. However, SFGAO_CANLINK also adds a Create Shortcut item to the Microsoft + Windows Explorer's File menu and to normal shortcut menus. + If this item is selected, your application's IContextMenu::InvokeCommand is invoked with the lpVerb + member of the CMINVOKECOMMANDINFO structure set to "link." Your application is responsible for creating the link. + + + + + The specified items can be bound to an IStorage interface through IShellFolder::BindToObject. + + + + + The specified items can be renamed. + + + + + The specified items can be deleted. + + + + + The specified items have property sheets. + + + + + The specified items are drop targets. + + + + + This flag is a mask for the capability flags. + + + + + Windows 7 and later. The specified items are system items. + + + + + The specified items are encrypted. + + + + + Indicates that accessing the object = through IStream or other storage interfaces, + is a slow operation. + Applications should avoid accessing items flagged with SFGAO_ISSLOW. + + + + + The specified items are ghosted icons. + + + + + The specified items are shortcuts. + + + + + The specified folder objects are shared. + + + + + The specified items are read-only. In the case of folders, this means + that new items cannot be created in those folders. + + + + + The item is hidden and should not be displayed unless the + Show hidden files and folders option is enabled in Folder Settings. + + + + + This flag is a mask for the display attributes. + + + + + The specified folders contain one or more file system folders. + + + + + The specified items are folders. + + + + + The specified folders or file objects are part of the file system + that is, they are files, directories, or root directories). + + + + + The specified folders have subfolders = and are, therefore, + expandable in the left pane of Windows Explorer). + + + + + This flag is a mask for the contents attributes. + + + + + When specified as input, SFGAO_VALIDATE instructs the folder to validate that the items + pointed to by the contents of apidl exist. If one or more of those items do not exist, + IShellFolder::GetAttributesOf returns a failure code. + When used with the file system folder, SFGAO_VALIDATE instructs the folder to discard cached + properties retrieved by clients of IShellFolder2::GetDetailsEx that may + have accumulated for the specified items. + + + + + The specified items are on removable media or are themselves removable devices. + + + + + The specified items are compressed. + + + + + The specified items can be browsed in place. + + + + + The items are nonenumerated items. + + + + + The objects contain new content. + + + + + It is possible to create monikers for the specified file objects or folders. + + + + + Not supported. + + + + + Indicates that the item has a stream associated with it that can be accessed + by a call to IShellFolder::BindToObject with IID_IStream in the riid parameter. + + + + + Children of this item are accessible through IStream or IStorage. + Those children are flagged with SFGAO_STORAGE or SFGAO_STREAM. + + + + + This flag is a mask for the storage capability attributes. + + + + + Mask used by PKEY_SFGAOFlags to remove certain values that are considered + to cause slow calculations or lack context. + Equal to SFGAO_VALIDATE | SFGAO_ISSLOW | SFGAO_HASSUBFOLDER. + + + + + Represents a saved search + + + + + Defines a strongly-typed property object. + All writable property objects must be of this type + to be able to call the value setter. + + The type of this property's value. + Because a property value can be empty, only nullable types + are allowed. + + + + Constructs a new Property object + + + + + + + + Constructs a new Property object + + + + + + + + Returns a formatted, Unicode string representation of a property value. + + One or more of the PropertyDescriptionFormat flags + that indicate the desired format. + The formatted value as a string, or null if this property + cannot be formatted for display. + True if the method successfully locates the formatted string; otherwise + False. + + + + Returns a formatted, Unicode string representation of a property value. + + One or more of the PropertyDescriptionFormat flags + that indicate the desired format. + The formatted value as a string, or null if this property + cannot be formatted for display. + + + + Clears the value of the property. + + + + + Gets or sets the strongly-typed value of this property. + The value of the property is cleared if the value is set to null. + + + If the property value cannot be retrieved or updated in the Property System + If the type of this property is not supported; e.g. writing a binary object. + Thrown if is false, and either + a string value was truncated or a numeric value was rounded. + + + + Gets the property key identifying this property. + + + + + Get the property description object. + + + + + Gets the case-sensitive name of a property as it is known to the system, + regardless of its localized name. + + + + + Gets the value for this property using the generic Object type. + To obtain a specific type for this value, use the more type strong + Property<T> class. + Also, you can only set a value for this type using Property<T> + + + + + Gets the associated runtime type. + + + + + Gets the image reference path and icon index associated with a property value (Windows 7 only). + + + + + Gets or sets a value that determines if a value can be truncated. The default for this property is false. + + + An will be thrown if + this property is not set to true, and a property value was set + but later truncated. + + + + + + Represents a custom category on the taskbar's jump list + + + + + Add JumpList items for this category + + The items to add to the JumpList. + + + + Creates a new custom category instance + + Category name + + + + Category name + + + + + Event that is triggered when the jump list collection is modified + + + + + Represents an instance of a Taskbar button jump list. + + + + + Create a JumpList for the application's taskbar button. + + A new JumpList that is associated with the app id of the main application window + If there are any other child (top-level) windows for this application and they don't have + a specific JumpList created for them, they all will share the same JumpList as the main application window. + In order to have a individual JumpList for a top-level window, use the overloaded method CreateJumpListForIndividualWindow. + + + + Create a JumpList for the application's taskbar button. + + Application Id for the individual window. This must be unique for each top-level window in order to have a individual JumpList. + Handle of the window associated with the new JumpList + A new JumpList that is associated with the specific window handle + + + + Create a JumpList for the application's taskbar button. + + Application Id for the individual window. This must be unique for each top-level window in order to have a individual JumpList. + WPF Window associated with the new JumpList + A new JumpList that is associated with the specific WPF window + + + + Adds a collection of custom categories to the Taskbar jump list. + + The catagories to add to the jump list. + + + + Adds user tasks to the Taskbar JumpList. User tasks can only consist of JumpListTask or + JumpListSeparator objects. + + The user tasks to add to the JumpList. + + + + Removes all user tasks that have been added. + + + + + Creates a new instance of the JumpList class with the specified + appId. The JumpList is associated with the main window of the application. + + Application Id to use for this instace. + + + + Creates a new instance of the JumpList class with the specified + appId. The JumpList is associated with the given WPF Window. + + Application Id to use for this instace. + WPF Window that is associated with this JumpList + + + + Creates a new instance of the JumpList class with the specified + appId. The JumpList is associated with the given window. + + Application Id to use for this instace. + Window handle for the window that is associated with this JumpList + + + + Reports document usage to the shell. + + The full path of the file to report usage. + + + + Commits the pending JumpList changes and refreshes the Taskbar. + + Will throw if the type of the file being added to the JumpList is not registered with the application. + Will throw if recent documents tracking is turned off by the user or via group policy. + Will throw if updating the JumpList fails for any other reason. + + + + Gets the recommended number of items to add to the jump list. + + + This number doesn’t + imply or suggest how many items will appear on the jump list. + This number should only be used for reference purposes since + the actual number of slots in the jump list can change after the last + refresh due to items being pinned or removed and resolution changes. + The jump list can increase in size accordingly. + + + + + Gets or sets the type of known categories to display. + + + + + Gets or sets the value for the known category location relative to the + custom category collection. + + + + + Gets or sets the application ID to use for this jump list. + + + + + Occurs when items are removed from the Taskbar's jump list since the last + refresh. + + + This event is not triggered + immediately when a user removes an item from the jump list but rather + when the application refreshes the task bar list directly. + + + + + Retrieves the current list of destinations that have been removed from the existing jump list by the user. + The removed destinations may become items on a custom jump list. + + A collection of items (filenames) removed from the existing jump list by the user. + + + + Represents a jump list item. + + + + + Creates a jump list item with the specified path. + + The path to the jump list item. + The file type should associate the given file + with the calling application. + + + + Gets or sets the target path for this jump list item. + + + + + Provides internal access to the functions provided by the ITaskbarList4 interface, + without being forced to refer to it through another singleton. + + + + + Represents an instance of the Windows taskbar + + + + + Applies an overlay to a taskbar button of the main application window to indicate application status or a notification to the user. + + The overlay icon + String that provides an alt text version of the information conveyed by the overlay, for accessibility purposes + + + + Applies an overlay to a taskbar button of the given window handle to indicate application status or a notification to the user. + + The handle of the window whose associated taskbar button receives the overlay. This handle must belong to a calling process associated with the button's application and must be a valid HWND or the call is ignored. + The overlay icon + String that provides an alt text version of the information conveyed by the overlay, for accessibility purposes + + + + Applies an overlay to a taskbar button of the given WPF window to indicate application status or a notification to the user. + + The window whose associated taskbar button receives the overlay. This window belong to a calling process associated with the button's application and must be already loaded. + The overlay icon + String that provides an alt text version of the information conveyed by the overlay, for accessibility purposes + + + + Displays or updates a progress bar hosted in a taskbar button of the main application window + to show the specific percentage completed of the full operation. + + An application-defined value that indicates the proportion of the operation that has been completed at the time the method is called. + An application-defined value that specifies the value currentValue will have when the operation is complete. + + + + Displays or updates a progress bar hosted in a taskbar button of the given window handle + to show the specific percentage completed of the full operation. + + The handle of the window whose associated taskbar button is being used as a progress indicator. + This window belong to a calling process associated with the button's application and must be already loaded. + An application-defined value that indicates the proportion of the operation that has been completed at the time the method is called. + An application-defined value that specifies the value currentValue will have when the operation is complete. + + + + Displays or updates a progress bar hosted in a taskbar button of the given WPF window + to show the specific percentage completed of the full operation. + + The window whose associated taskbar button is being used as a progress indicator. + This window belong to a calling process associated with the button's application and must be already loaded. + An application-defined value that indicates the proportion of the operation that has been completed at the time the method is called. + An application-defined value that specifies the value currentValue will have when the operation is complete. + + + + Sets the type and state of the progress indicator displayed on a taskbar button of the main application window. + + Progress state of the progress button + + + + Sets the type and state of the progress indicator displayed on a taskbar button + of the given window handle + + The handle of the window whose associated taskbar button is being used as a progress indicator. + This window belong to a calling process associated with the button's application and must be already loaded. + Progress state of the progress button + + + + Sets the type and state of the progress indicator displayed on a taskbar button + of the given WPF window + + The window whose associated taskbar button is being used as a progress indicator. + This window belong to a calling process associated with the button's application and must be already loaded. + Progress state of the progress button + + + + Sets the application user model id for an individual window + + The app id to set + Window handle for the window that needs a specific application id + AppId specifies a unique Application User Model ID (AppID) for the application or individual + top-level window whose taskbar button will hold the custom JumpList built through the methods class. + By setting an appId for a specific window, the window will not be grouped with it's parent window/application. Instead it will have it's own taskbar button. + + + + Sets the application user model id for a given window + + The app id to set + Window that needs a specific application id + AppId specifies a unique Application User Model ID (AppID) for the application or individual + top-level window whose taskbar button will hold the custom JumpList built through the methods class. + By setting an appId for a specific window, the window will not be grouped with it's parent window/application. Instead it will have it's own taskbar button. + + + + Sets the current process' explicit application user model id. + + The application id. + + + + Gets the current process' explicit application user model id. + + The app id or null if no app id has been defined. + + + + Represents an instance of the Windows Taskbar + + + + + Gets the Tabbed Thumbnail manager class for adding/updating + tabbed thumbnail previews. + + + + + Gets the Thumbnail toolbar manager class for adding/updating + toolbar buttons. + + + + + Gets or sets the application user model id. Use this to explicitly + set the application id when generating custom jump lists + + + + + Sets the handle of the window whose taskbar button will be used + to display progress. + + + + + Indicates if the user has set the application id for the whole process (all windows) + + + + + Indicates whether this feature is supported on the current platform. + + + + + + + + + + Release the native objects. + + + + + Dispatches a window message so that the appropriate events + can be invoked. This is used for the Taskbar's thumbnail toolbar feature. + + The window message, typically obtained + from a Windows Forms or WPF window procedure. + Taskbar window for which we are intercepting the messages + Returns true if this method handles the window message + + + + Helper function to capture a bitmap for a given window handle or incase of WPF app, + an UIElement. + + The proxy window for which a bitmap needs to be created + Size for the requested bitmap image + Bitmap captured from the window handle or UIElement. Null if the window is hidden or it's size is zero. + + + + Represents a taskbar thumbnail button in the thumbnail toolbar. + + + + + Initializes an instance of this class + + The icon to use for this button + The tooltip string to use for this button. + + + + The window manager should call this method to raise the public click event to all + the subscribers. + + Taskbar Window associated with this button + + + + + + + + + Release the native objects. + + + + + Release the native objects. + + + + + + The event that occurs when the taskbar thumbnail button + is clicked. + + + + + Gets thumbnail button's id. + + + + + Gets or sets the thumbnail button's icon. + + + + + Gets or sets the thumbnail button's tooltip. + + + + + Gets or sets the thumbnail button's visibility. Default is true. + + + + + Gets or sets the thumbnail button's enabled state. If the button is disabled, it is present, + but has a visual state that indicates that it will not respond to user action. Default is true. + + + + + Gets or sets the property that describes the behavior when the button is clicked. + If set to true, the taskbar button's flyout will close immediately. Default is false. + + + + + Gets or sets the property that describes whether the button is interactive with the user. Default is true. + + + Non-interactive buttons don't display any hover behavior nor do they raise click events. + They are intended to be used as status icons. This is mostly similar to being not Enabled, + but the image is not desaturated. + + + + + Native flags enum (used when creating the native button) + + + + + Native representation of the thumbnail button + + + + + Handle to the window to which this button is for (on the taskbar). + + + + + Indicates if this button was added to the taskbar. If it's not yet added, + then we can't do any updates on it. + + + + + Event args for TabbedThumbnailButton.Click event + + + + + Creates a Event Args for the TabbedThumbnailButton.Click event + + Window handle for the control/window related to the event + Thumbnail toolbar button that was clicked + + + + Creates a Event Args for the TabbedThumbnailButton.Click event + + WPF Control (UIElement) related to the event + Thumbnail toolbar button that was clicked + + + + Gets the Window handle for the specific control/window that is related to this event. + + For WPF Controls (UIElement) the WindowHandle will be IntPtr.Zero. + Check the WindowsControl property to get the specific control associated with this event. + + + + Gets the WPF Control (UIElement) that is related to this event. This property may be null + for non-WPF applications. + + + + + Gets the ThumbnailToolBarButton that was clicked + + + + + Thumbnail toolbar manager class for adding a thumbnail toolbar with a specified set of buttons + to the thumbnail image of a window in a taskbar button flyout. + + + + + Adds thumbnail toolbar for the specified window. + + Window handle for which the thumbnail toolbar buttons need to be added + Thumbnail buttons for the window's thumbnail toolbar + If the number of buttons exceed the maximum allowed capacity (7). + If the Window Handle passed in invalid + After a toolbar has been added to a thumbnail, buttons can be altered only through various + properties on the . While individual buttons cannot be added or removed, + they can be shown and hidden through as needed. + The toolbar itself cannot be removed without re-creating the window itself. + + + + + Adds thumbnail toolbar for the specified WPF Control. + + WPF Control for which the thumbnail toolbar buttons need to be added + Thumbnail buttons for the window's thumbnail toolbar + If the number of buttons exceed the maximum allowed capacity (7). + If the control passed in null + After a toolbar has been added to a thumbnail, buttons can be altered only through various + properties on the ThumbnailToolBarButton. While individual buttons cannot be added or removed, + they can be shown and hidden through ThumbnailToolBarButton.Visible as needed. + The toolbar itself cannot be removed without re-creating the window itself. + + + + + + + + + + Release the native objects. + + + + + Event arguments for when the user is notified of items + that have been removed from the taskbar destination list + + + + + The collection of removed items based on path. + + + + diff --git a/Bin/Microsoft.WindowsAPICodePack.dll b/Bin/Microsoft.WindowsAPICodePack.dll new file mode 100644 index 0000000..a1aaeb0 Binary files /dev/null and b/Bin/Microsoft.WindowsAPICodePack.dll differ diff --git a/Bin/Microsoft.WindowsAPICodePack.dll.refresh b/Bin/Microsoft.WindowsAPICodePack.dll.refresh new file mode 100644 index 0000000..0303f37 Binary files /dev/null and b/Bin/Microsoft.WindowsAPICodePack.dll.refresh differ diff --git a/Bin/Microsoft.WindowsAPICodePack.xml b/Bin/Microsoft.WindowsAPICodePack.xml new file mode 100644 index 0000000..d9eda0a --- /dev/null +++ b/Bin/Microsoft.WindowsAPICodePack.xml @@ -0,0 +1,2934 @@ + + + + Microsoft.WindowsAPICodePack + + + + + Provides access to the Application Restart and Recovery + features available in Windows Vista or higher. Application Restart and Recovery lets an + application do some recovery work to save data before the process exits. + + + + + Registers an application for recovery by Application Restart and Recovery. + + An object that specifies + the callback method, an optional parameter to pass to the callback + method and a time interval. + + The registration failed due to an invalid parameter. + + + The registration failed. + The time interval is the period of time within + which the recovery callback method + calls the method to indicate + that it is still performing recovery work. + + + + Removes an application's recovery registration. + + + The attempt to unregister for recovery failed. + + + + Removes an application's restart registration. + + + The attempt to unregister for restart failed. + + + + Called by an application's method + to indicate that it is still performing recovery work. + + A value indicating whether the user + canceled the recovery. + + This method must be called from a registered callback method. + + + + Called by an application's method to + indicate that the recovery work is complete. + + + This should + be the last call made by the method because + Windows Error Reporting will terminate the application + after this method is invoked. + + true to indicate the the program was able to complete its recovery + work before terminating; otherwise false. + + + + Registers an application for automatic restart if + the application + is terminated by Windows Error Reporting. + + An object that specifies + the command line arguments used to restart the + application, and + the conditions under which the application should not be + restarted. + Registration failed due to an invalid parameter. + The attempt to register failed. + A registered application will not be restarted if it executed for less than 60 seconds before terminating. + + + + This exception is thrown when there are problems with registering, unregistering or updating + applications using Application Restart Recovery. + + + + + Default constructor. + + + + + Initializes an exception with a custom message. + + A custom message for the exception. + + + + Initializes an exception with custom message and inner exception. + + A custom message for the exception. + Inner exception. + + + + Initializes an exception with custom message and error code. + + A custom message for the exception. + An error code (hresult) from which to generate the exception. + + + + Initializes an exception from serialization info and a context. + + Serialization info from which to create exception. + Streaming context from which to create exception. + + + + The that represents the callback method invoked + by the system when an application has registered for + application recovery. + + An application-defined state object that is passed to the callback method. + The callback method will be invoked + prior to the application being terminated by Windows Error Reporting (WER). To keep WER from terminating the application before + the callback method completes, the callback method must + periodically call the method. + + + + + Defines a class that contains a callback delegate and properties of the application + as defined by the user. + + + + + Initializes a recovery data wrapper with a callback method and the current + state of the application. + + The callback delegate. + The current state of the application. + + + + Invokes the recovery callback function. + + + + + Gets or sets a value that determines the recovery callback function. + + + + + Gets or sets a value that determines the application state. + + + + + Defines methods and properties for recovery settings, and specifies options for an application that attempts + to perform final actions after a fatal event, such as an + unhandled exception. + + This class is used to register for application recovery. + See the class. + + + + + Initializes a new instance of the RecoverySettings class. + + A recovery data object that contains the callback method (invoked by the system + before Windows Error Reporting terminates the application) and an optional state object. + The time interval within which the + callback method must invoke to + prevent WER from terminating the application. + + + + + Returns a string representation of the current state + of this object. + + A object. + + + + Gets the recovery data object that contains the callback method and an optional + parameter (usually the state of the application) to be passed to the + callback method. + + A object. + + + + Gets the time interval for notifying Windows Error Reporting. + The method must invoke + within this interval to prevent WER from terminating the application. + + + The recovery ping interval is specified in milliseconds. + By default, the interval is 5 seconds. + If you specify zero, the default interval is used. + + + + + Specifies the conditions when Windows Error Reporting + should not restart an application that has registered + for automatic restart. + + + + + Always restart the application. + + + + + Do not restart when the application has crashed. + + + + + Do not restart when the application is hung. + + + + + Do not restart when the application is terminated + due to a system update. + + + + + Do not restart when the application is terminated + because of a system reboot. + + + + + Specifies the options for an application to be automatically + restarted by Windows Error Reporting. + + Regardless of these + settings, the application + will not be restarted if it executed for less than 60 seconds before + terminating. + + + + Creates a new instance of the RestartSettings class. + + The command line arguments + used to restart the application. + A bitwise combination of the RestartRestrictions + values that specify + when the application should not be restarted. + + + + + Returns a string representation of the current state + of this object. + + A that displays + the command line arguments + and restrictions for restarting the application. + + + + Gets the command line arguments used to restart the application. + + A object. + + + + Gets the set of conditions when the application + should not be restarted. + + A set of values. + + + + This exception is thrown when there are problems with getting piece of data within PowerManager. + + + + + Default constructor. + + + + + Initializes an excpetion with a custom message. + + A custom message for the exception. + + + + Initializes an exception with custom message and inner exception. + + A custom message for the exception. + An inner exception on which to base this exception. + + + + Initializes an exception from serialization info and a context. + + SerializationInfo for the exception. + StreamingContext for the exception. + + + + Abstract base class for all dialog controls + + + + + Creates a new instance of a dialog control + + + + + Creates a new instance of a dialog control with the specified name. + + The name for this dialog. + + + + Calls the hosting dialog, if it exists, to check whether the + property can be set in the dialog's current state. + The host should throw an exception if the change is not supported. + Note that if the dialog isn't set yet, + there are no restrictions on setting the property. + + The name of the property that is changing + + + + Calls the hosting dialog, if it exists, to + to indicate that a property has changed, and that + the dialog should do whatever is necessary + to propagate the change to the native control. + Note that if the dialog isn't set yet, + there are no restrictions on setting the property. + + The name of the property that is changing. + + + + Compares two objects to determine whether they are equal + + The object to compare against. + A value. + + + + Serves as a hash function for a particular type. + + An hash code for this control. + + + + The native dialog that is hosting this control. This property is null is + there is not associated dialog + + + + + Gets the name for this control. + + A value. + + + + Gets the identifier for this control. + + An value. + + + + Strongly typed collection for dialog controls. + + DialogControl + + + + Inserts an dialog control at the specified index. + + The location to insert the control. + The item to insert. + A control with + the same name already exists in this collection -or- + the control is being hosted by another dialog -or- the associated dialog is + showing and cannot be modified. + + + + Removes the control at the specified index. + + The location of the control to remove. + + The associated dialog is + showing and cannot be modified. + + + + Searches for the control who's id matches the value + passed in the parameter. + + + An integer containing the identifier of the + control being searched for. + + A DialogControl who's id matches the value of the + parameter. + + + + Defines the indexer that supports accessing controls by name. + + + Control names are case sensitive. + This indexer is useful when the dialog is created in XAML + rather than constructed in code. + + The name cannot be null or a zero-length string. + If there is more than one control with the same name, only the first control will be returned. + + + + Indicates that the implementing class is a dialog that can host + customizable dialog controls (subclasses of DialogControl). + + + + + Returns if changes to the collection are allowed. + + true if collection change is allowed. + + + + Applies changes to the collection. + + + + + Handle notifications of individual child + pseudo-controls' properties changing.. + Prefilter should throw if the property + cannot be set in the dialog's current state. + PostProcess should pass on changes to native control, + if appropriate. + + The name of the property. + The control propertyName applies to. + true if the property change is allowed. + + + + Called when a control currently in the collection + has a property changed. + + The name of the property changed. + The control whose property has changed. + + + + HRESULT Wrapper + + + + + S_OK + + + + + S_FALSE + + + + + E_INVALIDARG + + + + + E_OUTOFMEMORY + + + + + E_NOINTERFACE + + + + + E_FAIL + + + + + E_ELEMENTNOTFOUND + + + + + TYPE_E_ELEMENTNOTFOUND + + + + + NO_OBJECT + + + + + Win32 Error code: ERROR_CANCELLED + + + + + ERROR_CANCELLED + + + + + The requested resource is in use + + + + + The requested resources is read-only. + + + + + Provide Error Message Helper Methods. + This is intended for Library Internal use only. + + + + + This is intended for Library Internal use only. + + + + + This is intended for Library Internal use only. + + + + + This is intended for Library Internal use only. + + The Windows API error code. + The equivalent HRESULT. + + + + This is intended for Library Internal use only. + + The error code. + True if the error code indicates success. + + + + This is intended for Library Internal use only. + + The error code. + True if the error code indicates success. + + + + This is intended for Library Internal use only. + + The error code. + True if the error code indicates failure. + + + + This is intended for Library Internal use only. + + The error code. + True if the error code indicates failure. + + + + This is intended for Library Internal use only. + + The COM error code. + The Win32 error code. + Inticates that the Win32 error code corresponds to the COM error code. + + + + Common Helper methods + + + + + Throws PlatformNotSupportedException if the application is not running on Windows XP + + + + + Throws PlatformNotSupportedException if the application is not running on Windows Vista + + + + + Throws PlatformNotSupportedException if the application is not running on Windows 7 + + + + + Get a string resource given a resource Id + + The resource Id + The string resource corresponding to the given resource Id. Returns null if the resource id + is invalid or the string cannot be retrieved for any other reason. + + + + Determines if the application is running on XP + + + + + Determines if the application is running on Vista + + + + + Determines if the application is running on Windows 7 + + + + + Wrappers for Native Methods and Structs. + This type is intended for internal use only + + + + + Places (posts) a message in the message queue associated with the thread that created + the specified window and returns without waiting for the thread to process the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Sends the specified message to a window or windows. The SendMessage function calls + the window procedure for the specified window and does not return until the window + procedure has processed the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Sends the specified message to a window or windows. The SendMessage function calls + the window procedure for the specified window and does not return until the window + procedure has processed the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Sends the specified message to a window or windows. The SendMessage function calls + the window procedure for the specified window and does not return until the window + procedure has processed the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Sends the specified message to a window or windows. The SendMessage function calls + the window procedure for the specified window and does not return until the window + procedure has processed the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Sends the specified message to a window or windows. The SendMessage function calls + the window procedure for the specified window and does not return until the window + procedure has processed the message. + + Handle to the window whose window procedure will receive the message. + If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, + including disabled or invisible unowned windows, overlapped windows, and pop-up windows; + but the message is not sent to child windows. + + Specifies the message to be sent. + Specifies additional message-specific information. + Specifies additional message-specific information. + A return code specific to the message being sent. + + + + Destroys an icon and frees any memory the icon occupied. + + Handle to the icon to be destroyed. The icon must not be in use. + If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. + + + + Gets the HiWord + + The value to get the hi word from. + Size + The upper half of the dword. + + + + Gets the LoWord + + The value to get the low word from. + The lower half of the dword. + + + + A Wrapper for a SIZE struct + + + + + Width + + + + + Height + + + + + Dialog Show State + + + + + Pre Show + + + + + Currently Showing + + + + + Currently Closing + + + + + Closed + + + + + Gets the Guid relating to the currently active power scheme. + + Reserved for future use, this must be set to IntPtr.Zero + Returns a Guid referring to the currently active power scheme. + + + + Encapsulates the native logic required to create, + configure, and show a TaskDialog, + via the TaskDialogIndirect() Win32 function. + + A new instance of this class should + be created for each messagebox show, as + the HWNDs for TaskDialogs do not remain constant + across calls to TaskDialogIndirect. + + + + + Encapsulates additional configuration needed by NativeTaskDialog + that it can't get from the TASKDIALOGCONFIG struct. + + + + + Internal class containing most native interop declarations used + throughout the library. + Functions that are not performance intensive belong in this class. + + + + + Gets the handle to the Icon + + + + + Represents a network on the local machine. + It can also represent a collection of network + connections with a similar network signature. + + + Instances of this class are obtained by calling + methods on the class. + + + + + Gets or sets the category of a network. The + categories are trusted, untrusted, or + authenticated. + + A value. + + + + Gets the local date and time when the network + was connected. + + A object. + + + + Gets the network connections for the network. + + A object. + + + + Gets the connectivity state of the network. + + A value. + Connectivity provides information on whether + the network is connected, and the protocols + in use for network traffic. + + + + Gets the local date and time when the + network was created. + + A object. + + + + Gets or sets a description for the network. + + A value. + + + + Gets the domain type of the network. + + A value. + The domain + indictates whether the network is an Active + Directory Network, and whether the machine + has been authenticated by Active Directory. + + + + Gets a value that indicates whether there is + network connectivity. + + A value. + + + + Gets a value that indicates whether there is + Internet connectivity. + + A value. + + + + Gets or sets the name of the network. + + A value. + + + + Gets a unique identifier for the network. + + A value. + + + + An enumerable collection of objects. + + + + + Returns the strongly typed enumerator for this collection. + + An object. + + + + Returns the enumerator for this collection. + + An object. + + + + Represents a connection to a network. + + A collection containing instances of this class is obtained by calling + the property. + + + + Retrieves an object that represents the network + associated with this connection. + + A object. + + + + Gets the adapter identifier for this connection. + + A object. + + + + Gets the unique identifier for this connection. + + A object. + + + + Gets a value that indicates the connectivity of this connection. + + A value. + + + + Gets a value that indicates whether the network associated + with this connection is + an Active Directory network and whether the machine + has been authenticated by Active Directory. + + A value. + + + + Gets a value that indicates whether this + connection has Internet access. + + A value. + + + + Gets a value that indicates whether this connection has + network connectivity. + + A value. + + + + An enumerable collection of objects. + + + + + Returns the strongly typed enumerator for this collection. + + A object. + + + + Returns the enumerator for this collection. + + A object. + + + + Specifies types of network connectivity. + + + + + The underlying network interfaces have no + connectivity to any network. + + + + + There is connectivity to the Internet + using the IPv4 protocol. + + + + + There is connectivity to a routed network + using the IPv4 protocol. + + + + + There is connectivity to a network, but + the service cannot detect any IPv4 + network traffic. + + + + + There is connectivity to the local + subnet using the IPv4 protocol. + + + + + There is connectivity to the Internet + using the IPv4 protocol. + + + + + There is connectivity to a local + network using the IPv6 protocol. + + + + + There is connectivity to a network, + but the service cannot detect any + IPv6 network traffic + + + + + There is connectivity to the local + subnet using the IPv6 protocol. + + + + + Specifies the domain type of a network. + + + + + The network is not an Active Directory network. + + + + + The network is an Active Directory network, but this machine is not authenticated against it. + + + + + The network is an Active Directory network, and this machine is authenticated against it. + + + + + Specifies the trust level for a + network. + + + + + The network is a public (untrusted) network. + + + + + The network is a private (trusted) network. + + + + + The network is authenticated against an Active Directory domain. + + + + + Specifies the level of connectivity for + networks returned by the + + class. + + + + + Networks that the machine is connected to. + + + + + Networks that the machine is not connected to. + + + + + All networks. + + + + + Provides access to objects that represent networks and network connections. + + + + + Retrieves a collection of objects that represent the networks defined for this machine. + + + The that specify the connectivity level of the returned objects. + + + A of objects. + + + + + Retrieves the identified by the specified network identifier. + + + A that specifies the unique identifier for the network. + + + The that represents the network identified by the identifier. + + + + + Retrieves a collection of objects that represent the connections for this machine. + + + A containing the network connections. + + + + + Retrieves the identified by the specified connection identifier. + + + A that specifies the unique identifier for the network connection. + + + The identified by the specified identifier. + + + + + Gets a value that indicates whether this machine + has Internet connectivity. + + A value. + + + + Gets a value that indicates whether this machine + has network connectivity. + + A value. + + + + Gets the connectivity state of this machine. + + A value. + + + + A snapshot of the state of the battery. + + + + + Generates a string that represents this BatteryState object. + + A representation of this object's current state. + + + + Gets a value that indicates whether the battery charger is + operating on external power. + + A value. True indicates the battery charger is operating on AC power. + + + + Gets the maximum charge of the battery (in mW). + + An value. + + + + Gets the current charge of the battery (in mW). + + An value. + + + + Gets the rate of discharge for the battery (in mW). + + + If plugged in, fully charged: DischargeRate = 0. + If plugged in, charging: DischargeRate = positive mW per hour. + If unplugged: DischargeRate = negative mW per hour. + + An value. + + + + Gets the estimated time remaining until the battery is empty. + + A object. + + + + Gets the manufacturer's suggested battery charge level + that should cause a critical alert to be sent to the user. + + An value. + + + + Gets the manufacturer's suggested battery charge level + that should cause a warning to be sent to the user. + + An value. + + + + This class keeps track of the current state of each type of event. + The MessageManager class tracks event handlers. + This class only deals with each event type (i.e. + BatteryLifePercentChanged) as a whole. + + + + + Determines if a message should be caught, preventing + the event handler from executing. + This is needed when an event is initially registered. + + The event to check. + A boolean value. Returns true if the + message should be caught. + + + + Enumeration of execution states. + + + + + No state configured. + + + + + Forces the system to be in the working state by resetting the system idle timer. + + + + + Forces the display to be on by resetting the display idle timer. + + + + + Enables away mode. This value must be specified with ES_CONTINUOUS. + Away mode should be used only by media-recording and media-distribution applications that must perform critical background processing on desktop computers while the computer appears to be sleeping. See Remarks. + + Windows Server 2003 and Windows XP/2000: ES_AWAYMODE_REQUIRED is not supported. + + + + + Informs the system that the state being set should remain in effect until the next call that uses ES_CONTINUOUS and one of the other state flags is cleared. + + + + + This class generates .NET events based on Windows messages. + The PowerRegWindow class processes the messages from Windows. + + + + + Registers a callback for a power event. + + Guid for the event. + Event handler for the specified event. + + + + Unregisters an event handler for a power event. + + Guid for the event. + Event handler to unregister. + + + + Ensures that the hidden window is initialized and + listening for messages. + + + + + Catch Windows messages and generates events for power specific + messages. + + + + + Adds an event handler to call when Windows sends + a message for an event. + + Guid for the event. + Event handler for the event. + + + + Removes an event handler. + + Guid for the event. + Event handler to remove. + Cannot unregister + a function that is not registered. + + + + Executes any registered event handlers. + + ArrayList of event handlers. + + + + This method is called when a Windows message + is sent to this window. + The method calls the registered event handlers. + + + + + Registers the application to receive power setting notifications + for the specific power setting event. + + Handle indicating where the power setting + notifications are to be sent. + The GUID of the power setting for + which notifications are to be sent. + Returns a notification handle for unregistering + power notifications. + + + + Enables registration for + power-related event notifications and provides access to power settings. + + + + + Gets a snapshot of the current battery state. + + A instance that represents + the state of the battery at the time this method was called. + The system does not have a battery. + Requires XP/Windows Server 2003 or higher. + + + + Allows an application to inform the system that it + is in use, thereby preventing the system from entering + the sleeping power state or turning off the display + while the application is running. + + The thread's execution requirements. + Thrown if the SetThreadExecutionState call fails. + + + + Raised each time the active power scheme changes. + + The event handler specified for removal was not registered. + Requires Vista/Windows Server 2008. + + + + Raised when the power source changes. + + The event handler specified for removal was not registered. + Requires Vista/Windows Server 2008. + + + + Raised when the remaining battery life changes. + + The event handler specified for removal was not registered. + Requires Vista/Windows Server 2008. + + + + Raised when the monitor status changes. + + The event handler specified for removal was not registered. + Requires Vista/Windows Server 2008. + + + + Raised when the system will not be moving into an idle + state in the near future so applications should + perform any tasks that + would otherwise prevent the computer from entering an idle state. + + The event handler specified for removal was not registered. + Requires Vista/Windows Server 2008. + + + + Gets or sets a value that indicates whether the monitor is + set to remain active. + + Requires XP/Windows Server 2003 or higher. + The caller does not have sufficient privileges to set this property. + + This information is typically used by applications + that display information but do not require + user interaction. For example, video playback applications. + to set this property. Demand value: ; Named Permission Sets: FullTrust. + A value. True if the monitor + is required to remain on. + + + + Gets or sets a value that indicates whether the system + is required to be in the working state. + + Requires XP/Windows Server 2003 or higher. + The caller does not have sufficient privileges to set this property. + + to set this property. Demand value: ; Named Permission Sets: FullTrust. + A value. + + + + Gets a value that indicates whether a battery is present. + The battery can be a short term battery. + + Requires XP/Windows Server 2003 or higher. + A value. + + + + Gets a value that indicates whether the battery is a short term battery. + + Requires XP/Windows Server 2003 or higher. + A value. + + + + Gets a value that indicates a UPS is present to prevent + sudden loss of power. + + Requires XP/Windows Server 2003 or higher. + A value. + + + + Gets a value that indicates the current power scheme. + + Requires Vista/Windows Server 2008. + A value. + + + + Gets a value that indicates the remaining battery life + (as a percentage of the full battery charge). + This value is in the range 0-100, + where 0 is not charged and 100 is fully charged. + + The system does not have a battery. + Requires Vista/Windows Server 2008. + An value. + + + + Gets a value that indictates whether the monitor is on. + + Requires Vista/Windows Server 2008. + A value. + + + + Gets the current power source. + + Requires Vista/Windows Server 2008. + A value. + + + + Specifies the supported power personalities. + + + + + The power personality Guid does not match a known value. + + + + + Power settings designed to deliver maximum performance + at the expense of power consumption savings. + + + + + Power settings designed consume minimum power + at the expense of system performance and responsiveness. + + + + + Power settings designed to balance performance + and power consumption. + + + + + Specifies the power source currently supplying power to the system. + + Application should be aware of the power source because + some power sources provide a finite power supply. + An application might take steps to conserve power while + the system is using such a source. + + + + + The computer is powered by an AC power source + or a similar device, such as a laptop powered + by a 12V automotive adapter. + + + + + The computer is powered by a built-in battery. + A battery has a limited + amount of power; applications should conserve resources + where possible. + + + + + The computer is powered by a short-term power source + such as a UPS device. + + + + + Defines a unique key for a Shell Property + + + + + PropertyKey Constructor + + A unique GUID for the property + Property identifier (PID) + + + + PropertyKey Constructor + + A string represenstion of a GUID for the property + Property identifier (PID) + + + + Returns whether this object is equal to another. This is vital for performance of value types. + + The object to compare against. + Equality result. + + + + Returns the hash code of the object. This is vital for performance of value types. + + + + + + Returns whether this object is equal to another. This is vital for performance of value types. + + The object to compare against. + Equality result. + + + + Implements the == (equality) operator. + + First property key to compare. + Second property key to compare. + true if object a equals object b. false otherwise. + + + + Implements the != (inequality) operator. + + First property key to compare + Second property key to compare. + true if object a does not equal object b. false otherwise. + + + + Override ToString() to provide a user friendly string representation + + String representing the property key + + + + A unique GUID for the property + + + + + Property identifier (PID) + + + + + Represents the OLE struct PROPVARIANT. + This class is intended for internal use only. + + + Originally sourced from http://blogs.msdn.com/adamroot/pages/interop-with-propvariants-in-net.aspx + and modified to support additional types including vectors and ability to set values + + + + + Attempts to create a PropVariant by finding an appropriate constructor. + + Object from which PropVariant should be created. + + + + Default constrcutor + + + + + Set a string value + + + + + Set a string vector + + + + + Set a bool vector + + + + + Set a short vector + + + + + Set a short vector + + + + + Set an int vector + + + + + Set an uint vector + + + + + Set a long vector + + + + + Set a ulong vector + + + + > + Set a double vector + + + + + Set a DateTime vector + + + + + Set a bool value + + + + + Set a DateTime value + + + + + Set a byte value + + + + + Set a sbyte value + + + + + Set a short value + + + + + Set an unsigned short value + + + + + Set an int value + + + + + Set an unsigned int value + + + + + Set a decimal value + + + + + Create a PropVariant with a contained decimal array. + + Decimal array to wrap. + + + + Create a PropVariant containing a float type. + + + + + Creates a PropVariant containing a float[] array. + + + + + Set a long + + + + + Set a ulong + + + + + Set a double + + + + + Set an IUnknown value + + The new value to set. + + + + Set a safe array value + + The new value to set. + + + + Disposes the object, calls the clear function. + + + + + Finalizer + + + + + Provides an simple string representation of the contained data and type. + + + + + + Gets or sets the variant type. + + + + + Checks if this has an empty or null value + + + + + + Gets the variant value. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to Failed to register application for restart due to bad parameters.. + + + + + Looks up a localized string similar to Application was not registered for recovery due to bad parameters.. + + + + + Looks up a localized string similar to Application failed to register for recovery.. + + + + + Looks up a localized string similar to Application failed to registered for restart.. + + + + + Looks up a localized string similar to Unregister for recovery failed.. + + + + + Looks up a localized string similar to Unregister for restart failed.. + + + + + Looks up a localized string similar to This method must be called from the registered callback method.. + + + + + Looks up a localized string similar to ACOnline: {1}{0}Max Charge: {2} mWh{0}Current Charge: {3} mWh{0}Discharge Rate: {4} mWh{0}Estimated Time Remaining: {5}{0}Suggested Critical Battery Charge: {6} mWh{0}Suggested Battery Warning Charge: {7} mWh{0}. + + + + + Looks up a localized string similar to Cancelable cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Dialog caption cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to CheckBox text cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Collapsed control text cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Only supported on Windows 7 or newer.. + + + + + Looks up a localized string similar to Only supported on Windows Vista or newer.. + + + + + Looks up a localized string similar to Only supported on Windows XP or newer.. + + + + + Looks up a localized string similar to Dialog cannot have more than one control with the same name.. + + + + + Looks up a localized string similar to Dialog control must be removed from current collections first.. + + + + + Looks up a localized string similar to Control name cannot be null or zero length.. + + + + + Looks up a localized string similar to Modifying controls collection while dialog is showing is not supported.. + + + + + Looks up a localized string similar to Dialog control name cannot be empty or null.. + + + + + Looks up a localized string similar to Dialog controls cannot be renamed.. + + + + + Looks up a localized string similar to Application. + + + + + Looks up a localized string similar to . + + + + + Looks up a localized string similar to . + + + + + Looks up a localized string similar to Expanded information mode cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Expanded control label cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Expanding state of the dialog cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Hyperlinks cannot be enabled/disabled while dialog is showing.. + + + + + Looks up a localized string similar to Reference path is invalid.. + + + + + Looks up a localized string similar to The specified event handler has not been registered.. + + + + + Looks up a localized string similar to An error has occurred in dialog configuration.. + + + + + Looks up a localized string similar to Invalid arguments to Win32 call.. + + + + + Looks up a localized string similar to Dialog contents too complex.. + + + + + Looks up a localized string similar to An unexpected internal error occurred in the Win32 call: {0:x}. + + + + + Looks up a localized string similar to TaskDialog feature needs to load version 6 of comctl32.dll but a different version is current loaded in memory.. + + + + + Looks up a localized string similar to Dialog owner cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to SetThreadExecutionState call failed.. + + + + + Looks up a localized string similar to The caller had insufficient access rights to get the system battery state.. + + + + + Looks up a localized string similar to The caller had insufficient access rights to get the system power capabilities.. + + + + + Looks up a localized string similar to Failed to get active power scheme.. + + + + + Looks up a localized string similar to Battery is not present on this system.. + + + + + Looks up a localized string similar to Progress bar cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Progress bar cannot be hosted in multiple dialogs.. + + + + + Looks up a localized string similar to {0}, {1}. + + + + + Looks up a localized string similar to Unable to initialize PropVariant.. + + + + + Looks up a localized string similar to Multi-dimensional SafeArrays not supported.. + + + + + Looks up a localized string similar to String argument cannot be null or empty.. + + + + + Looks up a localized string similar to This Value type is not supported.. + + + + + Looks up a localized string similar to Cannot be cast to unsupported type.. + + + + + Looks up a localized string similar to delegate: {0}, state: {1}, ping: {2}. + + + + + Looks up a localized string similar to command: {0} restrictions: {1}. + + + + + Looks up a localized string similar to StandardButtons cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Startup location cannot be changed while dialog is showing.. + + + + + Looks up a localized string similar to Bad button ID in closing event.. + + + + + Looks up a localized string similar to Button text must be non-empty.. + + + + + Looks up a localized string similar to Check box text must be provided to enable the dialog check box.. + + + + + Looks up a localized string similar to Attempting to close a non-showing dialog.. + + + + + Looks up a localized string similar to Application. + + + + + Looks up a localized string similar to . + + + + + Looks up a localized string similar to . + + + + + Looks up a localized string similar to Cannot have more than one default button of a given type.. + + + + + Looks up a localized string similar to Maximum value provided must be greater than the minimum value.. + + + + + Looks up a localized string similar to Minimum value provided must be a positive number.. + + + + + Looks up a localized string similar to Minimum value provided must less than the maximum value.. + + + + + Looks up a localized string similar to Value provided must be greater than equal to the minimum value and less than the maximum value.. + + + + + Looks up a localized string similar to Dialog cannot display both non-standard buttons and standard buttons.. + + + + + Looks up a localized string similar to Dialog cannot display both non-standard buttons and command links.. + + + + + Looks up a localized string similar to Unknown dialog control type.. + + + + + Base class for Safe handles with Null IntPtr as invalid + + + + + Default constructor + + + + + Determines if this is a valid handle + + + + + Safe Icon Handle + + + + + Release the handle + + true if handled is release successfully, false otherwise + + + + Safe Region Handle + + + + + Release the handle + + true if handled is release successfully, false otherwise + + + + Safe Window Handle + + + + + Release the handle + + true if handled is release successfully, false otherwise + + + + Encapsulates a new-to-Vista Win32 TaskDialog window + - a powerful successor to the MessageBox available + in previous versions of Windows. + + + + + Creates a basic TaskDialog window + + + + + Creates and shows a task dialog with the specified message text. + + The text to display. + The dialog result. + + + + Creates and shows a task dialog with the specified supporting text and main instruction. + + The supporting text to display. + The main instruction text to display. + The dialog result. + + + + Creates and shows a task dialog with the specified supporting text, main instruction, and dialog caption. + + The supporting text to display. + The main instruction text to display. + The caption for the dialog. + The dialog result. + + + + Creates and shows a task dialog. + + The dialog result. + + + + Close TaskDialog + + if TaskDialog is not showing. + + + + Close TaskDialog with a given TaskDialogResult + + TaskDialogResult to return from the TaskDialog.Show() method + if TaskDialog is not showing. + + + + Sets important text properties. + + An instance of a object. + + + + Dispose TaskDialog Resources + + + + + TaskDialog Finalizer + + + + + Dispose TaskDialog Resources + + If true, indicates that this is being called via Dispose rather than via the finalizer. + + + + Occurs when a progress bar changes. + + + + + Occurs when a user clicks a hyperlink. + + + + + Occurs when the TaskDialog is closing. + + + + + Occurs when a user clicks on Help. + + + + + Occurs when the TaskDialog is opened. + + + + + Gets or sets a value that contains the owner window's handle. + + + + + Gets or sets a value that contains the message text. + + + + + Gets or sets a value that contains the instruction text. + + + + + Gets or sets a value that contains the caption text. + + + + + Gets or sets a value that contains the footer text. + + + + + Gets or sets a value that contains the footer check box text. + + + + + Gets or sets a value that contains the expanded text in the details section. + + + + + Gets or sets a value that determines if the details section is expanded. + + + + + Gets or sets a value that contains the expanded control text. + + + + + Gets or sets a value that contains the collapsed control text. + + + + + Gets or sets a value that determines if Cancelable is set. + + + + + Gets or sets a value that contains the TaskDialog main icon. + + + + + Gets or sets a value that contains the footer icon. + + + + + Gets or sets a value that contains the standard buttons. + + + + + Gets a value that contains the TaskDialog controls. + + + + + Gets or sets a value that determines if hyperlinks are enabled. + + + + + Gets or sets a value that indicates if the footer checkbox is checked. + + + + + Gets or sets a value that contains the expansion mode for this dialog. + + + + + Gets or sets a value that contains the startup location. + + + + + Gets or sets the progress bar on the taskdialog. ProgressBar a visual representation + of the progress of a long running operation. + + + + + Indicates whether this feature is supported on the current platform. + + + + + Defines a common class for all task dialog bar controls, such as the progress and marquee bars. + + + + + Declares the abstract base class for all custom task dialog controls. + + + + + Creates a new instance of a task dialog control. + + + + + Creates a new instance of a task dialog control with the specified name. + + The name for this control. + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + + The name for this control. + + + + Resets the state of the control to normal. + + + + + Gets or sets the state of the progress bar. + + + + + Implements a button that can be hosted in a task dialog. + + + + + Defines the abstract base class for task dialog buttons. + Classes that inherit from this class will inherit + the Text property defined in this class. + + + + + Creates a new instance on a task dialog button. + + + + + Creates a new instance on a task dialog button with + the specified name and text. + + The name for this button. + The label for this button. + + + + Returns the Text property value for this button. + + A . + + + + Raised when the task dialog button is clicked. + + + + + Gets or sets the button text. + + + + + Gets or sets a value that determines whether the + button is enabled. The enabled state can cannot be changed + before the dialog is shown. + + + + + Gets or sets a value that indicates whether + this button is the default button. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified property settings. + + The name of the button. + The button label. + + + + Gets or sets a value that controls whether the elevation icon is displayed. + + + + + Data associated with event. + + + + + Gets or sets the standard button that was clicked. + + + + + Gets or sets the text of the custom button that was clicked. + + + + + Represents a command-link. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name and label. + + The name for this button. + The label for this button. + + + + Creates a new instance of this class with the specified name,label, and instruction. + + The name for this button. + The label for this button. + The instruction for this command link. + + + + Returns a string representation of this object. + + A + + + + Gets or sets the instruction associated with this command link button. + + + + + Specifies the options for expand/collapse sections in dialogs. + + + + + Do not show the content. + + + + + Show the content. + + + + + Expand the footer content. + + + + + Defines event data associated with a HyperlinkClick event. + + + + + Creates a new instance of this class with the specified link text. + + The text of the hyperlink that was clicked. + + + + Gets or sets the text of the hyperlink that was clicked. + + + + + Provides a visual representation of the progress of a long running operation. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with the specified name. + And using the default values: Min = 0, Max = 100, Current = 0 + + The name of the control. + + + + Creates a new instance of this class with the specified + minimum, maximum and current values. + + The minimum value for this control. + The maximum value for this control. + The current value for this control. + + + + Resets the control to its minimum value. + + + + + Gets or sets the minimum value for the control. + + + + + Gets or sets the maximum value for the control. + + + + + Gets or sets the current value for the control. + + + + + Verifies that the progress bar's value is between its minimum and maximum. + + + + + Sets the state of a task dialog progress bar. + + + + + Uninitialized state, this should never occur. + + + + + Normal state. + + + + + An error occurred. + + + + + The progress is paused. + + + + + Displays marquee (indeterminate) style progress + + + + + Defines a radio button that can be hosted in by a + object. + + + + + Creates a new instance of this class. + + + + + Creates a new instance of this class with + the specified name and text. + + The name for this control. + The value for this controls + property. + + + + Indicates the various buttons and options clicked by the user on the task dialog. + + + + + No button was selected. + + + + + "OK" button was clicked + + + + + "Yes" button was clicked + + + + + "No" button was clicked + + + + + "Cancel" button was clicked + + + + + "Retry" button was clicked + + + + + "Close" button was clicked + + + + + A custom button was clicked. + + + + + Identifies one of the standard buttons that + can be displayed via TaskDialog. + + + + + No buttons on the dialog. + + + + + An "OK" button. + + + + + A "Yes" button. + + + + + A "No" button. + + + + + A "Cancel" button. + + + + + A "Retry" button. + + + + + A "Close" button. + + + + + Specifies the icon displayed in a task dialog. + + + + + Displays no icons (default). + + + + + Displays the warning icon. + + + + + Displays the error icon. + + + + + Displays the Information icon. + + + + + Displays the User Account Control shield. + + + + + Specifies the initial display location for a task dialog. + + + + + The window placed in the center of the screen. + + + + + The window centered relative to the window that launched the dialog. + + + + + The event data for a TaskDialogTick event. + + + + + Initializes the data associated with the TaskDialog tick event. + + The total number of ticks since the control was activated. + + + + Gets a value that determines the current number of ticks. + + + + diff --git a/Bin/NHibernate.ByteCode.Castle.dll b/Bin/NHibernate.ByteCode.Castle.dll new file mode 100644 index 0000000..356fbff Binary files /dev/null and b/Bin/NHibernate.ByteCode.Castle.dll differ diff --git a/Bin/NHibernate.dll b/Bin/NHibernate.dll new file mode 100644 index 0000000..21232aa Binary files /dev/null and b/Bin/NHibernate.dll differ diff --git a/Bin/NPOI.OOXML.dll b/Bin/NPOI.OOXML.dll new file mode 100644 index 0000000..9d2cc8e Binary files /dev/null and b/Bin/NPOI.OOXML.dll differ diff --git a/Bin/NPOI.OpenXml4Net.dll b/Bin/NPOI.OpenXml4Net.dll new file mode 100644 index 0000000..fc44683 Binary files /dev/null and b/Bin/NPOI.OpenXml4Net.dll differ diff --git a/Bin/NPOI.OpenXmlFormats.dll b/Bin/NPOI.OpenXmlFormats.dll new file mode 100644 index 0000000..2b8e60c Binary files /dev/null and b/Bin/NPOI.OpenXmlFormats.dll differ diff --git a/Bin/NPOI.dll b/Bin/NPOI.dll new file mode 100644 index 0000000..441f874 Binary files /dev/null and b/Bin/NPOI.dll differ diff --git a/Bin/Newtonsoft.Json.dll b/Bin/Newtonsoft.Json.dll new file mode 100644 index 0000000..a957fda Binary files /dev/null and b/Bin/Newtonsoft.Json.dll differ diff --git a/Bin/Newtonsoft.Json.xml b/Bin/Newtonsoft.Json.xml new file mode 100644 index 0000000..4718b16 --- /dev/null +++ b/Bin/Newtonsoft.Json.xml @@ -0,0 +1,8472 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable typesl; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be is used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the Json string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the Json string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be is used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Gets the type of the converter. + + The type of the converter. + + + + Represents a collection of . + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Represents a JSON array. + + + + + + + + Represents a token that can contain other tokens. + + + + + Represents an abstract JSON token. + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a JSON constructor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly performance because expensive reflection will only happen once but could cause unexpected + behavior if different instances of the resolver are suppose to produce different results. When set to false it is highly + recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted type. + + + + Converts the value to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert the value to. + The converted value if the conversion was successful or the default value of T if it failed. + + true if initialValue was converted successfully; otherwise, false. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/Bin/SQLData.dll b/Bin/SQLData.dll new file mode 100644 index 0000000..72db140 Binary files /dev/null and b/Bin/SQLData.dll differ diff --git a/Bin/SevenZipSharp.dll b/Bin/SevenZipSharp.dll new file mode 100644 index 0000000..13b07eb Binary files /dev/null and b/Bin/SevenZipSharp.dll differ diff --git a/Bin/SevenZipSharp.dll.refresh b/Bin/SevenZipSharp.dll.refresh new file mode 100644 index 0000000..f520614 Binary files /dev/null and b/Bin/SevenZipSharp.dll.refresh differ diff --git a/Bin/SevenZipSharp.xml b/Bin/SevenZipSharp.xml new file mode 100644 index 0000000..71cb24c --- /dev/null +++ b/Bin/SevenZipSharp.xml @@ -0,0 +1,4642 @@ + + + + SevenZipSharp + + + + + The Stream extension class to emulate the archive part of a stream. + + + + + Gets the file offset. + + + + + The source wrapped stream. + + + + + Initializes a new instance of the ArchiveEmulationStream class. + + The stream to wrap. + The stream offset. + + + + Archive extraction callback to handle the process of unpacking files + + + + + For Compressing event. + + + + + Rate of the done work from [0, 1]. + + + + + Initializes a new instance of the ArchiveExtractCallback class + + IInArchive interface for the archive + Directory where files are to be unpacked to + The archive files count' + The owner of the callback + The list of actual indexes (solid archives support) + The value indicating whether to preserve directory structure of extracted files. + + + + Initializes a new instance of the ArchiveExtractCallback class + + IInArchive interface for the archive + Directory where files are to be unpacked to + The archive files count + Password for the archive + The owner of the callback + The list of actual indexes (solid archives support) + The value indicating whether to preserve directory structure of extracted files. + + + + Initializes a new instance of the ArchiveExtractCallback class + + IInArchive interface for the archive + The stream where files are to be unpacked to + The archive files count + The file index for the stream + The owner of the callback + + + + Initializes a new instance of the ArchiveExtractCallback class + + IInArchive interface for the archive + The stream where files are to be unpacked to + The archive files count + The file index for the stream + Password for the archive + The owner of the callback + + + + Occurs when a new file is going to be unpacked + + Occurs when 7-zip engine requests for an output stream for a new file to unpack in + + + + Occurs when a file has been successfully unpacked + + + + + Occurs when the archive is opened and 7-zip sends the size of unpacked data + + + + + Occurs when the extraction is performed + + + + + Occurs during the extraction when a file already exists + + + + + Gives the size of the unpacked archive files + + Size of the unpacked archive files (in bytes) + + + + Sets output stream for writing unpacked data + + Current file index + Output stream pointer + Extraction mode + 0 if OK + + + + + + + + + + + + + + + + Ensures that the directory to the file name is valid and creates intermediate directories if necessary + + File name + + + + removes the invalid character in file path. + + + + + + + + Struct for storing information about files in the 7-zip archive. + + + + + Gets or sets index of the file in the archive file table. + + + + + Gets or sets file name + + + + + Gets or sets the file last write time. + + + + + Gets or sets the file creation time. + + + + + Gets or sets the file creation time. + + + + + Gets or sets size of the file (unpacked). + + + + + Gets or sets CRC checksum of the file. + + + + + Gets or sets file attributes. + + + + + Gets or sets being a directory. + + + + + Gets or sets being encrypted. + + + + + Gets or sets comment for the file. + + + + + Compression method for the file. + + + + + Determines whether the specified System.Object is equal to the current ArchiveFileInfo. + + The System.Object to compare with the current ArchiveFileInfo. + true if the specified System.Object is equal to the current ArchiveFileInfo; otherwise, false. + + + + Determines whether the specified ArchiveFileInfo is equal to the current ArchiveFileInfo. + + The ArchiveFileInfo to compare with the current ArchiveFileInfo. + true if the specified ArchiveFileInfo is equal to the current ArchiveFileInfo; otherwise, false. + + + + Serves as a hash function for a particular type. + + A hash code for the current ArchiveFileInfo. + + + + Returns a System.String that represents the current ArchiveFileInfo. + + A System.String that represents the current ArchiveFileInfo. + + + + Determines whether the specified ArchiveFileInfo instances are considered equal. + + The first ArchiveFileInfo to compare. + The second ArchiveFileInfo to compare. + true if the specified ArchiveFileInfo instances are considered equal; otherwise, false. + + + + Determines whether the specified ArchiveFileInfo instances are not considered equal. + + The first ArchiveFileInfo to compare. + The second ArchiveFileInfo to compare. + true if the specified ArchiveFileInfo instances are not considered equal; otherwise, false. + + + + Callback to handle the archive opening + + + + + Gets the list of volume file names. + + + + + Performs the common initialization. + + Volume file name. + + + + Initializes a new instance of the ArchiveOpenCallback class. + + The archive file name. + + + + Initializes a new instance of the ArchiveOpenCallback class. + + The archive file name. + Password for the archive. + + + + Sets password for the archive + + Password for the archive + Zero if everything is OK + + + + Archive property struct. + + + + + Gets the name of the archive property. + + + + + Gets the value of the archive property. + + + + + Determines whether the specified System.Object is equal to the current ArchiveProperty. + + The System.Object to compare with the current ArchiveProperty. + true if the specified System.Object is equal to the current ArchiveProperty; otherwise, false. + + + + Determines whether the specified ArchiveProperty is equal to the current ArchiveProperty. + + The ArchiveProperty to compare with the current ArchiveProperty. + true if the specified ArchiveProperty is equal to the current ArchiveProperty; otherwise, false. + + + + Serves as a hash function for a particular type. + + A hash code for the current ArchiveProperty. + + + + Returns a System.String that represents the current ArchiveProperty. + + A System.String that represents the current ArchiveProperty. + + + + Determines whether the specified ArchiveProperty instances are considered equal. + + The first ArchiveProperty to compare. + The second ArchiveProperty to compare. + true if the specified ArchiveProperty instances are considered equal; otherwise, false. + + + + Determines whether the specified ArchiveProperty instances are not considered equal. + + The first ArchiveProperty to compare. + The second ArchiveProperty to compare. + true if the specified ArchiveProperty instances are not considered equal; otherwise, false. + + + + Archive update callback to handle the process of packing files + + + + + _files.Count if do not count directories + + + + + For Compressing event. + + + + + No directories. + + + + + Rate of the done work from [0, 1] + + + + + The names of the archive entries + + + + + Array of files to pack + + + + + Common root of file names length. + + + + + Input streams to be compressed. + + + + + Gets or sets the default item name used in MemoryStream compression. + + + + + Gets or sets the value indicating whether to compress as fast as possible, without calling events. + + + + + Initializes a new instance of the ArchiveUpdateCallback class + + Array of files to pack + Common file names root length + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Initializes a new instance of the ArchiveUpdateCallback class + + Array of files to pack + Common file names root length + The archive password + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Initializes a new instance of the ArchiveUpdateCallback class + + The input stream + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Initializes a new instance of the ArchiveUpdateCallback class + + The input stream + The archive password + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Initializes a new instance of the ArchiveUpdateCallback class + + Dictionary<file stream, name of the archive entry> + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Initializes a new instance of the ArchiveUpdateCallback class + + Dictionary<file stream, name of the archive entry> + The archive password + The owner of the callback + The compression parameters. + Preserve directory structure. + + + + Gets or sets the dictionary size. + + + + + Raises events for the GetStream method. + + The current item index. + True if not cancelled; otherwise, false. + + + + Occurs when the next file is going to be packed. + + Occurs when 7-zip engine requests for an input stream for the next file to pack it + + + + Occurs when data are being compressed. + + + + + Occurs when the current file was compressed. + + + + + Gets the stream for 7-zip library. + + File index + Input file stream + Zero if Ok + + + + User exceptions thrown during the requested operations, for example, in events. + + + + + Initializes a new instance of the CallbackBase class. + + + + + Initializes a new instance of the CallbackBase class. + + The archive password. + + + + Gets or sets the archive password + + + + + Gets or sets the value indicating whether the current procedure was cancelled. + + + + + Gets or sets throw exceptions on archive errors flag + + + + + Gets the user exceptions thrown during the requested operations, for example, in events. + + + + + Throws the specified exception when is able to. + + The exception to throw. + The handler responsible for the exception. + + + + Throws the first exception in the list if any exists. + + True means no exceptions. + + + + The structure to fix x64 and x32 variant size mismatch. + + + + + COM VARIANT structure with special interface routines. + + + + + FILETIME variant value. + + + + + The PropArray instance to fix the variant size on x64 bit systems. + + + + + Gets or sets variant type. + + + + + Gets or sets the pointer value of the COM variant + + + + + Gets or sets the UInt32 value of the COM variant. + + + + + Gets or sets the UInt32 value of the COM variant. + + + + + Gets or sets the Int64 value of the COM variant + + + + + Gets or sets the UInt64 value of the COM variant + + + + + Gets the object for this PropVariant. + + + + + + Determines whether the specified System.Object is equal to the current PropVariant. + + The System.Object to compare with the current PropVariant. + true if the specified System.Object is equal to the current PropVariant; otherwise, false. + + + + Determines whether the specified PropVariant is equal to the current PropVariant. + + The PropVariant to compare with the current PropVariant. + true if the specified PropVariant is equal to the current PropVariant; otherwise, false. + + + + Serves as a hash function for a particular type. + + A hash code for the current PropVariant. + + + + Returns a System.String that represents the current PropVariant. + + A System.String that represents the current PropVariant. + + + + Determines whether the specified PropVariant instances are considered equal. + + The first PropVariant to compare. + The second PropVariant to compare. + true if the specified PropVariant instances are considered equal; otherwise, false. + + + + Determines whether the specified PropVariant instances are not considered equal. + + The first PropVariant to compare. + The second PropVariant to compare. + true if the specified PropVariant instances are not considered equal; otherwise, false. + + + + Stores file extraction modes. + + + + + Extraction mode + + + + + Test mode + + + + + Skip mode + + + + + Stores operation result values + + + + + Success + + + + + Method is unsupported + + + + + Data error has occurred + + + + + CrcError has occurred + + + + + File is unavailable + + + + + Unexpected end of file + + + + + Data after end of archive + + + + + File is not archive + + + + + Archive headers error + + + + + Wrong password + + + + + Codes of item properties + + + + + No property + + + + + Handler item index + + + + + Item path + + + + + Item name + + + + + Item extension + + + + + true if the item is a folder; otherwise, false + + + + + Item size + + + + + Item packed sise; usually absent + + + + + Item attributes; usually absent + + + + + Item creation time; usually absent + + + + + Item last access time; usually absent + + + + + Item last write time + + + + + true if the item is solid; otherwise, false + + + + + true if the item is commented; otherwise, false + + + + + true if the item is encrypted; otherwise, false + + + + + (?) + + + + + (?) + + + + + Dictionary size(?) + + + + + Item CRC checksum + + + + + Item type(?) + + + + + (?) + + + + + Compression method + + + + + (?); usually absent + + + + + Item file system; usually absent + + + + + Item user(?); usually absent + + + + + Item group(?); usually absent + + + + + Bloack size(?) + + + + + Item comment; usually absent + + + + + Item position + + + + + Item prefix(?) + + + + + Number of subdirectories + + + + + Numbers of subfiles + + + + + The archive legacy unpacker version + + + + + Volume(?) + + + + + Is a volume + + + + + Offset value(?) + + + + + Links(?) + + + + + Number of blocks + + + + + Number of volumes(?) + + + + + Time type(?) + + + + + 64-bit(?) + + + + + BigEndian + + + + + Cpu(?) + + + + + Physical archive size + + + + + Headers size + + + + + Archive checksum + + + + + (?) + + + + + (?) + + + + + Cluster size(?) + + + + + Volume name(?) + + + + + Local item name(?); usually absent + + + + + (?) + + + + + Index of the Volume + + + + + User defined property; usually absent + + + + + PropId string names dictionary wrapper. + + + + + PropId string names + + + + + 7-zip IArchiveOpenCallback imported interface to handle the opening of an archive. + + + + + Sets total data size + + Files pointer + Total size in bytes + + + + Sets completed size + + Files pointer + Completed size in bytes + + + + 7-zip ICryptoGetTextPassword imported interface to get the archive password. + + + + + Gets password for the archive + + Password for the archive + Zero if everything is OK + + + + 7-zip ICryptoGetTextPassword2 imported interface for setting the archive password. + + + + + Sets password for the archive + + Specifies whether archive has a password or not (0 if not) + Password for the archive + Zero if everything is OK + + + + 7-zip IArchiveExtractCallback imported interface. + + + + + Gives the size of the unpacked archive files + + Size of the unpacked archive files (in bytes) + + + + SetCompleted 7-zip function + + + + + + Gets the stream for file extraction + + File index in the archive file table + Pointer to the stream + Extraction mode + S_OK - OK, S_FALSE - skip this file + + + + PrepareOperation 7-zip function + + Ask mode + + + + Sets the operation result + + The operation result + + + + 7-zip IArchiveUpdateCallback imported interface. + + + + + Gives the size of the unpacked archive files. + + Size of the unpacked archive files (in bytes) + + + + SetCompleted 7-zip internal function. + + + + + + Gets archive update mode. + + File index + 1 if new, 0 if not + 1 if new, 0 if not + -1 if doesn't matter + + + + + Gets the archive item property data. + + Item index + Property identifier + Property value + Zero if Ok + + + + Gets the stream for reading. + + The item index. + The ISequentialInStream pointer for reading. + Zero if Ok + + + + Sets the result for currently performed operation. + + The result value. + + + + EnumProperties 7-zip internal function. + + The enumerator pointer. + + + + + 7-zip IArchiveOpenVolumeCallback imported interface to handle archive volumes. + + + + + Gets the archive property data. + + The property identificator. + The property value. + + + + Gets the stream for reading the volume. + + The volume file name. + The IInStream pointer for reading. + Zero if Ok + + + + 7-zip ISequentialInStream imported interface + + + + + Writes data to 7-zip packer + + Array of bytes available for writing + Array size + S_OK if success + If (size > 0) and there are bytes in stream, + this function must read at least 1 byte. + This function is allowed to read less than "size" bytes. + You must call Read function in loop, if you need exact amount of data. + + + + + 7-zip ISequentialOutStream imported interface + + + + + Writes data to unpacked file stream + + Array of bytes available for reading + Array size + Processed data size + S_OK if success + If size != 0, return value is S_OK and (*processedSize == 0), + then there are no more bytes in stream. + If (size > 0) and there are bytes in stream, + this function must read at least 1 byte. + This function is allowed to rwrite less than "size" bytes. + You must call Write function in loop, if you need exact amount of data. + + + + + 7-zip IInStream imported interface + + + + + Read routine + + Array of bytes to set + Array size + Zero if Ok + + + + Seek routine + + Offset value + Seek origin value + New position pointer + + + + 7-zip IOutStream imported interface + + + + + Write routine + + Array of bytes to get + Array size + Processed size + Zero if Ok + + + + Seek routine + + Offset value + Seek origin value + New position pointer + + + + Set size routine + + New size value + Zero if Ok + + + + 7-zip essential in archive interface + + + + + Opens archive for reading. + + Archive file stream + Maximum start position for checking + Callback for opening archive + + + + + Closes the archive. + + + + + Gets the number of files in the archive file table . + + The number of files in the archive + + + + Retrieves specific property data. + + File index in the archive file table + Property code + Property variant value + + + + Extracts files from the opened archive. + + indexes of files to be extracted (must be sorted) + 0xFFFFFFFF means all files + testMode != 0 means "test files operation" + IArchiveExtractCallback for operations handling + 0 if success + + + + Gets archive property data + + Archive property identificator + Archive property value + + + + Gets the number of properties + + The number of properties + + + + Gets property information + + Item index + Name + Property identifier + Variant type + + + + Gets the number of archive properties + + The number of archive properties + + + + Gets the archive property information + + Item index + Name + Property identifier + Variant type + + + + 7-zip essential out archive interface + + + + + Updates archive items + + The ISequentialOutStream pointer for writing the archive data + Number of archive items + The IArchiveUpdateCallback pointer + Zero if Ok + + + + Gets file time type(?) + + Type pointer + + + + 7-zip ISetProperties interface for setting various archive properties + + + + + Sets the archive properties + + The names of the properties + The values of the properties + The properties count + + + + + Archive compression mode. + + + + + Create a new archive; overwrite the existing one. + + + + + Add data to the archive. + + + + + Callback delegate for . + + + + + The arguments passed to . + + + For each file, is first called with + set to . If the callback chooses to extract the + file data by setting or , the callback + will be called a second time with set to + or + to allow for any cleanup task like closing the stream. + + + + + Initializes a new instance of the class. + + The information about file in the archive. + + + + Information about file in the archive. + + Information about file in the archive. + + + + The reason for calling . + + + If neither nor is set, + will not be called after . + + The reason. + + + + The exception that occurred during extraction. + + The _Exception. + + If the callback is called with set to , + this member contains the _Exception that occurred. + The default behavior is to rethrow the _Exception after return of the callback. + However the callback can set to null to swallow the _Exception + and continue extraction with the next file. + + + + + Gets or sets a value indicating whether to cancel the extraction. + + true to cancel the extraction; false to continue. The default is false. + + + + Gets or sets whether and where to extract the file. + + The path where to extract the file to. + + If is set, this mmember will be ignored. + + + + + Gets or sets whether and where to extract the file. + + The the extracted data is written to. + + If both this member and are null (the defualt), the file + will not be extracted and the callback will be be executed a second time with the + set to or . + + + + + Gets or sets any data that will be preserved between the callback call + and the or calls. + + The data. + + + + The reason for calling . + + + + + is called the first time for a file. + + + + + All data has been written to the target without any exceptions. + + + + + An exception occured during extraction of the file. + + + + + EventArgs used to report the file information which is going to be packed. + + + + + Initializes a new instance of the FileInfoEventArgs class. + + The current ArchiveFileInfo. + The percent of finished work. + + + + Gets or sets whether to stop the current archive operation. + + + + + Gets or sets whether to skip the current file. + + + + + Gets the corresponding FileInfo to the event. + + + + + EventArgs class which stores the file name. + + + + + Initializes a new instance of the FileNameEventArgs class. + + The file name. + The percent of finished work + + + + Gets or sets whether to stop the current archive operation. + + + + + Gets or sets whether to stop the current archive operation. + + + + + Gets the file name. + + + + + EventArgs for FileExists event, stores the file name and asks whether to overwrite it in case it already exists. + + + + + Initializes a new instance of the FileOverwriteEventArgs class + + The file name. + + + + Gets or sets the value indicating whether to cancel the extraction. + + + + + Gets or sets the file name to extract to. Null means skip. + + + + + The definition of the interface which supports the cancellation of a process. + + + + + Gets or sets whether to stop the current archive operation. + + + + + Gets or sets whether to skip the current file. + + + + + Stores an int number + + + + + Initializes a new instance of the IntEventArgs class + + Useful data carried by the IntEventArgs class + + + + Gets the value of the IntEventArgs class + + + + + EventArgs used to report the size of unpacked archive data + + + + + Initializes a new instance of the OpenEventArgs class + + Size of unpacked archive data + + + + Gets the size of unpacked archive data + + + + + EventArgs for storing PercentDone property. + + + + + Initializes a new instance of the PercentDoneEventArgs class. + + The percent of finished work. + + + + + Gets the percent of finished work. + + + + + Converts a [0, 1] rate to its percent equivalent. + + The rate of the done work. + Percent integer equivalent. + + + + + The EventArgs class for accurate progress handling. + + + + + Initializes a new instance of the ProgressEventArgs class. + + The percent of finished work. + The percent of work done after the previous event. + + + + Gets the change in done work percentage. + + + + + The way of the event synchronization. + + + + + Events are called synchronously if user can do some action; that is, cancel the execution process for example. + + + + + Always call events asynchronously. + + + + + Always call events synchronously. + + + + + Exception class for ArchiveUpdateCallback. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the CompressionFailedException class + + + + + Initializes a new instance of the CompressionFailedException class + + Additional detailed message + + + + Initializes a new instance of the CompressionFailedException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the CompressionFailedException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for ArchiveExtractCallback. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the ExtractionFailedException class + + + + + Initializes a new instance of the ExtractionFailedException class + + Additional detailed message + + + + Initializes a new instance of the ExtractionFailedException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the ExtractionFailedException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for LZMA operations. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the LzmaException class + + + + + Initializes a new instance of the LzmaException class + + Additional detailed message + + + + Initializes a new instance of the LzmaException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the LzmaException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for 7-zip archive open or read operations. + + + + + Exception default message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipArchiveException class + + + + + Initializes a new instance of the SevenZipArchiveException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipArchiveException class + + Additional detailed message + Inner exception occurred + + + + Initializes a new instance of the SevenZipArchiveException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for fail to create an archive in SevenZipCompressor. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipCompressionFailedException class + + + + + Initializes a new instance of the SevenZipCompressionFailedException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipCompressionFailedException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipCompressionFailedException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Base SevenZip exception class. + + + + + The message for thrown user exceptions. + + + + + Initializes a new instance of the SevenZipException class + + + + + Initializes a new instance of the SevenZipException class + + Default exception message + + + + Initializes a new instance of the SevenZipException class + + Default exception message + Additional detailed message + + + + Initializes a new instance of the SevenZipException class + + Default exception message + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipException class + + Default exception message + Inner exception occured + + + + Initializes a new instance of the SevenZipException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for fail to extract an archive in SevenZipExtractor. + + + + + Exception default message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipExtractionFailedException class + + + + + Initializes a new instance of the SevenZipExtractionFailedException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipExtractionFailedException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipExtractionFailedException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for empty common root if file name array in SevenZipCompressor. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipInvalidFileNamesException class + + + + + Initializes a new instance of the SevenZipInvalidFileNamesException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipInvalidFileNamesException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipInvalidFileNamesException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for 7-zip library operations. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipLibraryException class + + + + + Initializes a new instance of the SevenZipLibraryException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipLibraryException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipLibraryException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + Exception class for 7-zip sfx settings validation. + + + + + Exception dafault message which is displayed if no extra information is specified + + + + + Initializes a new instance of the SevenZipSfxValidationException class + + + + + Initializes a new instance of the SevenZipSfxValidationException class + + Additional detailed message + + + + Initializes a new instance of the SevenZipSfxValidationException class + + Additional detailed message + Inner exception occured + + + + Initializes a new instance of the SevenZipSfxValidationException class + + All data needed for serialization or deserialization + Serialized stream descriptor + + + + The signature checker class. Original code by Siddharth Uppal, adapted by Markhor. + + Based on the code at http://blog.somecreativity.com/2008/04/08/how-to-check-if-a-file-is-compressed-in-c/# + + + + Gets the InArchiveFormat for a specific extension. + + The stream to identify. + The archive beginning offset. + True if the original format of the stream is PE; otherwise, false. + Corresponding InArchiveFormat. + + + + Gets the InArchiveFormat for a specific file name. + + The archive file name. + The archive beginning offset. + True if the original format of the file is PE; otherwise, false. + Corresponding InArchiveFormat. + + + + + Readable archive format enumeration. + + + + + Open 7-zip archive format. + + Wikipedia information + + + + Proprietary Arj archive format. + + Wikipedia information + + + + Open Bzip2 archive format. + + Wikipedia information + + + + Microsoft cabinet archive format. + + Wikipedia information + + + + Microsoft Compiled HTML Help file format. + + Wikipedia information + + + + Microsoft Compound file format. + + Wikipedia information + + + + Open Cpio archive format. + + Wikipedia information + + + + Open Debian software package format. + + Wikipedia information + + + + Open Gzip archive format. + + Wikipedia information + + + + Open ISO disk image format. + + Wikipedia information + + + + Open Lzh archive format. + + Wikipedia information + + + + Open core 7-zip Lzma raw archive format. + + Wikipedia information + + + + Nullsoft installation package format. + + Wikipedia information + + + + RarLab Rar archive format, version 5. + + Wikipedia information + + + + RarLab Rar archive format, version 4 or older. + + Wikipedia information + + + + Open Rpm software package format. + + Wikipedia information + + + + Open split file format. + + Wikipedia information + + + + Open Tar archive format. + + Wikipedia information + + + + Microsoft Windows Imaging disk image format. + + Wikipedia information + + + + Open LZW archive format; implemented in "compress" program; also known as "Z" archive format. + + Wikipedia information + + + + Open Zip archive format. + + Wikipedia information + + + + Open Udf disk image format. + + + + + Xar open source archive format. + + Wikipedia information + + + + Mub + + + + + Macintosh Disk Image on CD. + + Wikipedia information + + + + Apple Mac OS X Disk Copy Disk Image format. + + + + + Open Xz archive format. + + Wikipedia information + + + + MSLZ archive format. + + + + + Flash video format. + + Wikipedia information + + + + Shockwave Flash format. + + Wikipedia information + + + + Windows PE executable format. + + Wikipedia information + + + + Linux executable Elf format. + + Wikipedia information + + + + Windows Installer Database. + + Wikipedia information + + + + Microsoft virtual hard disk file format. + + Wikipedia information + + + + SquashFS file system format. + + Wikipedia information + + + + Lzma86 file format. + + + + + Prediction by Partial Matching by Dmitry algorithm. + + Wikipedia information + + + + TE format. + + + + + UEFIc format. + + Wikipedia information + + + + UEFIs format. + + Wikipedia information + + + + Compressed ROM file system format. + + Wikipedia information + + + + APM format. + + + + + Swfc format. + + + + + NTFS file system format. + + Wikipedia information + + + + FAT file system format. + + Wikipedia information + + + + MBR format. + + Wikipedia information + + + + Mach-O file format. + + Wikipedia information + + + + Writable archive format enumeration. + + + + + Open 7-zip archive format. + + Wikipedia information + + + + Open Zip archive format. + + Wikipedia information + + + + Open Gzip archive format. + + Wikipedia information + + + + Open Bzip2 archive format. + + Wikipedia information + + + + Open Tar archive format. + + Wikipedia information + + + + Open Xz archive format. + + Wikipedia information + + + + Compression level enumeration + + + + + No compression + + + + + Very low compression level + + + + + Low compression level + + + + + Normal compression level (default) + + + + + High compression level + + + + + The best compression level (slow) + + + + + Compression method enumeration. + + Some methods are applicable only to Zip format, some - only to 7-zip. + + + + Zip or 7-zip|no compression method. + + + + + Zip|Deflate method. + + + + + Zip|Deflate64 method. + + + + + Zip or 7-zip|Bzip2 method. + + Wikipedia information + + + + Zip or 7-zip|LZMA method based on Lempel-Ziv algorithm, it is default for 7-zip. + + + + + 7-zip|LZMA version 2, LZMA with improved multithreading and usually slight archive size decrease. + + + + + Zip or 7-zip|PPMd method based on Dmitry Shkarin's PPMdH source code, very efficient for compressing texts. + + Wikipedia information + + + + No method change. + + + + + Archive format routines + + + + + List of readable archive format interface guids for 7-zip COM interop. + + + + + List of writable archive format interface guids for 7-zip COM interop. + + + + + List of archive formats corresponding to specific extensions + + + + + List of archive formats corresponding to specific signatures + + Based on the information at this site. + + + + Gets InArchiveFormat for specified archive file name + + Archive file name + Indicates whether to throw exceptions + InArchiveFormat recognized by the file name extension + + + + + Create a new archive; overwrite the existing one. + + + + + Add data to the archive. + + + + + Modify archive data. + + + + + The set of features supported by the library. + + + + + Default feature. + + + + + The library can extract 7zip archives compressed with LZMA method. + + + + + The library can extract 7zip archives compressed with LZMA2 method. + + + + + The library can extract 7z archives compressed with all known methods. + + + + + The library can extract zip archives. + + + + + The library can extract rar archives. + + + + + The library can extract gzip archives. + + + + + The library can extract bzip2 archives. + + + + + The library can extract tar archives. + + + + + The library can extract xz archives. + + + + + The library can extract all types of archives supported. + + + + + The library can compress data to 7zip archives with LZMA method. + + + + + The library can compress data to 7zip archives with LZMA2 method. + + + + + The library can compress data to 7zip archives with all methods known. + + + + + The library can compress data to tar archives. + + + + + The library can compress data to gzip archives. + + + + + The library can compress data to bzip2 archives. + + + + + The library can compress data to xz archives. + + + + + The library can compress data to zip archives. + + + + + The library can compress data to all types of archives supported. + + + + + The library can modify archives. + + + + + 7-zip library low-level wrapper. + + + + + Synchronization root for all locking. + + + + + Path to the 7-zip dll. + + 7zxa.dll supports only decoding from .7z archives. + Features of 7za.dll: + - Supporting 7z format; + - Built encoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption. + - Built decoders: LZMA, PPMD, BCJ, BCJ2, COPY, AES-256 Encryption, BZip2, Deflate. + 7z.dll (from the 7-zip distribution) supports every InArchiveFormat for encoding and decoding. + + + + + 7-zip library handle. + + + + + 7-zip library features. + + + + + Loads the 7-zip library if necessary and adds user to the reference list + + Caller of the function + Archive format + + + + Gets the value indicating whether the library supports modifying archives. + + + + + Removes user from reference list and frees the 7-zip library if it becomes empty + + Caller of the function + Archive format + + + + Gets IInArchive interface to extract 7-zip archives. + + Archive format. + Archive format user. + + + + Gets IOutArchive interface to pack 7-zip archives. + + Archive format. + Archive format user. + + + + The stream which decompresses data with LZMA on the fly. + + + + + Initializes a new instance of the LzmaDecodeStream class. + + A compressed stream. + + + + Gets the chunk size. + + + + + Gets a value indicating whether the current stream supports reading. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets the length in bytes of the output stream. + + + + + Gets or sets the position within the output stream. + + + + + Does nothing. + + + + + Reads a sequence of bytes from the current stream and decompresses data if necessary. + + An array of bytes. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The total number of bytes read into the buffer. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type System.IO.SeekOrigin indicating the reference point used to obtain the new position. + The new position within the current stream. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + + + + Writes a sequence of bytes to the current stream. + + An array of bytes. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + + + The stream which compresses data with LZMA on the fly. + + + + + Initializes a new instance of the LzmaEncodeStream class. + + + + + Initializes a new instance of the LzmaEncodeStream class. + + The buffer size. The bigger size, the better compression. + + + + Initializes a new instance of the LzmaEncodeStream class. + + An output stream which supports writing. + + + + Initializes a new instance of the LzmaEncodeStream class. + + An output stream which supports writing. + A buffer size. The bigger size, the better compression. + + + + Gets a value indicating whether the current stream supports reading. + + + + + Gets a value indicating whether the current stream supports seeking. + + + + + Gets a value indicating whether the current stream supports writing. + + + + + Gets the length in bytes of the output stream. + + + + + Gets or sets the position within the output stream. + + + + + Checked whether the class was disposed. + + + + + + Converts the LzmaEncodeStream to the LzmaDecodeStream to read data. + + + + + + Clears all buffers for this stream and causes any buffered data to be compressed and written. + + + + + Releases all unmanaged resources used by LzmaEncodeStream. + + + + + Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. + + An array of bytes. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + The total number of bytes read into the buffer. + + + + Sets the position within the current stream. + + A byte offset relative to the origin parameter. + A value of type System.IO.SeekOrigin indicating the reference point used to obtain the new position. + The new position within the current stream. + + + + Sets the length of the current stream. + + The desired length of the current stream in bytes. + + + + Writes a sequence of bytes to the current stream and compresses it if necessary. + + An array of bytes. + The zero-based byte offset in buffer at which to begin storing the data read from the current stream. + The maximum number of bytes to be read from the current stream. + + + + Callback to implement the ICodeProgress interface + + + + + Initializes a new instance of the LzmaProgressCallback class + + The input size + Progress event handler + + + + Sets the progress + + The processed input size + The processed output size + + + + Implements the input buffer work + + + + + Initializes the input buffer + + + + + + Initializes the class + + + + + + Reads the whole block + + + + + + Releases the stream + + + + + Reads the byte to check it + + + + + + + Reads the next byte + + + + + + Gets processed size + + + + + + Initializes a new instance of the OutBuffer class + + + + + + The LZMA decoder class + + + + + Initializes the Lzma Decoder class. + + + + + Codes a stream with LZMA algorithm to an output stream + + The input stream + The input size + The output size + The output stream + Progress interface + + + + Sets decoder properties + + Array of byte properties + + + + Trains a stream + + The stream to train. + true if Ok; otherwise, false. + + + + Decodes the stream + + The specified RangeCoder + The position state + + + + + The LZMA encoder class + + + + + Initializes a new instance of the Encoder class + + + + + Codes the specified stream + + The input stream + The input size + The output size + The output stream + The progress callback + + + + Sets the coder properties + + The property identificators + The array of properties + + + + Writes the coder properties + + The output stream to write the properties to. + + + + Input window class + + + + + Size of Allocated memory block + + + + + The pointer to buffer with data + + + + + Buffer offset value + + + + + How many BYTEs must be kept buffer after _pos + + + + + How many BYTEs must be kept in buffer before _pos + + + + + Offset (from _buffer) of curent byte + + + + + Offset (from _buffer) of first not read byte from Stream + + + + + index + limit have not to exceed _keepSizeAfter + + + + + + + + + The exception that is thrown when an error in input stream occurs during decoding. + + + + + The exception that is thrown when the value of an argument is outside the allowable range. + + + + + Callback progress interface. + + + + + Callback progress. + + + Processed input size. -1 if unknown. + + + Processed output size. -1 if unknown. + + + + + Stream coder interface + + + + + Codes streams. + + + input Stream. + + + output Stream. + + + input Size. -1 if unknown. + + + output Size. -1 if unknown. + + + callback progress reference. + + + if input stream is not valid + + + + + Provides the fields that represent properties idenitifiers for compressing. + + + + + Specifies default property. + + + + + Specifies size of dictionary. + + + + + Specifies size of memory for PPM*. + + + + + Specifies order for PPM methods. + + + + + Specifies Block Size. + + + + + Specifies number of postion state bits for LZMA (0 <= x <= 4). + + + + + Specifies number of literal context bits for LZMA (0 <= x <= 8). + + + + + Specifies number of literal position bits for LZMA (0 <= x <= 4). + + + + + Specifies number of fast bytes for LZ*. + + + + + Specifies match finder. LZMA: "BT2", "BT4" or "BT4B". + + + + + Specifies the number of match finder cyckes. + + + + + Specifies number of passes. + + + + + Specifies number of algorithm. + + + + + Specifies the number of threads. + + + + + Specifies mode with end marker. + + + + + The ISetCoderProperties interface + + + + + The IWriteCoderProperties interface + + + + + The ISetDecoderPropertiesinterface + + + + + Sets decoder properties + + Array of byte properties + + + + SevenZip Extractor/Compressor base class. Implements Password string, ReportErrors flag. + + + + + True if the instance of the class needs to be recreated in new thread context; otherwise, false. + + + + + Gets or sets the event synchronization strategy. + + + + + Gets the unique identifier of this SevenZipBase instance. + + + + + User exceptions thrown during the requested operations, for example, in events. + + + + + Initializes a new instance of the SevenZipBase class. + + The archive password. + + + + Removes the UniqueID from the list. + + + + + Gets or sets the archive password + + + + + Gets or sets throw exceptions on archive errors flag + + + + + Gets the user exceptions thrown during the requested operations, for example, in events. + + + + + Throws the specified exception when is able to. + + The exception to throw. + The handler responsible for the exception. + + + + Throws exception if HRESULT != 0. + + Result code to check. + Exception message. + The class responsible for the callback. + + + + Changes the path to the 7-zip native library. + + The path to the 7-zip native library. + + + + Gets the current library features. + + + + + Determines whether the specified System.Object is equal to the current SevenZipBase. + + The System.Object to compare with the current SevenZipBase. + true if the specified System.Object is equal to the current SevenZipBase; otherwise, false. + + + + Serves as a hash function for a particular type. + + A hash code for the current SevenZipBase. + + + + Returns a System.String that represents the current SevenZipBase. + + A System.String that represents the current SevenZipBase. + + + + Class to pack data into archives supported by 7-Zip. + + + var compr = new SevenZipCompressor(); + compr.CompressDirectory(@"C:\Dir", @"C:\Archive.7z"); + + + + + Gets or sets the archiving compression level. + + + + + Gets the custom compression parameters - for advanced users only. + + + + + Gets or sets the value indicating whether to include empty directories to archives. Default is true. + + + + + Gets or sets the value indicating whether to preserve the directory root for CompressDirectory. + + + + + Gets or sets the value indicating whether to preserve the directory structure. + + + + + Gets or sets the compression mode. + + + + + Gets or sets the value indicating whether to encrypt 7-Zip archive headers. + + + + + Gets or sets the value indicating whether to compress files only open for writing. + + + + + Gets or sets the encryption method for zip archives. + + + + + Gets or sets the temporary folder path. + + + + + Gets or sets the default archive item name used when an item to be compressed has no name, + for example, when you compress a MemoryStream instance. + + + + + Gets or sets the value indicating whether to compress as fast as possible, without calling events. + + + + + Initializes a new instance of the SevenZipCompressor class. + + + + + Initializes a new instance of the SevenZipCompressor class. + + Your own temporary path (default is set in the parameterless constructor overload.) + + + + Checks if the specified stream supports compression. + + The stream to check. + + + + Guaranties the correct work of the SetCompressionProperties function + + The compression method to check + The value indicating whether the specified method is valid for the current ArchiveFormat + + + + Sets the compression properties + + + + + Finds the common root of file names + + Array of file names + Common root + + + + Validates the common root + + The length of the common root of the file names. + Array of file names + + + + Ensures that directory directory is not empty + + Directory name + False if is not empty + + + + Makes special FileInfo array for the archive file table. + + Array of files to pack. + The length of the common root of file names + The value indicating whether to produce the array for files in a particular directory or just for an array of files. + Preserve directory structure. + Special FileInfo array for the archive file table. + + + + Recursive function for adding files in directory + + Directory directory + List of files + Search string, such as "*.txt" + + + + Performs the common ArchiveUpdateCallback initialization. + + The ArchiveUpdateCallback instance to initialize. + + + + Produces a new instance of ArchiveUpdateCallback class. + + Array of FileInfo - files to pack + Length of the common root of file names + The archive password + + + + + Produces a new instance of ArchiveUpdateCallback class. + + The archive input stream. + The archive password. + + + + + Produces a new instance of ArchiveUpdateCallback class. + + Dictionary<name of the archive entry, stream>. + The archive password + + + + + Occurs when the next file is going to be packed. + + Occurs when 7-zip engine requests for an input stream for the next file to pack it + + + + Occurs when the current file was compressed. + + + + + Occurs when data are being compressed + + Use this event for accurate progress handling and various ProgressBar.StepBy(e.PercentDelta) routines + + + + Occurs when all files information was determined and SevenZipCompressor is about to start to compress them. + + The incoming int value indicates the number of scanned files. + + + + Occurs when the compression procedure is finished + + + + + Event proxy for FileCompressionStarted. + + The sender of the event. + The event arguments. + + + + Event proxy for FileCompressionFinished. + + The sender of the event. + The event arguments. + + + + Event proxy for Compressing. + + The sender of the event. + The event arguments. + + + + Event proxy for FilesFound. + + The sender of the event. + The event arguments. + + + + Gets or sets the archive format + + + + + Gets or sets the compression method + + + + + Gets or sets the size in bytes of an archive volume (0 for no volumes). + + + + + Packs files into the archive. + + Array of file names to pack. + The archive file name. + + + + Packs files into the archive. + + Array of file names to pack. + The archive output stream. + Use CompressFiles(string archiveName ... ) overloads for archiving to disk. + + + + Packs files into the archive. + + Array of file names to pack. + The length of the common root of the file names. + The archive file name. + + + + Packs files into the archive. + + Array of file names to pack. + The length of the common root of the file names. + The archive output stream. + Use CompressFiles(string archiveName, ... ) overloads for archiving to disk. + + + + Packs files into the archive. + + Array of file names to pack. + The archive file name. + The archive password. + + + + Packs files into the archive. + + Array of file names to pack. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Packs files into the archive. + + Array of file names to pack. + The length of the common root of the file names. + The archive file name. + The archive password. + + + + Packs files into the archive. + + Array of file names to pack. + The length of the common root of the file names. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Packs all files in the specified directory. + + The directory to compress. + The archive file name. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Packs all files in the specified directory. + + The directory to compress. + The archive output stream. + Use CompressDirectory( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Packs the specified file dictionary. + + Dictionary<name of the archive entry, file name>. + If a file name is null, the corresponding archive entry becomes a directory. + The archive file name. + The archive password. + + + + Packs the specified file dictionary. + + Dictionary<name of the archive entry, file name>. + If a file name is null, the corresponding archive entry becomes a directory. + The archive output stream. + Use CompressStreamDictionary( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Packs the specified stream dictionary. + + Dictionary<name of the archive entry, stream>. + If a stream is null, the corresponding string becomes a directory name. + The archive file name. + The archive password. + + + + Packs the specified stream dictionary. + + Dictionary<name of the archive entry, stream>. + If a stream is null, the corresponding string becomes a directory name. + The archive output stream. + Use CompressStreamDictionary( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Compresses the specified stream. + + The source uncompressed stream. + The destination compressed stream. + The archive password. + ArgumentException: at least one of the specified streams is invalid. + + + + Modifies the existing archive (renames files or deletes them). + + The archive file name. + New file names. Null value to delete the corresponding index. + The archive password. + + + + Gets or sets the dictionary size for the managed LZMA algorithm. + + + + + Compresses the specified stream with LZMA algorithm (C# inside) + + The source uncompressed stream + The destination compressed stream + The length of uncompressed data (null for inStream.Length) + The event for handling the code progress + + + + Compresses byte array with LZMA algorithm (C# inside) + + Byte array to compress + Compressed byte array + + + + Ensures an array of file names is the full path to that file. + + Array of file names. + Array of file names with full paths. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles(string archiveName ... ) overloads for archiving to disk. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The length of the common root of the file names. + The archive file name. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The length of the common root of the file names. + The archive output stream. + Use CompressFiles(string archiveName, ... ) overloads for archiving to disk. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name + The archive password. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name + The archive password. + The length of the common root of the file names. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + The length of the common root of the file names. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles(string archiveName ... ) overloads for archiving to disk. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The length of the common root of the file names. + The archive file name. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The length of the common root of the file names. + The archive output stream. + Use CompressFiles(string archiveName, ... ) overloads for archiving to disk. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name + The archive password. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive file name + The archive password. + The length of the common root of the file names. + + + + Packs files into the archive asynchronously. + + Array of file names to pack. + The archive output stream. + Use CompressFiles( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + The length of the common root of the file names. + + + + Packs all files in the specified directory asynchronously. + + The directory to compress. + The archive file name. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Packs all files in the specified directory asynchronously. + + The directory to compress. + The archive output stream. + Use CompressDirectory( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Packs all files in the specified directory asynchronously. + + The directory to compress. + The archive file name. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Packs all files in the specified directory asynchronously. + + The directory to compress. + The archive output stream. + Use CompressDirectory( ... string archiveName ... ) overloads for archiving to disk. + The archive password. + Search string, such as "*.txt". + If true, files will be searched for recursively; otherwise, not. + + + + Compresses the specified stream. + + The source uncompressed stream. + The destination compressed stream. + The archive password. + ArgumentException: at least one of the specified streams is invalid. + + + + Compresses the specified stream. + + The source uncompressed stream. + The destination compressed stream. + The archive password. + ArgumentException: at least one of the specified streams is invalid. + + + + Modifies the existing archive asynchronously (renames files or deletes them). + + The archive file name. + New file names. Null value to delete the corresponding index. + The archive password. + + + + Modifies the existing archive asynchronously (renames files or deletes them). + + The archive file name. + New file names. Null value to delete the corresponding index. + The archive password. + + + + Class to unpack data from archives supported by 7-Zip. + + + using (var extr = new SevenZipExtractor(@"C:\Test.7z")) + { + extr.ExtractArchive(@"C:\TestDirectory"); + } + + + + + This is used to lock possible Dispose() calls. + + + + + General initialization function. + + The archive file name. + + + + General initialization function. + + The stream to read the archive from. + + + + Initializes a new instance of SevenZipExtractor class. + + The stream to read the archive from. + Use SevenZipExtractor(string) to extract from disk, though it is not necessary. + The archive format is guessed by the signature. + + + + Initializes a new instance of SevenZipExtractor class. + + The stream to read the archive from. + Use SevenZipExtractor(string) to extract from disk, though it is not necessary. + Manual archive format setup. You SHOULD NOT normally specify it this way. + Instead, use SevenZipExtractor(Stream archiveStream), that constructor + automatically detects the archive format. + + + + Initializes a new instance of SevenZipExtractor class. + + The archive full file name. + + + + Initializes a new instance of SevenZipExtractor class. + + The archive full file name. + Manual archive format setup. You SHOULD NOT normally specify it this way. + Instead, use SevenZipExtractor(string archiveFullName), that constructor + automatically detects the archive format. + + + + Initializes a new instance of SevenZipExtractor class. + + The archive full file name. + Password for an encrypted archive. + + + + Initializes a new instance of SevenZipExtractor class. + + The archive full file name. + Password for an encrypted archive. + Manual archive format setup. You SHOULD NOT normally specify it this way. + Instead, use SevenZipExtractor(string archiveFullName, string password), that constructor + automatically detects the archive format. + + + + Initializes a new instance of SevenZipExtractor class. + + The stream to read the archive from. + Password for an encrypted archive. + The archive format is guessed by the signature. + + + + Initializes a new instance of SevenZipExtractor class. + + The stream to read the archive from. + Password for an encrypted archive. + Manual archive format setup. You SHOULD NOT normally specify it this way. + Instead, use SevenZipExtractor(Stream archiveStream, string password), that constructor + automatically detects the archive format. + + + + Gets or sets archive full file name + + + + + Gets the size of the archive file + + + + + Gets the size of unpacked archive data + + + + + Gets a value indicating whether the archive is solid + + + + + Gets the number of files in the archive + + + + + Gets archive format + + + + + Gets or sets the value indicating whether to preserve the directory structure of extracted files. + + + + + Checked whether the class was disposed. + + + + + + Gets the archive input stream. + + The archive input wrapper stream. + + + + Opens the archive and throws exceptions or returns OperationResult.DataError if any error occurs. + + The IInStream compliant class instance, that is, the input stream. + The ArchiveOpenCallback instance. + OperationResult.Ok if Open() succeeds. + + + + Opens the archive and throws exceptions or returns OperationResult.DataError if any error occurs. + + The IInStream compliant class instance, that is, the input stream. + The ArchiveOpenCallback instance. + True if Open() succeeds; otherwise, false. + + + + Retrieves all information about the archive. + + + + + + Ensure that _archiveFileData is loaded. + + Dispose the archive stream after this operation. + + + + Produces an array of indexes from 0 to the maximum value in the specified array + + The source array + The array of indexes from 0 to the maximum value in the specified array + + + + Checks whether all the indexes are valid. + + The indexes to check. + True is valid; otherwise, false. + + + + Gets the IArchiveExtractCallback callback + + The directory where extract the files + The number of files to be extracted + The list of actual indexes (solid archives support) + The ArchiveExtractCallback callback + + + + Gets the IArchiveExtractCallback callback + + The stream where extract the file + The file index + The number of files to be extracted + The ArchiveExtractCallback callback + + + + Checks if the specified stream supports extraction. + + The stream to check. + + + + Releases the unmanaged resources used by SevenZipExtractor. + + + + + Occurs when a new file is going to be unpacked. + + Occurs when 7-zip engine requests for an output stream for a new file to unpack in. + + + + Occurs when a file has been successfully unpacked. + + + + + Occurs when the archive has been unpacked. + + + + + Occurs when data are being extracted. + + Use this event for accurate progress handling and various ProgressBar.StepBy(e.PercentDelta) routines. + + + + Occurs during the extraction when a file already exists. + + + + + Event proxy for FileExtractionStarted. + + The sender of the event. + The event arguments. + + + + Event proxy for FileExtractionFinished. + + The sender of the event. + The event arguments. + + + + Event proxy for Extracting. + + The sender of the event. + The event arguments. + + + + Event proxy for FileExists. + + The sender of the event. + The event arguments. + + + + Gets the collection of ArchiveFileInfo with all information about files in the archive + + + + + Gets the properties for the current archive + + + + + Gets the collection of all file names contained in the archive. + + + Each get recreates the collection + + + + + Gets the list of archive volume file names. + + + + + Performs the archive integrity test. + + True is the archive is ok; otherwise, false. + + + + Unpacks the file by its name to the specified stream. + + The file full name in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks the file by its index to the specified stream. + + Index in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks files by their indices to the specified directory. + + indexes of the files in the archive file table. + Directory where the files are to be unpacked. + + + + Unpacks files by their full names to the specified directory. + + Full file names in the archive file table. + Directory where the files are to be unpacked. + + + + Extracts files from the archive, giving a callback the choice what + to do with each file. The order of the files is given by the archive. + 7-Zip (and any other solid) archives are NOT supported. + + The callback to call for each file in the archive. + Thrown when trying to extract from solid archives. + + + + Unpacks the whole archive to the specified directory. + + The directory where the files are to be unpacked. + + + + Decompress the specified stream (C# inside) + + The source compressed stream + The destination uncompressed stream + The length of compressed data (null for inStream.Length) + The event for handling the code progress + + + + Decompress byte array compressed with LZMA algorithm (C# inside) + + Byte array to decompress + Decompressed byte array + + + + Recreates the instance of the SevenZipExtractor class. + Used in asynchronous methods. + + + + + The delegate to use in BeginExtractArchive. + + The directory where the files are to be unpacked. + + + + The delegate to use in BeginExtractFile (by file name). + + The file full name in the archive file table. + The stream where the file is to be unpacked. + + + + The delegate to use in BeginExtractFile (by index). + + Index in the archive file table. + The stream where the file is to be unpacked. + + + + The delegate to use in BeginExtractFiles(string directory, params int[] indexes). + + indexes of the files in the archive file table. + Directory where the files are to be unpacked. + + + + The delegate to use in BeginExtractFiles(string directory, params string[] fileNames). + + Full file names in the archive file table. + Directory where the files are to be unpacked. + + + + The delegate to use in BeginExtractFiles(ExtractFileCallback extractFileCallback). + + The callback to call for each file in the archive. + + + + Unpacks the whole archive asynchronously to the specified directory name at the specified priority. + + The directory where the files are to be unpacked. + + + + Unpacks the whole archive asynchronously to the specified directory name at the specified priority. + + The directory where the files are to be unpacked. + + + + Unpacks the file asynchronously by its name to the specified stream. + + The file full name in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks the file asynchronously by its name to the specified stream. + + The file full name in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks the file asynchronously by its index to the specified stream. + + Index in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks the file asynchronously by its name to the specified stream. + + Index in the archive file table. + The stream where the file is to be unpacked. + + + + Unpacks files asynchronously by their indices to the specified directory. + + indexes of the files in the archive file table. + Directory where the files are to be unpacked. + + + + Unpacks files asynchronously by their indices to the specified directory. + + indexes of the files in the archive file table. + Directory where the files are to be unpacked. + + + + Unpacks files asynchronously by their full names to the specified directory. + + Full file names in the archive file table. + Directory where the files are to be unpacked. + + + + Unpacks files asynchronously by their full names to the specified directory. + + Full file names in the archive file table. + Directory where the files are to be unpacked. + + + + Extracts files from the archive asynchronously, giving a callback the choice what + to do with each file. The order of the files is given by the archive. + 7-Zip (and any other solid) archives are NOT supported. + + The callback to call for each file in the archive. + + + + Extracts files from the archive asynchronously, giving a callback the choice what + to do with each file. The order of the files is given by the archive. + 7-Zip (and any other solid) archives are NOT supported. + + The callback to call for each file in the archive. + + + + A class that has DisposeStream property. + + + + + Stream wrapper used in InStreamWrapper + + + + + File name associated with the stream (for date fix) + + + + + Worker stream for reading, writing and seeking. + + + + + Initializes a new instance of the StreamWrapper class + + Worker stream for reading, writing and seeking + File name associated with the stream (for attributes fix) + File last write time (for attributes fix) + Indicates whether to dispose the baseStream + + + + Initializes a new instance of the StreamWrapper class + + Worker stream for reading, writing and seeking + Indicates whether to dispose the baseStream + + + + Gets the worker stream for reading, writing and seeking. + + + + + Cleans up any resources used and fixes file attributes. + + + + + IInStream wrapper used in stream read operations. + + + + + Initializes a new instance of the InStreamWrapper class. + + Stream for writing data + Indicates whether to dispose the baseStream + + + + Reads data from the stream. + + A data array. + The array size. + The read bytes count. + + + + Occurs when IntEventArgs.Value bytes were read from the source. + + + + + IOutStream wrapper used in stream write operations. + + + + + Initializes a new instance of the OutStreamWrapper class + + Stream for writing data + File name (for attributes fix) + Time of the file creation (for attributes fix) + Indicates whether to dispose the baseStream + + + + Initializes a new instance of the OutStreamWrapper class + + Stream for writing data + Indicates whether to dispose the baseStream + + + + Writes data to the stream + + Data array + Array size + Count of written bytes + Zero if Ok + + + + Occurs when IntEventArgs.Value bytes were written. + + + + + Base multi volume stream wrapper class. + + + + + Initializes a new instance of the MultiStreamWrapper class. + + Perform Dispose() if requested to. + + + + Gets the total length of input data. + + + + + Cleans up any resources used and fixes file attributes. + + + + + IInStream wrapper used in stream multi volume read operations. + + + + + Initializes a new instance of the InMultiStreamWrapper class. + + The archive file name. + Perform Dispose() if requested to. + + + + Reads data from the stream. + + A data array. + The array size. + The read bytes count. + + + + IOutStream wrapper used in multi volume stream write operations. + + + + + Initializes a new instance of the OutMultiStreamWrapper class. + + The archive name. + The volume size. + + + + Does nothing except calling the BytesWritten event + + Data array + Array size + Count of written bytes + Zero if Ok + + + + Occurs when IntEventArgs.Value bytes were written + + + + + Archive update data for UpdateCallback. + + + + + Zip encryption method enum. + + + + + ZipCrypto encryption method. + + + + + AES 128 bit encryption method. + + + + + AES 192 bit encryption method. + + + + + AES 256 bit encryption method. + + + + diff --git a/Bin/SiteCore.dll b/Bin/SiteCore.dll new file mode 100644 index 0000000..421ace5 Binary files /dev/null and b/Bin/SiteCore.dll differ diff --git a/Bin/SiteCore.pdb b/Bin/SiteCore.pdb new file mode 100644 index 0000000..2aab8f3 Binary files /dev/null and b/Bin/SiteCore.pdb differ diff --git a/Bin/StackExchange.Redis.dll b/Bin/StackExchange.Redis.dll new file mode 100644 index 0000000..af79dfc Binary files /dev/null and b/Bin/StackExchange.Redis.dll differ diff --git a/Bin/StackExchange.Redis.dll.refresh b/Bin/StackExchange.Redis.dll.refresh new file mode 100644 index 0000000..49e96b6 Binary files /dev/null and b/Bin/StackExchange.Redis.dll.refresh differ diff --git a/Bin/StackExchange.Redis.xml b/Bin/StackExchange.Redis.xml new file mode 100644 index 0000000..dec657d --- /dev/null +++ b/Bin/StackExchange.Redis.xml @@ -0,0 +1,6660 @@ + + + + StackExchange.Redis + + + + + Specifies how elements should be aggregated when combining sorted sets + + + + + The values of the combined elements are added + + + + + The least value of the combined elements is used + + + + + The greatest value of the combined elements is used + + + + + Bitwise operators + + + + + And + + + + + Or + + + + + Xor + + + + + Not + + + + + The client flags can be a combination of: + O: the client is a slave in MONITOR mode + S: the client is a normal slave server + M: the client is a master + x: the client is in a MULTI/EXEC context + b: the client is waiting in a blocking operation + i: the client is waiting for a VM I/O (deprecated) + d: a watched keys has been modified - EXEC will fail + c: connection to be closed after writing entire reply + u: the client is unblocked + A: connection to be closed ASAP + N: no specific flag set + + + + + no specific flag set + + + + + the client is a slave in MONITOR mode + + + + + the client is a normal slave server + + + + + the client is a master + + + + + the client is in a MULTI/EXEC context + + + + + the client is waiting in a blocking operation + + + + + a watched keys has been modified - EXEC will fail + + + + + connection to be closed after writing entire reply + + + + + the client is unblocked + + + + + connection to be closed ASAP + + + + + Represents the state of an individual client connection to redis + + + + + Address (host and port) of the client + + + + + total duration of the connection in seconds + + + + + current database ID + + + + + The flags associated with this connection + + + + + The client flags can be a combination of: + O: the client is a slave in MONITOR mode + S: the client is a normal slave server + M: the client is a master + x: the client is in a MULTI/EXEC context + b: the client is waiting in a blocking operation + i: the client is waiting for a VM I/O (deprecated) + d: a watched keys has been modified - EXEC will fail + c: connection to be closed after writing entire reply + u: the client is unblocked + A: connection to be closed ASAP + N: no specific flag set + + + + + The host of the client (typically an IP address) + + + + + idle time of the connection in seconds + + + + + last command played + + + + + The name allocated to this connection, if any + + + + + number of pattern matching subscriptions + + + + + The port of the client + + + + + The raw content from redis + + + + + number of channel subscriptions + + + + + number of commands in a MULTI/EXEC context + + + + + an unique 64-bit client ID (introduced in Redis 2.8.12). + + + + + Format the object as a string + + + + + The class of the connection + + + + + The class of the connection + + + + + Regular connections, including MONITOR connections + + + + + Replication connections + + + + + Subscription connections + + + + + Indicates a range of slots served by a cluster node + + + + + Create a new SlotRange value + + + + + The start of the range (inclusive) + + + + + The end of the range (inclusive) + + + + + Indicates whether two ranges are not equal + + + + + Indicates whether two ranges are equal + + + + + Try to parse a string as a range + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + + + + See Object.Equals + + + + + Indicates whether two ranges are equal + + + + + See Object.GetHashCode() + + + + + See Object.ToString() + + + + + Describes the state of the cluster as reported by a single node + + + + + Gets all nodes contained in the configuration + + + + + + The node that was asked for the configuration + + + + + Obtain the node relating to a specified endpoint + + + + + Gets the node that serves the specified slot + + + + + Gets the node that serves the specified slot + + + + + Represents the configuration of a single node in a cluster configuration + + + + + Gets all child nodes of the current node + + + + + Gets the endpoint of the current node + + + + + Gets whether this is the node which responded to the CLUSTER NODES request + + + + + Gets whether this node is a slave + + + + + Gets whether this node is flagged as noaddr + + + + + Gets the node's connection status + + + + + Gets the unique node-id of the current node + + + + + Gets the parent node of the current node + + + + + Gets the unique node-id of the parent of the current node + + + + + The configuration as reported by the server + + + + + The slots owned by this server + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + + + + See Object.Equals + + + + + Indicates whether two ClusterNode instances are equivalent + + + + + See object.GetHashCode() + + + + + See Object.ToString() + + + + + Behaviour markers associated with a given command + + + + + Default behaviour. + + + + + This command may jump regular-priority commands that have not yet been written to the redis stream. + + + + + The caller is not interested in the result; the caller will immediately receive a default-value + of the expected return type (this value is not indicative of anything at the server). + + + + + This operation should be performed on the master if it is available, but read operations may + be performed on a slave if no master is available. This is the default option. + + + + + This operation should only be performed on the master. + + + + + This operation should be performed on the slave if it is available, but will be performed on + a master if no slaves are available. Suitable for read operations only. + + + + + This operation should only be performed on a slave. Suitable for read operations only. + + + + + Indicates that this operation should not be forwarded to other servers as a result of an ASK or MOVED response + + + + + Indicates that script-related operations should use EVAL, not SCRIPT LOAD + EVALSHA + + + + + Represents the commands mapped on a particular configuration + + + + + The default commands specified by redis + + + + + The commands available to https://github.com/twitter/twemproxy + + https://github.com/twitter/twemproxy/blob/master/notes/redis.md + + + + The commands available to http://www.ideawu.com/ssdb/ + + http://www.ideawu.com/ssdb/docs/redis-to-ssdb.html + + + + The commands available to http://redis.io/topics/sentinel + + http://redis.io/topics/sentinel + + + + Create a new CommandMap, customizing some commands + + + + + Creates a CommandMap by specifying which commands are available or unavailable + + + + + See Object.ToString() + + + + + track status of a command while communicating with Redis + + + + + command status unknown + + + + + ConnectionMultiplexer has not yet started writing this command to redis + + + + + command has been sent to Redis + + + + + Represents the information known about long-running commands + + + + + The array composing the arguments of the command. + + + + + The amount of time needed for its execution + + + + + The time at which the logged command was processed. + + + + + A unique progressive identifier for every slow log entry. + + The entry's unique ID can be used in order to avoid processing slow log entries multiple times (for instance you may have a script sending you an email alert for every new slow log entry). The ID is never reset in the course of the Redis server execution, only a server restart will reset it. + + + + Deduces a link to the redis documentation about the specified command + + + + + Helper for Array.ConvertAll() as it's missing on .Net Core. + + + + + Converts array of one type to an array of another type. + + Input type + Output type + source + selector + + + + + A collection of IProfiledCommands. + + This is a very light weight data structure, only supporting enumeration. + + While it implements IEnumerable, it there are fewer allocations if one uses + it's explicit GetEnumerator() method. Using `foreach` does this automatically. + + This type is not threadsafe. + + + + + Implements IEnumerator for ProfiledCommandEnumerable. + This implementation is comparable to List.Enumerator and Dictionary.Enumerator, + and is provided to reduce allocations in the common (ie. foreach) case. + + This type is not threadsafe. + + + + + The current element. + + + + + Advances the enumeration, returning true if there is a new element to consume and false + if enumeration is complete. + + + + + Resets the enumeration. + + + + + Disposes the enumeration. + subsequent attempts to enumerate results in undefined behavior. + + + + + Returns an implementor of IEnumerator that, provided it isn't accessed + though an interface, avoids allocations. + + `foreach` will automatically use this method. + + + + + A thread-safe collection tailored to the "always append, with high contention, then enumerate once with no contention" + behavior of our profiling. + + Performs better than ConcurrentBag, which is important since profiling code shouldn't impact timings. + + + + + This method is thread-safe. + + Adds an element to the bag. + + Order is not preserved. + + The element can only be a member of *one* bag. + + + + + This method returns an enumerable view of the bag, and returns it to + an internal pool for reuse by GetOrCreate(). + + It is not thread safe. + + It should only be called once the bag is finished being mutated. + + + + + This returns the ConcurrentProfileStorageCollection to an internal pool for reuse by GetOrCreate(). + + + + + Returns a ConcurrentProfileStorageCollection to use. + + It *may* have allocated a new one, or it may return one that has previously been released. + To return the collection, call EnumerateAndReturnForReuse() + + + + + Describes a pre-condition used in a redis transaction + + + + + Enforces that the given hash-field must have the specified value + + + + + Enforces that the given hash-field must exist + + + + + Enforces that the given hash-field must not have the specified value + + + + + Enforces that the given hash-field must not exist + + + + + Enforces that the given key must exist + + + + + Enforces that the given key must not exist + + + + + Enforces that the given list index must have the specified value + + + + + Enforces that the given list index must exist + + + + + Enforces that the given list index must not have the specified value + + + + + Enforces that the given list index must not exist + + + + + Enforces that the given key must have the specified value + + + + + Enforces that the given key must not have the specified value + + + + + Enforces that the given hash length is a certain value + + + + + Enforces that the given hash length is less than a certain value + + + + + Enforces that the given hash length is greater than a certain value + + + + + Enforces that the given string length is a certain value + + + + + Enforces that the given string length is less than a certain value + + + + + Enforces that the given string length is greater than a certain value + + + + + Enforces that the given list length is a certain value + + + + + Enforces that the given list length is less than a certain value + + + + + Enforces that the given list length is greater than a certain value + + + + + Enforces that the given set cardinality is a certain value + + + + + Enforces that the given set cardinality is less than a certain value + + + + + Enforces that the given set cardinality is greater than a certain value + + + + + Enforces that the given sorted set cardinality is a certain value + + + + + Enforces that the given sorted set cardinality is less than a certain value + + + + + Enforces that the given sorted set cardinality is greater than a certain value + + + + + Indicates the status of a condition as part of a transaction + + + + + Indicates whether the condition was satisfied + + + + + Specifies the proxy that is being used to communicate to redis + + + + + Direct communication to the redis server(s) + + + + + Communication via twemproxy + + + + + The options relevant to a set of redis connections + + + + + A LocalCertificateSelectionCallback delegate responsible for selecting the certificate used for authentication; note + that this cannot be specified in the configuration-string. + + + + + A RemoteCertificateValidationCallback delegate responsible for validating the certificate supplied by the remote party; note + that this cannot be specified in the configuration-string. + + + + + Gets or sets whether connect/configuration timeouts should be explicitly notified via a TimeoutException + + + + + Indicates whether admin operations should be allowed + + + + + Indicates whether the connection should be encrypted + + + + + Indicates whether the connection should be encrypted + + + + + Configures which Ssl/TLS protocols should be allowed. If not set, defaults are chosen by the .NET framework. + + + + + Automatically encodes and decodes channels + + + + + The client name to use for all connections + + + + + The number of times to repeat the initial connect cycle if no servers respond promptly + + + + + The command-map associated with this configuration + + + + + Channel to use for broadcasting and listening for configuration change notification + + + + + Specifies the time in milliseconds that should be allowed for connection (defaults to 5 seconds unless SyncTimeout is higher) + + + + + The retry policy to be used for connection reconnects + + + + + The server version to assume + + + + + The endpoints defined for this configuration + + + + + Use ThreadPriority.AboveNormal for SocketManager reader and writer threads (true by default). If false, ThreadPriority.Normal will be used. + + + + + Specifies the time in seconds at which connections should be pinged to ensure validity + + + + + The password to use to authenticate with the server + + + + + Type of proxy to use (if any); for example Proxy.Twemproxy + + + + + Indicates whether endpoints should be resolved via DNS before connecting. + If enabled the ConnectionMultiplexer will not re-resolve DNS + when attempting to re-connect after a connection failure. + + + + + The service name used to resolve a service via sentinel + + + + + Gets or sets the SocketManager instance to be used with these options; if this is null a per-multiplexer + SocketManager is created automatically. + + + + + The target-host to use when validating SSL certificate; setting a value here enables SSL mode + + + + + Specifies the time in milliseconds that the system should allow for synchronous operations (defaults to 1 second) + + + + + Specifies the time in milliseconds that the system should allow for responses before concluding that the socket is unhealthy + (defaults to SyncTimeout) + + + + + Tie-breaker used to choose between masters (must match the endpoint exactly) + + + + + The size of the output buffer to use + + + + + Specifies the default database to be used when calling ConnectionMultiplexer.GetDatabase() without any parameters + + + + + Check configuration every n seconds (every minute by default) + + + + + Parse the configuration from a comma-delimited configuration string + + is null. + is empty. + + + + Parse the configuration from a comma-delimited configuration string + + is null. + is empty. + + + + Create a copy of the configuration + + + + + Resolve the default port for any endpoints that did not have a port explicitly specified + + + + + Returns the effective configuration string for this configuration, including Redis credentials. + + + + + Returns the effective configuration string for this configuration + with the option to include or exclude the password from the string. + + + + + Illustrates the counters associated with an individual connection + + + + + The number of operations that have been completed asynchronously + + + + + The number of operations that have been completed synchronously + + + + + The type of this connection + + + + + The number of operations that failed to complete asynchronously + + + + + Indicates if there are any pending items or failures on this connection + + + + + Indicates the total number of messages despatched to a non-preferred endpoint, for example sent to a master + when the caller stated a preference of slave + + + + + The number of operations performed on this connection + + + + + Operations that have been requested, but which have not yet been sent to the server + + + + + Operations for which the response has been processed, but which are awaiting asynchronous completion + + + + + Operations that have been sent to the server, but which are awaiting a response + + + + + The number of sockets used by this logical connection (total, including reconnects) + + + + + The number of subscriptions (with and without patterns) currently held against this connection + + + + + Indicates the total number of outstanding items against this connection + + + + + Indicates the total number of writers items against this connection + + + + + See Object.ToString() + + + + + Contains information about a server connection failure + + + + + Gets the connection-type of the failing connection + + + + + Gets the failing server-endpoint + + + + + Gets the exception if available (this can be null) + + + + + The type of failure + + + + + The known types of connection failure + + + + + This event is not a failure + + + + + No viable connections were available for this operation + + + + + The socket for this connection failed + + + + + Either SSL Stream or Redis authentication failed + + + + + An unexpected response was received from the server + + + + + An unknown internal error occurred + + + + + The socket was closed + + + + + The socket was closed + + + + + The database is loading and is not available for use + + + + + It has not been possible to create an intial connection to the redis server(s) + + + + + Represents an inter-related group of connections to redis servers + + + + + Provides a way of overriding the default Task Factory. If not set, it will use the default Task.Factory. + Useful when top level code sets it's own factory which may interfere with Redis queries. + + + + + Get summary statistics associates with this server + + + + + Gets the client-name that will be used on all new connections + + + + Tries to get the Roleinstance Id if Microsoft.WindowsAzure.ServiceRuntime is loaded. + In case of any failure, swallows the exception and returns null + + + + Gets the configuration of the connection + + + + + A server replied with an error message; + + + + + Write the configuration of all servers to an output stream + + + + + Used internally to synchronize loggine without depending on locking the log instance + + + + + Raised whenever a physical connection fails + + + + + Raised whenever an internal error occurs (this is primarily for debugging) + + + + + Raised whenever a physical connection is established + + + + + Raised when configuration changes are detected + + + + + Raised when nodes are explicitly requested to reconfigure via broadcast; + this usually means master/slave changes + + + + + Gets the timeout associated with the connections + + + + + Gets all endpoints defined on the server + + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for the given asynchronous operations to complete (or timeout) + + + + + Raised when a hash-slot has been relocated + + + + + Compute the hash-slot of a specified key + + + + + Create a new ConnectionMultiplexer instance + + + + + Create a new ConnectionMultiplexer instance + + + + + Create a new ConnectionMultiplexer instance + + + + + Create a new ConnectionMultiplexer instance + + + + + Obtain a pub/sub subscriber connection to the specified server + + + + + Obtain an interactive connection to a database inside redis + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + The number of operations that have been performed on all connections + + + + + Reconfigure the current connections based on the existing configuration + + + + + Reconfigure the current connections based on the existing configuration + + + + + Provides a text overview of the status of all connections + + + + + Provides a text overview of the status of all connections + + + + + See Object.ToString() + + + + + Gets or sets whether asynchronous operations should be invoked in a way that guarantees their original delivery order + + + + + Indicates whether any servers are connected + + + + + Close all connections and release all resources associated with this object + + + + + Close all connections and release all resources associated with this object + + + + + Release all resources associated with this object + + + + + Should exceptions include identifiable details? (key names, additional .Data annotations) + + + + + Should exceptions include performance counter details? (CPU usage, etc - note that this can be problematic on some platforms) + + + + + Limit at which to start recording unusual busy patterns (only one log will be retained at a time; + set to a negative value to disable this feature) + + + + + Obtains the log of unusual busy patterns + + + + + Resets the log of unusual busy patterns + + + + + Request all compatible clients to reconfigure or reconnect + + The number of instances known to have received the message (however, the actual number can be higher; returns -1 if the operation is pending) + + + + Request all compatible clients to reconfigure or reconnect + + The number of instances known to have received the message (however, the actual number can be higher) + + + + Sets an IProfiler instance for this ConnectionMultiplexer. + + An IProfiler instances is used to determine which context to associate an + IProfiledCommand with. See BeginProfiling(object) and FinishProfiling(object) + for more details. + + + + + Begins profiling for the given context. + + If the same context object is returned by the registered IProfiler, the IProfiledCommands + will be associated with each other. + + Call FinishProfiling with the same context to get the assocated commands. + + Note that forContext cannot be a WeakReference or a WeakReference<T> + + + + + Stops profiling for the given context, returns all IProfiledCommands associated. + + By default this may do a sweep for dead profiling contexts, you can disable this by passing "allowCleanupSweep: false". + + + + + The type of a connection + + + + + Not connection-type related + + + + + An interactive connection handles request/response commands for accessing data on demand + + + + + A subscriber connection recieves unsolicted messages from the server as pub/sub events occur + + + + + Completion type for CompletionTypeHelper + + + + + Retain original completion type (either sync or async) + + + + + Force sync completion + + + + + Force async completion + + + + + A list of endpoints + + + + + Create a new EndPointCollection + + + + + Create a new EndPointCollection + + + + + Format an endpoint + + + + + Attempt to parse a string into an EndPoint + + + + + Adds a new endpoint to the list + + + + + Adds a new endpoint to the list + + + + + Adds a new endpoint to the list + + + + + See Collection<T>.InsertItem() + + + + + See Collection<T>.SetItem() + + + + + Event information related to redis endpoints + + + + + The endpoint involved in this event (this can be null) + + + + + When performing a range query, by default the start / stop limits are inclusive; + however, both can also be specified separately as exclusive + + + + + Both start and stop are inclusive + + + + + Start is exclusive, stop is inclusive + + + + + Start is inclusive, stop is exclusive + + + + + Both start and stop are exclusive + + + + + Represents a retry policy that performs retries, using a randomized exponential back off scheme to determine the interval between retries. + + + + + Initializes a new instance using the specified back off interval with default maxDeltaBackOffMilliseconds of 10 seconds + + time in milliseconds for the back-off interval between retries + + + + Initializes a new instance using the specified back off interval. + + time in milliseconds for the back-off interval between retries + time in milliseconds for the maximum value that the back-off interval can exponentailly grow upto + + + + This method is called by the ConnectionMultiplexer to determine if a reconnect operation can be retried now. + + The number of times reconnect retries have already been made by the ConnectionMultiplexer while it was in the connecting state + Total elapsed time in milliseconds since the last reconnect retry was made + + + + Which settings to export + + + + + No options + + + + + The output of INFO + + + + + The output of CONFIG GET * + + + + + The output of CLIENT LIST + + + + + The output of CLUSTER NODES + + + + + Everything available + + + + + Utility methods + + + + + Create a dictionary from an array of HashEntry values + + + + + Create a dictionary from an array of HashEntry values + + + + + Create a dictionary from an array of SortedSetEntry values + + + + + Create a dictionary from an array of SortedSetEntry values + + + + + Create a dictionary from an array of key/value pairs + + + + + Create a dictionary from an array of key/value pairs + + + + + Create a dictionary from an array of string pairs + + + + + Create an array of strings from an array of values + + + + + GeoRadius command options. + + + + + No Options + + + + + Redis will return the coordinates of any results. + + + + + Redis will return the distance from center for all results. + + + + + Redis will return the geo hash value as an integer. (This is the score in the sorted set) + + + + + Populates the commonly used values from the entry (the integer hash is not returned as it is not commonly useful) + + + + + The result of a GeoRadius command. + + + + + Indicate the member being represented + + + + + The matched member. + + + + + The distance of the matched member from the center of the geo radius command. + + + + + The hash value of the matched member as an integer. (The key in the sorted set) + + Note that this is not the same as the hash returned from GeoHash + + + + The coordinates of the matched member. + + + + + Returns a new GeoRadiusResult + + + + + Describes the longitude and latitude of a GeoEntry + + + + + The Latitude of the GeoPosition + + + + + The Logitude of the GeoPosition + + + + + Creates a new GeoPosition + + + + + + + See Object.ToString() + + + + + See Object.GetHashCode() + Diagonals not an issue in the case of lat/long + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for non-equality + + + + + Describes a GeoEntry element with the corresponding value + GeoEntries are stored in redis as SortedSetEntries + + + + + The name of the geo entry + + + + + Describes the longitude and latitude of a GeoEntry + + + + + Initializes a GeoEntry value + + + + + The longitude of the geo entry + + + + + The latitude of the geo entry + + + + + See Object.ToString() + + + + + See Object.GetHashCode() + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for non-equality + + + + + Units associated with Geo Commands + + + + + Meters + + + + + Kilometers + + + + + Miles + + + + + Feet + + + + + Describes a hash-field (a name/value pair) + + + + + Initializes a HashEntry value + + + + + The name of the hash field + + + + + The value of the hash field + + + + + The name of the hash field + + + + + Converts to a key/value pair + + + + + Converts from a key/value pair + + + + + See Object.ToString() + + + + + See Object.GetHashCode() + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values for non-equality + + + + + Contains information about individual hash-slot relocations + + + + + The hash-slot that was relocated + + + + + The old endpoint for this hash-slot (if known) + + + + + The new endpoint for this hash-slot (if known) + + + + + Represents a block of operations that will be sent to the server together; + this can be useful to reduce packet fragmentation on slow connections - it + can improve the time to get *all* the operations processed, with the trade-off + of a slower time to get the *first* operation processed; this is usually + a good thing. Unless this batch is a transaction, there is no guarantee + that these operations will be processed either contiguously or atomically by the server. + + + + + Execute the batch operation, sending all queued commands to the server. + Note that this operation is neither synchronous nor truly asyncronous - it + simply enqueues the buffered messages. To check on completion, you should + check the individual responses. + + + + + Represents the abstract multiplexer API + + + + + Gets the client-name that will be used on all new connections + + + + + Gets the configuration of the connection + + + + + Gets the timeout associated with the connections + + + + + The number of operations that have been performed on all connections + + + + + Gets or sets whether asynchronous operations should be invoked in a way that guarantees their original delivery order + + + + + Indicates whether any servers are connected + + + + + Should exceptions include identifiable details? (key names, additional .Data annotations) + + + + + Limit at which to start recording unusual busy patterns (only one log will be retained at a time; + set to a negative value to disable this feature) + + + + + Sets an IProfiler instance for this ConnectionMultiplexer. + + An IProfiler instances is used to determine which context to associate an + IProfiledCommand with. See BeginProfiling(object) and FinishProfiling(object) + for more details. + + + + + Begins profiling for the given context. + + If the same context object is returned by the registered IProfiler, the IProfiledCommands + will be associated with each other. + + Call FinishProfiling with the same context to get the assocated commands. + + Note that forContext cannot be a WeakReference or a WeakReference<T> + + + + + Stops profiling for the given context, returns all IProfiledCommands associated. + + By default this may do a sweep for dead profiling contexts, you can disable this by passing "allowCleanupSweep: false". + + + + + Get summary statistics associates with this server + + + + + A server replied with an error message; + + + + + Raised whenever a physical connection fails + + + + + Raised whenever an internal error occurs (this is primarily for debugging) + + + + + Raised whenever a physical connection is established + + + + + Raised when configuration changes are detected + + + + + Raised when nodes are explicitly requested to reconfigure via broadcast; + this usually means master/slave changes + + + + + Gets all endpoints defined on the server + + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for the given asynchronous operations to complete (or timeout) + + + + + Raised when a hash-slot has been relocated + + + + + Compute the hash-slot of a specified key + + + + + Obtain a pub/sub subscriber connection to the specified server + + + + + Obtain an interactive connection to a database inside redis + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + Obtain a configuration API for an individual server + + + + + Reconfigure the current connections based on the existing configuration + + + + + Reconfigure the current connections based on the existing configuration + + + + + Provides a text overview of the status of all connections + + + + + Provides a text overview of the status of all connections + + + + + See Object.ToString() + + + + + Close all connections and release all resources associated with this object + + + + + Close all connections and release all resources associated with this object + + + + + Release all resources associated with this object + + + + + Obtains the log of unusual busy patterns + + + + + Resets the log of unusual busy patterns + + + + + Request all compatible clients to reconfigure or reconnect + + The number of instances known to have received the message (however, the actual number can be higher; returns -1 if the operation is pending) + + + + Request all compatible clients to reconfigure or reconnect + + The number of instances known to have received the message (however, the actual number can be higher) + + + + Describes functionality that is common to both standalone redis servers and redis clusters + + + + + The numeric identifier of this database + + + + + Allows creation of a group of operations that will be sent to the server as a single unit, + but which may or may not be processed on the server contiguously. + + + + + Atomically transfer a key from a source Redis instance to a destination Redis instance. On success the key is deleted from the original instance by default, and is guaranteed to exist in the target instance. + + http://redis.io/commands/MIGRATE + + + + Allows creation of a group of operations that will be sent to the server as a single unit, + and processed on the server as a single unit. + + + + + Returns the raw DEBUG OBJECT output for a key; this command is not fully documented and should be avoided unless you have good reason, and then avoided anyway. + + http://redis.io/commands/debug-object + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/geoadd + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/geoadd + + + + Add the specified members to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + the number of elements that were added to the set, not including all the elements already present into the set. + http://redis.io/commands/geoadd + + + + Removes the specified member from the geo sorted set stored at key. Non existing members are ignored. + + True if the member existed in the sorted set and was removed; False otherwise. + http://redis.io/commands/zrem + + + + Return the distance between two members in the geospatial index represented by the sorted set. + + The command returns the distance as a double (represented as a string) in the specified unit, or NULL if one or both the elements are missing. + http://redis.io/commands/geodist + + + + Return valid Geohash strings representing the position of one or more elements in a sorted set value representing a geospatial index (where elements were added using GEOADD). + + The command returns an array where each element is the Geohash corresponding to each member name passed as argument to the command. + http://redis.io/commands/geohash + + + + Return valid Geohash strings representing the position of one or more elements in a sorted set value representing a geospatial index (where elements were added using GEOADD). + + The command returns an array where each element is the Geohash corresponding to each member name passed as argument to the command. + http://redis.io/commands/geohash + + + + Return the positions (longitude,latitude) of all the specified members of the geospatial index represented by the sorted set at key. + + The command returns an array where each element is a two elements array representing longitude and latitude (x,y) of each member name passed as argument to the command.Non existing elements are reported as NULL elements of the array. + http://redis.io/commands/geopos + + + + Return the positions (longitude,latitude) of all the specified members of the geospatial index represented by the sorted set at key. + + The command returns an array where each element is a two elements array representing longitude and latitude (x,y) of each member name passed as argument to the command.Non existing elements are reported as NULL elements of the array. + http://redis.io/commands/geopos + + + + Return the members of a sorted set populated with geospatial information using GEOADD, which are within the borders of the area specified with the center location and the maximum distance from the center (the radius). + + GeoRadiusResult[] + http://redis.io/commands/georadius + + + + Return the members of a sorted set populated with geospatial information using GEOADD, which are within the borders of the area specified with the center location and the maximum distance from the center (the radius). + + GeoRadiusResult[] + http://redis.io/commands/georadius + + + + Decrements the number stored at field in the hash stored at key by decrement. If key does not exist, a new key holding a hash is created. If field does not exist or holds a string that cannot be interpreted as integer, the value is set to 0 before the operation is performed. + + The range of values supported by HINCRBY is limited to 64 bit signed integers. + the value at field after the decrement operation. + http://redis.io/commands/hincrby + + + + Decrement the specified field of an hash stored at key, and representing a floating point number, by the specified decrement. If the field does not exist, it is set to 0 before performing the operation. + + The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + the value at field after the decrement operation. + http://redis.io/commands/hincrbyfloat + + + + Removes the specified fields from the hash stored at key. Non-existing fields are ignored. Non-existing keys are treated as empty hashes and this command returns 0. + + http://redis.io/commands/hdel + The number of fields that were removed. + + + + Removes the specified fields from the hash stored at key. Non-existing fields are ignored. Non-existing keys are treated as empty hashes and this command returns 0. + + http://redis.io/commands/hdel + The number of fields that were removed. + + + + Returns if field is an existing field in the hash stored at key. + + 1 if the hash contains field. 0 if the hash does not contain field, or key does not exist. + http://redis.io/commands/hexists + + + + Returns the value associated with field in the hash stored at key. + + the value associated with field, or nil when field is not present in the hash or key does not exist. + http://redis.io/commands/hget + + + + Returns the values associated with the specified fields in the hash stored at key. + For every field that does not exist in the hash, a nil value is returned.Because a non-existing keys are treated as empty hashes, running HMGET against a non-existing key will return a list of nil values. + + list of values associated with the given fields, in the same order as they are requested. + http://redis.io/commands/hmget + + + + Returns all fields and values of the hash stored at key. + + list of fields and their values stored in the hash, or an empty list when key does not exist. + http://redis.io/commands/hgetall + + + + Increments the number stored at field in the hash stored at key by increment. If key does not exist, a new key holding a hash is created. If field does not exist or holds a string that cannot be interpreted as integer, the value is set to 0 before the operation is performed. + + The range of values supported by HINCRBY is limited to 64 bit signed integers. + the value at field after the increment operation. + http://redis.io/commands/hincrby + + + + Increment the specified field of an hash stored at key, and representing a floating point number, by the specified increment. If the field does not exist, it is set to 0 before performing the operation. + + The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + the value at field after the increment operation. + http://redis.io/commands/hincrbyfloat + + + + Returns all field names in the hash stored at key. + + list of fields in the hash, or an empty list when key does not exist. + http://redis.io/commands/hkeys + + + + Returns the number of fields contained in the hash stored at key. + + number of fields in the hash, or 0 when key does not exist. + http://redis.io/commands/hlen + + + + The HSCAN command is used to incrementally iterate over a hash + + yields all elements of the hash. + http://redis.io/commands/hscan + + + + The HSCAN command is used to incrementally iterate over a hash; note: to resume an iteration via cursor, cast the original enumerable or enumerator to IScanningCursor. + + yields all elements of the hash. + http://redis.io/commands/hscan + + + + Sets the specified fields to their respective values in the hash stored at key. This command overwrites any existing fields in the hash. If key does not exist, a new key holding a hash is created. + + http://redis.io/commands/hmset + + + + Sets field in the hash stored at key to value. If key does not exist, a new key holding a hash is created. If field already exists in the hash, it is overwritten. + + 1 if field is a new field in the hash and value was set. 0 if field already exists in the hash and the value was updated. + http://redis.io/commands/hset + http://redis.io/commands/hsetnx + + + + Returns all values in the hash stored at key. + + list of values in the hash, or an empty list when key does not exist. + http://redis.io/commands/hvals + + + + Adds the element to the HyperLogLog data structure stored at the variable name specified as first argument. + + true if at least 1 HyperLogLog internal register was altered. false otherwise. + http://redis.io/commands/pfadd + + + + Adds all the element arguments to the HyperLogLog data structure stored at the variable name specified as first argument. + + true if at least 1 HyperLogLog internal register was altered. false otherwise. + http://redis.io/commands/pfadd + + + + Returns the approximated cardinality computed by the HyperLogLog data structure stored at the specified variable, or 0 if the variable does not exist. + + The approximated number of unique elements observed via HyperLogLogAdd. + http://redis.io/commands/pfcount + + + + Returns the approximated cardinality of the union of the HyperLogLogs passed, by internally merging the HyperLogLogs stored at the provided keys into a temporary hyperLogLog, or 0 if the variable does not exist. + + The approximated number of unique elements observed via HyperLogLogAdd. + http://redis.io/commands/pfcount + + + + Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed Sets of the source HyperLogLog structures. + + http://redis.io/commands/pfmerge + + + + Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed Sets of the source HyperLogLog structures. + + http://redis.io/commands/pfmerge + + + + Inidicate exactly which redis server we are talking to + + + + + Removes the specified key. A key is ignored if it does not exist. + + True if the key was removed. + http://redis.io/commands/del + + + + Removes the specified keys. A key is ignored if it does not exist. + + The number of keys that were removed. + http://redis.io/commands/del + + + + Serialize the value stored at key in a Redis-specific format and return it to the user. The returned value can be synthesized back into a Redis key using the RESTORE command. + + the serialized value. + http://redis.io/commands/dump + + + + Returns if key exists. + + 1 if the key exists. 0 if the key does not exist. + http://redis.io/commands/exists + + + + Set a timeout on key. After the timeout has expired, the key will automatically be deleted. A key with an associated timeout is said to be volatile in Redis terminology. + + If key is updated before the timeout has expired, then the timeout is removed as if the PERSIST command was invoked on key. + For Redis versions < 2.1.3, existing timeouts cannot be overwritten. So, if key already has an associated timeout, it will do nothing and return 0. Since Redis 2.1.3, you can update the timeout of a key. It is also possible to remove the timeout using the PERSIST command. See the page on key expiry for more information. + 1 if the timeout was set. 0 if key does not exist or the timeout could not be set. + http://redis.io/commands/expire + http://redis.io/commands/pexpire + http://redis.io/commands/persist + + + + Set a timeout on key. After the timeout has expired, the key will automatically be deleted. A key with an associated timeout is said to be volatile in Redis terminology. + + If key is updated before the timeout has expired, then the timeout is removed as if the PERSIST command was invoked on key. + For Redis versions < 2.1.3, existing timeouts cannot be overwritten. So, if key already has an associated timeout, it will do nothing and return 0. Since Redis 2.1.3, you can update the timeout of a key. It is also possible to remove the timeout using the PERSIST command. See the page on key expiry for more information. + 1 if the timeout was set. 0 if key does not exist or the timeout could not be set. + http://redis.io/commands/expireat + http://redis.io/commands/pexpireat + http://redis.io/commands/persist + + + + Move key from the currently selected database (see SELECT) to the specified destination database. When key already exists in the destination database, or it does not exist in the source database, it does nothing. It is possible to use MOVE as a locking primitive because of this. + + 1 if key was moved; 0 if key was not moved. + http://redis.io/commands/move + + + Remove the existing timeout on key, turning the key from volatile (a key with an expire set) to persistent (a key that will never expire as no timeout is associated). + 1 if the timeout was removed. 0 if key does not exist or does not have an associated timeout. + http://redis.io/commands/persist + + + + Return a random key from the currently selected database. + + the random key, or nil when the database is empty. + http://redis.io/commands/randomkey + + + + Renames key to newkey. It returns an error when the source and destination names are the same, or when key does not exist. + + http://redis.io/commands/rename + http://redis.io/commands/renamenx + + + + Create a key associated with a value that is obtained by deserializing the provided serialized value (obtained via DUMP). + If ttl is 0 the key is created without any expire, otherwise the specified expire time(in milliseconds) is set. + + http://redis.io/commands/restore + + + + Returns the remaining time to live of a key that has a timeout. This introspection capability allows a Redis client to check how many seconds a given key will continue to be part of the dataset. + + TTL, or nil when key does not exist or does not have a timeout. + http://redis.io/commands/ttl + + + + Returns the string representation of the type of the value stored at key. The different types that can be returned are: string, list, set, zset and hash. + + type of key, or none when key does not exist. + http://redis.io/commands/type + + + + Returns the element at index index in the list stored at key. The index is zero-based, so 0 means the first element, 1 the second element and so on. Negative indices can be used to designate elements starting at the tail of the list. Here, -1 means the last element, -2 means the penultimate and so forth. + + the requested element, or nil when index is out of range. + http://redis.io/commands/lindex + + + + Inserts value in the list stored at key either before or after the reference value pivot. + When key does not exist, it is considered an empty list and no operation is performed. + + the length of the list after the insert operation, or -1 when the value pivot was not found. + http://redis.io/commands/linsert + + + + Inserts value in the list stored at key either before or after the reference value pivot. + When key does not exist, it is considered an empty list and no operation is performed. + + the length of the list after the insert operation, or -1 when the value pivot was not found. + http://redis.io/commands/linsert + + + + Removes and returns the first element of the list stored at key. + + the value of the first element, or nil when key does not exist. + http://redis.io/commands/lpop + + + + Insert the specified value at the head of the list stored at key. If key does not exist, it is created as empty list before performing the push operations. + + the length of the list after the push operations. + http://redis.io/commands/lpush + http://redis.io/commands/lpushx + + + + Insert all the specified values at the head of the list stored at key. If key does not exist, it is created as empty list before performing the push operations. + Elements are inserted one after the other to the head of the list, from the leftmost element to the rightmost element. So for instance the command LPUSH mylist a b c will result into a list containing c as first element, b as second element and a as third element. + + the length of the list after the push operations. + http://redis.io/commands/lpush + + + + Returns the length of the list stored at key. If key does not exist, it is interpreted as an empty list and 0 is returned. + + the length of the list at key. + http://redis.io/commands/llen + + + + Returns the specified elements of the list stored at key. The offsets start and stop are zero-based indexes, with 0 being the first element of the list (the head of the list), 1 being the next element and so on. + These offsets can also be negative numbers indicating offsets starting at the end of the list.For example, -1 is the last element of the list, -2 the penultimate, and so on. + Note that if you have a list of numbers from 0 to 100, LRANGE list 0 10 will return 11 elements, that is, the rightmost item is included. + + list of elements in the specified range. + http://redis.io/commands/lrange + + + + Removes the first count occurrences of elements equal to value from the list stored at key. The count argument influences the operation in the following ways: + count > 0: Remove elements equal to value moving from head to tail. + count < 0: Remove elements equal to value moving from tail to head. + count = 0: Remove all elements equal to value. + + the number of removed elements. + http://redis.io/commands/lrem + + + + Removes and returns the last element of the list stored at key. + + http://redis.io/commands/rpop + + + + Atomically returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at destination. + + the element being popped and pushed. + http://redis.io/commands/rpoplpush + + + + Insert the specified value at the tail of the list stored at key. If key does not exist, it is created as empty list before performing the push operation. + + the length of the list after the push operation. + http://redis.io/commands/rpush + http://redis.io/commands/rpushx + + + + Insert all the specified values at the tail of the list stored at key. If key does not exist, it is created as empty list before performing the push operation. + Elements are inserted one after the other to the tail of the list, from the leftmost element to the rightmost element. So for instance the command RPUSH mylist a b c will result into a list containing a as first element, b as second element and c as third element. + + the length of the list after the push operation. + http://redis.io/commands/rpush + + + + Sets the list element at index to value. For more information on the index argument, see ListGetByIndex. An error is returned for out of range indexes. + + http://redis.io/commands/lset + + + + Trim an existing list so that it will contain only the specified range of elements specified. Both start and stop are zero-based indexes, where 0 is the first element of the list (the head), 1 the next element and so on. + For example: LTRIM foobar 0 2 will modify the list stored at foobar so that only the first three elements of the list will remain. + start and end can also be negative numbers indicating offsets from the end of the list, where -1 is the last element of the list, -2 the penultimate element and so on. + + http://redis.io/commands/ltrim + + + + Extends a lock, if the token value is correct + + + + + Queries the token held against a lock + + + + + Releases a lock, if the token value is correct + + + + + Takes a lock (specifying a token value) if it is not already taken + + + + + Posts a message to the given channel. + + the number of clients that received the message. + http://redis.io/commands/publish + + + + Execute an arbitrary command against the server; this is primarily intended for + executing modules, but may also be used to provide access to new features that lack + a direct API + + A dynamic representation of the command's result + + + + Execute an arbitrary command against the server; this is primarily intended for + executing modules, but may also be used to provide access to new features that lack + a direct API + + A dynamic representation of the command's result + + + + Execute a Lua script against the server + + http://redis.io/commands/eval, http://redis.io/commands/evalsha + A dynamic representation of the script's result + + + + Execute a Lua script against the server using just the SHA1 hash + + http://redis.io/commands/evalsha + A dynamic representation of the script's result + + + + Execute a lua script against the server, using previously prepared script. + Named parameters, if any, are provided by the `parameters` object. + + + + + Execute a lua script against the server, using previously prepared and loaded script. + This method sends only the SHA1 hash of the lua script to Redis. + Named parameters, if any, are provided by the `parameters` object. + + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/sadd + + + + Add the specified members to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + the number of elements that were added to the set, not including all the elements already present into the set. + http://redis.io/commands/sadd + + + + Returns the members of the set resulting from the specified operation against the given sets. + + list with members of the resulting set. + http://redis.io/commands/sunion + http://redis.io/commands/sinter + http://redis.io/commands/sdiff + + + + Returns the members of the set resulting from the specified operation against the given sets. + + list with members of the resulting set. + http://redis.io/commands/sunion + http://redis.io/commands/sinter + http://redis.io/commands/sdiff + + + + This command is equal to SetCombine, but instead of returning the resulting set, it is stored in destination. If destination already exists, it is overwritten. + + the number of elements in the resulting set. + http://redis.io/commands/sunionstore + http://redis.io/commands/sinterstore + http://redis.io/commands/sdiffstore + + + + This command is equal to SetCombine, but instead of returning the resulting set, it is stored in destination. If destination already exists, it is overwritten. + + the number of elements in the resulting set. + http://redis.io/commands/sunionstore + http://redis.io/commands/sinterstore + http://redis.io/commands/sdiffstore + + + + Returns if member is a member of the set stored at key. + + 1 if the element is a member of the set. 0 if the element is not a member of the set, or if key does not exist. + http://redis.io/commands/sismember + + + + Returns the set cardinality (number of elements) of the set stored at key. + + the cardinality (number of elements) of the set, or 0 if key does not exist. + http://redis.io/commands/scard + + + + Returns all the members of the set value stored at key. + + all elements of the set. + http://redis.io/commands/smembers + + + + Move member from the set at source to the set at destination. This operation is atomic. In every given moment the element will appear to be a member of source or destination for other clients. + When the specified element already exists in the destination set, it is only removed from the source set. + + 1 if the element is moved. 0 if the element is not a member of source and no operation was performed. + http://redis.io/commands/smove + + + + Removes and returns a random element from the set value stored at key. + + the removed element, or nil when key does not exist. + http://redis.io/commands/spop + + + + Return a random element from the set value stored at key. + + the randomly selected element, or nil when key does not exist + http://redis.io/commands/srandmember + + + + Return an array of count distinct elements if count is positive. If called with a negative count the behavior changes and the command is allowed to return the same element multiple times. + In this case the numer of returned elements is the absolute value of the specified count. + + an array of elements, or an empty array when key does not exist + http://redis.io/commands/srandmember + + + + Remove the specified member from the set stored at key. Specified members that are not a member of this set are ignored. + + True if the specified member was already present in the set, else False + http://redis.io/commands/srem + + + + Remove the specified members from the set stored at key. Specified members that are not a member of this set are ignored. + + the number of members that were removed from the set, not including non existing members. + http://redis.io/commands/srem + + + + The SSCAN command is used to incrementally iterate over set + + yields all elements of the set. + http://redis.io/commands/sscan + + + + The SSCAN command is used to incrementally iterate over set; note: to resume an iteration via cursor, cast the original enumerable or enumerator to IScanningCursor. + + yields all elements of the set. + http://redis.io/commands/sscan + + + + Sorts a list, set or sorted set (numerically or alphabetically, ascending by default); By default, the elements themselves are compared, but the values can also be + used to perform external key-lookups using the by parameter. By default, the elements themselves are returned, but external key-lookups (one or many) can + be performed instead by specifying the get parameter (note that # specifies the element itself, when used in get). + Referring to the redis SORT documentation for examples is recommended. When used in hashes, by and get + can be used to specify fields using -> notation (again, refer to redis documentation). + + http://redis.io/commands/sort + Returns the sorted elements, or the external values if get is specified + + + + Sorts a list, set or sorted set (numerically or alphabetically, ascending by default); By default, the elements themselves are compared, but the values can also be + used to perform external key-lookups using the by parameter. By default, the elements themselves are returned, but external key-lookups (one or many) can + be performed instead by specifying the get parameter (note that # specifies the element itself, when used in get). + Referring to the redis SORT documentation for examples is recommended. When used in hashes, by and get + can be used to specify fields using -> notation (again, refer to redis documentation). + + http://redis.io/commands/sort + Returns the number of elements stored in the new list + + + + Adds the specified member with the specified score to the sorted set stored at key. If the specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + True if the value was added, False if it already existed (the score is still updated) + http://redis.io/commands/zadd + + + + Adds the specified member with the specified score to the sorted set stored at key. If the specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + True if the value was added, False if it already existed (the score is still updated) + http://redis.io/commands/zadd + + + + Adds all the specified members with the specified scores to the sorted set stored at key. If a specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + The number of elements added to the sorted sets, not including elements already existing for which the score was updated. + http://redis.io/commands/zadd + + + + Adds all the specified members with the specified scores to the sorted set stored at key. If a specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + The number of elements added to the sorted sets, not including elements already existing for which the score was updated. + http://redis.io/commands/zadd + + + + Computes a set operation over two sorted sets, and stores the result in destination, optionally performing + a specific aggregation (defaults to sum) + + http://redis.io/commands/zunionstore + http://redis.io/commands/zinterstore + the number of elements in the resulting sorted set at destination + + + + Computes a set operation over multiple sorted sets (optionally using per-set weights), and stores the result in destination, optionally performing + a specific aggregation (defaults to sum) + + http://redis.io/commands/zunionstore + http://redis.io/commands/zinterstore + the number of elements in the resulting sorted set at destination + + + + Decrements the score of member in the sorted set stored at key by decrement. If member does not exist in the sorted set, it is added with -decrement as its score (as if its previous score was 0.0). + + the new score of member + http://redis.io/commands/zincrby + + + + Increments the score of member in the sorted set stored at key by increment. If member does not exist in the sorted set, it is added with increment as its score (as if its previous score was 0.0). + + the new score of member + http://redis.io/commands/zincrby + + + + Returns the sorted set cardinality (number of elements) of the sorted set stored at key. + + the cardinality (number of elements) of the sorted set, or 0 if key does not exist. + http://redis.io/commands/zcard + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns the number of elements in the sorted set at key with a value between min and max. + + the number of elements in the specified score range. + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns all the elements in the sorted set at key with a value between min and max. + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Both start and stop are zero-based indexes, where 0 is the first element, 1 is the next element and so on. They can also be negative numbers indicating offsets from the end of the sorted set, with -1 being the last element of the sorted set, -2 the penultimate element and so on. + + list of elements in the specified range + http://redis.io/commands/zrange + http://redis.io/commands/zrevrange + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Both start and stop are zero-based indexes, where 0 is the first element, 1 is the next element and so on. They can also be negative numbers indicating offsets from the end of the sorted set, with -1 being the last element of the sorted set, -2 the penultimate element and so on. + + list of elements in the specified range + http://redis.io/commands/zrange + http://redis.io/commands/zrevrange + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Start and stop are used to specify the min and max range for score values. Similar to other range methods the values are inclusive. + + list of elements in the specified score range + http://redis.io/commands/zrangebyscore + http://redis.io/commands/zrevrangebyscore + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Start and stop are used to specify the min and max range for score values. Similar to other range methods the values are inclusive. + + list of elements in the specified score range + http://redis.io/commands/zrangebyscore + http://redis.io/commands/zrevrangebyscore + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns all the elements in the sorted set at key with a value between min and max. + + http://redis.io/commands/zrangebylex + list of elements in the specified score range. + + + + Returns the rank of member in the sorted set stored at key, by default with the scores ordered from low to high. The rank (or index) is 0-based, which means that the member with the lowest score has rank 0. + + If member exists in the sorted set, the rank of member; If member does not exist in the sorted set or key does not exist, null + http://redis.io/commands/zrank + http://redis.io/commands/zrevrank + + + + Removes the specified member from the sorted set stored at key. Non existing members are ignored. + + True if the member existed in the sorted set and was removed; False otherwise. + http://redis.io/commands/zrem + + + + Removes the specified members from the sorted set stored at key. Non existing members are ignored. + + The number of members removed from the sorted set, not including non existing members. + http://redis.io/commands/zrem + + + + Removes all elements in the sorted set stored at key with rank between start and stop. Both start and stop are 0 -based indexes with 0 being the element with the lowest score. These indexes can be negative numbers, where they indicate offsets starting at the element with the highest score. For example: -1 is the element with the highest score, -2 the element with the second highest score and so forth. + + the number of elements removed. + http://redis.io/commands/zremrangebyrank + + + + Removes all elements in the sorted set stored at key with a score between min and max (inclusive by default). + + the number of elements removed. + http://redis.io/commands/zremrangebyscore + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command removes all elements in the sorted set stored at key between the lexicographical range specified by min and max. + + http://redis.io/commands/zremrangebylex + the number of elements removed. + + + + The ZSCAN command is used to incrementally iterate over a sorted set + + yields all elements of the sorted set. + http://redis.io/commands/zscan + + + + The ZSCAN command is used to incrementally iterate over a sorted set; note: to resume an iteration via cursor, cast the original enumerable or enumerator to IScanningCursor. + + yields all elements of the sorted set. + http://redis.io/commands/zscan + + + + Returns the score of member in the sorted set at key; If member does not exist in the sorted set, or key does not exist, nil is returned. + + the score of member + http://redis.io/commands/zscore + + + + If key already exists and is a string, this command appends the value at the end of the string. If key does not exist it is created and set as an empty string, + so APPEND will be similar to SET in this special case. + + the length of the string after the append operation. + http://redis.io/commands/append + + + + Count the number of set bits (population counting) in a string. + By default all the bytes contained in the string are examined.It is possible to specify the counting operation only in an interval passing the additional arguments start and end. + Like for the GETRANGE command start and end can contain negative values in order to index bytes starting from the end of the string, where -1 is the last byte, -2 is the penultimate, and so forth. + + The number of bits set to 1 + http://redis.io/commands/bitcount + + + + Perform a bitwise operation between multiple keys (containing string values) and store the result in the destination key. + The BITOP command supports four bitwise operations; note that NOT is a unary operator: the second key should be omitted in this case + and only the first key will be considered. + The result of the operation is always stored at destkey. + + The size of the string stored in the destination key, that is equal to the size of the longest input string. + http://redis.io/commands/bitop + + + + Perform a bitwise operation between multiple keys (containing string values) and store the result in the destination key. + The BITOP command supports four bitwise operations; note that NOT is a unary operator. + The result of the operation is always stored at destkey. + + The size of the string stored in the destination key, that is equal to the size of the longest input string. + http://redis.io/commands/bitop + + + + Return the position of the first bit set to 1 or 0 in a string. + The position is returned thinking at the string as an array of bits from left to right where the first byte most significant bit is at position 0, the second byte most significant bit is at position 8 and so forth. + An start and end may be specified; these are in bytes, not bits; start and end can contain negative values in order to index bytes starting from the end of the string, where -1 is the last byte, -2 is the penultimate, and so forth. + + The command returns the position of the first bit set to 1 or 0 according to the request. + If we look for set bits(the bit argument is 1) and the string is empty or composed of just zero bytes, -1 is returned. + http://redis.io/commands/bitpos + + + + Decrements the number stored at key by decrement. If the key does not exist, it is set to 0 before performing the operation. + An error is returned if the key contains a value of the wrong type or contains a string that is not representable as integer. This operation is limited to 64 bit signed integers. + + the value of key after the decrement + http://redis.io/commands/decrby + http://redis.io/commands/decr + + + + Decrements the string representing a floating point number stored at key by the specified decrement. If the key does not exist, it is set to 0 before performing the operation. The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + + the value of key after the decrement + http://redis.io/commands/incrbyfloat + + + + Get the value of key. If the key does not exist the special value nil is returned. An error is returned if the value stored at key is not a string, because GET only handles string values. + + the value of key, or nil when key does not exist. + http://redis.io/commands/get + + + + Returns the values of all specified keys. For every key that does not hold a string value or does not exist, the special value nil is returned. + + http://redis.io/commands/mget + + + + Returns the bit value at offset in the string value stored at key. + When offset is beyond the string length, the string is assumed to be a contiguous space with 0 bits. + + the bit value stored at offset. + http://redis.io/commands/getbit + + + + Returns the substring of the string value stored at key, determined by the offsets start and end (both are inclusive). Negative offsets can be used in order to provide an offset starting from the end of the string. So -1 means the last character, -2 the penultimate and so forth. + + the substring of the string value stored at key + http://redis.io/commands/getrange + + + + Atomically sets key to value and returns the old value stored at key. + + http://redis.io/commands/getset + the old value stored at key, or nil when key did not exist. + + + + Get the value of key. If the key does not exist the special value nil is returned. An error is returned if the value stored at key is not a string, because GET only handles string values. + + the value of key, or nil when key does not exist. + http://redis.io/commands/get + + + + Increments the number stored at key by increment. If the key does not exist, it is set to 0 before performing the operation. An error is returned if the key contains a value of the wrong type or contains a string that is not representable as integer. This operation is limited to 64 bit signed integers. + + the value of key after the increment + http://redis.io/commands/incrby + http://redis.io/commands/incr + + + + Increments the string representing a floating point number stored at key by the specified increment. If the key does not exist, it is set to 0 before performing the operation. The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + + the value of key after the increment + http://redis.io/commands/incrbyfloat + + + + Returns the length of the string value stored at key. + + the length of the string at key, or 0 when key does not exist. + http://redis.io/commands/strlen + + + + Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type. + + http://redis.io/commands/set + + + + Sets the given keys to their respective values. If "not exists" is specified, this will not perform any operation at all even if just a single key already exists. + + True if the keys were set, else False + http://redis.io/commands/mset + http://redis.io/commands/msetnx + + + + Sets or clears the bit at offset in the string value stored at key. + The bit is either set or cleared depending on value, which can be either 0 or 1. When key does not exist, a new string value is created.The string is grown to make sure it can hold a bit at offset. + + the original bit value stored at offset. + http://redis.io/commands/setbit + + + + Overwrites part of the string stored at key, starting at the specified offset, for the entire length of value. If the offset is larger than the current length of the string at key, the string is padded with zero-bytes to make offset fit. Non-existing keys are considered as empty strings, so this command will make sure it holds a string large enough to be able to set value at offset. + + the length of the string after it was modified by the command. + http://redis.io/commands/setrange + + + + Describes functionality that is common to both standalone redis servers and redis clusters + + + + + Returns the raw DEBUG OBJECT output for a key; this command is not fully documented and should be avoided unless you have good reason, and then avoided anyway. + + http://redis.io/commands/debug-object + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/geoadd + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/geoadd + + + + Add the specified members to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + the number of elements that were added to the set, not including all the elements already present into the set. + http://redis.io/commands/geoadd + + + + Removes the specified member from the geo sorted set stored at key. Non existing members are ignored. + + True if the member existed in the sorted set and was removed; False otherwise. + http://redis.io/commands/zrem + + + + Return the distance between two members in the geospatial index represented by the sorted set. + + The command returns the distance as a double (represented as a string) in the specified unit, or NULL if one or both the elements are missing. + http://redis.io/commands/geodist + + + + Return valid Geohash strings representing the position of one or more elements in a sorted set value representing a geospatial index (where elements were added using GEOADD). + + The command returns an array where each element is the Geohash corresponding to each member name passed as argument to the command. + http://redis.io/commands/geohash + + + + Return valid Geohash strings representing the position of one or more elements in a sorted set value representing a geospatial index (where elements were added using GEOADD). + + The command returns an array where each element is the Geohash corresponding to each member name passed as argument to the command. + http://redis.io/commands/geohash + + + + Return the positions (longitude,latitude) of all the specified members of the geospatial index represented by the sorted set at key. + + The command returns an array where each element is a two elements array representing longitude and latitude (x,y) of each member name passed as argument to the command.Non existing elements are reported as NULL elements of the array. + http://redis.io/commands/geopos + + + + Return the positions (longitude,latitude) of all the specified members of the geospatial index represented by the sorted set at key. + + The command returns an array where each element is a two elements array representing longitude and latitude (x,y) of each member name passed as argument to the command.Non existing elements are reported as NULL elements of the array. + http://redis.io/commands/geopos + + + + Return the members of a sorted set populated with geospatial information using GEOADD, which are within the borders of the area specified with the center location and the maximum distance from the center (the radius). + + GeoRadiusResult[] + http://redis.io/commands/georadius + + + + Return the members of a sorted set populated with geospatial information using GEOADD, which are within the borders of the area specified with the center location and the maximum distance from the center (the radius). + + GeoRadiusResult[] + http://redis.io/commands/georadius + + + + Increments the number stored at field in the hash stored at key by increment. If key does not exist, a new key holding a hash is created. If field does not exist or holds a string that cannot be interpreted as integer, the value is set to 0 before the operation is performed. + + The range of values supported by HINCRBY is limited to 64 bit signed integers. + the value at field after the increment operation. + http://redis.io/commands/hincrby + + + + Decrement the specified field of an hash stored at key, and representing a floating point number, by the specified decrement. If the field does not exist, it is set to 0 before performing the operation. + + The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + the value at field after the decrement operation. + http://redis.io/commands/hincrbyfloat + + + + Removes the specified fields from the hash stored at key. Non-existing fields are ignored. Non-existing keys are treated as empty hashes and this command returns 0. + + http://redis.io/commands/hdel + The number of fields that were removed. + + + + Removes the specified fields from the hash stored at key. Non-existing fields are ignored. Non-existing keys are treated as empty hashes and this command returns 0. + + http://redis.io/commands/hdel + The number of fields that were removed. + + + + Returns if field is an existing field in the hash stored at key. + + 1 if the hash contains field. 0 if the hash does not contain field, or key does not exist. + http://redis.io/commands/hexists + + + + Returns all fields and values of the hash stored at key. + + list of fields and their values stored in the hash, or an empty list when key does not exist. + http://redis.io/commands/hgetall + + + + Returns the value associated with field in the hash stored at key. + + the value associated with field, or nil when field is not present in the hash or key does not exist. + http://redis.io/commands/hget + + + + Returns the values associated with the specified fields in the hash stored at key. + For every field that does not exist in the hash, a nil value is returned.Because a non-existing keys are treated as empty hashes, running HMGET against a non-existing key will return a list of nil values. + + list of values associated with the given fields, in the same order as they are requested. + http://redis.io/commands/hmget + + + + Increments the number stored at field in the hash stored at key by increment. If key does not exist, a new key holding a hash is created. If field does not exist or holds a string that cannot be interpreted as integer, the value is set to 0 before the operation is performed. + + The range of values supported by HINCRBY is limited to 64 bit signed integers. + the value at field after the increment operation. + http://redis.io/commands/hincrby + + + + Increment the specified field of an hash stored at key, and representing a floating point number, by the specified increment. If the field does not exist, it is set to 0 before performing the operation. + + The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + the value at field after the increment operation. + http://redis.io/commands/hincrbyfloat + + + + Returns all field names in the hash stored at key. + + list of fields in the hash, or an empty list when key does not exist. + http://redis.io/commands/hkeys + + + + Returns the number of fields contained in the hash stored at key. + + number of fields in the hash, or 0 when key does not exist. + http://redis.io/commands/hlen + + + + Sets the specified fields to their respective values in the hash stored at key. This command overwrites any existing fields in the hash. If key does not exist, a new key holding a hash is created. + + http://redis.io/commands/hmset + + + + Sets field in the hash stored at key to value. If key does not exist, a new key holding a hash is created. If field already exists in the hash, it is overwritten. + + 1 if field is a new field in the hash and value was set. 0 if field already exists in the hash and the value was updated. + http://redis.io/commands/hset + http://redis.io/commands/hsetnx + + + + Returns all values in the hash stored at key. + + list of values in the hash, or an empty list when key does not exist. + http://redis.io/commands/hvals + + + + Adds the element to the HyperLogLog data structure stored at the variable name specified as first argument. + + true if at least 1 HyperLogLog internal register was altered. false otherwise. + http://redis.io/commands/pfadd + + + + Adds all the element arguments to the HyperLogLog data structure stored at the variable name specified as first argument. + + true if at least 1 HyperLogLog internal register was altered. false otherwise. + http://redis.io/commands/pfadd + + + + Returns the approximated cardinality computed by the HyperLogLog data structure stored at the specified variable, or 0 if the variable does not exist. + + The approximated number of unique elements observed via HyperLogLogAdd. + http://redis.io/commands/pfcount + + + + Returns the approximated cardinality of the union of the HyperLogLogs passed, by internally merging the HyperLogLogs stored at the provided keys into a temporary hyperLogLog, or 0 if the variable does not exist. + + The approximated number of unique elements observed via HyperLogLogAdd. + http://redis.io/commands/pfcount + + + + Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed Sets of the source HyperLogLog structures. + + http://redis.io/commands/pfmerge + + + + Merge multiple HyperLogLog values into an unique value that will approximate the cardinality of the union of the observed Sets of the source HyperLogLog structures. + + http://redis.io/commands/pfmerge + + + + Inidicate exactly which redis server we are talking to + + + + + Indicates whether the instance can communicate with the server (resolved + using the supplied key and optional flags) + + + + + Removes the specified key. A key is ignored if it does not exist. + + True if the key was removed. + http://redis.io/commands/del + + + + Removes the specified keys. A key is ignored if it does not exist. + + The number of keys that were removed. + http://redis.io/commands/del + + + + Serialize the value stored at key in a Redis-specific format and return it to the user. The returned value can be synthesized back into a Redis key using the RESTORE command. + + the serialized value. + http://redis.io/commands/dump + + + + Returns if key exists. + + 1 if the key exists. 0 if the key does not exist. + http://redis.io/commands/exists + + + + Set a timeout on key. After the timeout has expired, the key will automatically be deleted. A key with an associated timeout is said to be volatile in Redis terminology. + + If key is updated before the timeout has expired, then the timeout is removed as if the PERSIST command was invoked on key. + For Redis versions < 2.1.3, existing timeouts cannot be overwritten. So, if key already has an associated timeout, it will do nothing and return 0. Since Redis 2.1.3, you can update the timeout of a key. It is also possible to remove the timeout using the PERSIST command. See the page on key expiry for more information. + 1 if the timeout was set. 0 if key does not exist or the timeout could not be set. + http://redis.io/commands/expire + http://redis.io/commands/pexpire + http://redis.io/commands/persist + + + + Set a timeout on key. After the timeout has expired, the key will automatically be deleted. A key with an associated timeout is said to be volatile in Redis terminology. + + If key is updated before the timeout has expired, then the timeout is removed as if the PERSIST command was invoked on key. + For Redis versions < 2.1.3, existing timeouts cannot be overwritten. So, if key already has an associated timeout, it will do nothing and return 0. Since Redis 2.1.3, you can update the timeout of a key. It is also possible to remove the timeout using the PERSIST command. See the page on key expiry for more information. + 1 if the timeout was set. 0 if key does not exist or the timeout could not be set. + http://redis.io/commands/expireat + http://redis.io/commands/pexpireat + http://redis.io/commands/persist + + + + Atomically transfer a key from a source Redis instance to a destination Redis instance. On success the key is deleted from the original instance by default, and is guaranteed to exist in the target instance. + + http://redis.io/commands/MIGRATE + + + + Move key from the currently selected database (see SELECT) to the specified destination database. When key already exists in the destination database, or it does not exist in the source database, it does nothing. It is possible to use MOVE as a locking primitive because of this. + + 1 if key was moved; 0 if key was not moved. + http://redis.io/commands/move + + + Remove the existing timeout on key, turning the key from volatile (a key with an expire set) to persistent (a key that will never expire as no timeout is associated). + 1 if the timeout was removed. 0 if key does not exist or does not have an associated timeout. + http://redis.io/commands/persist + + + + Return a random key from the currently selected database. + + the random key, or nil when the database is empty. + http://redis.io/commands/randomkey + + + + Renames key to newkey. It returns an error when the source and destination names are the same, or when key does not exist. + + http://redis.io/commands/rename + http://redis.io/commands/renamenx + + + + Create a key associated with a value that is obtained by deserializing the provided serialized value (obtained via DUMP). + If ttl is 0 the key is created without any expire, otherwise the specified expire time(in milliseconds) is set. + + http://redis.io/commands/restore + + + + Returns the remaining time to live of a key that has a timeout. This introspection capability allows a Redis client to check how many seconds a given key will continue to be part of the dataset. + + TTL, or nil when key does not exist or does not have a timeout. + http://redis.io/commands/ttl + + + + Returns the string representation of the type of the value stored at key. The different types that can be returned are: string, list, set, zset and hash. + + type of key, or none when key does not exist. + http://redis.io/commands/type + + + + Returns the element at index index in the list stored at key. The index is zero-based, so 0 means the first element, 1 the second element and so on. Negative indices can be used to designate elements starting at the tail of the list. Here, -1 means the last element, -2 means the penultimate and so forth. + + the requested element, or nil when index is out of range. + http://redis.io/commands/lindex + + + + Inserts value in the list stored at key either before or after the reference value pivot. + When key does not exist, it is considered an empty list and no operation is performed. + + the length of the list after the insert operation, or -1 when the value pivot was not found. + http://redis.io/commands/linsert + + + + Inserts value in the list stored at key either before or after the reference value pivot. + When key does not exist, it is considered an empty list and no operation is performed. + + the length of the list after the insert operation, or -1 when the value pivot was not found. + http://redis.io/commands/linsert + + + + Removes and returns the first element of the list stored at key. + + the value of the first element, or nil when key does not exist. + http://redis.io/commands/lpop + + + + Insert the specified value at the head of the list stored at key. If key does not exist, it is created as empty list before performing the push operations. + + the length of the list after the push operations. + http://redis.io/commands/lpush + http://redis.io/commands/lpushx + + + + Insert all the specified values at the head of the list stored at key. If key does not exist, it is created as empty list before performing the push operations. + Elements are inserted one after the other to the head of the list, from the leftmost element to the rightmost element. So for instance the command LPUSH mylist a b c will result into a list containing c as first element, b as second element and a as third element. + + the length of the list after the push operations. + http://redis.io/commands/lpush + + + + Returns the length of the list stored at key. If key does not exist, it is interpreted as an empty list and 0 is returned. + + the length of the list at key. + http://redis.io/commands/llen + + + + Returns the specified elements of the list stored at key. The offsets start and stop are zero-based indexes, with 0 being the first element of the list (the head of the list), 1 being the next element and so on. + These offsets can also be negative numbers indicating offsets starting at the end of the list.For example, -1 is the last element of the list, -2 the penultimate, and so on. + Note that if you have a list of numbers from 0 to 100, LRANGE list 0 10 will return 11 elements, that is, the rightmost item is included. + + list of elements in the specified range. + http://redis.io/commands/lrange + + + + Removes the first count occurrences of elements equal to value from the list stored at key. The count argument influences the operation in the following ways: + count > 0: Remove elements equal to value moving from head to tail. + count < 0: Remove elements equal to value moving from tail to head. + count = 0: Remove all elements equal to value. + + the number of removed elements. + http://redis.io/commands/lrem + + + + Removes and returns the last element of the list stored at key. + + http://redis.io/commands/rpop + + + + Atomically returns and removes the last element (tail) of the list stored at source, and pushes the element at the first element (head) of the list stored at destination. + + the element being popped and pushed. + http://redis.io/commands/rpoplpush + + + + Insert the specified value at the tail of the list stored at key. If key does not exist, it is created as empty list before performing the push operation. + + the length of the list after the push operation. + http://redis.io/commands/rpush + http://redis.io/commands/rpushx + + + + Insert all the specified values at the tail of the list stored at key. If key does not exist, it is created as empty list before performing the push operation. + Elements are inserted one after the other to the tail of the list, from the leftmost element to the rightmost element. So for instance the command RPUSH mylist a b c will result into a list containing a as first element, b as second element and c as third element. + + the length of the list after the push operation. + http://redis.io/commands/rpush + + + + Sets the list element at index to value. For more information on the index argument, see ListGetByIndex. An error is returned for out of range indexes. + + http://redis.io/commands/lset + + + + Trim an existing list so that it will contain only the specified range of elements specified. Both start and stop are zero-based indexes, where 0 is the first element of the list (the head), 1 the next element and so on. + For example: LTRIM foobar 0 2 will modify the list stored at foobar so that only the first three elements of the list will remain. + start and end can also be negative numbers indicating offsets from the end of the list, where -1 is the last element of the list, -2 the penultimate element and so on. + + http://redis.io/commands/ltrim + + + + Extends a lock, if the token value is correct + + + + + Queries the token held against a lock + + + + + Releases a lock, if the token value is correct + + + + + Takes a lock (specifying a token value) if it is not already taken + + + + + Posts a message to the given channel. + + the number of clients that received the message. + http://redis.io/commands/publish + + + + Execute a Lua script against the server + + http://redis.io/commands/eval, http://redis.io/commands/evalsha + A dynamic representation of the script's result + + + + Execute an arbitrary command against the server; this is primarily intended for + executing modules, but may also be used to provide access to new features that lack + a direct API + + A dynamic representation of the command's result + + + + Execute an arbitrary command against the server; this is primarily intended for + executing modules, but may also be used to provide access to new features that lack + a direct API + + A dynamic representation of the command's result + + + + Execute a Lua script against the server using just the SHA1 hash + + http://redis.io/commands/evalsha + A dynamic representation of the script's result + + + + Execute a lua script against the server, using previously prepared script. + Named parameters, if any, are provided by the `parameters` object. + + + + + Execute a lua script against the server, using previously prepared and loaded script. + This method sends only the SHA1 hash of the lua script to Redis. + Named parameters, if any, are provided by the `parameters` object. + + + + + Add the specified member to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + True if the specified member was not already present in the set, else False + http://redis.io/commands/sadd + + + + Add the specified members to the set stored at key. Specified members that are already a member of this set are ignored. If key does not exist, a new set is created before adding the specified members. + + the number of elements that were added to the set, not including all the elements already present into the set. + http://redis.io/commands/sadd + + + + This command is equal to SetCombine, but instead of returning the resulting set, it is stored in destination. If destination already exists, it is overwritten. + + the number of elements in the resulting set. + http://redis.io/commands/sunionstore + http://redis.io/commands/sinterstore + http://redis.io/commands/sdiffstore + + + + This command is equal to SetCombine, but instead of returning the resulting set, it is stored in destination. If destination already exists, it is overwritten. + + the number of elements in the resulting set. + http://redis.io/commands/sunionstore + http://redis.io/commands/sinterstore + http://redis.io/commands/sdiffstore + + + + Returns the members of the set resulting from the specified operation against the given sets. + + list with members of the resulting set. + http://redis.io/commands/sunion + http://redis.io/commands/sinter + http://redis.io/commands/sdiff + + + + Returns the members of the set resulting from the specified operation against the given sets. + + list with members of the resulting set. + http://redis.io/commands/sunion + http://redis.io/commands/sinter + http://redis.io/commands/sdiff + + + + Returns if member is a member of the set stored at key. + + 1 if the element is a member of the set. 0 if the element is not a member of the set, or if key does not exist. + http://redis.io/commands/sismember + + + + Returns the set cardinality (number of elements) of the set stored at key. + + the cardinality (number of elements) of the set, or 0 if key does not exist. + http://redis.io/commands/scard + + + + Returns all the members of the set value stored at key. + + all elements of the set. + http://redis.io/commands/smembers + + + + Move member from the set at source to the set at destination. This operation is atomic. In every given moment the element will appear to be a member of source or destination for other clients. + When the specified element already exists in the destination set, it is only removed from the source set. + + 1 if the element is moved. 0 if the element is not a member of source and no operation was performed. + http://redis.io/commands/smove + + + + Removes and returns a random element from the set value stored at key. + + the removed element, or nil when key does not exist. + http://redis.io/commands/spop + + + + Return a random element from the set value stored at key. + + the randomly selected element, or nil when key does not exist + http://redis.io/commands/srandmember + + + + Return an array of count distinct elements if count is positive. If called with a negative count the behavior changes and the command is allowed to return the same element multiple times. + In this case the numer of returned elements is the absolute value of the specified count. + + an array of elements, or an empty array when key does not exist + http://redis.io/commands/srandmember + + + + Remove the specified member from the set stored at key. Specified members that are not a member of this set are ignored. + + True if the specified member was already present in the set, else False + http://redis.io/commands/srem + + + + Remove the specified members from the set stored at key. Specified members that are not a member of this set are ignored. + + the number of members that were removed from the set, not including non existing members. + http://redis.io/commands/srem + + + + Sorts a list, set or sorted set (numerically or alphabetically, ascending by default); By default, the elements themselves are compared, but the values can also be + used to perform external key-lookups using the by parameter. By default, the elements themselves are returned, but external key-lookups (one or many) can + be performed instead by specifying the get parameter (note that # specifies the element itself, when used in get). + Referring to the redis SORT documentation for examples is recommended. When used in hashes, by and get + can be used to specify fields using -> notation (again, refer to redis documentation). + + http://redis.io/commands/sort + Returns the number of elements stored in the new list + + + + Sorts a list, set or sorted set (numerically or alphabetically, ascending by default); By default, the elements themselves are compared, but the values can also be + used to perform external key-lookups using the by parameter. By default, the elements themselves are returned, but external key-lookups (one or many) can + be performed instead by specifying the get parameter (note that # specifies the element itself, when used in get). + Referring to the redis SORT documentation for examples is recommended. When used in hashes, by and get + can be used to specify fields using -> notation (again, refer to redis documentation). + + http://redis.io/commands/sort + Returns the sorted elements, or the external values if get is specified + + + + Adds the specified member with the specified score to the sorted set stored at key. If the specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + True if the value was added, False if it already existed (the score is still updated) + http://redis.io/commands/zadd + + + + Adds the specified member with the specified score to the sorted set stored at key. If the specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + True if the value was added, False if it already existed (the score is still updated) + http://redis.io/commands/zadd + + + + Adds all the specified members with the specified scores to the sorted set stored at key. If a specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + The number of elements added to the sorted sets, not including elements already existing for which the score was updated. + http://redis.io/commands/zadd + + + + Adds all the specified members with the specified scores to the sorted set stored at key. If a specified member is already a member of the sorted set, the score is updated and the element reinserted at the right position to ensure the correct ordering. + + The number of elements added to the sorted sets, not including elements already existing for which the score was updated. + http://redis.io/commands/zadd + + + + Computes a set operation over two sorted sets, and stores the result in destination, optionally performing + a specific aggregation (defaults to sum) + + http://redis.io/commands/zunionstore + http://redis.io/commands/zinterstore + the number of elements in the resulting sorted set at destination + + + + Computes a set operation over multiple sorted sets (optionally using per-set weights), and stores the result in destination, optionally performing + a specific aggregation (defaults to sum) + + http://redis.io/commands/zunionstore + http://redis.io/commands/zinterstore + the number of elements in the resulting sorted set at destination + + + + Decrements the score of member in the sorted set stored at key by decrement. If member does not exist in the sorted set, it is added with -decrement as its score (as if its previous score was 0.0). + + the new score of member + http://redis.io/commands/zincrby + + + + Increments the score of member in the sorted set stored at key by increment. If member does not exist in the sorted set, it is added with increment as its score (as if its previous score was 0.0). + + the new score of member + http://redis.io/commands/zincrby + + + + Returns the sorted set cardinality (number of elements) of the sorted set stored at key. + + the cardinality (number of elements) of the sorted set, or 0 if key does not exist. + http://redis.io/commands/zcard + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns the number of elements in the sorted set at key with a value between min and max. + + the number of elements in the specified score range. + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns all the elements in the sorted set at key with a value between min and max. + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Both start and stop are zero-based indexes, where 0 is the first element, 1 is the next element and so on. They can also be negative numbers indicating offsets from the end of the sorted set, with -1 being the last element of the sorted set, -2 the penultimate element and so on. + + list of elements in the specified range + http://redis.io/commands/zrange + http://redis.io/commands/zrevrange + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Both start and stop are zero-based indexes, where 0 is the first element, 1 is the next element and so on. They can also be negative numbers indicating offsets from the end of the sorted set, with -1 being the last element of the sorted set, -2 the penultimate element and so on. + + list of elements in the specified range + http://redis.io/commands/zrange + http://redis.io/commands/zrevrange + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Start and stop are used to specify the min and max range for score values. Similar to other range methods the values are inclusive. + + list of elements in the specified score range + http://redis.io/commands/zrangebyscore + http://redis.io/commands/zrevrangebyscore + + + + Returns the specified range of elements in the sorted set stored at key. By default the elements are considered to be ordered from the lowest to the highest score. Lexicographical order is used for elements with equal score. + Start and stop are used to specify the min and max range for score values. Similar to other range methods the values are inclusive. + + list of elements in the specified score range + http://redis.io/commands/zrangebyscore + http://redis.io/commands/zrevrangebyscore + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command returns all the elements in the sorted set at key with a value between min and max. + + http://redis.io/commands/zrangebylex + list of elements in the specified score range. + + + + Returns the rank of member in the sorted set stored at key, by default with the scores ordered from low to high. The rank (or index) is 0-based, which means that the member with the lowest score has rank 0. + + If member exists in the sorted set, the rank of member; If member does not exist in the sorted set or key does not exist, null + http://redis.io/commands/zrank + http://redis.io/commands/zrevrank + + + + Removes the specified member from the sorted set stored at key. Non existing members are ignored. + + True if the member existed in the sorted set and was removed; False otherwise. + http://redis.io/commands/zrem + + + + Removes the specified members from the sorted set stored at key. Non existing members are ignored. + + The number of members removed from the sorted set, not including non existing members. + http://redis.io/commands/zrem + + + + Removes all elements in the sorted set stored at key with rank between start and stop. Both start and stop are 0 -based indexes with 0 being the element with the lowest score. These indexes can be negative numbers, where they indicate offsets starting at the element with the highest score. For example: -1 is the element with the highest score, -2 the element with the second highest score and so forth. + + the number of elements removed. + http://redis.io/commands/zremrangebyrank + + + + Removes all elements in the sorted set stored at key with a score between min and max (inclusive by default). + + the number of elements removed. + http://redis.io/commands/zremrangebyscore + + + + When all the elements in a sorted set are inserted with the same score, in order to force lexicographical ordering, this command removes all elements in the sorted set stored at key between the lexicographical range specified by min and max. + + http://redis.io/commands/zremrangebylex + the number of elements removed. + + + + Returns the score of member in the sorted set at key; If member does not exist in the sorted set, or key does not exist, nil is returned. + + the score of member + http://redis.io/commands/zscore + + + + If key already exists and is a string, this command appends the value at the end of the string. If key does not exist it is created and set as an empty string, + so APPEND will be similar to SET in this special case. + + the length of the string after the append operation. + http://redis.io/commands/append + + + + Count the number of set bits (population counting) in a string. + By default all the bytes contained in the string are examined.It is possible to specify the counting operation only in an interval passing the additional arguments start and end. + Like for the GETRANGE command start and end can contain negative values in order to index bytes starting from the end of the string, where -1 is the last byte, -2 is the penultimate, and so forth. + + The number of bits set to 1 + http://redis.io/commands/bitcount + + + + Perform a bitwise operation between multiple keys (containing string values) and store the result in the destination key. + The BITOP command supports four bitwise operations; note that NOT is a unary operator: the second key should be omitted in this case + and only the first key will be considered. + The result of the operation is always stored at destkey. + + The size of the string stored in the destination key, that is equal to the size of the longest input string. + http://redis.io/commands/bitop + + + + Perform a bitwise operation between multiple keys (containing string values) and store the result in the destination key. + The BITOP command supports four bitwise operations; note that NOT is a unary operator. + The result of the operation is always stored at destkey. + + The size of the string stored in the destination key, that is equal to the size of the longest input string. + http://redis.io/commands/bitop + + + + Return the position of the first bit set to 1 or 0 in a string. + The position is returned thinking at the string as an array of bits from left to right where the first byte most significant bit is at position 0, the second byte most significant big is at position 8 and so forth. + An start and end may be specified; these are in bytes, not bits; start and end can contain negative values in order to index bytes starting from the end of the string, where -1 is the last byte, -2 is the penultimate, and so forth. + + The command returns the position of the first bit set to 1 or 0 according to the request. + If we look for set bits(the bit argument is 1) and the string is empty or composed of just zero bytes, -1 is returned. + http://redis.io/commands/bitpos + + + + Decrements the number stored at key by decrement. If the key does not exist, it is set to 0 before performing the operation. An error is returned if the key contains a value of the wrong type or contains a string that is not representable as integer. This operation is limited to 64 bit signed integers. + + the value of key after the increment + http://redis.io/commands/decrby + http://redis.io/commands/decr + + + + Decrements the string representing a floating point number stored at key by the specified increment. If the key does not exist, it is set to 0 before performing the operation. The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + + the value of key after the increment + http://redis.io/commands/incrbyfloat + + + + Get the value of key. If the key does not exist the special value nil is returned. An error is returned if the value stored at key is not a string, because GET only handles string values. + + the value of key, or nil when key does not exist. + http://redis.io/commands/get + + + + Returns the values of all specified keys. For every key that does not hold a string value or does not exist, the special value nil is returned. + + http://redis.io/commands/mget + + + + Returns the bit value at offset in the string value stored at key. + When offset is beyond the string length, the string is assumed to be a contiguous space with 0 bits. + + the bit value stored at offset. + http://redis.io/commands/getbit + + + + Returns the substring of the string value stored at key, determined by the offsets start and end (both are inclusive). Negative offsets can be used in order to provide an offset starting from the end of the string. So -1 means the last character, -2 the penultimate and so forth. + + the substring of the string value stored at key + http://redis.io/commands/getrange + + + + Atomically sets key to value and returns the old value stored at key. + + http://redis.io/commands/getset + the old value stored at key, or nil when key did not exist. + + + + Get the value of key. If the key does not exist the special value nil is returned. An error is returned if the value stored at key is not a string, because GET only handles string values. + + the value of key, or nil when key does not exist. + http://redis.io/commands/get + + + + Increments the number stored at key by increment. If the key does not exist, it is set to 0 before performing the operation. An error is returned if the key contains a value of the wrong type or contains a string that is not representable as integer. This operation is limited to 64 bit signed integers. + + the value of key after the increment + http://redis.io/commands/incrby + http://redis.io/commands/incr + + + + Increment the string representing a floating point number stored at key by the specified increment. If the key does not exist, it is set to 0 before performing the operation. The precision of the output is fixed at 17 digits after the decimal point regardless of the actual internal precision of the computation. + + the value of key after the increment + http://redis.io/commands/incrbyfloat + + + + Returns the length of the string value stored at key. + + the length of the string at key, or 0 when key does not exist. + http://redis.io/commands/strlen + + + + Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type. + + http://redis.io/commands/set + + + + Sets the given keys to their respective values. If "not exists" is specified, this will not perform any operation at all even if just a single key already exists. + + True if the keys were set, else False + http://redis.io/commands/mset + http://redis.io/commands/msetnx + + + + Sets or clears the bit at offset in the string value stored at key. + The bit is either set or cleared depending on value, which can be either 0 or 1. When key does not exist, a new string value is created.The string is grown to make sure it can hold a bit at offset. + + the original bit value stored at offset. + http://redis.io/commands/setbit + + + + Overwrites part of the string stored at key, starting at the specified offset, for the entire length of value. If the offset is larger than the current length of the string at key, the string is padded with zero-bytes to make offset fit. Non-existing keys are considered as empty strings, so this command will make sure it holds a string large enough to be able to set value at offset. + + the length of the string after it was modified by the command. + http://redis.io/commands/setrange + + + + Describes a value/expiry pair + + + + + The expiry of this record + + + + + The value of this record + + + + + Describes internal errors (mainly intended for debugging) + + + + + Gets the connection-type of the failing connection + + + + + Gets the failing server-endpoint (this can be null) + + + + + Gets the exception if available (this can be null) + + + + + The underlying origin of the error + + + + + If an IProfiledCommand is a retransmission of a previous command, this enum + is used to indicate what prompted the retransmission. + + This can be used to distinguish between transient causes (moving hashslots, joining nodes, etc.) + and incorrect routing. + + + + + No stated reason + + + + + Issued to investigate which node owns a key + + + + + A node has indicated that it does *not* own the given key + + + + + A profiled command against a redis instance. + + TimeSpans returned by this interface use a high precision timer if possible. + DateTimes returned by this interface are no more precise than DateTime.UtcNow. + + + + + The endpoint this command was sent to. + + + + + The Db this command was sent to. + + + + + The name of this command. + + + + + The CommandFlags the command was submitted with. + + + + + When this command was *created*, will be approximately + when the paired method of StackExchange.Redis was called but + before that method returned. + + Note that the resolution of the returned DateTime is limited by DateTime.UtcNow. + + + + + How long this command waited to be added to the queue of pending + redis commands. A large TimeSpan indicates serious contention for + the pending queue. + + + + + How long this command spent in the pending queue before being sent to redis. + A large TimeSpan can indicate a large number of pending events, large pending events, + or network issues. + + + + + How long before Redis responded to this command and it's response could be handled after it was sent. + A large TimeSpan can indicate a large response body, an overtaxed redis instance, or network issues. + + + + + How long between Redis responding to this command and awaiting consumers being notified. + + + + + How long it took this redis command to be processed, from creation to deserializing the final response. + + Note that this TimeSpan *does not* include time spent awaiting a Task in consumer code. + + + + + If a command has to be resent due to an ASK or MOVED response from redis (in a cluster configuration), + the second sending of the command will have this property set to the original IProfiledCommand. + + This can only be set if redis is configured as a cluster. + + + + + If RetransmissionOf is not null, this property will be set to either Ask or Moved to indicate + what sort of response triggered the retransmission. + + This can be useful for determining the root cause of extra commands. + + + + + Interface for profiling individual commands against an Redis ConnectionMulitplexer. + + + + + Called to provide a context object. + + This method is called before the method which triggers work against redis (such as StringSet(Async)) returns, + and will always be called on the same thread as that method. + + Note that GetContext() may be called even if ConnectionMultiplexer.BeginProfiling() has not been called. + You may return `null` to prevent any tracking of commands. + + + + + Describes retry policy functionality that can be provided to the multiplexer to be used for connection reconnects + + + + + This method is called by the multiplexer to determine if a reconnect operation can be retried now. + + The number of times reconnect retries have already been made by the multiplexer while it was in connecting state + Total time elapsed in milliseconds since the last reconnect retry was made + + + + Common operations available to all redis connections + + + + + This command is often used to test if a connection is still alive, or to measure latency. + + The observed latency. + http://redis.io/commands/ping + + + + Represents a resumable, cursor-based scanning operation + + + + + Returns the cursor that represents the *active* page of results (not the pending/next page of results as returned by SCAN/HSCAN/ZSCAN/SSCAN) + + + + + The page size of the current operation + + + + + The offset into the current page + + + + + Common operations available to all redis connections + + + + + Gets the multiplexer that created this instance + + + + + This command is often used to test if a connection is still alive, or to measure latency. + + The observed latency. + http://redis.io/commands/ping + + + + Wait for a given asynchronous operation to complete (or timeout), reporting which + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for a given asynchronous operation to complete (or timeout) + + + + + Wait for the given asynchronous operations to complete (or timeout) + + + + + Provides configuration controls of a redis server + + + + + Gets the cluster configuration associated with this server, if known + + + + + Gets the address of the connected server + + + + + Gets the features available to the connected server + + + + + Gets whether the connection to the server is active and usable + + + + + Gets whether the connected server is a replica / slave + + + + + Explicitly opt in for slave writes on writable slaves + + + + + Gets the operating mode of the connected server + + + + + Gets the version of the connected server + + + + + The CLIENT KILL command closes a given client connection identified by ip:port. + The ip:port should match a line returned by the CLIENT LIST command. + Due to the single-treaded nature of Redis, it is not possible to kill a client connection while it is executing a command.From the client point of view, the connection can never be closed in the middle of the execution of a command.However, the client will notice the connection has been closed only when the next command is sent (and results in network error). + + http://redis.io/commands/client-kill + + + + The CLIENT KILL command closes a given client connection identified by ip:port. + The ip:port should match a line returned by the CLIENT LIST command. + Due to the single-treaded nature of Redis, it is not possible to kill a client connection while it is executing a command.From the client point of view, the connection can never be closed in the middle of the execution of a command.However, the client will notice the connection has been closed only when the next command is sent (and results in network error). + + http://redis.io/commands/client-kill + + + + The CLIENT KILL command closes multiple connections that match the specified filters + + the number of clients killed. + http://redis.io/commands/client-kill + + + + The CLIENT KILL command closes multiple connections that match the specified filters + + the number of clients killed. + http://redis.io/commands/client-kill + + + + The CLIENT LIST command returns information and statistics about the client connections server in a mostly human readable format. + + http://redis.io/commands/client-list + + + + The CLIENT LIST command returns information and statistics about the client connections server in a mostly human readable format. + + http://redis.io/commands/client-list + + + + Obtains the current CLUSTER NODES output from a cluster server + + + + + Obtains the current CLUSTER NODES output from a cluster server + + + + + Obtains the current raw CLUSTER NODES output from a cluster server + + + + + Obtains the current raw CLUSTER NODES output from a cluster server + + + + + Get all configuration parameters matching the specified pattern. + + All matching configuration parameters. + http://redis.io/commands/config-get + + + + Get all configuration parameters matching the specified pattern. + + All matching configuration parameters. + http://redis.io/commands/config-get + + + + Resets the statistics reported by Redis using the INFO command. + + http://redis.io/commands/config-resetstat + + + + Resets the statistics reported by Redis using the INFO command. + + http://redis.io/commands/config-resetstat + + + + The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal changes needed to make it reflecting the configuration currently used by the server, that may be different compared to the original one because of the use of the CONFIG SET command. + + http://redis.io/commands/config-rewrite + + + + The CONFIG REWRITE command rewrites the redis.conf file the server was started with, applying the minimal changes needed to make it reflecting the configuration currently used by the server, that may be different compared to the original one because of the use of the CONFIG SET command. + + http://redis.io/commands/config-rewrite + + + + The CONFIG SET command is used in order to reconfigure the server at runtime without the need to restart Redis. You can change both trivial parameters or switch from one to another persistence option using this command. + + http://redis.io/commands/config-set + + + + The CONFIG SET command is used in order to reconfigure the server at runtime without the need to restart Redis. You can change both trivial parameters or switch from one to another persistence option using this command. + + http://redis.io/commands/config-set + + + + Return the number of keys in the database. + + http://redis.io/commands/dbsize + + + + Return the number of keys in the database. + + http://redis.io/commands/dbsize + + + + Return the same message passed in + + http://redis.io/commands/echo + + + + Return the same message passed in + + http://redis.io/commands/echo + + + + Delete all the keys of all databases on the server. + + http://redis.io/commands/flushall + + + + Delete all the keys of all databases on the server. + + http://redis.io/commands/flushall + + + + Delete all the keys of the database. + + http://redis.io/commands/flushdb + + + + Delete all the keys of the database. + + http://redis.io/commands/flushdb + + + + Get summary statistics associates with this server + + + + + The INFO command returns information and statistics about the server in a format that is simple to parse by computers and easy to read by humans. + + http://redis.io/commands/info + + + + The INFO command returns information and statistics about the server in a format that is simple to parse by computers and easy to read by humans. + + http://redis.io/commands/info + + + + The INFO command returns information and statistics about the server in a format that is simple to parse by computers and easy to read by humans. + + http://redis.io/commands/info + + + + The INFO command returns information and statistics about the server in a format that is simple to parse by computers and easy to read by humans. + + http://redis.io/commands/info + + + + Returns all keys matching pattern; the KEYS or SCAN commands will be used based on the server capabilities. + + Warning: consider KEYS as a command that should only be used in production environments with extreme care. + http://redis.io/commands/keys + http://redis.io/commands/scan + + + + Returns all keys matching pattern; the KEYS or SCAN commands will be used based on the server capabilities; note: to resume an iteration via cursor, cast the original enumerable or enumerator to IScanningCursor. + + Warning: consider KEYS as a command that should only be used in production environments with extreme care. + http://redis.io/commands/keys + http://redis.io/commands/scan + + + + Return the time of the last DB save executed with success. A client may check if a BGSAVE command succeeded reading the LASTSAVE value, then issuing a BGSAVE command and checking at regular intervals every N seconds if LASTSAVE changed. + + http://redis.io/commands/lastsave + + + + Return the time of the last DB save executed with success. A client may check if a BGSAVE command succeeded reading the LASTSAVE value, then issuing a BGSAVE command and checking at regular intervals every N seconds if LASTSAVE changed. + + http://redis.io/commands/lastsave + + + + Promote the selected node to be master + + + + + Explicitly request the database to persist the current state to disk + + http://redis.io/commands/bgrewriteaof + http://redis.io/commands/bgsave + http://redis.io/commands/save + http://redis.io/topics/persistence + + + + Explicitly request the database to persist the current state to disk + + http://redis.io/commands/bgrewriteaof + http://redis.io/commands/bgsave + http://redis.io/commands/save + http://redis.io/topics/persistence + + + + Inidicates whether the specified script is defined on the server + + + + + Inidicates whether the specified script hash is defined on the server + + + + + Inidicates whether the specified script is defined on the server + + + + + Inidicates whether the specified script hash is defined on the server + + + + + Removes all cached scripts on this server + + + + + Removes all cached scripts on this server + + + + + Explicitly defines a script on the server + + + + + Explicitly defines a script on the server + + + + + Explicitly defines a script on the server + + + + + Explicitly defines a script on the server + + + + Asks the redis server to shutdown, killing all connections. Please FULLY read the notes on the SHUTDOWN command. + http://redis.io/commands/shutdown + + + + The SLAVEOF command can change the replication settings of a slave on the fly. If a Redis server is already acting as slave, specifying a null master will turn off the replication, turning the Redis server into a MASTER. Specifying a non-null master will make the server a slave of another server listening at the specified hostname and port. + + http://redis.io/commands/slaveof + + + + The SLAVEOF command can change the replication settings of a slave on the fly. If a Redis server is already acting as slave, specifying a null master will turn off the replication, turning the Redis server into a MASTER. Specifying a non-null master will make the server a slave of another server listening at the specified hostname and port. + + http://redis.io/commands/slaveof + + + + To read the slow log the SLOWLOG GET command is used, that returns every entry in the slow log. It is possible to return only the N most recent entries passing an additional argument to the command (for instance SLOWLOG GET 10). + + http://redis.io/commands/slowlog + + + + To read the slow log the SLOWLOG GET command is used, that returns every entry in the slow log. It is possible to return only the N most recent entries passing an additional argument to the command (for instance SLOWLOG GET 10). + + http://redis.io/commands/slowlog + + + + You can reset the slow log using the SLOWLOG RESET command. Once deleted the information is lost forever. + + http://redis.io/commands/slowlog + + + + You can reset the slow log using the SLOWLOG RESET command. Once deleted the information is lost forever. + + http://redis.io/commands/slowlog + + + + Lists the currently active channels. An active channel is a Pub/Sub channel with one ore more subscribers (not including clients subscribed to patterns). + + a list of active channels, optionally matching the specified pattern. + http://redis.io/commands/pubsub + + + + Lists the currently active channels. An active channel is a Pub/Sub channel with one ore more subscribers (not including clients subscribed to patterns). + + a list of active channels, optionally matching the specified pattern. + http://redis.io/commands/pubsub + + + + Returns the number of subscriptions to patterns (that are performed using the PSUBSCRIBE command). Note that this is not just the count of clients subscribed to patterns but the total number of patterns all the clients are subscribed to. + + the number of patterns all the clients are subscribed to. + http://redis.io/commands/pubsub + + + + Returns the number of subscriptions to patterns (that are performed using the PSUBSCRIBE command). Note that this is not just the count of clients subscribed to patterns but the total number of patterns all the clients are subscribed to. + + the number of patterns all the clients are subscribed to. + http://redis.io/commands/pubsub + + + + Returns the number of subscribers (not counting clients subscribed to patterns) for the specified channel. + + http://redis.io/commands/pubsub + + + + Returns the number of subscribers (not counting clients subscribed to patterns) for the specified channel. + + http://redis.io/commands/pubsub + + + + The TIME command returns the current server time. + + The server's current time. + http://redis.io/commands/time + + + + The TIME command returns the current server time. + + The server's current time. + http://redis.io/commands/time + + + + Returns the ip and port number of the master with that name. + If a failover is in progress or terminated successfully for this master it returns the address and port of the promoted slave. + + the sentinel service name + + the master ip and port + http://redis.io/topics/sentinel + + + + Returns the ip and port number of the master with that name. + If a failover is in progress or terminated successfully for this master it returns the address and port of the promoted slave. + + the sentinel service name + + the master ip and port + http://redis.io/topics/sentinel + + + + Show the state and info of the specified master. + + the sentinel service name + + the master state as KeyValuePairs + http://redis.io/topics/sentinel + + + + Force a failover as if the master was not reachable, and without asking for agreement to other Sentinels + (however a new version of the configuration will be published so that the other Sentinels will update their configurations). + + the sentinel service name + + the master state as KeyValuePairs + http://redis.io/topics/sentinel + + + + Show a list of monitored masters and their state. + + + an array of master state KeyValuePair arrays + http://redis.io/topics/sentinel + + + + Show a list of monitored masters and their state. + + + an array of master state KeyValuePair arrays + http://redis.io/topics/sentinel + + + + Show a list of slaves for this master, and their state. + + the sentinel service name + + an array of slave state KeyValuePair arrays + http://redis.io/topics/sentinel + + + + Show a list of slaves for this master, and their state. + + the sentinel service name + + an array of slave state KeyValuePair arrays + http://redis.io/topics/sentinel + + + + Force a failover as if the master was not reachable, and without asking for agreement to other Sentinels + (however a new version of the configuration will be published so that the other Sentinels will update their configurations). + + the sentinel service name + + http://redis.io/topics/sentinel + + + + Force a failover as if the master was not reachable, and without asking for agreement to other Sentinels + (however a new version of the configuration will be published so that the other Sentinels will update their configurations). + + the sentinel service name + + http://redis.io/topics/sentinel + + + + A redis connection used as the subscriber in a pub/sub scenario + + + + + Inidicate exactly which redis server we are talking to + + + + + Inidicate exactly which redis server we are talking to + + + + + Indicates whether the instance can communicate with the server; + if a channel is specified, the existing subscription map is queried to + resolve the server responsible for that subscription - otherwise the + server is chosen aribtraily from the masters. + + + + + Posts a message to the given channel. + + the number of clients that received the message. + http://redis.io/commands/publish + + + + Posts a message to the given channel. + + the number of clients that received the message. + http://redis.io/commands/publish + + + + Subscribe to perform some operation when a change to the preferred/active node is broadcast. + + http://redis.io/commands/subscribe + http://redis.io/commands/psubscribe + + + + Subscribe to perform some operation when a change to the preferred/active node is broadcast. + + http://redis.io/commands/subscribe + http://redis.io/commands/psubscribe + + + + Inidicate to which redis server we are actively subscribed for a given channel; returns null if + the channel is not actively subscribed + + + + + Unsubscribe from a specified message channel; note; if no handler is specified, the subscription is cancelled regardless + of the subscribers; if a handler is specified, the subscription is only cancelled if this handler is the + last handler remaining against the channel + + http://redis.io/commands/unsubscribe + http://redis.io/commands/punsubscribe + + + + Unsubscribe all subscriptions on this instance + + http://redis.io/commands/unsubscribe + http://redis.io/commands/punsubscribe + + + + Unsubscribe all subscriptions on this instance + + http://redis.io/commands/unsubscribe + http://redis.io/commands/punsubscribe + + + + Unsubscribe from a specified message channel; note; if no handler is specified, the subscription is cancelled regardless + of the subscribers; if a handler is specified, the subscription is only cancelled if this handler is the + last handler remaining against the channel + + http://redis.io/commands/unsubscribe + http://redis.io/commands/punsubscribe + + + + Represents a group of operations that will be sent to the server as a single unit, + and processed on the server as a single unit. Transactions can also include constraints + (implemented via WATCH), but note that constraint checking involves will (very briefly) + block the connection, since the transaction cannot be correctly committed (EXEC), + aborted (DISCARD) or not applied in the first place (UNWATCH) until the responses from + the constraint checks have arrived. + + http://redis.io/topics/transactions + Note that on a cluster, it may be required that all keys involved in the transaction + (including constraints) are in the same hash-slot + + + + Adds a precondition for this transaction + + + + + Execute the batch operation, sending all queued commands to the server. + + + + + Execute the batch operation, sending all queued commands to the server. + + + + + Provides the extension method to . + + + + + Creates a new instance that provides an isolated key space + of the specified underyling database instance. + + + The underlying database instance that the returned instance shall use. + + + The prefix that defines a key space isolation for the returned database instance. + + + A new instance that invokes the specified underlying + but prepends the specified + to all key paramters and thus forms a logical key space isolation. + + + + The following methods are not supported in a key space isolated database and + will throw an when invoked: + + + + + + + Please notice that keys passed to a script are prefixed (as normal) but care must + be taken when a script returns the name of a key as that will (currently) not be + "unprefixed". + + + + + + Represents a retry policy that performs retries at a fixed interval. The retries are performed upto a maximum allowed time. + + + + + Initializes a new instance using the specified maximum retry elapsed time allowed. + + maximum elapsed time in milliseconds to be allowed for it to perform retries + + + + This method is called by the ConnectionMultiplexer to determine if a reconnect operation can be retried now. + + The number of times reconnect retries have already been made by the ConnectionMultiplexer while it was in the connecting state + Total elapsed time in milliseconds since the last reconnect retry was made + + + + Represents a Lua script that can be executed on Redis. + + Unlike normal Redis Lua scripts, LuaScript can have named parameters (prefixed by a @). + Public fields and properties of the passed in object are treated as parameters. + + Parameters of type RedisKey are sent to Redis as KEY (http://redis.io/commands/eval) in addition to arguments, + so as to play nicely with Redis Cluster. + + All members of this class are thread safe. + + + + + The original Lua script that was used to create this. + + + + + The Lua script that will actually be sent to Redis for execution. + + All @-prefixed parameter names have been replaced at this point. + + + + + Finalizer, used to prompt cleanups of the script cache when + a LuaScript reference goes out of scope. + + + + + Invalidates the internal cache of LuaScript objects. + Existing LuaScripts will continue to work, but future calls to LuaScript.Prepare + return a new LuaScript instance. + + + + + Returns the number of cached LuaScripts. + + + + + Prepares a Lua script with named parameters to be run against any Redis instance. + + + + + Evaluates this LuaScript against the given database, extracting parameters from the passed in object if any. + + + + + Evaluates this LuaScript against the given database, extracting parameters from the passed in object if any. + + + + + Loads this LuaScript into the given IServer so it can be run with it's SHA1 hash, instead of + passing the full script on each Evaluate or EvaluateAsync call. + + Note: the FireAndForget command flag cannot be set + + + + + Loads this LuaScript into the given IServer so it can be run with it's SHA1 hash, instead of + passing the full script on each Evaluate or EvaluateAsync call. + + Note: the FireAndForget command flag cannot be set + + + + + Represents a Lua script that can be executed on Redis. + + Unlike LuaScript, LoadedLuaScript sends the hash of it's ExecutableScript to Redis rather than pass + the whole script on each call. This requires that the script be loaded into Redis before it is used. + + To create a LoadedLuaScript first create a LuaScript via LuaScript.Prepare(string), then + call Load(IServer, CommandFlags) on the returned LuaScript. + + Unlike normal Redis Lua scripts, LoadedLuaScript can have named parameters (prefixed by a @). + Public fields and properties of the passed in object are treated as parameters. + + Parameters of type RedisKey are sent to Redis as KEY (http://redis.io/commands/eval) in addition to arguments, + so as to play nicely with Redis Cluster. + + All members of this class are thread safe. + + + + + The original script that was used to create this LoadedLuaScript. + + + + + The script that will actually be sent to Redis for execution. + + + + + The SHA1 hash of ExecutableScript. + + This is sent to Redis instead of ExecutableScript during Evaluate and EvaluateAsync calls. + + + + + Evaluates this LoadedLuaScript against the given database, extracting parameters for the passed in object if any. + + This method sends the SHA1 hash of the ExecutableScript instead of the script itself. If the script has not + been loaded into the passed Redis instance it will fail. + + + + + Evaluates this LoadedLuaScript against the given database, extracting parameters for the passed in object if any. + + This method sends the SHA1 hash of the ExecutableScript instead of the script itself. If the script has not + been loaded into the passed Redis instance it will fail. + + + + + Indicates that a command was illegal and was not sent to the server + + + + + Indicates the time allotted for a command or operation has expired. + + + + + Serialization implementation; not intended for general usage + + + + + status of the command while communicating with Redis + + + + + Indicates a connection fault when communicating with redis + + + + + Serialization implementation; not intended for general usage + + + + + The type of connection failure + + + + + status of the command while communicating with Redis + + + + + Indicates an issue communicating with redis + + + + + Deserialization constructor; not intended for general usage + + + + + Indicates an exception raised by a redis server + + + + + Things with the potential to cause harm, or to reveal configuration information + + + + + This does a few important things: + 1: it suppresses error events for commands that the user isn't interested in + (i.e. "why does my standalone server keep saying ERR unknown command 'cluster' ?") + 2: it allows the initial PING and GET (during connect) to get queued rather + than be rejected as no-server-available (note that this doesn't apply to + handshake messages, as they bypass the queue completely) + 3: it disables non-pref logging, as it is usually server-targeted + + + + + Checks both high-pri and regular queues to see if the next item is a PING, and if so: dequeues it and returns it + + + + + Additional options for the MIGRATE command + + + + + No options specified + + + + + Do not remove the key from the local instance. + + + + + Replace existing key on the remote instance. + + + + + The direction in which to sequence elements + + + + + Ordered from low values to high values + + + + + Ordered from high values to low values + + + + + This writes a message **directly** to the output stream; note + that this ignores the queue, so should only be used *either* + from the regular dequeue loop, *or* from the "I've just + connected" handshake (when there is no dequeue loop) - otherwise, + you can pretty much assume you're going to destroy the stream + + + + + Big ol' wrapper around most of the profiling storage logic, 'cause it got too big to just live in ConnectionMultiplexer. + + + + + Necessary, because WeakReference can't be readily comparable (since the reference is... weak). + + This lets us detect leaks* with some reasonable confidence, and cleanup periodically. + + Some calisthenics are done to avoid allocating WeakReferences for no reason, as often + we're just looking up ProfileStorage. + + * Somebody starts profiling, but for whatever reason never *stops* with a context object + + + + + Suitable for use as a key into something. + + This instance **WILL NOT** keep forObj alive, so it can + be copied out of the calling method's scope. + + + + + Only suitable for looking up. + + This instance **ABSOLUTELY WILL** keep forObj alive, so this + had better not be copied into anything outside the scope of the + calling method. + + + + + Registers the passed context with a collection that can be retried with subsequent calls to TryGetValue. + + Returns false if the passed context object is already registered. + + + + + Returns true and sets val to the tracking collection associated with the given context if the context + was registered with TryCreate. + + Otherwise returns false and sets val to null. + + + + + Removes a context, setting all commands to a (non-thread safe) enumerable of + all the commands attached to that context. + + If the context was never registered, will return false and set commands to null. + + Subsequent calls to TryRemove with the same context will return false unless it is + re-registered with TryCreate. + + + + + If enough time has passed (1 minute) since the last call, this does walk of all contexts + and removes those that the GC has collected. + + + + + Represents a pub/sub channel name + + + + + Create a new redis channel from a buffer, explicitly controlling the pattern mode + + + + + Create a new redis channel from a string, explicitly controlling the pattern mode + + + + + Indicates whether the channel-name is either null or a zero-length value + + + + + Indicate whether two channel names are not equal + + + + + Indicate whether two channel names are not equal + + + + + Indicate whether two channel names are not equal + + + + + Indicate whether two channel names are not equal + + + + + Indicate whether two channel names are not equal + + + + + Indicate whether two channel names are equal + + + + + Indicate whether two channel names are equal + + + + + Indicate whether two channel names are equal + + + + + Indicate whether two channel names are equal + + + + + Indicate whether two channel names are equal + + + + + See Object.Equals + + + + + Indicate whether two channel names are equal + + + + + See Object.GetHashCode + + + + + Obtains a string representation of the channel name + + + + + The matching pattern for this channel + + + + + Will be treated as a pattern if it includes * + + + + + Never a pattern + + + + + Always a pattern + + + + + Create a channel name from a String + + + + + Create a channel name from a Byte[] + + + + + Obtain the channel name as a Byte[] + + + + + Obtain the channel name as a String + + + + + Notification of errors from the redis server + + + + + The origin of the message + + + + + The message from the server + + + + + Provides basic information about the features available on a particular version of Redis + + + + + Create a new RedisFeatures instance for the given version + + + + + Does BITOP / BITCOUNT exist? + + + + + Is CLIENT SETNAME available? + + + + + Does EXEC support EXECABORT if there are errors? + + + + + Can EXPIRE be used to set expiration on a key that is already volatile (i.e. has an expiration)? + + + + + Does HDEL support varadic usage? + + + + + Does INCRBYFLOAT / HINCRBYFLOAT exist? + + + + + Does INFO support sections? + + + + + Is LINSERT available? + + + + + Indicates whether PEXPIRE and PTTL are supported + + + + + Does SRANDMEMBER support "count"? + + + + + Is the PERSIST operation supported? + + + + + Is RPUSHX and LPUSHX available? + + + + + Are cursor-based scans available? + + + + + Does EVAL / EVALSHA / etc exist? + + + + + Does SET have the EX|PX|NX|XX extensions? + + + + + Does SADD support varadic usage? + + + + + Is STRLEN available? + + + + + Is SETRANGE available? + + + + + Does TIME exist? + + + + + Are Lua changes to the calling database transparent to the calling client? + + + + + Is PFCOUNT supported on slaves? + + + + + Are the GEO commands available? + + + + + The Redis version of the server + + + + + Create a string representation of the available features + + + + + Represents a key that can be stored in redis + + + + + Indicate whether two keys are not equal + + + + + Indicate whether two keys are not equal + + + + + Indicate whether two keys are not equal + + + + + Indicate whether two keys are not equal + + + + + Indicate whether two keys are not equal + + + + + Indicate whether two keys are equal + + + + + Indicate whether two keys are equal + + + + + Indicate whether two keys are equal + + + + + Indicate whether two keys are equal + + + + + Indicate whether two keys are equal + + + + + See Object.Equals + + + + + Indicate whether two keys are equal + + + + + See Object.GetHashCode + + + + + Obtains a string representation of the key + + + + + Create a key from a String + + + + + Create a key from a Byte[] + + + + + Obtain the key as a Byte[] + + + + + Obtain the key as a String + + + + + Concatenate two keys + + + + + Prepends p to this RedisKey, returning a new RedisKey. + + Avoids some allocations if possible, repeated Prepend/Appends make + it less possible. + + + + + Appends p to this RedisKey, returning a new RedisKey. + + Avoids some allocations if possible, repeated Prepend/Appends make + it less possible. + + + + + Represents a general-purpose result from redis, that may be cast into various anticipated types + + + + + Create a new RedisResult. + + + + + + Indicates whether this result was a null result + + + + + Interprets the result as a String + + + + + Interprets the result as a Byte[] + + + + + Interprets the result as a Double + + + + + Interprets the result as an Int64 + + + + + Interprets the result as an Int32 + + + + + Interprets the result as a Boolean + + + + + Interprets the result as a RedisValue + + + + + Interprets the result as a RedisKey + + + + + Interprets the result as a Nullable Double + + + + + Interprets the result as a Nullable Int64 + + + + + Interprets the result as a Nullable Int32 + + + + + Interprets the result as a Nullable Boolean + + + + + Interprets the result as an array of String + + + + + Interprets the result as an array of Byte[] + + + + + Interprets the result as an array of Double + + + + + Interprets the result as an array of Int64 + + + + + Interprets the result as an array of Int32 + + + + + Interprets the result as an array of Boolean + + + + + Interprets the result as an array of RedisValue + + + + + Interprets the result as an array of RedisKey + + + + + Interprets the result as an array of RedisResult + + + + + The intrinsinc data-types supported by redis + + http://redis.io/topics/data-types + + + + The specified key does not exist + + + + + Strings are the most basic kind of Redis value. Redis Strings are binary safe, this means that a Redis string can contain any kind of data, for instance a JPEG image or a serialized Ruby object. + A String value can be at max 512 Megabytes in length. + + http://redis.io/commands#string + + + + Redis Lists are simply lists of strings, sorted by insertion order. It is possible to add elements to a Redis List pushing new elements on the head (on the left) or on the tail (on the right) of the list. + + http://redis.io/commands#list + + + + Redis Sets are an unordered collection of Strings. It is possible to add, remove, and test for existence of members in O(1) (constant time regardless of the number of elements contained inside the Set). + Redis Sets have the desirable property of not allowing repeated members. Adding the same element multiple times will result in a set having a single copy of this element. Practically speaking this means that adding a member does not require a check if exists then add operation. + + http://redis.io/commands#set + + + + Redis Sorted Sets are, similarly to Redis Sets, non repeating collections of Strings. The difference is that every member of a Sorted Set is associated with score, that is used in order to take the sorted set ordered, from the smallest to the greatest score. While members are unique, scores may be repeated. + + http://redis.io/commands#sorted_set + + + + Redis Hashes are maps between string fields and string values, so they are the perfect data type to represent objects (eg: A User with a number of fields like name, surname, age, and so forth) + + http://redis.io/commands#hash + + + + The data-type was not recognised by the client library + + + + + Represents values that can be stored in redis + + + + + Represents the string "" + + + + + A null value + + + + + Indicates whether the value is a primitive integer + + + + + Indicates whether the value should be considered a null value + + + + + Indicates whether the value is either null or a zero-length value + + + + + Indicates whether the value is greater than zero-length + + + + + Indicates whether two RedisValue values are equivalent + + + + + Indicates whether two RedisValue values are equivalent + + + + + See Object.Equals() + + + + + Indicates whether two RedisValue values are equivalent + + + + + See Object.GetHashCode() + + + + + Returns a string representation of the value + + + + + Compare against a RedisValue for relative order + + + + + Creates a new RedisValue from an Int32 + + + + + Creates a new RedisValue from a nullable Int32 + + + + + Creates a new RedisValue from an Int64 + + + + + Creates a new RedisValue from a nullable Int64 + + + + + Creates a new RedisValue from a Double + + + + + Creates a new RedisValue from a nullable Double + + + + + Creates a new RedisValue from a String + + + + + Creates a new RedisValue from a Byte[] + + + + + Creates a new RedisValue from a Boolean + + + + + Creates a new RedisValue from a nullable Boolean + + + + + Converts the value to a Boolean + + + + + Converts the value to an Int32 + + + + + Converts the value to an Int64 + + + + + Converts the value to a Double + + + + + Converts the value to a nullable Double + + + + + Converts the value to a nullable Int64 + + + + + Converts the value to a nullable Int32 + + + + + Converts the value to a nullable Boolean + + + + + Converts the value to a String + + + + + Converts the value to a byte[] + + + + + Convert to a long if possible, returning true. + + Returns false otherwise. + + + + + Convert to a int if possible, returning true. + + Returns false otherwise. + + + + + Convert to a double if possible, returning true. + + Returns false otherwise. + + + + + Additional operations to perform when making a server a master + + + + + No additional operations + + + + + Set the tie-breaker key on all available masters, to specify this server + + + + + Broadcast to the pub-sub channel to listening clients to reconfigure themselves + + + + + Issue a SLAVEOF to all other known nodes, making this this master of all + + + + + All additional operations + + + + + The type of save operation to perform + + + + + Instruct Redis to start an Append Only File rewrite process. The rewrite will create a small optimized version of the current Append Only File. + + http://redis.io/commands/bgrewriteaof + + + + Save the DB in background. The OK code is immediately returned. Redis forks, the parent continues to serve the clients, the child saves the DB on disk then exits. A client my be able to check if the operation succeeded using the LASTSAVE command. + + http://redis.io/commands/bgsave + + + + Save the DB in foreground. This is almost never a good thing to do, and could cause significant blocking. Only do this if you know you need to save + + http://redis.io/commands/save + + + + Turns a script with @namedParameters into a LuaScript that can be executed + against a given IDatabase(Async) object + + + + + Determines whether or not the given type can be used to provide parameters for the given LuaScript. + + + + + Creates a Func that extracts parameters from the given type for use by a LuaScript. + + Members that are RedisKey's get extracted to be passed in as keys to redis; all members that + appear in the script get extracted as RedisValue arguments to be sent up as args. + + We send all values as arguments so we don't have to prepare the same script for different parameter + types. + + The created Func takes a RedisKey, which will be prefixed to all keys (and arguments of type RedisKey) for + keyspace isolation. + + + + + Illustrates the queues associates with this server + + + + + The endpoint to which this data relates (this can be null if the data represents all servers) + + + + + Counters associated with the interactive (non pub-sub) connection + + + + + Counters associated with other ambient activity + + + + + Counters associated with the subscription (pub-sub) connection + + + + + Indicates the total number of outstanding items against this server + + + + + See Object.ToString(); + + + + + Computes the hash-slot that would be used by the given key + + + + + Indicates the flavor of a particular redis server + + + + + Classic redis-server server + + + + + Monitoring/configuration redis-sentinel server + + + + + Distributed redis-cluster server + + + + + Distributed redis installation via twemproxy + + + + + Describes an algebraic set operation that can be performed to combine multiple sets + + + + + Returns the members of the set resulting from the union of all the given sets. + + + + + Returns the members of the set resulting from the intersection of all the given sets. + + + + + Returns the members of the set resulting from the difference between the first set and all the successive sets. + + + + + Defines the persistence behaviour of the server during shutdown + + + + + The data is persisted if save points are configured + + + + + The data is NOT persisted even if save points are configured + + + + + The data is persisted even if save points are NOT configured + + + + + Allows callbacks from SocketManager as work is discovered + + + + + Indicates that a socket has connected + + + + + Indicates that the socket has signalled an error condition + + + + + Indicates that data is available on the socket, and that the consumer should read synchronously from the socket while there is data + + + + + Indicates that we cannot know whether data is available, and that the consume should commence reading asynchronously + + + + + A SocketManager monitors multiple sockets for availability of data; this is done using + the Socket.Select API and a dedicated reader-thread, which allows for fast responses + even when the system is under ambient load. + + + + + Creates a new (optionally named) SocketManager instance + + + + + Creates a new SocketManager instance + + + + + Gets the name of this SocketManager instance + + + + + Releases all resources associated with this instance + + + + + Describes a sorted-set element with the corresponding value + + + + + Initializes a SortedSetEntry value + + + + + The unique element stored in the sorted set + + + + + The score against the element + + + + + The score against the element + + + + + The unique element stored in the sorted set + + + + + Converts to a key/value pair + + + + + Converts from a key/value pair + + + + + See Object.ToString() + + + + + See Object.GetHashCode() + + + + + Compares two values for equality + + + + + Compares two values for equality + + + + + Compares two values by score + + + + + Compares two values by score + + + + + Compares two values for equality + + + + + Compares two values for non-equality + + + + + Specifies how to compare elements for sorting + + + + + Elements are interpreted as a double-precision floating point number and sorted numerically + + + + + Elements are sorted using their alphabetic form (Redis is UTF-8 aware as long as the !LC_COLLATE environment variable is set at the server) + + + + + We want to prevent callers hijacking the reader thread; this is a bit nasty, but works; + see http://stackoverflow.com/a/22588431/23354 for more information; a huge + thanks to Eli Arbel for spotting this (even though it is pure evil; it is *my kind of evil*) + + + + + Indicates whether the specified task will not hijack threads when results are set + + + + + Create a new TaskCompletion source + + + + + Create a new TaskCompletionSource that will not allow result-setting threads to be hijacked + + + + + Indicates when this operation should be performed (only some variations are legal in a given context) + + + + + The operation should occur whether or not there is an existing value + + + + + The operation should only occur when there is an existing value + + + + + The operation should only occur when there is not an existing value + + + + diff --git a/Bin/Utils.dll b/Bin/Utils.dll new file mode 100644 index 0000000..bc4ec9b Binary files /dev/null and b/Bin/Utils.dll differ diff --git a/Bin/Utils.dll.refresh b/Bin/Utils.dll.refresh new file mode 100644 index 0000000..737fcdd Binary files /dev/null and b/Bin/Utils.dll.refresh differ diff --git a/Bin/edtFTPnet.dll b/Bin/edtFTPnet.dll new file mode 100644 index 0000000..364051d Binary files /dev/null and b/Bin/edtFTPnet.dll differ diff --git a/Bin/log4net.dll b/Bin/log4net.dll new file mode 100644 index 0000000..84bf5b6 Binary files /dev/null and b/Bin/log4net.dll differ diff --git a/Bin/log4net.xml b/Bin/log4net.xml new file mode 100644 index 0000000..9d113e1 --- /dev/null +++ b/Bin/log4net.xml @@ -0,0 +1,32450 @@ + + + + log4net + + + + + Appender that logs to a database. + + + + appends logging events to a table within a + database. The appender can be configured to specify the connection + string by setting the property. + The connection type (provider) can be specified by setting the + property. For more information on database connection strings for + your specific database see http://www.connectionstrings.com/. + + + Records are written into the database either using a prepared + statement or a stored procedure. The property + is set to (System.Data.CommandType.Text) to specify a prepared statement + or to (System.Data.CommandType.StoredProcedure) to specify a stored + procedure. + + + The prepared statement text or the name of the stored procedure + must be set in the property. + + + The prepared statement or stored procedure can take a number + of parameters. Parameters are added using the + method. This adds a single to the + ordered list of parameters. The + type may be subclassed if required to provide database specific + functionality. The specifies + the parameter name, database type, size, and how the value should + be generated using a . + + + + An example of a SQL Server table that could be logged to: + + CREATE TABLE [dbo].[Log] ( + [ID] [int] IDENTITY (1, 1) NOT NULL , + [Date] [datetime] NOT NULL , + [Thread] [varchar] (255) NOT NULL , + [Level] [varchar] (20) NOT NULL , + [Logger] [varchar] (255) NOT NULL , + [Message] [varchar] (4000) NOT NULL + ) ON [PRIMARY] + + + + An example configuration to log to the above table: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Julian Biddle + Nicko Cadell + Gert Driesen + Lance Nehring + + + + Initializes a new instance of the class. + + + Public default constructor to initialize a new instance of this class. + + + + + Gets or sets the database connection string that is used to connect to + the database. + + + The database connection string used to connect to the database. + + + + The connections string is specific to the connection type. + See for more information. + + + Connection string for MS Access via ODBC: + "DSN=MS Access Database;UID=admin;PWD=;SystemDB=C:\data\System.mdw;SafeTransactions = 0;FIL=MS Access;DriverID = 25;DBQ=C:\data\train33.mdb" + + Another connection string for MS Access via ODBC: + "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:\Work\cvs_root\log4net-1.2\access.mdb;UID=;PWD=;" + + Connection string for MS Access via OLE DB: + "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Work\cvs_root\log4net-1.2\access.mdb;User Id=;Password=;" + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + This property requires at least .NET 2.0. + + + + + Gets or sets the type name of the connection + that should be created. + + + The type name of the connection. + + + + The type name of the ADO.NET provider to use. + + + The default is to use the OLE DB provider. + + + Use the OLE DB Provider. This is the default value. + System.Data.OleDb.OleDbConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the MS SQL Server Provider. + System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + Use the ODBC Provider. + Microsoft.Data.Odbc.OdbcConnection,Microsoft.Data.Odbc,version=1.0.3300.0,publicKeyToken=b77a5c561934e089,culture=neutral + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for ODBC .NET Data Provider. + + Use the Oracle Provider. + System.Data.OracleClient.OracleConnection, System.Data.OracleClient, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + This is an optional package that you can download from + http://msdn.microsoft.com/downloads + search for .NET Managed Provider for Oracle. + + + + + Gets or sets the command text that is used to insert logging events + into the database. + + + The command text used to insert logging events into the database. + + + + Either the text of the prepared statement or the + name of the stored procedure to execute to write into + the database. + + + The property determines if + this text is a prepared statement or a stored procedure. + + + If this property is not set, the command text is retrieved by invoking + . + + + + + + Gets or sets the command type to execute. + + + The command type to execute. + + + + This value may be either (System.Data.CommandType.Text) to specify + that the is a prepared statement to execute, + or (System.Data.CommandType.StoredProcedure) to specify that the + property is the name of a stored procedure + to execute. + + + The default value is (System.Data.CommandType.Text). + + + + + + Should transactions be used to insert logging events in the database. + + + true if transactions should be used to insert logging events in + the database, otherwise false. The default value is true. + + + + Gets or sets a value that indicates whether transactions should be used + to insert logging events in the database. + + + When set a single transaction will be used to insert the buffered events + into the database. Otherwise each event will be inserted without using + an explicit transaction. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Should this appender try to reconnect to the database on error. + + + true if the appender should try to reconnect to the database after an + error has occurred, otherwise false. The default value is false, + i.e. not to try to reconnect. + + + + The default behaviour is for the appender not to try to reconnect to the + database if an error occurs. Subsequent logging events are discarded. + + + To force the appender to attempt to reconnect to the database set this + property to true. + + + When the appender attempts to connect to the database there may be a + delay of up to the connection timeout specified in the connection string. + This delay will block the calling application's thread. + Until the connection can be reestablished this potential delay may occur multiple times. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to insert + logging events into a database. Classes deriving from + can use this property to get or set this . Use the + underlying returned from if + you require access beyond that which provides. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Override the parent method to close the database + + + + Closes the database command and database connection. + + + + + + Inserts the events into the database. + + The events to insert into the database. + + + Insert all the events specified in the + array into the database. + + + + + + Adds a parameter to the command. + + The parameter to add to the command. + + + Adds a parameter to the ordered list of command parameters. + + + + + + Writes the events to the database using the transaction specified. + + The transaction that the events will be executed under. + The array of events to insert into the database. + + + The transaction argument can be null if the appender has been + configured not to use transactions. See + property for more information. + + + + + + Prepare entire database command object to be executed. + + The command to prepare. + + + + Formats the log message into database statement text. + + The event being logged. + + This method can be overridden by subclasses to provide + more control over the format of the database statement. + + + Text that can be passed to a . + + + + + Creates an instance used to connect to the database. + + + This method is called whenever a new IDbConnection is needed (i.e. when a reconnect is necessary). + + The of the object. + The connectionString output from the ResolveConnectionString method. + An instance with a valid connection string. + + + + Resolves the connection string from the ConnectionString, ConnectionStringName, or AppSettingsKey + property. + + + ConnectiongStringName is only supported on .NET 2.0 and higher. + + Additional information describing the connection string. + A connection string used to connect to the database. + + + + Retrieves the class type of the ADO.NET provider. + + + + Gets the Type of the ADO.NET provider to use to connect to the + database. This method resolves the type specified in the + property. + + + Subclasses can override this method to return a different type + if necessary. + + + The of the ADO.NET provider + + + + Connects to the database. + + + + + Cleanup the existing connection. + + + Calls the IDbConnection's method. + + + + + The list of objects. + + + + The list of objects. + + + + + + The security context to use for privileged calls + + + + + The that will be used + to insert logging events into a database. + + + + + Database connection string. + + + + + The appSettings key from App.Config that contains the connection string. + + + + + The connectionStrings key from App.Config that contains the connection string. + + + + + String type name of the type name. + + + + + The text of the command. + + + + + The command type. + + + + + Indicates whether to use transactions when writing to the database. + + + + + Indicates whether to reconnect when a connection is lost. + + + + + The fully qualified type of the AdoNetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Parameter type used by the . + + + + This class provides the basic database parameter properties + as defined by the interface. + + This type can be subclassed to provide database specific + functionality. The two methods that are called externally are + and . + + + + + + Initializes a new instance of the class. + + + Default constructor for the AdoNetAppenderParameter class. + + + + + Gets or sets the name of this parameter. + + + The name of this parameter. + + + + The name of this parameter. The parameter name + must match up to a named parameter to the SQL stored procedure + or prepared statement. + + + + + + Gets or sets the database type for this parameter. + + + The database type for this parameter. + + + + The database type for this parameter. This property should + be set to the database type from the + enumeration. See . + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the type from the value. + + + + + + + Gets or sets the precision for this parameter. + + + The precision for this parameter. + + + + The maximum number of digits used to represent the Value. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the precision from the value. + + + + + + + Gets or sets the scale for this parameter. + + + The scale for this parameter. + + + + The number of decimal places to which Value is resolved. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the scale from the value. + + + + + + + Gets or sets the size for this parameter. + + + The size for this parameter. + + + + The maximum size, in bytes, of the data within the column. + + + This property is optional. If not specified the ADO.NET provider + will attempt to infer the size from the value. + + + For BLOB data types like VARCHAR(max) it may be impossible to infer the value automatically, use -1 as the size in this case. + + + + + + + Gets or sets the to use to + render the logging event into an object for this + parameter. + + + The used to render the + logging event into an object for this parameter. + + + + The that renders the value for this + parameter. + + + The can be used to adapt + any into a + for use in the property. + + + + + + Prepare the specified database command object. + + The command to prepare. + + + Prepares the database command object by adding + this parameter to its collection of parameters. + + + + + + Renders the logging event and set the parameter value in the command. + + The command containing the parameter. + The event to be rendered. + + + Renders the logging event using this parameters layout + object. Sets the value of the parameter on the command object. + + + + + + The name of this parameter. + + + + + The database type for this parameter. + + + + + Flag to infer type rather than use the DbType + + + + + The precision for this parameter. + + + + + The scale for this parameter. + + + + + The size for this parameter. + + + + + The to use to render the + logging event into an object for this parameter. + + + + + Appends logging events to the terminal using ANSI color escape sequences. + + + + AnsiColorTerminalAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific level of message to be set. + + + This appender expects the terminal to understand the VT100 control set + in order to interpret the color codes. If the terminal or console does not + understand the control codes the behavior is not defined. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + When configuring the ANSI colored terminal appender, a mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + + These color values cannot be combined together to make new colors. + + + The attributes can be any combination of the following: + + Brightforeground is brighter + Dimforeground is dimmer + Underscoremessage is underlined + Blinkforeground is blinking (does not work on all terminals) + Reverseforeground and background are reversed + Hiddenoutput is hidden + Strikethroughmessage has a line through it + + While any of these attributes may be combined together not all combinations + work well together, for example setting both Bright and Dim attributes makes + no sense. + + + Patrick Wagstrom + Nicko Cadell + + + + The enum of possible display attributes + + + + The following flags can be combined together to + form the ANSI color attributes. + + + + + + + text is bright + + + + + text is dim + + + + + text is underlined + + + + + text is blinking + + + Not all terminals support this attribute + + + + + text and background colors are reversed + + + + + text is hidden + + + + + text is displayed with a strikethrough + + + + + text color is light + + + + + The enum of possible foreground or background color values for + use with the color mapping method + + + + The output can be in one for the following ANSI colors. + + + + + + + color is black + + + + + color is red + + + + + color is green + + + + + color is yellow + + + + + color is blue + + + + + color is magenta + + + + + color is cyan + + + + + color is white + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Target is the value of the console output stream. + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + Add a mapping of level to color + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colours + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + Ansi code to reset terminal + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level + + + + + + The color attributes for the specified level + + + + Required property. + The color attributes for the specified level + + + + + + Initialize the options for the object + + + + Combine the and together + and append the attributes. + + + + + + The combined , and + suitable for setting the ansi terminal color. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Supports type-safe iteration over a . + + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Creates a read-only wrapper for a AppenderCollection instance. + + list to create a readonly wrapper arround + + An AppenderCollection wrapper that is read-only. + + + + + An empty readonly static AppenderCollection + + + + + Initializes a new instance of the AppenderCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the AppenderCollection class + that has the specified initial capacity. + + + The number of elements that the new AppenderCollection is initially capable of storing. + + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified AppenderCollection. + + The AppenderCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the AppenderCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Allow subclasses to avoid our default constructors + + + + + + + Gets the number of elements actually contained in the AppenderCollection. + + + + + Copies the entire AppenderCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire AppenderCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Adds a to the end of the AppenderCollection. + + The to be added to the end of the AppenderCollection. + The index at which the value has been added. + + + + Removes all elements from the AppenderCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the AppenderCollection. + + The to check for. + true if is found in the AppenderCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the AppenderCollection. + + The to locate in the AppenderCollection. + + The zero-based index of the first occurrence of + in the entire AppenderCollection, if found; otherwise, -1. + + + + + Inserts an element into the AppenderCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the AppenderCollection. + + The to remove from the AppenderCollection. + + The specified was not found in the AppenderCollection. + + + + + Removes the element at the specified index of the AppenderCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Returns an enumerator that can iterate through the AppenderCollection. + + An for the entire AppenderCollection. + + + + Gets or sets the number of elements the AppenderCollection can contain. + + + + + Adds the elements of another AppenderCollection to the current AppenderCollection. + + The AppenderCollection whose elements should be added to the end of the current AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a array to the current AppenderCollection. + + The array whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Adds the elements of a collection to the current AppenderCollection. + + The collection whose elements should be added to the end of the AppenderCollection. + The new of the AppenderCollection. + + + + Sets the capacity to the actual number of elements. + + + + + Return the collection elements as an array + + the array + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + + + + Abstract base class implementation of . + + + + This class provides the code for common functionality, such + as support for threshold filtering and support for general filters. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + Empty default constructor + + + + + Finalizes this appender by calling the implementation's + method. + + + + If this appender has not been closed then the Finalize method + will call . + + + + + + Gets or sets the threshold of this appender. + + + The threshold of the appender. + + + + All log events with lower level than the threshold level are ignored + by the appender. + + + In configuration files this option is specified by setting the + value of the option to a level + string, such as "DEBUG", "INFO" and so on. + + + + + + Gets or sets the for this appender. + + The of the appender + + + The provides a default + implementation for the property. + + + + + + The filter chain. + + The head of the filter chain filter chain. + + + Returns the head Filter. The Filters are organized in a linked list + and so all Filters on this Appender are available through the result. + + + + + + Gets or sets the for this appender. + + The layout of the appender. + + + See for more information. + + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + + The name uniquely identifies the appender. + + + + + + Closes the appender and release resources. + + + + Release any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + This method cannot be overridden by subclasses. This method + delegates the closing of the appender to the + method which must be overridden in the subclass. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The event to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the abstract method. + + + + + + Performs threshold checks and invokes filters before + delegating actual logging to the subclasses specific + method. + + The array of events to log. + + + This method cannot be overridden by derived classes. A + derived class should override the method + which is called by this method. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + Calls and checks that + it returns true. + + + + + If all of the above steps succeed then the + will be passed to the method. + + + + + + Test if the logging event should we output by this appender + + the event to test + true if the event should be output, false if the event should be ignored + + + This method checks the logging event against the threshold level set + on this appender and also against the filters specified on this + appender. + + + The implementation of this method is as follows: + + + + + + Checks that the severity of the + is greater than or equal to the of this + appender. + + + + Checks that the chain accepts the + . + + + + + + + + + Adds a filter to the end of the filter chain. + + the filter to add to this appender + + + The Filters are organized in a linked list. + + + Setting this property causes the new filter to be pushed onto the + back of the filter chain. + + + + + + Clears the filter list for this appender. + + + + Clears the filter list for this appender. + + + + + + Checks if the message level is below this appender's threshold. + + to test against. + + + If there is no threshold set, then the return value is always true. + + + + true if the meets the + requirements of this appender. + + + + + Is called when the appender is closed. Derived classes should override + this method if resources need to be released. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Subclasses of should implement this method + to perform actual logging. + + The event to append. + + + A subclass must implement this method to perform + logging of the . + + This method will be called by + if all the conditions listed for that method are met. + + + To restrict the logging of events in the appender + override the method. + + + + + + Append a bulk array of logging events. + + the array of logging events + + + This base class implementation calls the + method for each element in the bulk array. + + + A sub class that can better process a bulk array of events should + override this method in addition to . + + + + + + Called before as a precondition. + + + + This method is called by + before the call to the abstract method. + + + This method can be overridden in a subclass to extend the checks + made before the event is passed to the method. + + + A subclass should ensure that they delegate this call to + this base class if it is overridden. + + + true if the call to should proceed. + + + + Renders the to a string. + + The event to render. + The event rendered as a string. + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Where possible use the alternative version of this method + . + That method streams the rendering onto an existing Writer + which can give better performance if the caller already has + a open and ready for writing. + + + + + + Renders the to a string. + + The event to render. + The TextWriter to write the formatted event to + + + Helper method to render a to + a string. This appender must have a + set to render the to + a string. + + If there is exception data in the logging event and + the layout does not process the exception, this method + will append the exception text to the rendered string. + + + Use this method in preference to + where possible. If, however, the caller needs to render the event + to a string then does + provide an efficient mechanism for doing so. + + + + + + Tests if this appender requires a to be set. + + + + In the rather exceptional case, where the appender + implementation admits a layout but can also work without it, + then the appender should return true. + + + This default implementation always returns false. + + + + true if the appender requires a layout object, otherwise false. + + + + + Flushes any buffered log data. + + + This implementation doesn't flush anything and always returns true + + True if all logging events were flushed successfully, else false. + + + + The layout of this appender. + + + See for more information. + + + + + The name of this appender. + + + See for more information. + + + + + The level threshold of this appender. + + + + There is no level threshold filtering by default. + + + See for more information. + + + + + + It is assumed and enforced that errorHandler is never null. + + + + It is assumed and enforced that errorHandler is never null. + + + See for more information. + + + + + + The first filter in the filter chain. + + + + Set to null initially. + + + See for more information. + + + + + + The last filter in the filter chain. + + + See for more information. + + + + + Flag indicating if this appender is closed. + + + See for more information. + + + + + The guard prevents an appender from repeatedly calling its own DoAppend method + + + + + StringWriter used to render events + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + The fully qualified type of the AppenderSkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + + Appends log events to the ASP.NET system. + + + + + Diagnostic information and tracing messages that you specify are appended to the output + of the page that is sent to the requesting browser. Optionally, you can view this information + from a separate trace viewer (Trace.axd) that displays trace information for every page in a + given application. + + + Trace statements are processed and displayed only when tracing is enabled. You can control + whether tracing is displayed to a page, to the trace viewer, or both. + + + The logging event is passed to the or + method depending on the level of the logging event. + The event's logger name is the default value for the category parameter of the Write/Warn method. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the ASP.NET trace + + the event to log + + + Write the logging event to the ASP.NET trace + HttpContext.Current.Trace + (). + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + Defaults to %logger + + + + + Abstract base class implementation of that + buffers events in a fixed size buffer. + + + + This base class should be used by appenders that need to buffer a + number of events before logging them. + For example the + buffers events and then submits the entire contents of the buffer to + the underlying database in one go. + + + Subclasses should override the + method to deliver the buffered events. + + The BufferingAppenderSkeleton maintains a fixed size cyclic + buffer of events. The size of the buffer is set using + the property. + + A is used to inspect + each event as it arrives in the appender. If the + triggers, then the current buffer is sent immediately + (see ). Otherwise the event + is stored in the buffer. For example, an evaluator can be used to + deliver the events immediately when an ERROR event arrives. + + + The buffering appender can be configured in a mode. + By default the appender is NOT lossy. When the buffer is full all + the buffered events are sent with . + If the property is set to true then the + buffer will not be sent when it is full, and new events arriving + in the appender will overwrite the oldest event in the buffer. + In lossy mode the buffer will only be sent when the + triggers. This can be useful behavior when you need to know about + ERROR events but not about events with a lower level, configure an + evaluator that will trigger when an ERROR event arrives, the whole + buffer will be sent which gives a history of events leading up to + the ERROR event. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Protected default constructor to allow subclassing. + + + + + + Initializes a new instance of the class. + + the events passed through this appender must be + fixed by the time that they arrive in the derived class' SendBuffer method. + + + Protected constructor to allow subclassing. + + + The should be set if the subclass + expects the events delivered to be fixed even if the + is set to zero, i.e. when no buffering occurs. + + + + + + Gets or sets a value that indicates whether the appender is lossy. + + + true if the appender is lossy, otherwise false. The default is false. + + + + This appender uses a buffer to store logging events before + delivering them. A triggering event causes the whole buffer + to be send to the remote sink. If the buffer overruns before + a triggering event then logging events could be lost. Set + to false to prevent logging events + from being lost. + + If is set to true then an + must be specified. + + + + + Gets or sets the size of the cyclic buffer used to hold the + logging events. + + + The size of the cyclic buffer used to hold the logging events. + + + + The option takes a positive integer + representing the maximum number of logging events to collect in + a cyclic buffer. When the is reached, + oldest events are deleted as new events are added to the + buffer. By default the size of the cyclic buffer is 512 events. + + + If the is set to a value less than + or equal to 1 then no buffering will occur. The logging event + will be delivered synchronously (depending on the + and properties). Otherwise the event will + be buffered. + + + + + + Gets or sets the that causes the + buffer to be sent immediately. + + + The that causes the buffer to be + sent immediately. + + + + The evaluator will be called for each event that is appended to this + appender. If the evaluator triggers then the current buffer will + immediately be sent (see ). + + If is set to true then an + must be specified. + + + + + Gets or sets the value of the to use. + + + The value of the to use. + + + + The evaluator will be called for each event that is discarded from this + appender. If the evaluator triggers then the current buffer will immediately + be sent (see ). + + + + + + Gets or sets a value indicating if only part of the logging event data + should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the + event data to be fixed and serialized. This will improve performance. + + + See for more information. + + + + + + Gets or sets a the fields that will be fixed in the event + + + The event fields that will be fixed before the event is buffered + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Flush the currently buffered events + + + + Flushes any events that have been buffered. + + + If the appender is buffering in mode then the contents + of the buffer will NOT be flushed to the appender. + + + + + + Flush the currently buffered events + + set to true to flush the buffer of lossy events + + + Flushes events that have been buffered. If is + false then events will only be flushed if this buffer is non-lossy mode. + + + If the appender is buffering in mode then the contents + of the buffer will only be flushed if is true. + In this case the contents of the buffer will be tested against the + and if triggering will be output. All other buffered + events will be discarded. + + + If is true then the buffer will always + be emptied by calling this method. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Close this appender instance. + + + + Close this appender instance. If this appender is marked + as not then the remaining events in + the buffer must be sent when the appender is closed. + + + + + + This method is called by the method. + + the event to log + + + Stores the in the cyclic buffer. + + + The buffer will be sent (i.e. passed to the + method) if one of the following conditions is met: + + + + The cyclic buffer is full and this appender is + marked as not lossy (see ) + + + An is set and + it is triggered for the + specified. + + + + Before the event is stored in the buffer it is fixed + (see ) to ensure that + any data referenced by the event will be valid when the buffer + is processed. + + + + + + Sends the contents of the buffer. + + The first logging event. + The buffer containing the events that need to be send. + + + The subclass must override . + + + + + + Sends the events. + + The events that need to be send. + + + The subclass must override this method to process the buffered events. + + + + + + The default buffer size. + + + The default size of the cyclic buffer used to store events. + This is set to 512 by default. + + + + + The size of the cyclic buffer used to hold the logging events. + + + Set to by default. + + + + + The cyclic buffer used to store the logging events. + + + + + The triggering event evaluator that causes the buffer to be sent immediately. + + + The object that is used to determine if an event causes the entire + buffer to be sent immediately. This field can be null, which + indicates that event triggering is not to be done. The evaluator + can be set using the property. If this appender + has the ( property) set to + true then an must be set. + + + + + Indicates if the appender should overwrite events in the cyclic buffer + when it becomes full, or if the buffer should be flushed when the + buffer is full. + + + If this field is set to true then an must + be set. + + + + + The triggering event evaluator filters discarded events. + + + The object that is used to determine if an event that is discarded should + really be discarded or if it should be sent to the appenders. + This field can be null, which indicates that all discarded events will + be discarded. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + The events delivered to the subclass must be fixed. + + + + + Buffers events and then forwards them to attached appenders. + + + + The events are buffered in this appender until conditions are + met to allow the appender to deliver the events to the attached + appenders. See for the + conditions that cause the buffer to be sent. + + The forwarding appender can be used to specify different + thresholds and filters for the same appender at different locations + within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Send the events. + + The events that need to be send. + + + Forwards the events to the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this buffering appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Appends logging events to the console. + + + + ColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes directly to the application's attached console + not to the System.Console.Out or System.Console.Error TextWriter. + The System.Console.Out and System.Console.Error streams can be + programmatically redirected (for example NUnit does this to capture program output). + This appender will ignore these redirections because it needs to use Win32 + API calls to colorize the output. To respect these redirections the + must be used. + + + When configuring the colored console appender, mapping should be + specified to map a logging level to a color. For example: + + + + + + + + + + + + + + The Level is the standard log4net logging level and ForeColor and BackColor can be any + combination of the following values: + + Blue + Green + Red + White + Yellow + Purple + Cyan + HighIntensity + + + + Rick Hobbs + Nicko Cadell + + + + The enum of possible color values for use with the color mapping method + + + + The following flags can be combined together to + form the colors. + + + + + + + color is blue + + + + + color is green + + + + + color is red + + + + + color is white + + + + + color is yellow + + + + + color is purple + + + + + color is cyan + + + + + color is intensified + + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + The console output stream writer to write to + + + + This writer is not thread safe. + + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + Initialize the options for the object + + + + Combine the and together. + + + + + + The combined and suitable for + setting the console color. + + + + + Appends logging events to the console. + + + + ConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + NOTE: This appender writes each message to the System.Console.Out or + System.Console.Error that is set at the time the event is appended. + Therefore it is possible to programmatically redirect the output of this appender + (for example NUnit does this to capture program output). While this is the desired + behavior of this appender it may have security implications in your application. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + + The instance of the class is set up to write + to the standard output stream. + + + + + Initializes a new instance of the class + with the specified layout. + + the layout to use for this appender + flag set to true to write to the console error stream + + When is set to true, output is written to + the standard error output stream. Otherwise, output is written to the standard + output stream. + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + debug system. + + + Events are written using the + method. The event's logger name is passed as the value for the category name to the Write method. + + + Nicko Cadell + + + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + Formats the category parameter sent to the Debug method. + + + + Defaults to a with %logger as the pattern which will use the logger name of the current + as the category parameter. + + + + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + If is true then the + is called. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to a with %logger as the pattern. + + + + + Writes events to the system event log. + + + + The appender will fail if you try to write using an event source that doesn't exist unless it is running with local administrator privileges. + See also http://logging.apache.org/log4net/release/faq.html#trouble-EventLog + + + The EventID of the event log entry can be + set using the EventID property () + on the . + + + The Category of the event log entry can be + set using the Category property () + on the . + + + There is a limit of 32K characters for an event log message + + + When configuring the EventLogAppender a mapping can be + specified to map a logging level to an event log entry type. For example: + + + <mapping> + <level value="ERROR" /> + <eventLogEntryType value="Error" /> + </mapping> + <mapping> + <level value="DEBUG" /> + <eventLogEntryType value="Information" /> + </mapping> + + + The Level is the standard log4net logging level and eventLogEntryType can be any value + from the enum, i.e.: + + Erroran error event + Warninga warning event + Informationan informational event + + + + Aspi Havewala + Douglas de la Torre + Nicko Cadell + Gert Driesen + Thomas Voss + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class + with the specified . + + The to use with this appender. + + + Obsolete constructor. + + + + + + The name of the log where messages will be stored. + + + The string name of the log where messages will be stored. + + + This is the name of the log as it appears in the Event Viewer + tree. The default value is to log into the Application + log, this is where most applications write their events. However + if you need a separate log for your application (or applications) + then you should set the appropriately. + This should not be used to distinguish your event log messages + from those of other applications, the + property should be used to distinguish events. This property should be + used to group together events into a single log. + + + + + + Property used to set the Application name. This appears in the + event logs when logging. + + + The string used to distinguish events from different sources. + + + Sets the event log source property. + + + + + This property is used to return the name of the computer to use + when accessing the event logs. Currently, this is the current + computer, denoted by a dot "." + + + The string name of the machine holding the event log that + will be logged into. + + + This property cannot be changed. It is currently set to '.' + i.e. the local machine. This may be changed in future. + + + + + Add a mapping of level to - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the event log entry type for a level. + + + + + + Gets or sets the used to write to the EventLog. + + + The used to write to the EventLog. + + + + The system security context used to write to the EventLog. + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the EventId to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The EventID of the event log entry will normally be + set using the EventID property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + Gets or sets the Category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + The Category of the event log entry will normally be + set using the Category property () + on the . + This property provides the fallback value which defaults to 0. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create an event log source + + + Uses different API calls under NET_2_0 + + + + + This method is called by the + method. + + the event to log + + Writes the event to the system event log using the + . + + If the event has an EventID property (see ) + set then this integer will be used as the event log event id. + + + There is a limit of 32K characters for an event log message + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Get the equivalent for a + + the Level to convert to an EventLogEntryType + The equivalent for a + + Because there are fewer applicable + values to use in logging levels than there are in the + this is a one way mapping. There is + a loss of information during the conversion. + + + + + The log name is the section in the event logs where the messages + are stored. + + + + + Name of the application to use when logging. This appears in the + application column of the event log named by . + + + + + The name of the machine which holds the event log. This is + currently only allowed to be '.' i.e. the current machine. + + + + + Mapping from level object to EventLogEntryType + + + + + The security context to use for privileged calls + + + + + The event ID to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + The event category to use unless one is explicitly specified via the LoggingEvent's properties. + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and its event log entry type. + + + + + + The for this entry + + + + Required property. + The for this entry + + + + + + The fully qualified type of the EventLogAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The maximum size supported by default. + + + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx + The 32766 documented max size is two bytes shy of 32K (I'm assuming 32766 + may leave space for a two byte null terminator of #0#0). The 32766 max + length is what the .NET 4.0 source code checks for, but this is WRONG! + Strings with a length > 31839 on Windows Vista or higher can CORRUPT + the event log! See: System.Diagnostics.EventLogInternal.InternalWriteEvent() + for the use of the 32766 max size. + + + + + The maximum size supported by a windows operating system that is vista + or newer. + + + See ReportEvent API: + http://msdn.microsoft.com/en-us/library/aa363679(VS.85).aspx + ReportEvent's lpStrings parameter: + "A pointer to a buffer containing an array of + null-terminated strings that are merged into the message before Event Viewer + displays the string to the user. This parameter must be a valid pointer + (or NULL), even if wNumStrings is zero. Each string is limited to 31,839 characters." + + Going beyond the size of 31839 will (at some point) corrupt the event log on Windows + Vista or higher! It may succeed for a while...but you will eventually run into the + error: "System.ComponentModel.Win32Exception : A device attached to the system is + not functioning", and the event log will then be corrupt (I was able to corrupt + an event log using a length of 31877 on Windows 7). + + The max size for Windows Vista or higher is documented here: + http://msdn.microsoft.com/en-us/library/xzwc042w(v=vs.100).aspx. + Going over this size may succeed a few times but the buffer will overrun and + eventually corrupt the log (based on testing). + + The maxEventMsgSize size is based on the max buffer size of the lpStrings parameter of the ReportEvent API. + The documented max size for EventLog.WriteEntry for Windows Vista and higher is 31839, but I'm leaving room for a + terminator of #0#0, as we cannot see the source of ReportEvent (though we could use an API monitor to examine the + buffer, given enough time). + + + + + The maximum size that the operating system supports for + a event log message. + + + Used to determine the maximum string length that can be written + to the operating system event log and eventually truncate a string + that exceeds the limits. + + + + + This method determines the maximum event log message size allowed for + the current environment. + + + + + + Appends logging events to a file. + + + + Logging events are sent to the file specified by + the property. + + + The file can be opened in either append or overwrite mode + by specifying the property. + If the file path is relative it is taken as relative from + the application base directory. The file encoding can be + specified by setting the property. + + + The layout's and + values will be written each time the file is opened and closed + respectively. If the property is + then the file may contain multiple copies of the header and footer. + + + This appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + The supports pluggable file locking models via + the property. + The default behavior, implemented by + is to obtain an exclusive write lock on the file until this appender is closed. + The alternative models only hold a + write lock while the appender is writing a logging event () + or synchronize by using a named system wide Mutex (). + + + All locking strategies have issues and you should seriously consider using a different strategy that + avoids having multiple processes logging to the same file. + + + Nicko Cadell + Gert Driesen + Rodrigo B. de Oliveira + Douglas de la Torre + Niall Daley + + + + Write only that uses the + to manage access to an underlying resource. + + + + + True asynchronous writes are not supported, the implementation forces a synchronous write. + + + + + Locking model base class + + + + Base class for the locking models available to the derived loggers. + + + + + + Open the output file + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Gets or sets the for this LockingModel + + + The for this LockingModel + + + + The file appender this locking model is attached to and working on + behalf of. + + + The file appender is used to locate the security context and the error handler to use. + + + The value of this property will be set before is + called. + + + + + + Helper method that creates a FileStream under CurrentAppender's SecurityContext. + + + + Typically called during OpenFile or AcquireLock. + + + If the directory portion of the does not exist, it is created + via Directory.CreateDirecctory. + + + + + + + + + + Helper method to close under CurrentAppender's SecurityContext. + + + Does not set to null. + + + + + + Hold an exclusive lock on the output file + + + + Open the file once for writing and hold it open until is called. + Maintains an exclusive lock on the file during this time. + + + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Release the lock on the file + + + + Does nothing. The lock will be released when the file is closed. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Acquires the file lock for each write + + + + Opens the file once for each / cycle, + thus holding the lock for the minimal amount of time. This method of locking + is considerably slower than but allows + other processes to move/delete the log file whilst logging continues. + + + + + + Prepares to open the file when the first message is logged. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Acquire the lock on the file in preparation for writing to it. + Return a stream pointing to the file. + must be called to release the lock on the output file. + + + + + + Release the lock on the file + + + + Release the lock on the file. No further writes will be made to the + stream until is called again. + + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Provides cross-process file locking. + + Ron Grabowski + Steve Wranovsky + + + + Open the file specified and prepare for logging. + + The filename to use + Whether to append to the file, or overwrite + The encoding to use + + + Open the file specified and prepare for logging. + No writes will be made until is called. + Must be called before any calls to , + - and . + + + + + + Close the file + + + + Close the file. No further writes will be made. + + + + + + Acquire the lock on the file + + A stream that is ready to be written to. + + + Does nothing. The lock is already taken + + + + + + Releases the lock and allows others to acquire a lock. + + + + + Initializes all resources used by this locking model. + + + + + Disposes all resources that were initialized by this locking model. + + + + + Default constructor + + + + Default constructor + + + + + + Construct a new appender using the layout, file and append mode. + + the layout to use with this appender + the full path to the file to write to + flag to indicate if the file should be appended to + + + Obsolete constructor. + + + + + + Construct a new appender using the layout and file specified. + The file will be appended to. + + the layout to use with this appender + the full path to the file to write to + + + Obsolete constructor. + + + + + + Gets or sets the path to the file that logging will be written to. + + + The path to the file that logging will be written to. + + + + If the path is relative it is taken as relative from + the application base directory. + + + + + + Gets or sets a flag that indicates whether the file should be + appended to or overwritten. + + + Indicates whether the file should be appended to or overwritten. + + + + If the value is set to false then the file will be overwritten, if + it is set to true then the file will be appended to. + + The default value is true. + + + + + Gets or sets used to write to the file. + + + The used to write to the file. + + + + The default encoding set is + which is the encoding for the system's current ANSI code page. + + + + + + Gets or sets the used to write to the file. + + + The used to write to the file. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Gets or sets the used to handle locking of the file. + + + The used to lock the file. + + + + Gets or sets the used to handle locking of the file. + + + There are three built in locking models, , and . + The first locks the file from the start of logging to the end, the + second locks only for the minimal amount of time when logging each message + and the last synchronizes processes using a named system wide Mutex. + + + The default locking model is the . + + + + + + Activate the options on the file appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This will cause the file to be opened. + + + + + + Closes any previously opened file and calls the parent's . + + + + Resets the filename and the file stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + + + Called to initialize the file writer + + + + Will be called for each logged message until the file is + successfully opened. + + + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + Acquires the output file locks once before writing all the events to + the stream. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Closes the previously opened file. + + + + Writes the to the file and then + closes the file. + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + Calls but guarantees not to throw an exception. + Errors are passed to the . + + + + + + Sets and opens the file where the log output will go. The specified file must be writable. + + The path to the log file. Must be a fully qualified path. + If true will append to fileName. Otherwise will truncate fileName + + + If there was already an opened file, then the previous file + is closed first. + + + This method will ensure that the directory structure + for the specified exists. + + + + + + Sets the quiet writer used for file output + + the file stream that has been opened for writing + + + This implementation of creates a + over the and passes it to the + method. + + + This method can be overridden by sub classes that want to wrap the + in some way, for example to encrypt the output + data using a System.Security.Cryptography.CryptoStream. + + + + + + Sets the quiet writer being used. + + the writer over the file stream that has been opened for writing + + + This method can be overridden by sub classes that want to + wrap the in some way. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + Flag to indicate if we should append to the file + or overwrite the file. The default is to append. + + + + + The name of the log file. + + + + + The encoding to use for the file stream. + + + + + The security context to use for privileged calls + + + + + The stream to log to. Has added locking semantics + + + + + The locking model to use + + + + + The fully qualified type of the FileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + This appender forwards logging events to attached appenders. + + + + The forwarding appender can be used to specify different thresholds + and filters for the same appender at different locations within the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Forward the logging event to the attached appenders + + The event to log. + + + Delivers the logging event to all the attached appenders. + + + + + + Forward the logging events to the attached appenders + + The array of events to log. + + + Delivers the logging events to all the attached appenders. + + + + + + Adds an to the list of appenders of this + instance. + + The to add to this appender. + + + If the specified is already in the list of + appenders, then it won't be added again. + + + + + + Gets the appenders contained in this appender as an + . + + + If no appenders can be found, then an + is returned. + + + A collection of the appenders in this appender. + + + + + Looks for the appender with the specified name. + + The name of the appender to lookup. + + The appender with the specified name, or null. + + + + Get the named appender attached to this appender. + + + + + + Removes all previously added appenders from this appender. + + + + This is useful when re-reading configuration information. + + + + + + Removes the specified appender from the list of appenders. + + The appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + Implementation of the interface + + + + + Implement this interface for your own strategies for printing log statements. + + + + Implementors should consider extending the + class which provides a default implementation of this interface. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + Closes the appender and releases resources. + + + + Releases any resources allocated within the appender such as file handles, + network connections, etc. + + + It is a programming error to append to a closed appender. + + + + + + Log the logging event in Appender specific way. + + The event to log + + + This method is called to log a message into this appender. + + + + + + Gets or sets the name of this appender. + + The name of the appender. + + The name uniquely identifies the appender. + + + + + Interface for appenders that support bulk logging. + + + + This interface extends the interface to + support bulk logging of objects. Appenders + should only implement this interface if they can bulk log efficiently. + + + Nicko Cadell + + + + Log the array of logging events in Appender specific way. + + The events to log + + + This method is called to log an array of events into this appender. + + + + + + Interface that can be implemented by Appenders that buffer logging data and expose a method. + + + + + Flushes any buffered log data. + + + Appenders that implement the method must do so in a thread-safe manner: it can be called concurrently with + the method. + + Typically this is done by locking on the Appender instance, e.g.: + + + + + + The parameter is only relevant for appenders that process logging events asynchronously, + such as . + + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Logs events to a local syslog service. + + + + This appender uses the POSIX libc library functions openlog, syslog, and closelog. + If these functions are not available on the local system then this appender will not work! + + + The functions openlog, syslog, and closelog are specified in SUSv2 and + POSIX 1003.1-2001 standards. These are used to log messages to the local syslog service. + + + This appender talks to a local syslog service. If you need to log to a remote syslog + daemon and you cannot configure your local syslog service to do this you may be + able to use the to log via UDP. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + syslog severities + + + + The log4net Level maps to a syslog severity using the + method and the + class. The severity is set on . + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facility defines which subsystem the logging comes from. + This is set on the property. + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a local syslog service. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + Add a mapping of level to severity + + The mapping to add + + + Adds a to this appender. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Close the syslog when the appender is closed + + + + Close the syslog when the appender is closed + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + + The facility. The default facility is . + + + + + The message identity + + + + + Marshaled handle to the identity string. We have to hold on to the + string as the openlog and syslog APIs just hold the + pointer to the ident and dereference it for each log message. + + + + + Mapping from level object to syslog severity + + + + + Open connection to system logger. + + + + + Generate a log message. + + + + The libc syslog method takes a format string and a variable argument list similar + to the classic printf function. As this type of vararg list is not supported + by C# we need to specify the arguments explicitly. Here we have specified the + format string with a single message argument. The caller must set the format + string to "%s". + + + + + + Close descriptor used to write to system logger. + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Appends colorful logging events to the console, using the .NET 2 + built-in capabilities. + + + + ManagedColoredConsoleAppender appends log events to the standard output stream + or the error output stream using a layout specified by the + user. It also allows the color of a specific type of message to be set. + + + By default, all output is written to the console's standard output stream. + The property can be set to direct the output to the + error stream. + + + When configuring the colored console appender, mappings should be + specified to map logging levels to colors. For example: + + + + + + + + + + + + + + + + + + + + + + The Level is the standard log4net logging level while + ForeColor and BackColor are the values of + enumeration. + + + Based on the ColoredConsoleAppender + + + Rick Hobbs + Nicko Cadell + Pavlos Touboulidis + + + + Initializes a new instance of the class. + + + The instance of the class is set up to write + to the standard output stream. + + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + Target is the value of the console output stream. + This is either "Console.Out" or "Console.Error". + + + + + + Add a mapping of level to color - done by the config file + + The mapping to add + + + Add a mapping to this appender. + Each mapping defines the foreground and background colors + for a level. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to the console. + + + The format of the output will depend on the appender's layout. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Initialize the options for this appender + + + + Initialize the level to color mappings set on this appender. + + + + + + The to use when writing to the Console + standard output stream. + + + + The to use when writing to the Console + standard output stream. + + + + + + The to use when writing to the Console + standard error output stream. + + + + The to use when writing to the Console + standard error output stream. + + + + + + Flag to write output to the error stream rather than the standard output stream + + + + + Mapping from level object to color value + + + + + A class to act as a mapping between the level that a logging call is made at and + the color it should be displayed as. + + + + Defines the mapping between a level and the color it should be displayed in. + + + + + + The mapped foreground color for the specified level + + + + Required property. + The mapped foreground color for the specified level. + + + + + + The mapped background color for the specified level + + + + Required property. + The mapped background color for the specified level. + + + + + + Stores logging events in an array. + + + + The memory appender stores all the logging events + that are appended in an in-memory array. + + + Use the method to get + and clear the current list of events that have been appended. + + + Use the method to get the current + list of events that have been appended. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Use the method to clear the + current list of events. Note there is a + race-condition when calling and + in pairs, you better use in that case. + + + Julian Biddle + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets the events that have been logged. + + The events that have been logged + + + Gets the events that have been logged. + + + + + + Gets or sets a value indicating whether only part of the logging event + data should be fixed. + + + true if the appender should only fix part of the logging event + data, otherwise false. The default is false. + + + + Setting this property to true will cause only part of the event + data to be fixed and stored in the appender, hereby improving performance. + + + See for more information. + + + + + + Gets or sets the fields that will be fixed in the event + + + + The logging event needs to have certain thread specific values + captured before it can be buffered. See + for details. + + + + + + This method is called by the method. + + the event to log + + Stores the in the events list. + + + + + Clear the list of events + + + Clear the list of events + + + + + Gets the events that have been logged and clears the list of events. + + The events that have been logged + + + Gets the events that have been logged and clears the list of events. + + + + + + The list of events that have been appended. + + + + + Value indicating which fields in the event should be fixed + + + By default all fields are fixed + + + + + Logs entries by sending network messages using the + native function. + + + + You can send messages only to names that are active + on the network. If you send the message to a user name, + that user must be logged on and running the Messenger + service to receive the message. + + + The receiver will get a top most window displaying the + messages one at a time, therefore this appender should + not be used to deliver a high volume of messages. + + + The following table lists some possible uses for this appender : + + + + + Action + Property Value(s) + + + Send a message to a user account on the local machine + + + = <name of the local machine> + + + = <user name> + + + + + Send a message to a user account on a remote machine + + + = <name of the remote machine> + + + = <user name> + + + + + Send a message to a domain user account + + + = <name of a domain controller | uninitialized> + + + = <user name> + + + + + Send a message to all the names in a workgroup or domain + + + = <workgroup name | domain name>* + + + + + Send a message from the local machine to a remote machine + + + = <name of the local machine | uninitialized> + + + = <name of the remote machine> + + + + + + + Note : security restrictions apply for sending + network messages, see + for more information. + + + + + An example configuration section to log information + using this appender from the local machine, named + LOCAL_PC, to machine OPERATOR_PC : + + + + + + + + + + Nicko Cadell + Gert Driesen + + + + The DNS or NetBIOS name of the server on which the function is to execute. + + + + + The sender of the network message. + + + + + The message alias to which the message should be sent. + + + + + The security context to use for privileged calls + + + + + Initializes the appender. + + + The default constructor initializes all fields to their default values. + + + + + Gets or sets the sender of the message. + + + The sender of the message. + + + If this property is not specified, the message is sent from the local computer. + + + + + Gets or sets the message alias to which the message should be sent. + + + The recipient of the message. + + + This property should always be specified in order to send a message. + + + + + Gets or sets the DNS or NetBIOS name of the remote server on which the function is to execute. + + + DNS or NetBIOS name of the remote server on which the function is to execute. + + + + For Windows NT 4.0 and earlier, the string should begin with \\. + + + If this property is not specified, the local computer is used. + + + + + + Gets or sets the used to call the NetSend method. + + + The used to call the NetSend method. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified. + + + The required property was not specified. + + + + This method is called by the method. + + The event to log. + + + Sends the event using a network message. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Sends a buffer of information to a registered message alias. + + The DNS or NetBIOS name of the server on which the function is to execute. + The message alias to which the message buffer should be sent + The originator of the message. + The message text. + The length, in bytes, of the message text. + + + The following restrictions apply for sending network messages: + + + + + Platform + Requirements + + + Windows NT + + + No special group membership is required to send a network message. + + + Admin, Accounts, Print, or Server Operator group membership is required to + successfully send a network message on a remote server. + + + + + Windows 2000 or later + + + If you send a message on a domain controller that is running Active Directory, + access is allowed or denied based on the access control list (ACL) for the securable + object. The default ACL permits only Domain Admins and Account Operators to send a network message. + + + On a member server or workstation, only Administrators and Server Operators can send a network message. + + + + + + + For more information see Security Requirements for the Network Management Functions. + + + + + If the function succeeds, the return value is zero. + + + + + + Appends log events to the OutputDebugString system. + + + + OutputDebugStringAppender appends log events to the + OutputDebugString system. + + + The string is passed to the native OutputDebugString + function. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Write the logging event to the output debug string API + + the event to log + + + Write the logging event to the output debug string API + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Stub for OutputDebugString native method + + the string to output + + + Stub for OutputDebugString native method + + + + + + Logs events to a remote syslog daemon. + + + + The BSD syslog protocol is used to remotely log to + a syslog daemon. The syslogd listens for for messages + on UDP port 514. + + + The syslog UDP protocol is not authenticated. Most syslog daemons + do not accept remote log messages because of the security implications. + You may be able to use the LocalSyslogAppender to talk to a local + syslog service. + + + There is an RFC 3164 that claims to document the BSD Syslog Protocol. + This RFC can be seen here: http://www.faqs.org/rfcs/rfc3164.html. + This appender generates what the RFC calls an "Original Device Message", + i.e. does not include the TIMESTAMP or HOSTNAME fields. By observation + this format of message will be accepted by all current syslog daemon + implementations. The daemon will attach the current time and the source + hostname or IP address to any messages received. + + + Syslog messages must have a facility and and a severity. The severity + is derived from the Level of the logging event. + The facility must be chosen from the set of defined syslog + values. The facilities list is predefined + and cannot be extended. + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + Rob Lyon + Nicko Cadell + + + + Syslog port 514 + + + + + syslog severities + + + + The syslog severities. + + + + + + system is unusable + + + + + action must be taken immediately + + + + + critical conditions + + + + + error conditions + + + + + warning conditions + + + + + normal but significant condition + + + + + informational + + + + + debug-level messages + + + + + syslog facilities + + + + The syslog facilities + + + + + + kernel messages + + + + + random user-level messages + + + + + mail system + + + + + system daemons + + + + + security/authorization messages + + + + + messages generated internally by syslogd + + + + + line printer subsystem + + + + + network news subsystem + + + + + UUCP subsystem + + + + + clock (cron/at) daemon + + + + + security/authorization messages (private) + + + + + ftp daemon + + + + + NTP subsystem + + + + + log audit + + + + + log alert + + + + + clock daemon + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + reserved for local use + + + + + Initializes a new instance of the class. + + + This instance of the class is set up to write + to a remote syslog daemon. + + + + + Message identity + + + + An identifier is specified with each log message. This can be specified + by setting the property. The identity (also know + as the tag) must not contain white space. The default value for the + identity is the application name (from ). + + + + + + Syslog facility + + + Set to one of the values. The list of + facilities is predefined and cannot be extended. The default value + is . + + + + + Add a mapping of level to severity + + The mapping to add + + + Add a mapping to this appender. + + + + + + This method is called by the method. + + The event to log. + + + Writes the event to a remote syslog daemon. + + + The format of the output will depend on the appender's layout. + + + + + + Initialize the options for this appender + + + + Initialize the level to syslog severity mappings set on this appender. + + + + + + Translates a log4net level to a syslog severity. + + A log4net level. + A syslog severity. + + + Translates a log4net level to a syslog severity. + + + + + + Generate a syslog priority. + + The syslog facility. + The syslog severity. + A syslog priority. + + + Generate a syslog priority. + + + + + + The facility. The default facility is . + + + + + The message identity + + + + + Mapping from level object to syslog severity + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + A class to act as a mapping between the level that a logging call is made at and + the syslog severity that is should be logged at. + + + + + + The mapped syslog severity for the specified level + + + + Required property. + The mapped syslog severity for the specified level + + + + + + Delivers logging events to a remote logging sink. + + + + This Appender is designed to deliver events to a remote sink. + That is any object that implements the + interface. It delivers the events using .NET remoting. The + object to deliver events to is specified by setting the + appenders property. + + The RemotingAppender buffers events before sending them. This allows it to + make more efficient use of the remoting infrastructure. + + Once the buffer is full the events are still not sent immediately. + They are scheduled to be sent using a pool thread. The effect is that + the send occurs asynchronously. This is very important for a + number of non obvious reasons. The remoting infrastructure will + flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + Because the events are sent asynchronously using pool threads it is possible to close + this appender before all the queued events have been sent. + When closing the appender attempts to wait until all the queued events have been sent, but + this will timeout after 30 seconds regardless. + + If this appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. If the runtime terminates the threads before + the queued events have been sent then they will be lost. To ensure that all events + are sent the appender must be closed before the application exits. See + for details on how to shutdown + log4net programmatically. + + + Nicko Cadell + Gert Driesen + Daniel Cazzulino + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Gets or sets the URL of the well-known object that will accept + the logging events. + + + The well-known URL of the remote sink. + + + + The URL of the remoting sink that will accept logging events. + The sink must implement the + interface. + + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Send the contents of the buffer to the remote sink. + + + The events are not sent immediately. They are scheduled to be sent + using a pool thread. The effect is that the send occurs asynchronously. + This is very important for a number of non obvious reasons. The remoting + infrastructure will flow thread local variables (stored in the ), + if they are marked as , across the + remoting boundary. If the server is not contactable then + the remoting infrastructure will clear the + objects from the . To prevent a logging failure from + having side effects on the calling application the remoting call must be made + from a separate thread to the one used by the application. A + thread is used for this. If no thread is available then + the events will block in the thread pool manager until a thread is available. + + The events to send. + + + + Override base class close. + + + + This method waits while there are queued work items. The events are + sent asynchronously using work items. These items + will be sent once a thread pool thread is available to send them, therefore + it is possible to close the appender before all the queued events have been + sent. + + This method attempts to wait until all the queued events have been sent, but this + method will timeout after 30 seconds regardless. + + If the appender is being closed because the + event has fired it may not be possible to send all the queued events. During process + exit the runtime limits the time that a + event handler is allowed to run for. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + A work item is being queued into the thread pool + + + + + A work item from the thread pool has completed + + + + + Send the contents of the buffer to the remote sink. + + + This method is designed to be used with the . + This method expects to be passed an array of + objects in the state param. + + the logging events to send + + + + The URL of the remote sink. + + + + + The local proxy (.NET remoting) for the remote logging sink. + + + + + The number of queued callbacks currently waiting or executing + + + + + Event used to signal when there are no queued work items + + + This event is set when there are no queued work items. In this + state it is safe to close the appender. + + + + + Interface used to deliver objects to a remote sink. + + + This interface must be implemented by a remoting sink + if the is to be used + to deliver logging events to the sink. + + + + + Delivers logging events to the remote sink + + Array of events to log. + + + Delivers logging events to the remote sink + + + + + + Appender that rolls log files based on size or date or both. + + + + RollingFileAppender can roll log files based on size or date or both + depending on the setting of the property. + When set to the log file will be rolled + once its size exceeds the . + When set to the log file will be rolled + once the date boundary specified in the property + is crossed. + When set to the log file will be + rolled once the date boundary specified in the property + is crossed, but within a date boundary the file will also be rolled + once its size exceeds the . + When set to the log file will be rolled when + the appender is configured. This effectively means that the log file can be + rolled once per program execution. + + + A of few additional optional features have been added: + + Attach date pattern for current log file + Backup number increments for newer files + Infinite number of backups by file size + + + + + + For large or infinite numbers of backup files a + greater than zero is highly recommended, otherwise all the backup files need + to be renamed each time a new backup is created. + + + When Date/Time based rolling is used setting + to will reduce the number of file renamings to few or none. + + + + + + Changing or without clearing + the log file directory of backup files will cause unexpected and unwanted side effects. + + + + + If Date/Time based rolling is enabled this appender will attempt to roll existing files + in the directory without a Date/Time tag based on the last write date of the base log file. + The appender only rolls the log file when a message is logged. If Date/Time based rolling + is enabled then the appender will not roll the log file at the Date/Time boundary but + at the point when the next message is logged after the boundary has been crossed. + + + + The extends the and + has the same behavior when opening the log file. + The appender will first try to open the file for writing when + is called. This will typically be during configuration. + If the file cannot be opened for writing the appender will attempt + to open the file again each time a message is logged to the appender. + If the file cannot be opened for writing when a message is logged then + the message will be discarded by this appender. + + + When rolling a backup file necessitates deleting an older backup file the + file to be deleted is moved to a temporary name before being deleted. + + + + + A maximum number of backup files when rolling on date/time boundaries is not supported. + + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + Edward Smit + + + + Style of rolling to use + + + + Style of rolling to use + + + + + + Roll files once per program execution + + + + Roll files once per program execution. + Well really once each time this appender is + configured. + + + Setting this option also sets AppendToFile to + false on the RollingFileAppender, otherwise + this appender would just be a normal file appender. + + + + + + Roll files based only on the size of the file + + + + + Roll files based only on the date + + + + + Roll files based on both the size and date of the file + + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + The code assumes that the following 'time' constants are in a increasing sequence. + + + + + + Roll the log not based on the date + + + + + Roll the log for each minute + + + + + Roll the log for each hour + + + + + Roll the log twice a day (midday and midnight) + + + + + Roll the log each day (midnight) + + + + + Roll the log each week + + + + + Roll the log each month + + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Cleans up all resources used by this appender. + + + + + Gets or sets the strategy for determining the current date and time. The default + implementation is to use LocalDateTime which internally calls through to DateTime.Now. + DateTime.UtcNow may be used on frameworks newer than .NET 1.0 by specifying + . + + + An implementation of the interface which returns the current date and time. + + + + Gets or sets the used to return the current date and time. + + + There are two built strategies for determining the current date and time, + + and . + + + The default strategy is . + + + + + + Gets or sets the date pattern to be used for generating file names + when rolling over on date. + + + The date pattern to be used for generating file names when rolling + over on date. + + + + Takes a string in the same format as expected by + . + + + This property determines the rollover schedule when rolling over + on date. + + + + + + Gets or sets the maximum number of backup files that are kept before + the oldest is erased. + + + The maximum number of backup files that are kept before the oldest is + erased. + + + + If set to zero, then there will be no backup files and the log file + will be truncated when it reaches . + + + If a negative number is supplied then no deletions will be made. Note + that this could result in very slow performance as a large number of + files are rolled over unless is used. + + + The maximum applies to each time based group of files and + not the total. + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size in bytes that the output file is allowed to reach before being + rolled over to backup files. + + + + This property is equivalent to except + that it is required for differentiating the setter taking a + argument from the setter taking a + argument. + + + The default maximum file size is 10MB (10*1024*1024). + + + + + + Gets or sets the maximum size that the output file is allowed to reach + before being rolled over to backup files. + + + The maximum size that the output file is allowed to reach before being + rolled over to backup files. + + + + This property allows you to specify the maximum size with the + suffixes "KB", "MB" or "GB" so that the size is interpreted being + expressed respectively in kilobytes, megabytes or gigabytes. + + + For example, the value "10KB" will be interpreted as 10240 bytes. + + + The default maximum file size is 10MB. + + + If you have the option to set the maximum file size programmatically + consider using the property instead as this + allows you to set the size in bytes as a . + + + + + + Gets or sets the rolling file count direction. + + + The rolling file count direction. + + + + Indicates if the current file is the lowest numbered file or the + highest numbered file. + + + By default newer files have lower numbers ( < 0), + i.e. log.1 is most recent, log.5 is the 5th backup, etc... + + + >= 0 does the opposite i.e. + log.1 is the first backup made, log.5 is the 5th backup made, etc. + For infinite backups use >= 0 to reduce + rollover costs. + + The default file count direction is -1. + + + + + Gets or sets the rolling style. + + The rolling style. + + + The default rolling style is . + + + When set to this appender's + property is set to false, otherwise + the appender would append to a single file rather than rolling + the file each time it is opened. + + + + + + Gets or sets a value indicating whether to preserve the file name extension when rolling. + + + true if the file name extension should be preserved. + + + + By default file.log is rolled to file.log.yyyy-MM-dd or file.log.curSizeRollBackup. + However, under Windows the new file name will loose any program associations as the + extension is changed. Optionally file.log can be renamed to file.yyyy-MM-dd.log or + file.curSizeRollBackup.log to maintain any program associations. + + + + + + Gets or sets a value indicating whether to always log to + the same file. + + + true if always should be logged to the same file, otherwise false. + + + + By default file.log is always the current file. Optionally + file.log.yyyy-mm-dd for current formatted datePattern can by the currently + logging file (or file.log.curSizeRollBackup or even + file.log.yyyy-mm-dd.curSizeRollBackup). + + + This will make time based rollovers with a large number of backups + much faster as the appender it won't have to rename all the backups! + + + + + + The fully qualified type of the RollingFileAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Sets the quiet writer being used. + + + This method can be overridden by sub classes. + + the writer to set + + + + Write out a logging event. + + the event to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Write out an array of logging events. + + the events to write to file. + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Performs any required rolling before outputting the next event + + + + Handles append time behavior for RollingFileAppender. This checks + if a roll over either by date (checked first) or time (checked second) + is need and then appends to the file last. + + + + + + Creates and opens the file for logging. If + is false then the fully qualified name is determined and used. + + the name of the file to open + true to append to existing file + + This method will ensure that the directory structure + for the specified exists. + + + + + Get the current output file name + + the base file name + the output file name + + The output file name is based on the base fileName specified. + If is set then the output + file name is the same as the base file passed in. Otherwise + the output file depends on the date pattern, on the count + direction or both. + + + + + Determines curSizeRollBackups (only within the current roll point) + + + + + Generates a wildcard pattern that can be used to find all files + that are similar to the base file name. + + + + + + + Builds a list of filenames for all files matching the base filename plus a file + pattern. + + + + + + + Initiates a roll over if needed for crossing a date boundary since the last run. + + + + + Initializes based on existing conditions at time of . + + + + Initializes based on existing conditions at time of . + The following is done + + determine curSizeRollBackups (only within the current roll point) + initiates a roll over if needed for crossing a date boundary since the last run. + + + + + + + Does the work of bumping the 'current' file counter higher + to the highest count when an incremental file name is seen. + The highest count is either the first file (when count direction + is greater than 0) or the last file (when count direction less than 0). + In either case, we want to know the highest count that is present. + + + + + + + Attempts to extract a number from the end of the file name that indicates + the number of the times the file has been rolled over. + + + Certain date pattern extensions like yyyyMMdd will be parsed as valid backup indexes. + + + + + + + Takes a list of files and a base file name, and looks for + 'incremented' versions of the base file. Bumps the max + count up to the highest count seen. + + + + + + + Calculates the RollPoint for the datePattern supplied. + + the date pattern to calculate the check period for + The RollPoint that is most accurate for the date pattern supplied + + Essentially the date pattern is examined to determine what the + most suitable roll point is. The roll point chosen is the roll point + with the smallest period that can be detected using the date pattern + supplied. i.e. if the date pattern only outputs the year, month, day + and hour then the smallest roll point that can be detected would be + and hourly roll point as minutes could not be detected. + + + + + Initialize the appender based on the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Sets initial conditions including date/time roll over information, first check, + scheduledFilename, and calls to initialize + the current number of backups. + + + + + + + + + .1, .2, .3, etc. + + + + + Rollover the file(s) to date/time tagged file(s). + + set to true if the file to be rolled is currently open + + + Rollover the file(s) to date/time tagged file(s). + Resets curSizeRollBackups. + If fileIsOpen is set then the new file is opened (through SafeOpenFile). + + + + + + Renames file to file . + + Name of existing file to roll. + New name for file. + + + Renames file to file . It + also checks for existence of target file and deletes if it does. + + + + + + Test if a file exists at a specified path + + the path to the file + true if the file exists + + + Test if a file exists at a specified path + + + + + + Deletes the specified file if it exists. + + The file to delete. + + + Delete a file if is exists. + The file is first moved to a new filename then deleted. + This allows the file to be removed even when it cannot + be deleted, but it still can be moved. + + + + + + Implements file roll base on file size. + + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. Moreover, File is + renamed File.1 and closed. + + + A new file is created to receive further log output. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + + + + Implements file roll. + + the base name to rename + + + If the maximum number of size based backups is reached + (curSizeRollBackups == maxSizeRollBackups) then the oldest + file is deleted -- its index determined by the sign of countDirection. + If countDirection < 0, then files + {File.1, ..., File.curSizeRollBackups -1} + are renamed to {File.2, ..., + File.curSizeRollBackups}. + + + If maxSizeRollBackups is equal to zero, then the + File is truncated with no backup files created. + + + If maxSizeRollBackups < 0, then File is + renamed if needed and no files are deleted. + + + This is called by to rename the files. + + + + + + Get the start time of the next window for the current rollpoint + + the current date + the type of roll point we are working with + the start time for the next roll point an interval after the currentDateTime date + + + Returns the date of the next roll point after the currentDateTime date passed to the method. + + + The basic strategy is to subtract the time parts that are less significant + than the rollpoint from the current time. This should roll the time back to + the start of the time window for the current rollpoint. Then we add 1 window + worth of time and get the start time of the next window for the rollpoint. + + + + + + This object supplies the current date/time. Allows test code to plug in + a method to control this class when testing date/time based rolling. The default + implementation uses the underlying value of DateTime.Now. + + + + + The date pattern. By default, the pattern is set to ".yyyy-MM-dd" + meaning daily rollover. + + + + + The actual formatted filename that is currently being written to + or will be the file transferred to on roll over + (based on staticLogFileName). + + + + + The timestamp when we shall next recompute the filename. + + + + + Holds date of last roll over + + + + + The type of rolling done + + + + + The default maximum file size is 10MB + + + + + There is zero backup files by default + + + + + How many sized based backups have been made so far + + + + + The rolling file count direction. + + + + + The rolling mode used in this appender. + + + + + Cache flag set if we are rolling by date. + + + + + Cache flag set if we are rolling by size. + + + + + Value indicating whether to always log to the same file. + + + + + Value indicating whether to preserve the file name extension when rolling. + + + + + FileName provided in configuration. Used for rolling properly + + + + + A mutex that is used to lock rolling of files. + + + + + The 1st of January 1970 in UTC + + + + + This interface is used to supply Date/Time information to the . + + + This interface is used to supply Date/Time information to the . + Used primarily to allow test classes to plug themselves in so they can + supply test date/times. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Default implementation of that returns the current time. + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Implementation of that returns the current time as the coordinated universal time (UTC). + + + + + Gets the current time. + + The current time. + + + Gets the current time. + + + + + + Send an e-mail when a specific logging event occurs, typically on errors + or fatal errors. + + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Authentication and setting the server Port are only available on the MS .NET 1.1 runtime. + For these features to be enabled you need to ensure that you are using a version of + the log4net assembly that is built against the MS .NET 1.1 framework and that you are + running the your application on the MS .NET 1.1 runtime. On all other platforms only sending + unauthenticated messages to a server listening on port 25 (the default) is supported. + + + Authentication is supported by setting the property to + either or . + If using authentication then the + and properties must also be set. + + + To set the SMTP server port use the property. The default port is 25. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a comma- or semicolon-delimited list of recipient e-mail addresses + that will be carbon copied (use semicolon on .NET 1.1 and comma for later versions). + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + For .NET 1.1 (System.Web.Mail): A semicolon-delimited list of e-mail addresses. + + + For .NET 2.0 (System.Net.Mail): A comma-delimited list of e-mail addresses. + + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses + that will be blind carbon copied. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of recipient e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the name of the SMTP relay mail server to use to send + the e-mail messages. + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + The name of the e-mail relay server. If SmtpServer is not set, the + name of the local SMTP server is used. + + + + + + Obsolete + + + Use the BufferingAppenderSkeleton Fix methods instead + + + + Obsolete property. + + + + + + The mode to use to authentication with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + Valid Authentication mode values are: , + , and . + The default value is . When using + you must specify the + and to use to authenticate. + When using the Windows credentials for the current + thread, if impersonating, or the process will be used to authenticate. + + + + + + The username to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the username will be ignored. + + + + + + The password to use to authenticate with the SMTP server + + + Authentication is only available on the MS .NET 1.1 runtime. + + A and must be specified when + is set to , + otherwise the password will be ignored. + + + + + + The port on which the SMTP server is listening + + + Server Port is only available on the MS .NET 1.1 runtime. + + The port on which the SMTP server is listening. The default + port is 25. The Port can only be changed when running on + the MS .NET 1.1 runtime. + + + + + + Gets or sets the priority of the e-mail message + + + One of the values. + + + + Sets the priority of the e-mails generated by this + appender. The default priority is . + + + If you are using this appender to report errors then + you may want to set the priority to . + + + + + + Enable or disable use of SSL when sending e-mail message + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the reply-to e-mail address. + + + This is available on MS .NET 2.0 runtime and higher + + + + + Gets or sets the subject encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + Gets or sets the body encoding to be used. + + + The default encoding is the operating system's current ANSI codepage. + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Send the email message + + the body text to include in the mail + + + + Values for the property. + + + + SMTP authentication modes. + + + + + + No authentication + + + + + Basic authentication. + + + Requires a username and password to be supplied + + + + + Integrated authentication + + + Uses the Windows credentials from the current thread or process to authenticate. + + + + + trims leading and trailing commas or semicolons + + + + + Send an email when a specific logging event occurs, typically on errors + or fatal errors. Rather than sending via smtp it writes a file into the + directory specified by . This allows services such + as the IIS SMTP agent to manage sending the messages. + + + + The configuration for this appender is identical to that of the SMTPAppender, + except that instead of specifying the SMTPAppender.SMTPHost you specify + . + + + The number of logging events delivered in this e-mail depend on + the value of option. The + keeps only the last + logging events in its + cyclic buffer. This keeps memory requirements at a reasonable level while + still delivering useful application context. + + + Niall Daley + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + Gets or sets a semicolon-delimited list of recipient e-mail addresses. + + + A semicolon-delimited list of e-mail addresses. + + + + A semicolon-delimited list of e-mail addresses. + + + + + + Gets or sets the e-mail address of the sender. + + + The e-mail address of the sender. + + + + The e-mail address of the sender. + + + + + + Gets or sets the subject line of the e-mail message. + + + The subject line of the e-mail message. + + + + The subject line of the e-mail message. + + + + + + Gets or sets the path to write the messages to. + + + + Gets or sets the path to write the messages to. This should be the same + as that used by the agent sending the messages. + + + + + + Gets or sets the file extension for the generated files + + + The file extension for the generated files + + + + The file extension for the generated files + + + + + + Gets or sets the used to write to the pickup directory. + + + The used to write to the pickup directory. + + + + Unless a specified here for this appender + the is queried for the + security context to use. The default behavior is to use the security context + of the current thread. + + + + + + Sends the contents of the cyclic buffer as an e-mail message. + + The logging events to send. + + + Sends the contents of the cyclic buffer as an e-mail message. + + + + + + Activate the options on this appender. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Convert a path into a fully qualified path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + + + + The security context to use for privileged calls + + + + + Appender that allows clients to connect via Telnet to receive log messages + + + + The TelnetAppender accepts socket connections and streams logging messages + back to the client. + The output is provided in a telnet-friendly way so that a log can be monitored + over a TCP/IP socket. + This allows simple remote monitoring of application logging. + + + The default is 23 (the telnet port). + + + Keith Long + Nicko Cadell + + + + Default constructor + + + + Default constructor + + + + + + The fully qualified type of the TelnetAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Gets or sets the TCP port number on which this will listen for connections. + + + An integer value in the range to + indicating the TCP port number on which this will listen for connections. + + + + The default value is 23 (the telnet port). + + + The value specified is less than + or greater than . + + + + Overrides the parent method to close the socket handler + + + + Closes all the outstanding connections. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Create the socket handler and wait for connections + + + + + + Writes the logging event to each connected client. + + The event to log. + + + Writes the logging event to each connected client. + + + + + + Helper class to manage connected clients + + + + The SocketHandler class is used to accept connections from + clients. It is threaded so that clients can connect/disconnect + asynchronously. + + + + + + Class that represents a client connected to this handler + + + + Class that represents a client connected to this handler + + + + + + Create this for the specified + + the client's socket + + + Opens a stream writer on the socket. + + + + + + Write a string to the client + + string to send + + + Write a string to the client + + + + + + Cleanup the clients connection + + + + Close the socket connection. + + + + + + Opens a new server port on + + the local port to listen on for connections + + + Creates a socket handler on the specified local server port. + + + + + + Sends a string message to each of the connected clients + + the text to send + + + Sends a string message to each of the connected clients + + + + + + Add a client to the internal clients list + + client to add + + + + Remove a client from the internal clients list + + client to remove + + + + Test if this handler has active connections + + + true if this handler has active connections + + + + This property will be true while this handler has + active connections, that is at least one connection that + the handler will attempt to send a message to. + + + + + + Callback used to accept a connection on the server socket + + The result of the asynchronous operation + + + On connection adds to the list of connections + if there are two many open connections you will be disconnected + + + + + + Close all network connections + + + + Make sure we close all network connections + + + + + + Sends logging events to a . + + + + An Appender that writes to a . + + + This appender may be used stand alone if initialized with an appropriate + writer, however it is typically used as a base class for an appender that + can open a to write to. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initializes a new instance of the class and + sets the output destination to a new initialized + with the specified . + + The layout to use with this appender. + The to output to. + + + Obsolete constructor. + + + + + + Initializes a new instance of the class and sets + the output destination to the specified . + + The layout to use with this appender + The to output to + + The must have been previously opened. + + + + Obsolete constructor. + + + + + + Gets or set whether the appender will flush at the end + of each append operation. + + + + The default behavior is to flush at the end of each + append operation. + + + If this option is set to false, then the underlying + stream can defer persisting the logging event to a later + time. + + + + Avoiding the flush operation at the end of each append results in + a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + Sets the where the log output will go. + + + + The specified must be open and writable. + + + The will be closed when the appender + instance is closed. + + + Note: Logging to an unopened will fail. + + + + + + This method determines if there is a sense in attempting to append. + + + + This method checks if an output target has been set and if a + layout has been set. + + + false if any of the preconditions fail. + + + + This method is called by the + method. + + The event to log. + + + Writes a log statement to the output stream if the output stream exists + and is writable. + + + The format of the output will depend on the appender's layout. + + + + + + This method is called by the + method. + + The array of events to log. + + + This method writes all the bulk logged events to the output writer + before flushing the stream. + + + + + + Close this appender instance. The underlying stream or writer is also closed. + + + Closed appenders cannot be reused. + + + + + Gets or set the and the underlying + , if any, for this appender. + + + The for this appender. + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Writes the footer and closes the underlying . + + + + Writes the footer and closes the underlying . + + + + + + Closes the underlying . + + + + Closes the underlying . + + + + + + Clears internal references to the underlying + and other variables. + + + + Subclasses can override this method for an alternate closing behavior. + + + + + + Writes a footer as produced by the embedded layout's property. + + + + Writes a footer as produced by the embedded layout's property. + + + + + + Writes a header produced by the embedded layout's property. + + + + Writes a header produced by the embedded layout's property. + + + + + + Called to allow a subclass to lazily initialize the writer + + + + This method is called when an event is logged and the or + have not been set. This allows a subclass to + attempt to initialize the writer multiple times. + + + + + + Gets or sets the where logging events + will be written to. + + + The where logging events are written. + + + + This is the where logging events + will be written to. + + + + + + This is the where logging events + will be written to. + + + + + Immediate flush means that the underlying + or output stream will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logging events are not actually persisted if and when the application + crashes. + + + The default value is true. + + + + + + The fully qualified type of the TextWriterAppender class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Appends log events to the system. + + + + The application configuration file can be used to control what listeners + are actually used. See the MSDN documentation for the + class for details on configuring the + trace system. + + + Events are written using the System.Diagnostics.Trace.Write(string,string) + method. The event's logger name is the default value for the category parameter + of the Write method. + + + Compact Framework
+ The Compact Framework does not support the + class for any operation except Assert. When using the Compact Framework this + appender will write to the system rather than + the Trace system. This appender will therefore behave like the . +
+
+ Douglas de la Torre + Nicko Cadell + Gert Driesen + Ron Grabowski +
+ + + Initializes a new instance of the . + + + + Default constructor. + + + + + + Initializes a new instance of the + with a specified layout. + + The layout to use with this appender. + + + Obsolete constructor. + + + + + + Gets or sets a value that indicates whether the appender will + flush at the end of each write. + + + The default behavior is to flush at the end of each + write. If the option is set tofalse, then the underlying + stream can defer writing to physical medium to a later time. + + + Avoiding the flush operation at the end of each append results + in a performance gain of 10 to 20 percent. However, there is safety + trade-off involved in skipping flushing. Indeed, when flushing is + skipped, then it is likely that the last few log events will not + be recorded on disk when the application exits. This is a high + price to pay even for a 20% performance gain. + + + + + + The category parameter sent to the Trace method. + + + + Defaults to %logger which will use the logger name of the current + as the category parameter. + + + + + + + + Writes the logging event to the system. + + The event to log. + + + Writes the logging event to the system. + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Immediate flush means that the underlying writer or output stream + will be flushed at the end of each append operation. + + + + Immediate flush is slower but ensures that each append request is + actually written. If is set to + false, then there is a good chance that the last few + logs events are not actually written to persistent media if and + when the application crashes. + + + The default value is true. + + + + + Defaults to %logger + + + + + Flushes any buffered log data. + + The maximum time to wait for logging events to be flushed. + True if all logging events were flushed successfully, else false. + + + + Sends logging events as connectionless UDP datagrams to a remote host or a + multicast group using an . + + + + UDP guarantees neither that messages arrive, nor that they arrive in the correct order. + + + To view the logging results, a custom application can be developed that listens for logging + events. + + + When decoding events send via this appender remember to use the same encoding + to decode the events as was used to send the events. See the + property to specify the encoding to use. + + + + This example shows how to log receive logging events that are sent + on IP address 244.0.0.1 and port 8080 to the console. The event is + encoded in the packet as a unicode string and it is decoded as such. + + IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, 0); + UdpClient udpClient; + byte[] buffer; + string loggingEvent; + + try + { + udpClient = new UdpClient(8080); + + while(true) + { + buffer = udpClient.Receive(ref remoteEndPoint); + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer); + Console.WriteLine(loggingEvent); + } + } + catch(Exception e) + { + Console.WriteLine(e.ToString()); + } + + + Dim remoteEndPoint as IPEndPoint + Dim udpClient as UdpClient + Dim buffer as Byte() + Dim loggingEvent as String + + Try + remoteEndPoint = new IPEndPoint(IPAddress.Any, 0) + udpClient = new UdpClient(8080) + + While True + buffer = udpClient.Receive(ByRef remoteEndPoint) + loggingEvent = System.Text.Encoding.Unicode.GetString(buffer) + Console.WriteLine(loggingEvent) + Wend + Catch e As Exception + Console.WriteLine(e.ToString()) + End Try + + + An example configuration section to log information using this appender to the + IP 224.0.0.1 on port 8080: + + + + + + + + + + Gert Driesen + Nicko Cadell + + + + Initializes a new instance of the class. + + + The default constructor initializes all fields to their default values. + + + + + Gets or sets the IP address of the remote host or multicast group to which + the underlying should sent the logging event. + + + The IP address of the remote host or multicast group to which the logging event + will be sent. + + + + Multicast addresses are identified by IP class D addresses (in the range 224.0.0.0 to + 239.255.255.255). Multicast packets can pass across different networks through routers, so + it is possible to use multicasts in an Internet scenario as long as your network provider + supports multicasting. + + + Hosts that want to receive particular multicast messages must register their interest by joining + the multicast group. Multicast messages are not sent to networks where no host has joined + the multicast group. Class D IP addresses are used for multicast groups, to differentiate + them from normal host addresses, allowing nodes to easily detect if a message is of interest. + + + Static multicast addresses that are needed globally are assigned by IANA. A few examples are listed in the table below: + + + + + IP Address + Description + + + 224.0.0.1 + + + Sends a message to all system on the subnet. + + + + + 224.0.0.2 + + + Sends a message to all routers on the subnet. + + + + + 224.0.0.12 + + + The DHCP server answers messages on the IP address 224.0.0.12, but only on a subnet. + + + + + + + A complete list of actually reserved multicast addresses and their owners in the ranges + defined by RFC 3171 can be found at the IANA web site. + + + The address range 239.0.0.0 to 239.255.255.255 is reserved for administrative scope-relative + addresses. These addresses can be reused with other local groups. Routers are typically + configured with filters to prevent multicast traffic in this range from flowing outside + of the local network. + + + + + + Gets or sets the TCP port number of the remote host or multicast group to which + the underlying should sent the logging event. + + + An integer value in the range to + indicating the TCP port number of the remote host or multicast group to which the logging event + will be sent. + + + The underlying will send messages to this TCP port number + on the remote host or multicast group. + + The value specified is less than or greater than . + + + + Gets or sets the TCP port number from which the underlying will communicate. + + + An integer value in the range to + indicating the TCP port number from which the underlying will communicate. + + + + The underlying will bind to this port for sending messages. + + + Setting the value to 0 (the default) will cause the udp client not to bind to + a local port. + + + The value specified is less than or greater than . + + + + Gets or sets used to write the packets. + + + The used to write the packets. + + + + The used to write the packets. + + + + + + Gets or sets the underlying . + + + The underlying . + + + creates a to send logging events + over a network. Classes deriving from can use this + property to get or set this . Use the underlying + returned from if you require access beyond that which + provides. + + + + + Gets or sets the cached remote endpoint to which the logging events should be sent. + + + The cached remote endpoint to which the logging events will be sent. + + + The method will initialize the remote endpoint + with the values of the and + properties. + + + + + Initialize the appender based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The appender will be ignored if no was specified or + an invalid remote or local TCP port number was specified. + + + The required property was not specified. + The TCP port number assigned to or is less than or greater than . + + + + This method is called by the method. + + The event to log. + + + Sends the event using an UDP datagram. + + + Exceptions are passed to the . + + + + + + This appender requires a to be set. + + true + + + This appender requires a to be set. + + + + + + Closes the UDP connection and releases all resources associated with + this instance. + + + + Disables the underlying and releases all managed + and unmanaged resources associated with the . + + + + + + Initializes the underlying connection. + + + + The underlying is initialized and binds to the + port number from which you intend to communicate. + + + Exceptions are passed to the . + + + + + + The IP address of the remote host or multicast group to which + the logging event will be sent. + + + + + The TCP port number of the remote host or multicast group to + which the logging event will be sent. + + + + + The cached remote endpoint to which the logging events will be sent. + + + + + The TCP port number from which the will communicate. + + + + + The instance that will be used for sending the + logging events. + + + + + The encoding to use for the packet. + + + + + Assembly level attribute that specifies a domain to alias to this assembly's repository. + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's domain to its repository by + specifying this attribute with the name of the target domain. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required domains. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified domain to alias to this assembly's repository. + + The domain to alias to this assemby's repository. + + + Obsolete. Use instead of . + + + + + + Assembly level attribute that specifies a repository to alias to this assembly's repository. + + + + An assembly's logger repository is defined by its , + however this can be overridden by an assembly loaded before the target assembly. + + + An assembly can alias another assembly's repository to its repository by + specifying this attribute with the name of the target repository. + + + This attribute can only be specified on the assembly and may be used + as many times as necessary to alias all the required repositories. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + The repository to alias to this assemby's repository. + + + Initializes a new instance of the class with + the specified repository to alias to this assembly's repository. + + + + + + Gets or sets the repository to alias to this assemby's repository. + + + The repository to alias to this assemby's repository. + + + + The name of the repository to alias to this assemby's repository. + + + + + + Use this class to quickly configure a . + + + + Allows very simple programmatic configuration of log4net. + + + Only one appender can be configured using this configurator. + The appender is set at the root of the hierarchy and all logging + events will be delivered to that appender. + + + Appenders can also implement the interface. Therefore + they would require that the method + be called after the appenders properties have been configured. + + + Nicko Cadell + Gert Driesen + + + + The fully qualified type of the BasicConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Initializes the log4net system with a default configuration. + + + + Initializes the log4net logging system using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the log4net system using the specified appenders. + + The appenders to use to log all logging events. + + + Initializes the log4net system using the specified appenders. + + + + + + Initializes the log4net system using the specified appender. + + The appender to use to log all logging events. + + + Initializes the log4net system using the specified appender. + + + + + + Initializes the with a default configuration. + + The repository to configure. + + + Initializes the specified repository using a + that will write to Console.Out. The log messages are + formatted using the layout object + with the + layout style. + + + + + + Initializes the using the specified appender. + + The repository to configure. + The appender to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Initializes the using the specified appenders. + + The repository to configure. + The appenders to use to log all logging events. + + + Initializes the using the specified appender. + + + + + + Base class for all log4net configuration attributes. + + + This is an abstract class that must be extended by + specific configurators. This attribute allows the + configurator to be parameterized by an assembly level + attribute. + + Nicko Cadell + Gert Driesen + + + + Constructor used by subclasses. + + the ordering priority for this configurator + + + The is used to order the configurator + attributes before they are invoked. Higher priority configurators are executed + before lower priority ones. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Abstract method implemented by a subclass. When this method is called + the subclass should configure the . + + + + + + Compare this instance to another ConfiguratorAttribute + + the object to compare to + see + + + Compares the priorities of the two instances. + Sorts by priority in descending order. Objects with the same priority are + randomly ordered. + + + + + + Assembly level attribute that specifies the logging domain for the assembly. + + + + DomainAttribute is obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + Assemblies are mapped to logging domains. Each domain has its own + logging repository. This attribute specified on the assembly controls + the configuration of the domain. The property specifies the name + of the domain that this assembly is a part of. The + specifies the type of the repository objects to create for the domain. If + this attribute is not specified and a is not specified + then the assembly will be part of the default shared logging domain. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Initialize a new instance of the class + with the name of the domain. + + The name of the domain. + + + Obsolete. Use RepositoryAttribute instead of DomainAttribute. + + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + The repository to configure. + + + + Configures log4net using a log4net element + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The element to parse. + + + + Configures the using the specified XML + element. + + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration file. + + A stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + DOMConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + DOMConfigurator is obsolete. Use XmlConfigurator instead of DOMConfigurator. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Assembly level attribute to configure the . + + + + AliasDomainAttribute is obsolete. Use AliasRepositoryAttribute instead of AliasDomainAttribute. + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + Gert Driesen + + + + Class to register for the log4net section of the configuration file + + + The log4net section of the configuration file needs to have a section + handler registered. This is the section handler used. It simply returns + the XML element that is the root of the section. + + + Example of registering the log4net section handler : + + + +
+ + + log4net configuration XML goes here + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Parses the configuration section. + + The configuration settings in a corresponding parent configuration section. + The configuration context when called from the ASP.NET configuration system. Otherwise, this parameter is reserved and is a null reference. + The for the log4net section. + The for the log4net section. + + + Returns the containing the configuration data, + + + + + + Assembly level attribute that specifies a plugin to attach to + the repository. + + + + Specifies the type of a plugin to create and attach to the + assembly's repository. The plugin type must implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class + with the specified type. + + The type name of plugin to create. + + + Create the attribute with the plugin type specified. + + + Where possible use the constructor that takes a . + + + + + + Initializes a new instance of the class + with the specified type. + + The type of plugin to create. + + + Create the attribute with the plugin type specified. + + + + + + Gets or sets the type for the plugin. + + + The type for the plugin. + + + + The type for the plugin. + + + + + + Gets or sets the type name for the plugin. + + + The type name for the plugin. + + + + The type name for the plugin. + + + Where possible use the property instead. + + + + + + Creates the plugin object defined by this attribute. + + + + Creates the instance of the object as + specified by this attribute. + + + The plugin object. + + + + Returns a representation of the properties of this object. + + + + Overrides base class method to + return a representation of the properties of this object. + + + A representation of the properties of this object + + + + Assembly level attribute that specifies the logging repository for the assembly. + + + + Assemblies are mapped to logging repository. This attribute specified + on the assembly controls + the configuration of the repository. The property specifies the name + of the repository that this assembly is a part of. The + specifies the type of the object + to create for the assembly. If this attribute is not specified or a + is not specified then the assembly will be part of the default shared logging repository. + + + This attribute can only be specified on the assembly and may only be used + once per assembly. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Default constructor. + + + + + + Initialize a new instance of the class + with the name of the repository. + + The name of the repository. + + + Initialize the attribute with the name for the assembly's repository. + + + + + + Gets or sets the name of the logging repository. + + + The string name to use as the name of the repository associated with this + assembly. + + + + This value does not have to be unique. Several assemblies can share the + same repository. They will share the logging configuration of the repository. + + + + + + Gets or sets the type of repository to create for this assembly. + + + The type of repository to create for this assembly. + + + + The type of the repository to create for the assembly. + The type must implement the + interface. + + + This will be the type of repository created when + the repository is created. If multiple assemblies reference the + same repository then the repository is only created once using the + of the first assembly to call into the + repository. + + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + Nicko Cadell + + + + Construct provider attribute with type specified + + the type of the provider to use + + + The provider specified must subclass the + class. + + + + + + Gets or sets the type of the provider to use. + + + the type of the provider to use. + + + + The provider specified must subclass the + class. + + + + + + Configures the SecurityContextProvider + + The assembly that this attribute was defined on. + The repository to configure. + + + Creates a provider instance from the specified. + Sets this as the default security context provider . + + + + + + The fully qualified type of the SecurityContextProviderAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Use this class to initialize the log4net environment using an Xml tree. + + + + Configures a using an Xml tree. + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + + + Automatically configures the using settings + stored in the application's configuration file. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + The repository to configure. + + + + Automatically configures the log4net system based on the + application's configuration settings. + + + + Each application has a configuration file. This has the + same name as the application with '.config' appended. + This file is XML and calling this function prompts the + configurator to look in that file for a section called + log4net that contains the configuration data. + + + To use this method to configure log4net you must specify + the section + handler for the log4net configuration section. See the + for an example. + + + + + + + Configures log4net using a log4net element + + + + Loads the log4net configuration from the XML element + supplied as . + + + The element to parse. + + + + Configures log4net using the specified configuration file. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures log4net using the specified configuration URI. + + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + The must support the URI scheme specified. + + + + + + Configures log4net using the specified configuration data stream. + + A stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the log4net configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures the using the specified XML + element. + + + Loads the log4net configuration from the XML element + supplied as . + + The repository to configure. + The element to parse. + + + + Configures the using the specified configuration + file. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The log4net configuration file can possible be specified in the application's + configuration file (either MyAppName.exe.config for a + normal application on Web.config for an ASP.NET application). + + + The first element matching <configuration> will be read as the + configuration. If this file is also a .NET .config file then you must specify + a configuration section for the log4net element otherwise .NET will + complain. Set the type for the section handler to , for example: + + +
+ + + + + The following example configures log4net using a configuration file, of which the + location is stored in the application's configuration file : + + + using log4net.Config; + using System.IO; + using System.Configuration; + + ... + + XmlConfigurator.Configure(new FileInfo(ConfigurationSettings.AppSettings["log4net-config-file"])); + + + In the .config file, the path to the log4net can be specified like this : + + + + + + + + + + + + + Configures the using the specified configuration + URI. + + The repository to configure. + A URI to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The must support the URI scheme specified. + + + + + + Configures the using the specified configuration + file. + + The repository to configure. + The stream to load the XML configuration from. + + + The configuration data must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + Note that this method will NOT close the stream parameter. + + + + + + Configures log4net using the file specified, monitors the file for changes + and reloads the configuration if a change is detected. + + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Configures the using the file specified, + monitors the file for changes and reloads the configuration if a change + is detected. + + The repository to configure. + The XML file to load the configuration from. + + + The configuration file must be valid XML. It must contain + at least one element called log4net that holds + the configuration data. + + + The configuration file will be monitored using a + and depends on the behavior of that class. + + + For more information on how to configure log4net using + a separate configuration file, see . + + + + + + + Class used to watch config files. + + + + Uses the to monitor + changes to a specified file. Because multiple change notifications + may be raised when the file is modified, a timer is used to + compress the notifications into a single event. The timer + waits for time before delivering + the event notification. If any further + change notifications arrive while the timer is waiting it + is reset and waits again for to + elapse. + + + + + + Holds the FileInfo used to configure the XmlConfigurator + + + + + Holds the repository being configured. + + + + + The timer used to compress the notification events. + + + + + The default amount of time to wait after receiving notification + before reloading the config file. + + + + + Watches file for changes. This object should be disposed when no longer + needed to free system handles on the watched resources. + + + + + Initializes a new instance of the class to + watch a specified config file used to configure a repository. + + The repository to configure. + The configuration file to watch. + + + Initializes a new instance of the class. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Event handler used by . + + The firing the event. + The argument indicates the file that caused the event to be fired. + + + This handler reloads the configuration from the file when the event is fired. + + + + + + Called by the timer when the configuration has been updated. + + null + + + + Release the handles held by the watcher and timer. + + + + + Configures the specified repository using a log4net element. + + The hierarchy to configure. + The element to parse. + + + Loads the log4net configuration from the XML element + supplied as . + + + This method is ultimately called by one of the Configure methods + to load the configuration from an . + + + + + + Maps repository names to ConfigAndWatchHandler instances to allow a particular + ConfigAndWatchHandler to dispose of its FileSystemWatcher when a repository is + reconfigured. + + + + + The fully qualified type of the XmlConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Assembly level attribute to configure the . + + + + This attribute may only be used at the assembly scope and can only + be used once per assembly. + + + Use this attribute to configure the + without calling one of the + methods. + + + If neither of the or + properties are set the configuration is loaded from the application's .config file. + If set the property takes priority over the + property. The property + specifies a path to a file to load the config from. The path is relative to the + application's base directory; . + The property is used as a postfix to the assembly file name. + The config file must be located in the application's base directory; . + For example in a console application setting the to + config has the same effect as not specifying the or + properties. + + + The property can be set to cause the + to watch the configuration file for changes. + + + + Log4net will only look for assembly level configuration attributes once. + When using the log4net assembly level attributes to control the configuration + of log4net you must ensure that the first call to any of the + methods is made from the assembly with the configuration + attributes. + + + If you cannot guarantee the order in which log4net calls will be made from + different assemblies you must use programmatic configuration instead, i.e. + call the method directly. + + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Gets or sets the filename of the configuration file. + + + The filename of the configuration file. + + + + If specified, this is the name of the configuration file to use with + the . This file path is relative to the + application base directory (). + + + The takes priority over the . + + + + + + Gets or sets the extension of the configuration file. + + + The extension of the configuration file. + + + + If specified this is the extension for the configuration file. + The path to the config file is built by using the application + base directory (), + the assembly file name and the config file extension. + + + If the is set to MyExt then + possible config file names would be: MyConsoleApp.exe.MyExt or + MyClassLibrary.dll.MyExt. + + + The takes priority over the . + + + + + + Gets or sets a value indicating whether to watch the configuration file. + + + true if the configuration should be watched, false otherwise. + + + + If this flag is specified and set to true then the framework + will watch the configuration file and will reload the config each time + the file is modified. + + + The config file can only be watched if it is loaded from local disk. + In a No-Touch (Smart Client) deployment where the application is downloaded + from a web server the config file may not reside on the local disk + and therefore it may not be able to watch it. + + + Watching configuration is not supported on the SSCLI. + + + + + + Configures the for the specified assembly. + + The assembly that this attribute was defined on. + The repository to configure. + + + Configure the repository using the . + The specified must extend the + class otherwise the will not be able to + configure it. + + + The does not extend . + + + + Attempt to load configuration from the local file system + + The assembly that this attribute was defined on. + The repository to configure. + + + + Configure the specified repository using a + + The repository to configure. + the FileInfo pointing to the config file + + + + Attempt to load configuration from a URI + + The assembly that this attribute was defined on. + The repository to configure. + + + + The fully qualified type of the XmlConfiguratorAttribute class. + + + Used by the internal logger to record the Type of the + log message. + + + + + The implementation of the interface suitable + for use with the compact framework + + + + This implementation is a simple + mapping between repository name and + object. + + + The .NET Compact Framework 1.0 does not support retrieving assembly + level attributes therefore unlike the DefaultRepositorySelector + this selector does not examine the calling assembly for attributes. + + + Nicko Cadell + + + + Create a new repository selector + + the type of the repositories to create, must implement + + + Create an new compact repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + throw if is null + throw if does not implement + + + + Get the for the specified assembly + + not used + The default + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Get the named + + the name of the repository to lookup + The named + + + Get the named . The default + repository is log4net-default-repository. Other repositories + must be created using the . + If the named repository does not exist an exception is thrown. + + + throw if is null + throw if the does not exist + + + + Create a new repository for the assembly specified + + not used + the type of repository to create, must implement + the repository created + + + The argument is not used. This selector does not create a + separate repository for each assembly. + + + If the is null then the + default repository type specified to the constructor is used. + + + As a named repository is not specified the default repository is + returned. The default repository is named log4net-default-repository. + + + + + + Create a new repository for the repository specified + + the repository to associate with the + the type of repository to create, must implement . + If this param is null then the default repository type is used. + the repository created + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + If the named repository already exists an exception will be thrown. + + + If is null then the default + repository type specified to the constructor is used. + + + throw if is null + throw if the already exists + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + The fully qualified type of the CompactRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Notify the registered listeners that the repository has been created + + The repository that has been created + + + Raises the LoggerRepositoryCreatedEvent + event. + + + + + + The default implementation of the interface. + + + + Uses attributes defined on the calling assembly to determine how to + configure the hierarchy for the repository. + + + Nicko Cadell + Gert Driesen + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Creates a new repository selector. + + The type of the repositories to create, must implement + + + Create an new repository selector. + The default type for repositories must be specified, + an appropriate value would be . + + + is . + does not implement . + + + + Gets the for the specified assembly. + + The assembly use to lookup the . + + + The type of the created and the repository + to create can be overridden by specifying the + attribute on the . + + + The default values are to use the + implementation of the interface and to use the + as the name of the repository. + + + The created will be automatically configured using + any attributes defined on + the . + + + The for the assembly + is . + + + + Gets the for the specified repository. + + The repository to use to lookup the . + The for the specified repository. + + + Returns the named repository. If is null + a is thrown. If the repository + does not exist a is thrown. + + + Use to create a repository. + + + is . + does not exist. + + + + Create a new repository for the assembly specified + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the assembly specified. + + the assembly to use to create the repository to associate with the . + The type of repository to create, must implement . + The name to assign to the created repository + Set to true to read and apply the assembly attributes + The repository created. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The type of the created and + the repository to create can be overridden by specifying the + attribute on the + . The default values are to use the + implementation of the + interface and to use the + as the name of the repository. + + + The created will be automatically + configured using any + attributes defined on the . + + + If a repository for the already exists + that repository will be returned. An error will not be raised and that + repository may be of a different type to that specified in . + Also the attribute on the + assembly may be used to override the repository type specified in + . + + + is . + + + + Creates a new repository for the specified repository. + + The repository to associate with the . + The type of repository to create, must implement . + If this param is then the default repository type is used. + The new repository. + + + The created will be associated with the repository + specified such that a call to with the + same repository specified will return the same repository instance. + + + is . + already exists. + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets a list of objects + + an array of all known objects + + + Gets an array of all of the repositories created by this selector. + + + + + + Aliases a repository to an existing repository. + + The repository to alias. + The repository that the repository is aliased to. + + + The repository specified will be aliased to the repository when created. + The repository must not already exist. + + + When the repository is created it must utilize the same repository type as + the repository it is aliased to, otherwise the aliasing will fail. + + + + is . + -or- + is . + + + + + Notifies the registered listeners that the repository has been created. + + The repository that has been created. + + + Raises the event. + + + + + + Gets the repository name and repository type for the specified assembly. + + The assembly that has a . + in/out param to hold the repository name to use for the assembly, caller should set this to the default value before calling. + in/out param to hold the type of the repository to create for the assembly, caller should set this to the default value before calling. + is . + + + + Configures the repository using information from the assembly. + + The assembly containing + attributes which define the configuration for the repository. + The repository to configure. + + is . + -or- + is . + + + + + Loads the attribute defined plugins on the assembly. + + The assembly that contains the attributes. + The repository to add the plugins to. + + is . + -or- + is . + + + + + Loads the attribute defined aliases on the assembly. + + The assembly that contains the attributes. + The repository to alias to. + + is . + -or- + is . + + + + + The fully qualified type of the DefaultRepositorySelector class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Defined error codes that can be passed to the method. + + + + Values passed to the method. + + + Nicko Cadell + + + + A general error + + + + + Error while writing output + + + + + Failed to flush file + + + + + Failed to close file + + + + + Unable to open output file + + + + + No layout specified + + + + + Failed to parse address + + + + + An evaluator that triggers on an Exception type + + + + This evaluator will trigger if the type of the Exception + passed to + is equal to a Type in . /// + + + Drew Schaeffer + + + + The type that causes the trigger to fire. + + + + + Causes subclasses of to cause the trigger to fire. + + + + + Default ctor to allow dynamic creation through a configurator. + + + + + Constructs an evaluator and initializes to trigger on + + the type that triggers this evaluator. + If true, this evaluator will trigger on subclasses of . + + + + The type that triggers this evaluator. + + + + + If true, this evaluator will trigger on subclasses of . + + + + + Is this the triggering event? + + The event to check + This method returns true, if the logging event Exception + Type is . + Otherwise it returns false + + + This evaluator will trigger if the Exception Type of the event + passed to + is . + + + + + + Interface for attaching appenders to objects. + + + + Interface for attaching, removing and retrieving appenders. + + + Nicko Cadell + Gert Driesen + + + + Attaches an appender. + + The appender to add. + + + Add the specified appender. The implementation may + choose to allow or deny duplicate appenders. + + + + + + Gets all attached appenders. + + + A collection of attached appenders. + + + + Gets a collection of attached appenders. + If there are no attached appenders the + implementation should return an empty + collection rather than null. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Returns an attached appender with the specified. + If no appender with the specified name is found null will be + returned. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Appenders may delegate their error handling to an . + + + + Error handling is a particularly tedious to get right because by + definition errors are hard to predict and to reproduce. + + + Nicko Cadell + Gert Driesen + + + + Handles the error and information about the error condition is passed as + a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + The error code associated with the error. + + + Handles the error and information about the error condition is passed as + a parameter. + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + The that was thrown when the error occurred. + + + See . + + + + + + Prints the error message passed as a parameter. + + The message associated with the error. + + + See . + + + + + + Interface for objects that require fixing. + + + + Interface that indicates that the object requires fixing before it + can be taken outside the context of the appender's + method. + + + When objects that implement this interface are stored + in the context properties maps + and + are fixed + (see ) the + method will be called. + + + Nicko Cadell + + + + Get a portable version of this object + + the portable instance of this object + + + Get a portable instance object that represents the current + state of this object. The portable object can be stored + and logged from any thread with identical results. + + + + + + Interface that all loggers implement + + + + This interface supports logging events and testing if a level + is enabled for logging. + + + These methods will not throw exceptions. Note to implementor, ensure + that the implementation of these methods cannot allow an exception + to be thrown to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the name of the logger. + + + The name of the logger. + + + + The name of this logger + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + the exception to log, including its stack trace. Pass null to not log an exception. + + + Generates a logging event for the specified using + the and . + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Base interface for all wrappers + + + + Base interface for all wrappers. + + + All wrappers must implement this interface. + + + Nicko Cadell + + + + Get the implementation behind this wrapper object. + + + The object that in implementing this object. + + + + The object that in implementing this + object. The Logger object may not + be the same object as this object because of logger decorators. + This gets the actual underlying objects that is used to process + the log events. + + + + + + Interface used to delay activate a configured object. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then the method + must be called by the container after its all the configured properties have been set + and before the component can be used. + + + Nicko Cadell + + + + Activate the options that were previously set with calls to properties. + + + + This allows an object to defer activation of its options until all + options have been set. This is required for components which have + related options that remain ambiguous until all are set. + + + If a component implements this interface then this method must be called + after its properties have been set before the component can be used. + + + + + + Delegate used to handle logger repository creation event notifications + + The which created the repository. + The event args + that holds the instance that has been created. + + + Delegate used to handle logger repository creation event notifications. + + + + + + Provides data for the event. + + + + A + event is raised every time a is created. + + + + + + The created + + + + + Construct instance using specified + + the that has been created + + + Construct instance using specified + + + + + + The that has been created + + + The that has been created + + + + The that has been created + + + + + + Interface used by the to select the . + + + + The uses a + to specify the policy for selecting the correct + to return to the caller. + + + Nicko Cadell + Gert Driesen + + + + Gets the for the specified assembly. + + The assembly to use to lookup to the + The for the assembly. + + + Gets the for the specified assembly. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. The results of this method must be repeatable, i.e. + when called again with the same arguments the result must be the + save value. + + + + + + Gets the named . + + The name to use to lookup to the . + The named + + Lookup a named . This is the repository created by + calling . + + + + + Creates a new repository for the assembly specified. + + The assembly to use to create the domain to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the domain + specified such that a call to with the + same assembly specified will return the same repository instance. + + + How the association between and + is made is not defined. The implementation may choose any method for + this association. + + + + + + Creates a new repository with the name specified. + + The name to associate with the . + The type of repository to create, must implement . + The repository created. + + + The created will be associated with the name + specified such that a call to with the + same name will return the same repository instance. + + + + + + Test if a named repository exists + + the named repository to check + true if the repository exists + + + Test if a named repository exists. Use + to create a new repository and to retrieve + a repository. + + + + + + Gets an array of all currently defined repositories. + + + An array of the instances created by + this . + + + Gets an array of all of the repositories created by this selector. + + + + + + Event to notify that a logger repository has been created. + + + Event to notify that a logger repository has been created. + + + + Event raised when a new repository is created. + The event source will be this selector. The event args will + be a which + holds the newly created . + + + + + + Test if an triggers an action + + + + Implementations of this interface allow certain appenders to decide + when to perform an appender specific action. + + + The action or behavior triggered is defined by the implementation. + + + Nicko Cadell + + + + Test if this event triggers the action + + The event to check + true if this event triggers the action, otherwise false + + + Return true if this event triggers the action + + + + + + Defines the default set of levels recognized by the system. + + + + Each has an associated . + + + Levels have a numeric that defines the relative + ordering between levels. Two Levels with the same + are deemed to be equivalent. + + + The levels that are recognized by log4net are set for each + and each repository can have different levels defined. The levels are stored + in the on the repository. Levels are + looked up by name from the . + + + When logging at level INFO the actual level used is not but + the value of LoggerRepository.LevelMap["INFO"]. The default value for this is + , but this can be changed by reconfiguring the level map. + + + Each level has a in addition to its . The + is the string that is written into the output log. By default + the display name is the same as the level name, but this can be used to alias levels + or to localize the log output. + + + Some of the predefined levels recognized by the system are: + + + + . + + + . + + + . + + + . + + + . + + + . + + + . + + + + Nicko Cadell + Gert Driesen + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + The display name for this level. This may be localized or otherwise different from the name + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Constructor + + Integer value for this level, higher values represent more severe levels. + The string name of this level. + + + Initializes a new instance of the class with + the specified level name and value. + + + + + + Gets the name of this level. + + + The name of this level. + + + + Gets the name of this level. + + + + + + Gets the value of this level. + + + The value of this level. + + + + Gets the value of this level. + + + + + + Gets the display name of this level. + + + The display name of this level. + + + + Gets the display name of this level. + + + + + + Returns the representation of the current + . + + + A representation of the current . + + + + Returns the level . + + + + + + Compares levels. + + The object to compare against. + true if the objects are equal. + + + Compares the levels of instances, and + defers to base class if the target object is not a + instance. + + + + + + Returns a hash code + + A hash code for the current . + + + Returns a hash code suitable for use in hashing algorithms and data + structures like a hash table. + + + Returns the hash code of the level . + + + + + + Compares this instance to a specified object and returns an + indication of their relative values. + + A instance or to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the + values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + This instance is less than . + + + Zero + This instance is equal to . + + + Greater than zero + + This instance is greater than . + -or- + is . + + + + + + + must be an instance of + or ; otherwise, an exception is thrown. + + + is not a . + + + + Returns a value indicating whether a specified + is greater than another specified . + + A + A + + true if is greater than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than another specified . + + A + A + + true if is less than + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is greater than or equal to another specified . + + A + A + + true if is greater than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether a specified + is less than or equal to another specified . + + A + A + + true if is less than or equal to + ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have the same value. + + A or . + A or . + + true if the value of is the same as the + value of ; otherwise, false. + + + + Compares two levels. + + + + + + Returns a value indicating whether two specified + objects have different values. + + A or . + A or . + + true if the value of is different from + the value of ; otherwise, false. + + + + Compares two levels. + + + + + + Compares two specified instances. + + The first to compare. + The second to compare. + + A 32-bit signed integer that indicates the relative order of the + two values compared. The return value has these meanings: + + + Value + Meaning + + + Less than zero + is less than . + + + Zero + is equal to . + + + Greater than zero + is greater than . + + + + + + Compares two levels. + + + + + + The level designates a higher level than all the rest. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events. + System unusable, emergencies. + + + + + The level designates very severe error events + that will presumably lead the application to abort. + + + + + The level designates very severe error events. + Take immediate action, alerts. + + + + + The level designates very severe error events. + Critical condition, critical. + + + + + The level designates very severe error events. + + + + + The level designates error events that might + still allow the application to continue running. + + + + + The level designates potentially harmful + situations. + + + + + The level designates informational messages + that highlight the progress of the application at the highest level. + + + + + The level designates informational messages that + highlight the progress of the application at coarse-grained level. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates fine-grained informational + events that are most useful to debug an application. + + + + + The level designates the lowest level possible. + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Supports type-safe iteration over a . + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Creates a read-only wrapper for a LevelCollection instance. + + list to create a readonly wrapper arround + + A LevelCollection wrapper that is read-only. + + + + + Initializes a new instance of the LevelCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the LevelCollection class + that has the specified initial capacity. + + + The number of elements that the new LevelCollection is initially capable of storing. + + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified LevelCollection. + + The LevelCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the LevelCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + A value + + + + + Allow subclasses to avoid our default constructors + + + + + + Gets the number of elements actually contained in the LevelCollection. + + + + + Copies the entire LevelCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire LevelCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + The zero-based index of the element to get or set. + + is less than zero + -or- + is equal to or greater than . + + + + + Adds a to the end of the LevelCollection. + + The to be added to the end of the LevelCollection. + The index at which the value has been added. + + + + Removes all elements from the LevelCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the LevelCollection. + + The to check for. + true if is found in the LevelCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the LevelCollection. + + The to locate in the LevelCollection. + + The zero-based index of the first occurrence of + in the entire LevelCollection, if found; otherwise, -1. + + + + + Inserts an element into the LevelCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the LevelCollection. + + The to remove from the LevelCollection. + + The specified was not found in the LevelCollection. + + + + + Removes the element at the specified index of the LevelCollection. + + The zero-based index of the element to remove. + + is less than zero + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false + + + + Returns an enumerator that can iterate through the LevelCollection. + + An for the entire LevelCollection. + + + + Gets or sets the number of elements the LevelCollection can contain. + + + + + Adds the elements of another LevelCollection to the current LevelCollection. + + The LevelCollection whose elements should be added to the end of the current LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a array to the current LevelCollection. + + The array whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Adds the elements of a collection to the current LevelCollection. + + The collection whose elements should be added to the end of the LevelCollection. + The new of the LevelCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero + -or- + is equal to or greater than . + + + + + is less than zero + -or- + is equal to or greater than . + + + + + Supports simple iteration over a . + + + + + Initializes a new instance of the Enumerator class. + + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + An evaluator that triggers at a threshold level + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + Nicko Cadell + + + + The threshold for triggering + + + + + Create a new evaluator using the threshold. + + + + Create a new evaluator using the threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Create a new evaluator using the specified threshold. + + the threshold to trigger at + + + Create a new evaluator using the specified threshold. + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + the threshold to trigger at + + + The that will cause this evaluator to trigger + + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the event level + is equal or higher than the . + Otherwise it returns false + + + This evaluator will trigger if the level of the event + passed to + is equal to or greater than the + level. + + + + + + Mapping between string name and Level object + + + + Mapping between string name and object. + This mapping is held separately for each . + The level name is case insensitive. + + + Nicko Cadell + + + + Mapping from level name to Level object. The + level name is case insensitive + + + + + Construct the level map + + + + Construct the level map. + + + + + + Clear the internal maps of all levels + + + + Clear the internal maps of all levels + + + + + + Lookup a by name + + The name of the Level to lookup + a Level from the map with the name specified + + + Returns the from the + map with the name specified. If the no level is + found then null is returned. + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + + + Create a new Level and add it to the map + + + + + + + Create a new Level and add it to the map + + the string to display for the Level + the level value to give to the Level + the display name to give to the Level + + + Create a new Level and add it to the map + + + + + + Add a Level to the map + + the Level to add + + + Add a Level to the map + + + + + + Return all possible levels as a list of Level objects. + + all possible levels as a list of Level objects + + + Return all possible levels as a list of Level objects. + + + + + + Lookup a named level from the map + + the name of the level to lookup is taken from this level. + If the level is not set on the map then this level is added + the level in the map with the name specified + + + Lookup a named level from the map. The name of the level to lookup is taken + from the property of the + argument. + + + If no level with the specified name is found then the + argument is added to the level map + and returned. + + + + + + The internal representation of caller location information. + + + + This class uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. + + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The declaring type of the method that is + the stack boundary into the logging system for this call. + + + Initializes a new instance of the + class based on the current thread. + + + + + + Constructor + + The fully qualified class name. + The method name. + The file name. + The line number of the method within the file. + + + Initializes a new instance of the + class with the specified data. + + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + Gets the stack frames from the stack trace of the caller making the log request + + + + + The fully qualified type of the LocationInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + Exception base type for log4net. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class with + the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Static manager that controls the creation of repositories + + + + Static manager that controls the creation of repositories + + + This class is used by the wrapper managers (e.g. ) + to provide access to the objects. + + + This manager also holds the that is used to + lookup and create repositories. The selector can be set either programmatically using + the property, or by setting the log4net.RepositorySelector + AppSetting in the applications config file to the fully qualified type name of the + selector to use. + + + Nicko Cadell + Gert Driesen + + + + Private constructor to prevent instances. Only static methods should be used. + + + + Private constructor to prevent instances. Only static methods should be used. + + + + + + Hook the shutdown event + + + + On the full .NET runtime, the static constructor hooks up the + AppDomain.ProcessExit and AppDomain.DomainUnload> events. + These are used to shutdown the log4net system as the application exits. + + + + + + Register for ProcessExit and DomainUnload events on the AppDomain + + + + This needs to be in a separate method because the events make + a LinkDemand for the ControlAppDomain SecurityPermission. Because + this is a LinkDemand it is demanded at JIT time. Therefore we cannot + catch the exception in the method itself, we have to catch it in the + caller. + + + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + + Return the default instance. + + the repository to lookup in + Return the default instance + + + Gets the for the repository specified + by the argument. + + + + + + Returns the default instance. + + The assembly to use to lookup the repository. + The default instance. + + + Returns the default instance. + + + + + + Returns the named logger if it exists. + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified repository. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns the named logger if it exists. + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger found, or null if the named logger does not exist in the + specified assembly's repository. + + + + If the named logger exists (in the specified assembly's repository) then it + returns a reference to the logger, otherwise it returns + null. + + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + All the defined loggers. + + + The root logger is not included in the returned array. + + + + + + Retrieves or creates a named logger. + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Retrieves or creates a named logger. + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + + + + Shorthand for . + + The repository to lookup in. + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shorthand for . + + the assembly to use to lookup the repository + The of which the fullname will be used as the name of the logger to retrieve. + The logger with the name specified. + + + Gets the logger for the fully qualified name of the type specified. + + + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The repository to shutdown. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + The assembly to use to lookup the repository. + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository for the repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Resets all values contained in this repository instance to their defaults. + + The repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + The assembly to use to lookup the repository to reset. + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name. + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The name must be unique. Repositories cannot be redefined. + An Exception will be thrown if the repository already exists. + + + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Creates a repository for the specified assembly and repository type. + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + + + + Gets an array of all currently defined repositories. + + An array of all the known objects. + + + Gets an array of all currently defined repositories. + + + + + + Gets or sets the repository selector used by the . + + + The repository selector used by the . + + + + The repository selector () is used by + the to create and select repositories + (). + + + The caller to supplies either a string name + or an assembly (if not supplied the assembly is inferred using + ). + + + This context is used by the selector to lookup a specific repository. + + + For the full .NET Framework, the default repository is DefaultRepositorySelector; + for the .NET Compact Framework CompactRepositorySelector is the default + repository. + + + + + + Internal method to get pertinent version info. + + A string of version info. + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + Called when the event fires + + the that is exiting + null + + + Called when the event fires. + + + When the event is triggered the log4net system is . + + + + + + The fully qualified type of the LoggerManager class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initialize the default repository selector + + + + + Implementation of the interface. + + + + This class should be used as the base for all wrapper implementations. + + + Nicko Cadell + Gert Driesen + + + + Constructs a new wrapper for the specified logger. + + The logger to wrap. + + + Constructs a new wrapper for the specified logger. + + + + + + Gets the implementation behind this wrapper object. + + + The object that this object is implementing. + + + + The Logger object may not be the same object as this object + because of logger decorators. + + + This gets the actual underlying objects that is used to process + the log events. + + + + + + The logger that this object is wrapping + + + + + Portable data structure used by + + + + Portable data structure used by + + + Nicko Cadell + + + + The logger name. + + + + The logger name. + + + + + + Level of logging event. + + + + Level of logging event. Level cannot be Serializable + because it is a flyweight. Due to its special serialization it + cannot be declared final either. + + + + + + The application supplied message. + + + + The application supplied message of logging event. + + + + + + The name of thread + + + + The name of thread in which this logging event was generated + + + + + + Gets or sets the local time the event was logged + + + + Prefer using the setter, since local time can be ambiguous. + + + + + + Gets or sets the UTC time the event was logged + + + + The TimeStamp is stored in the UTC time zone. + + + + + + Location information for the caller. + + + + Location information for the caller. + + + + + + String representation of the user + + + + String representation of the user's windows name, + like DOMAIN\username + + + + + + String representation of the identity. + + + + String representation of the current thread's principal identity. + + + + + + The string representation of the exception + + + + The string representation of the exception + + + + + + String representation of the AppDomain. + + + + String representation of the AppDomain. + + + + + + Additional event specific properties + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + + + + Flags passed to the property + + + + Flags passed to the property + + + Nicko Cadell + + + + Fix the MDC + + + + + Fix the NDC + + + + + Fix the rendered message + + + + + Fix the thread name + + + + + Fix the callers location information + + + CAUTION: Very slow to generate + + + + + Fix the callers windows user name + + + CAUTION: Slow to generate + + + + + Fix the domain friendly name + + + + + Fix the callers principal name + + + CAUTION: May be slow to generate + + + + + Fix the exception text + + + + + Fix the event properties. Active properties must implement in order to be eligible for fixing. + + + + + No fields fixed + + + + + All fields fixed + + + + + Partial fields fixed + + + + This set of partial fields gives good performance. The following fields are fixed: + + + + + + + + + + + + + The internal representation of logging events. + + + + When an affirmative decision is made to log then a + instance is created. This instance + is passed around to the different log4net components. + + + This class is of concern to those wishing to extend log4net. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino + + + + Initializes a new instance of the class + from the supplied parameters. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + The name of the logger of this event. + The level of this event. + The message of this event. + The exception for this event. + + + Except , and , + all fields of LoggingEvent are filled when actually needed. Call + to cache all data locally + to prevent inconsistencies. + + This method is called by the log4net framework + to create a logging event. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + The fields in the struct that have already been fixed. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + The parameter should be used to specify which fields in the + struct have been preset. Fields not specified in the + will be captured from the environment if requested or fixed. + + + + + + Initializes a new instance of the class + using specific data. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The repository this event is logged in. + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Initializes a new instance of the class + using specific data. + + Data used to initialize the logging event. + + + This constructor is provided to allow a + to be created independently of the log4net framework. This can + be useful if you require a custom serialization scheme. + + + Use the method to obtain an + instance of the class. + + + This constructor sets this objects flags to , + this assumes that all the data relating to this event is passed in via the + parameter and no other data should be captured from the environment. + + + + + + Serialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the time when the current process started. + + + This is the time when this process started. + + + + The TimeStamp is stored internally in UTC and converted to the local time zone for this computer. + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the UTC time when the current process started. + + + This is the UTC time when this process started. + + + + Tries to get the start time for the current process. + Failing that it returns the time of the first call to + this property. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating and therefore + without the process start time being reset. + + + + + + Gets the of the logging event. + + + The of the logging event. + + + + Gets the of the logging event. + + + + + + Gets the time of the logging event. + + + The time of the logging event. + + + + The TimeStamp is stored in UTC and converted to the local time zone for this computer. + + + + + + Gets UTC the time of the logging event. + + + The UTC time of the logging event. + + + + + Gets the name of the logger that logged the event. + + + The name of the logger that logged the event. + + + + Gets the name of the logger that logged the event. + + + + + + Gets the location information for this logging event. + + + The location information for this logging event. + + + + The collected information is cached for future use. + + + See the class for more information on + supported frameworks and the different behavior in Debug and + Release builds. + + + + + + Gets the message object used to initialize this event. + + + The message object used to initialize this event. + + + + Gets the message object used to initialize this event. + Note that this event may not have a valid message object. + If the event is serialized the message object will not + be transferred. To get the text of the message the + property must be used + not this property. + + + If there is no defined message object for this event then + null will be returned. + + + + + + Gets the exception object used to initialize this event. + + + The exception object used to initialize this event. + + + + Gets the exception object used to initialize this event. + Note that this event may not have a valid exception object. + If the event is serialized the exception object will not + be transferred. To get the text of the exception the + method must be used + not this property. + + + If there is no defined exception object for this event then + null will be returned. + + + + + + The that this event was created in. + + + + The that this event was created in. + + + + + + Ensure that the repository is set. + + the value for the repository + + + + Gets the message, rendered through the . + + + The message rendered through the . + + + + The collected information is cached for future use. + + + + + + Write the rendered message to a TextWriter + + the writer to write the message to + + + Unlike the property this method + does store the message data in the internal cache. Therefore + if called only once this method should be faster than the + property, however if the message is + to be accessed multiple times then the property will be more efficient. + + + + + + Gets the name of the current thread. + + + The name of the current thread, or the thread ID when + the name is not available. + + + + The collected information is cached for future use. + + + + + + Gets the name of the current user. + + + The name of the current user, or NOT AVAILABLE when the + underlying runtime has no support for retrieving the name of the + current user. + + + + Calls WindowsIdentity.GetCurrent().Name to get the name of + the current windows user. + + + To improve performance, we could cache the string representation of + the name, and reuse that as long as the identity stayed constant. + Once the identity changed, we would need to re-assign and re-render + the string. + + + However, the WindowsIdentity.GetCurrent() call seems to + return different objects every time, so the current implementation + doesn't do this type of caching. + + + Timing for these operations: + + + + Method + Results + + + WindowsIdentity.GetCurrent() + 10000 loops, 00:00:00.2031250 seconds + + + WindowsIdentity.GetCurrent().Name + 10000 loops, 00:00:08.0468750 seconds + + + + This means we could speed things up almost 40 times by caching the + value of the WindowsIdentity.GetCurrent().Name property, since + this takes (8.04-0.20) = 7.84375 seconds. + + + + + + Gets the identity of the current thread principal. + + + The string name of the identity of the current thread principal. + + + + Calls System.Threading.Thread.CurrentPrincipal.Identity.Name to get + the name of the current thread principal. + + + + + + Gets the AppDomain friendly name. + + + The AppDomain friendly name. + + + + Gets the AppDomain friendly name. + + + + + + Additional event specific properties. + + + Additional event specific properties. + + + + A logger or an appender may attach additional + properties to specific events. These properties + have a string key and an object value. + + + This property is for events that have been added directly to + this event. The aggregate properties (which include these + event properties) can be retrieved using + and . + + + Once the properties have been fixed this property + returns the combined cached properties. This ensures that updates to + this property are always reflected in the underlying storage. When + returning the combined properties there may be more keys in the + Dictionary than expected. + + + + + + The fixed fields in this event + + + The set of fields that are fixed in this event + + + + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + The data in this event must be fixed before it can be serialized. + + + The method must be called during the + method call if this event + is to be used outside that method. + + + + + + Gets the portable data for this . + + The for this event. + + + A new can be constructed using a + instance. + + + Does a fix of the data + in the logging event before returning the event data. + + + + + + Gets the portable data for this . + + The set of data to ensure is fixed in the LoggingEventData + The for this event. + + + A new can be constructed using a + instance. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Obsolete. Use instead. + + + + + + Returns this event's exception's rendered using the + . + + + This event's exception's rendered using the . + + + + Returns this event's exception's rendered using the + . + + + + + + Fix instance fields that hold volatile data. + + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + incurred by calling but it + is essential to maintaining data consistency. + + + Calling is equivalent to + calling passing the parameter + false. + + + See for more + information. + + + + + + Fixes instance fields that hold volatile data. + + Set to true to not fix data that takes a long time to fix. + + + Some of the values in instances of + are considered volatile, that is the values are correct at the + time the event is delivered to appenders, but will not be consistent + at any time afterwards. If an event is to be stored and then processed + at a later time these volatile values must be fixed by calling + . There is a performance penalty + for incurred by calling but it + is essential to maintaining data consistency. + + + The param controls the data that + is fixed. Some of the data that can be fixed takes a long time to + generate, therefore if you do not require those settings to be fixed + they can be ignored by setting the param + to true. This setting will ignore the + and settings. + + + Set to false to ensure that all + settings are fixed. + + + + + + Fix the fields specified by the parameter + + the fields to fix + + + Only fields specified in the will be fixed. + Fields will not be fixed if they have previously been fixed. + It is not possible to 'unfix' a field. + + + + + + Lookup a composite property in this event + + the key for the property to lookup + the value for the property + + + This event has composite properties that combine together properties from + several different contexts in the following order: + + + this events properties + + This event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + + Get all the composite properties in this event + + the containing all the properties + + + See for details of the composite properties + stored by the event. + + + This method returns a single containing all the + properties defined for this event. + + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The internal logging event data. + + + + + The fully qualified Type of the calling + logger class in the stack frame (i.e. the declaring type of the method). + + + + + The application supplied message of logging event. + + + + + The exception that was thrown. + + + This is not serialized. The string representation + is serialized instead. + + + + + The repository that generated the logging event + + + This is not serialized. + + + + + The fix state for this event + + + These flags indicate which fields have been fixed. + Not serialized. + + + + + Indicated that the internal cache is updateable (ie not fixed) + + + This is a seperate flag to m_fixFlags as it allows incrementel fixing and simpler + changes in the caching strategy. + + + + + The key into the Properties map for the host name value. + + + + + The key into the Properties map for the thread identity value. + + + + + The key into the Properties map for the user name value. + + + + + Implementation of wrapper interface. + + + + This implementation of the interface + forwards to the held by the base class. + + + This logger has methods to allow the caller to log at the following + levels: + + + + DEBUG + + The and methods log messages + at the DEBUG level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + INFO + + The and methods log messages + at the INFO level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + WARN + + The and methods log messages + at the WARN level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + ERROR + + The and methods log messages + at the ERROR level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + FATAL + + The and methods log messages + at the FATAL level. That is the level with that name defined in the + repositories . The default value + for this level is . The + property tests if this level is enabled for logging. + + + + + The values for these levels and their semantic meanings can be changed by + configuring the for the repository. + + + Nicko Cadell + Gert Driesen + + + + Construct a new wrapper for the specified logger. + + The logger to wrap. + + + Construct a new wrapper for the specified logger. + + + + + + Virtual method called when the configuration of the repository changes + + the repository holding the levels + + + Virtual method called when the configuration of the repository changes + + + + + + Logs a message object with the DEBUG level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + DEBUG level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the DEBUG level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the DEBUG level including + the stack trace of the passed + as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the DEBUG level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + INFO level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the INFO level. + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the INFO level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the INFO level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the WARN level. + + the message object to log + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + WARN level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the WARN level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the WARN level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the WARN level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the ERROR level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + ERROR level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the ERROR level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the ERROR level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the ERROR level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a message object with the FATAL level. + + The message object to log. + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + FATAL level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger and + also higher in the hierarchy depending on the value of the + additivity flag. + + + WARNING Note that passing an to this + method will print the name of the but no + stack trace. To print a stack trace use the + form instead. + + + + + + Logs a message object with the FATAL level + + The message object to log. + The exception to log, including its stack trace. + + + Logs a message object with the FATAL level including + the stack trace of the + passed as a parameter. + + + See the form for more detailed information. + + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + The string is formatted using the + format provider. To specify a localized provider use the + method. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Logs a formatted message string with the FATAL level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the method. See + String.Format for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + Checks if this logger is enabled for the DEBUG + level. + + + true if this logger is enabled for DEBUG events, + false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + + For some log Logger object, when you write: + + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed, then you should write: + + + if (log.IsDebugEnabled()) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in IsDebugEnabled and once in + the Debug. This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. + + + + + + Checks if this logger is enabled for the INFO level. + + + true if this logger is enabled for INFO events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the WARN level. + + + true if this logger is enabled for WARN events, + false otherwise. + + + + See for more information and examples + of using this method. + + + + + + + Checks if this logger is enabled for the ERROR level. + + + true if this logger is enabled for ERROR events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Checks if this logger is enabled for the FATAL level. + + + true if this logger is enabled for FATAL events, + false otherwise. + + + + See for more information and examples of using this method. + + + + + + + Event handler for the event + + the repository + Empty + + + + The fully qualified name of this declaring type not the type of any subclass. + + + + + provides method information without actually referencing a System.Reflection.MethodBase + as that would require that the containing assembly is loaded. + + + + + + constructs a method item for an unknown method. + + + + + constructs a method item from the name of the method. + + + + + + constructs a method item from the name of the method and its parameters. + + + + + + + constructs a method item from a method base by determining the method name and its parameters. + + + + + + Gets the method name of the caller making the logging + request. + + + The method name of the caller making the logging + request. + + + + Gets the method name of the caller making the logging + request. + + + + + + Gets the method parameters of the caller making + the logging request. + + + The method parameters of the caller making + the logging request + + + + Gets the method parameters of the caller making + the logging request. + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + A SecurityContext used by log4net when interacting with protected resources + + + + A SecurityContext used by log4net when interacting with protected resources + for example with operating system services. This can be used to impersonate + a principal that has been granted privileges on the system resources. + + + Nicko Cadell + + + + Impersonate this SecurityContext + + State supplied by the caller + An instance that will + revoke the impersonation of this SecurityContext, or null + + + Impersonate this security context. Further calls on the current + thread should now be made in the security context provided + by this object. When the result + method is called the security + context of the thread should be reverted to the state it was in + before was called. + + + + + + The providers default instances. + + + + A configured component that interacts with potentially protected system + resources uses a to provide the elevated + privileges required. If the object has + been not been explicitly provided to the component then the component + will request one from this . + + + By default the is + an instance of which returns only + objects. This is a reasonable default + where the privileges required are not know by the system. + + + This default behavior can be overridden by subclassing the + and overriding the method to return + the desired objects. The default provider + can be replaced by programmatically setting the value of the + property. + + + An alternative is to use the log4net.Config.SecurityContextProviderAttribute + This attribute can be applied to an assembly in the same way as the + log4net.Config.XmlConfiguratorAttribute". The attribute takes + the type to use as the as an argument. + + + Nicko Cadell + + + + The default provider + + + + + Gets or sets the default SecurityContextProvider + + + The default SecurityContextProvider + + + + The default provider is used by configured components that + require a and have not had one + given to them. + + + By default this is an instance of + that returns objects. + + + The default provider can be set programmatically by setting + the value of this property to a sub class of + that has the desired behavior. + + + + + + Protected default constructor to allow subclassing + + + + Protected default constructor to allow subclassing + + + + + + Create a SecurityContext for a consumer + + The consumer requesting the SecurityContext + An impersonation context + + + The default implementation is to return a . + + + Subclasses should override this method to provide their own + behavior. + + + + + + provides stack frame information without actually referencing a System.Diagnostics.StackFrame + as that would require that the containing assembly is loaded. + + + + + + returns a stack frame item from a stack frame. This + + + + + + + Gets the fully qualified class name of the caller making the logging + request. + + + The fully qualified class name of the caller making the logging + request. + + + + Gets the fully qualified class name of the caller making the logging + request. + + + + + + Gets the file name of the caller. + + + The file name of the caller. + + + + Gets the file name of the caller. + + + + + + Gets the line number of the caller. + + + The line number of the caller. + + + + Gets the line number of the caller. + + + + + + Gets the method name of the caller. + + + The method name of the caller. + + + + Gets the method name of the caller. + + + + + + Gets all available caller information + + + All available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + Gets all available caller information, in the format + fully.qualified.classname.of.caller.methodName(Filename:line) + + + + + + The fully qualified type of the StackFrameItem class. + + + Used by the internal logger to record the Type of the + log message. + + + + + When location information is not available the constant + NA is returned. Current value of this string + constant is ?. + + + + + An evaluator that triggers after specified number of seconds. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + Robert Sevcik + + + + The time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + The UTC time of last check. This gets updated when the object is created and when the evaluator triggers. + + + + + The default time threshold for triggering in seconds. Zero means it won't trigger at all. + + + + + Create a new evaluator using the time threshold in seconds. + + + + Create a new evaluator using the time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Create a new evaluator using the specified time threshold in seconds. + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + Create a new evaluator using the specified time threshold in seconds. + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + The time threshold in seconds to trigger after + + + The time threshold in seconds to trigger after. + Zero means it won't trigger at all. + + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Is this the triggering event? + + The event to check + This method returns true, if the specified time period + has passed since last check.. + Otherwise it returns false + + + This evaluator will trigger if the specified time period + has passed since last check. + + + + + + Delegate used to handle creation of new wrappers. + + The logger to wrap in a wrapper. + + + Delegate used to handle creation of new wrappers. This delegate + is called from the + method to construct the wrapper for the specified logger. + + + The delegate to use is supplied to the + constructor. + + + + + + Maps between logger objects and wrapper objects. + + + + This class maintains a mapping between objects and + objects. Use the method to + lookup the for the specified . + + + New wrapper instances are created by the + method. The default behavior is for this method to delegate construction + of the wrapper to the delegate supplied + to the constructor. This allows specialization of the behavior without + requiring subclassing of this type. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the + + The handler to use to create the wrapper objects. + + + Initializes a new instance of the class with + the specified handler to create the wrapper objects. + + + + + + Gets the wrapper object for the specified logger. + + The wrapper object for the specified logger + + + If the logger is null then the corresponding wrapper is null. + + + Looks up the wrapper it it has previously been requested and + returns it. If the wrapper has never been requested before then + the virtual method is + called. + + + + + + Gets the map of logger repositories. + + + Map of logger repositories. + + + + Gets the hashtable that is keyed on . The + values are hashtables keyed on with the + value being the corresponding . + + + + + + Creates the wrapper object for the specified logger. + + The logger to wrap in a wrapper. + The wrapper object for the logger. + + + This implementation uses the + passed to the constructor to create the wrapper. This method + can be overridden in a subclass. + + + + + + Called when a monitored repository shutdown event is received. + + The that is shutting down + + + This method is called when a that this + is holding loggers for has signaled its shutdown + event . The default + behavior of this method is to release the references to the loggers + and their wrappers generated for this repository. + + + + + + Event handler for repository shutdown event. + + The sender of the event. + The event args. + + + + Map of logger repositories to hashtables of ILogger to ILoggerWrapper mappings + + + + + The handler to use to create the extension wrapper objects. + + + + + Internal reference to the delegate used to register for repository shutdown events. + + + + + Formats a as "HH:mm:ss,fff". + + + + Formats a in the format "HH:mm:ss,fff" for example, "15:49:37,459". + + + Nicko Cadell + Gert Driesen + + + + Renders the date into a string. Format is "HH:mm:ss". + + The date to render into a string. + The string builder to write to. + + + Subclasses should override this method to render the date + into a string using a precision up to the second. This method + will be called at most once per second and the result will be + reused if it is needed again during the same second. + + + + + + Renders the date into a string. Format is "HH:mm:ss,fff". + + The date to render into a string. + The writer to write to. + + + Uses the method to generate the + time string up to the seconds and then appends the current + milliseconds. The results from are + cached and is called at most once + per second. + + + Sub classes should override + rather than . + + + + + + String constant used to specify AbsoluteTimeDateFormat in layouts. Current value is ABSOLUTE. + + + + + String constant used to specify DateTimeDateFormat in layouts. Current value is DATE. + + + + + String constant used to specify ISO8601DateFormat in layouts. Current value is ISO8601. + + + + + Last stored time with precision up to the second. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Last stored time with precision up to the second, formatted + as a string. + + + + + Formats a as "dd MMM yyyy HH:mm:ss,fff" + + + + Formats a in the format + "dd MMM yyyy HH:mm:ss,fff" for example, + "06 Nov 1994 15:49:37,459". + + + Nicko Cadell + Gert Driesen + Angelika Schnagl + + + + Default constructor. + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats a DateTime in the format "dd MMM yyyy HH:mm:ss" + for example, "06 Nov 1994 15:49:37". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + The format info for the invariant culture. + + + + + Render a as a string. + + + + Interface to abstract the rendering of a + instance into a string. + + + The method is used to render the + date to a text writer. + + + Nicko Cadell + Gert Driesen + + + + Formats the specified date as a string. + + The date to format. + The writer to write to. + + + Format the as a string and write it + to the provided. + + + + + + Formats the as "yyyy-MM-dd HH:mm:ss,fff". + + + + Formats the specified as a string: "yyyy-MM-dd HH:mm:ss,fff". + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Formats the date without the milliseconds part + + The date to format. + The string builder to write to. + + + Formats the date specified as a string: "yyyy-MM-dd HH:mm:ss". + + + The base class will append the ",fff" milliseconds section. + This method will only be called at most once per second. + + + + + + Formats the using the method. + + + + Formats the using the method. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The format string. + + + Initializes a new instance of the class + with the specified format string. + + + The format string must be compatible with the options + that can be supplied to . + + + + + + Formats the date using . + + The date to convert to a string. + The writer to write to. + + + Uses the date format string supplied to the constructor to call + the method to format the date. + + + + + + The format string used to format the . + + + + The format string must be compatible with the options + that can be supplied to . + + + + + + This filter drops all . + + + + You can add this filter to the end of a filter chain to + switch from the default "accept all unless instructed otherwise" + filtering behavior to a "deny all unless instructed otherwise" + behavior. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + + Always returns the integer constant + + the LoggingEvent to filter + Always returns + + + Ignores the event being logged and just returns + . This can be used to change the default filter + chain behavior from to . This filter + should only be used as the last filter in the chain + as any further filters will be ignored! + + + + + + The return result from + + + + The return result from + + + + + + The log event must be dropped immediately without + consulting with the remaining filters, if any, in the chain. + + + + + This filter is neutral with respect to the log event. + The remaining filters, if any, should be consulted for a final decision. + + + + + The log event must be logged immediately without + consulting with the remaining filters, if any, in the chain. + + + + + Subclass this type to implement customized logging event filtering + + + + Users should extend this class to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Points to the next filter in the filter chain. + + + + See for more information. + + + + + + Initialize the filter with the options set + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Typically filter's options become active immediately on set, + however this method must still be called. + + + + + + Decide if the should be logged through an appender. + + The to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + This method is marked abstract and must be implemented + in a subclass. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + Implement this interface to provide customized logging event filtering + + + + Users should implement this interface to implement customized logging + event filtering. Note that and + , the parent class of all standard + appenders, have built-in filtering rules. It is suggested that you + first use and understand the built-in rules before rushing to write + your own custom filters. + + + This abstract class assumes and also imposes that filters be + organized in a linear chain. The + method of each filter is called sequentially, in the order of their + addition to the chain. + + + The method must return one + of the integer constants , + or . + + + If the value is returned, then the log event is dropped + immediately without consulting with the remaining filters. + + + If the value is returned, then the next filter + in the chain is consulted. If there are no more filters in the + chain, then the log event is logged. Thus, in the presence of no + filters, the default behavior is to log all logging events. + + + If the value is returned, then the log + event is logged without consulting the remaining filters. + + + The philosophy of log4net filters is largely inspired from the + Linux ipchains. + + + Nicko Cadell + Gert Driesen + + + + Decide if the logging event should be logged through an appender. + + The LoggingEvent to decide upon + The decision of the filter + + + If the decision is , then the event will be + dropped. If the decision is , then the next + filter, if any, will be invoked. If the decision is then + the event will be logged without consulting with other filters in + the chain. + + + + + + Property to get and set the next filter + + + The next filter in the chain + + + + Filters are typically composed into chains. This property allows the next filter in + the chain to be accessed. + + + + + + This is a very simple filter based on matching. + + + + The filter admits two options and + . If there is an exact match between the value + of the option and the of the + , then the method returns in + case the option value is set + to true, if it is false then + is returned. If the does not match then + the result will be . + + + Nicko Cadell + Gert Driesen + + + + flag to indicate if the filter should on a match + + + + + the to match against + + + + + Default constructor + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + The level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Tests if the of the logging event matches that of the filter + + the event to filter + see remarks + + + If the of the event matches the level of the + filter then the result of the function depends on the + value of . If it is true then + the function will return , it it is false then it + will return . If the does not match then + the result will be . + + + + + + This is a simple filter based on matching. + + + + The filter admits three options and + that determine the range of priorities that are matched, and + . If there is a match between the range + of priorities and the of the , then the + method returns in case the + option value is set to true, if it is false + then is returned. If there is no match, is returned. + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when matching a + + + + + the minimum value to match + + + + + the maximum value to match + + + + + Default constructor + + + + + when matching and + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Set the minimum matched + + + + The minimum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Sets the maximum matched + + + + The maximum level that this filter will attempt to match against the + level. If a match is found then + the result depends on the value of . + + + + + + Check if the event should be logged. + + the logging event to check + see remarks + + + If the of the logging event is outside the range + matched by this filter then + is returned. If the is matched then the value of + is checked. If it is true then + is returned, otherwise + is returned. + + + + + + Simple filter to match a string in the event's logger name. + + + + The works very similar to the . It admits two + options and . If the + of the starts + with the value of the option, then the + method returns in + case the option value is set to true, + if it is false then is returned. + + + Daniel Cazzulino + + + + Flag to indicate the behavior when we have a match + + + + + The logger name string to substring match against the event + + + + + Default constructor + + + + + when matching + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + The that the filter will match + + + + This filter will attempt to match this value against logger name in + the following way. The match will be done against the beginning of the + logger name (using ). The match is + case sensitive. If a match is found then + the result depends on the value of . + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the equals the beginning of + the incoming () + then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + Simple filter to match a keyed string in the + + + + Simple filter to match a keyed string in the + + + As the MDC has been replaced with layered properties the + should be used instead. + + + Nicko Cadell + Gert Driesen + + + + Simple filter to match a string in the + + + + Simple filter to match a string in the + + + As the MDC has been replaced with named stacks stored in the + properties collections the should + be used instead. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Sets the to "NDC". + + + + + + Simple filter to match a string an event property + + + + Simple filter to match a string in the value for a + specific event property + + + Nicko Cadell + + + + The key to use to lookup the string from the event properties + + + + + Default constructor + + + + + The key to lookup in the event properties and then match against. + + + + The key name to use to lookup in the properties map of the + . The match will be performed against + the value of this property if it exists. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The event property for the is matched against + the . + If the occurs as a substring within + the property value then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + Simple filter to match a string in the rendered message + + + + Simple filter to match a string in the rendered message + + + Nicko Cadell + Gert Driesen + + + + Flag to indicate the behavior when we have a match + + + + + The string to substring match against the message + + + + + A string regex to match + + + + + A regex object to match (generated from m_stringRegexToMatch) + + + + + Default constructor + + + + + Initialize and precompile the Regex if required + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + when matching or + + + + The property is a flag that determines + the behavior when a matching is found. If the + flag is set to true then the filter will the + logging event, otherwise it will the event. + + + The default is true i.e. to the event. + + + + + + Sets the static string to match + + + + The string that will be substring matched against + the rendered message. If the message contains this + string then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Sets the regular expression to match + + + + The regular expression pattern that will be matched against + the rendered message. If the message matches this + pattern then the filter will match. If a match is found then + the result depends on the value of . + + + One of or + must be specified. + + + + + + Check if this filter should allow the event to be logged + + the event being logged + see remarks + + + The rendered message is matched against the . + If the occurs as a substring within + the message then a match will have occurred. If no match occurs + this function will return + allowing other filters to check the event. If a match occurs then + the value of is checked. If it is + true then is returned otherwise + is returned. + + + + + + The log4net Global Context. + + + + The GlobalContext provides a location for global debugging + information to be stored. + + + The global context has a properties map and these properties can + be included in the output of log messages. The + supports selecting and outputing these properties. + + + By default the log4net:HostName property is set to the name of + the current machine. + + + + + GlobalContext.Properties["hostname"] = Environment.MachineName; + + + + Nicko Cadell + + + + Private Constructor. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + The global properties map. + + + The global properties map. + + + + The global properties map. + + + + + + The global context properties instance + + + + + The ILog interface is use by application to log messages into + the log4net framework. + + + + Use the to obtain logger instances + that implement this interface. The + static method is used to get logger instances. + + + This class contains methods for logging at different levels and also + has properties for determining if those logging levels are + enabled in the current configuration. + + + This interface can be implemented in different ways. This documentation + specifies reasonable behavior that a caller can expect from the actual + implementation, however different implementations reserve the right to + do things differently. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + Log a message object with the level. + + Log a message object with the level. + + The message object to log. + + + This method first checks if this logger is DEBUG + enabled by comparing the level of this logger with the + level. If this logger is + DEBUG enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + + + This method first checks if this logger is INFO + enabled by comparing the level of this logger with the + level. If this logger is + INFO enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Logs a message object with the INFO level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is WARN + enabled by comparing the level of this logger with the + level. If this logger is + WARN enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Logs a message object with the level. + + The message object to log. + + + This method first checks if this logger is ERROR + enabled by comparing the level of this logger with the + level. If this logger is + ERROR enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + Log a message object with the level. + + Log a message object with the level. + + + + This method first checks if this logger is FATAL + enabled by comparing the level of this logger with the + level. If this logger is + FATAL enabled, then it converts the message object + (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of the + additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + The message object to log. + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a formatted message string with the level. + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + + This function is intended to lessen the computational cost of + disabled log debug statements. + + For some ILog interface log, when you write: + + log.Debug("This is entry number: " + i ); + + + You incur the cost constructing the message, string construction and concatenation in + this case, regardless of whether the message is logged or not. + + + If you are worried about speed (who isn't), then you should write: + + + if (log.IsDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way you will not incur the cost of parameter + construction if debugging is disabled for log. On + the other hand, if the log is debug enabled, you + will incur the cost of evaluating whether the logger is debug + enabled twice. Once in and once in + the . This is an insignificant overhead + since evaluating a logger takes about 1% of the time it + takes to actually log. This is the preferred style of logging. + + Alternatively if your logger is available statically then the is debug + enabled state can be stored in a static variable like this: + + + private static readonly bool isDebugEnabled = log.IsDebugEnabled; + + + Then when you come to log you can write: + + + if (isDebugEnabled) + { + log.Debug("This is entry number: " + i ); + } + + + This way the debug enabled state is only queried once + when the class is loaded. Using a private static readonly + variable is the most efficient because it is a run time constant + and can be heavily optimized by the JIT compiler. + + + Of course if you use a static readonly variable to + hold the enabled state of the logger then you cannot + change the enabled state at runtime to vary the logging + that is produced. You have to decide if you need absolute + speed or runtime flexibility. + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + Checks if this logger is enabled for the level. + + + true if this logger is enabled for events, false otherwise. + + + For more information see . + + + + + + + + A flexible layout configurable with pattern string that re-evaluates on each call. + + + This class is built on and provides all the + features and capabilities of PatternLayout. PatternLayout is a 'static' class + in that its layout is done once at configuration time. This class will recreate + the layout on each reference. + One important difference between PatternLayout and DynamicPatternLayout is the + treatment of the Header and Footer parameters in the configuration. The Header and Footer + parameters for DynamicPatternLayout must be syntactically in the form of a PatternString, + but should not be marked as type log4net.Util.PatternString. Doing so causes the + pattern to be statically converted at configuration time and causes DynamicPatternLayout + to perform the same as PatternLayout. + Please see for complete documentation. + + <layout type="log4net.Layout.DynamicPatternLayout"> + <param name="Header" value="%newline**** Trace Opened Local: %date{yyyy-MM-dd HH:mm:ss.fff} UTC: %utcdate{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + <param name="Footer" value="**** Trace Closed %date{yyyy-MM-dd HH:mm:ss.fff} ****%newline" /> + </layout> + + + + + + The header PatternString + + + + + The footer PatternString + + + + + Constructs a DynamicPatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + + + + Constructs a DynamicPatternLayout using the supplied conversion pattern + + the pattern to use + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + The pattern will be formatted on each get operation. + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + The pattern will be formatted on each get operation. + + + + + A Layout that renders only the Exception text from the logging event + + + + A Layout that renders only the Exception text from the logging event. + + + This Layout should only be used with appenders that utilize multiple + layouts (e.g. ). + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Constructs a ExceptionLayout + + + + + + Activate component options + + + + Part of the component activation + framework. + + + This method does nothing as options become effective immediately. + + + + + + Gets the exception text from the logging event + + The TextWriter to write the formatted event to + the event being logged + + + Write the exception string to the . + The exception string is retrieved from . + + + + + + Interface implemented by layout objects + + + + An object is used to format a + as text. The method is called by an + appender to transform the into a string. + + + The layout can also supply and + text that is appender before any events and after all the events respectively. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text and output to a writer. + + + If the caller does not have a and prefers the + event to be formatted as a then the following + code can be used to format the event into a . + + + StringWriter writer = new StringWriter(); + Layout.Format(writer, loggingEvent); + string formattedEvent = writer.ToString(); + + + + + + The content type output by this layout. + + The content type + + + The content type output by this layout. + + + This is a MIME type e.g. "text/plain". + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handle exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + + + + Interface for raw layout objects + + + + Interface used to format a + to an object. + + + This interface should not be confused with the + interface. This interface is used in + only certain specialized situations where a raw object is + required rather than a formatted string. The + is not generally useful than this interface. + + + Nicko Cadell + Gert Driesen + + + + Implement this method to create your own layout format. + + The event to format + returns the formatted event + + + Implement this method to create your own layout format. + + + + + + Adapts any to a + + + + Where an is required this adapter + allows a to be specified. + + + Nicko Cadell + Gert Driesen + + + + The layout to adapt + + + + + Construct a new adapter + + the layout to adapt + + + Create the adapter for the specified . + + + + + + Format the logging event as an object. + + The event to format + returns the formatted event + + + Format the logging event as an object. + + + Uses the object supplied to + the constructor to perform the formatting. + + + + + + Extend this abstract class to create your own log layout format. + + + + This is the base implementation of the + interface. Most layout objects should extend this class. + + + + + + Subclasses must implement the + method. + + + Subclasses should set the in their default + constructor. + + + + Nicko Cadell + Gert Driesen + + + + The header text + + + + See for more information. + + + + + + The footer text + + + + See for more information. + + + + + + Flag indicating if this layout handles exceptions + + + + false if this layout handles exceptions + + + + + + Empty default constructor + + + + Empty default constructor + + + + + + Activate component options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + This method must be implemented by the subclass. + + + + + + Implement this method to create your own layout format. + + The TextWriter to write the formatted event to + The event to format + + + This method is called by an appender to format + the as text. + + + + + + Convenience method for easily formatting the logging event into a string variable. + + + + Creates a new StringWriter instance to store the formatted logging event. + + + + + The content type output by this layout. + + The content type is "text/plain" + + + The content type output by this layout. + + + This base class uses the value "text/plain". + To change this value a subclass must override this + property. + + + + + + The header for the layout format. + + the layout header + + + The Header text will be appended before any logging events + are formatted and appended. + + + + + + The footer for the layout format. + + the layout footer + + + The Footer text will be appended after all the logging events + have been formatted and appended. + + + + + + Flag indicating if this layout handles exceptions + + false if this layout handles exceptions + + + If this layout handles the exception object contained within + , then the layout should return + false. Otherwise, if the layout ignores the exception + object, then the layout should return true. + + + Set this value to override a this default setting. The default + value is true, this layout does not handle the exception. + + + + + + A flexible layout configurable with pattern string. + + + + The goal of this class is to a + as a string. The results + depend on the conversion pattern. + + + The conversion pattern is closely related to the conversion + pattern of the printf function in C. A conversion pattern is + composed of literal text and format control expressions called + conversion specifiers. + + + You are free to insert any literal text within the conversion + pattern. + + + Each conversion specifier starts with a percent sign (%) and is + followed by optional format modifiers and a conversion + pattern name. The conversion pattern name specifies the type of + data, e.g. logger, level, date, thread name. The format + modifiers control such things as field width, padding, left and + right justification. The following is a simple example. + + + Let the conversion pattern be "%-5level [%thread]: %message%newline" and assume + that the log4net environment was set to use a PatternLayout. Then the + statements + + + ILog log = LogManager.GetLogger(typeof(TestApp)); + log.Debug("Message 1"); + log.Warn("Message 2"); + + would yield the output + + DEBUG [main]: Message 1 + WARN [main]: Message 2 + + + Note that there is no explicit separator between text and + conversion specifiers. The pattern parser knows when it has reached + the end of a conversion specifier when it reads a conversion + character. In the example above the conversion specifier + %-5level means the level of the logging event should be left + justified to a width of five characters. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + a + Equivalent to appdomain + + + appdomain + + Used to output the friendly name of the AppDomain where the + logging event was generated. + + + + aspnet-cache + + + Used to output all cache items in the case of %aspnet-cache or just one named item if used as %aspnet-cache{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-context + + + Used to output all context items in the case of %aspnet-context or just one named item if used as %aspnet-context{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-request + + + Used to output all request parameters in the case of %aspnet-request or just one named param if used as %aspnet-request{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + aspnet-session + + + Used to output all session items in the case of %aspnet-session or just one named item if used as %aspnet-session{key} + + + This pattern is not available for Compact Framework or Client Profile assemblies. + + + + + c + Equivalent to logger + + + C + Equivalent to type + + + class + Equivalent to type + + + d + Equivalent to date + + + date + + + Used to output the date of the logging event in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + exception + + + Used to output the exception passed in with the log message. + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + + + F + Equivalent to file + + + file + + + Used to output the file name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + WARNING Generating caller information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + l + Equivalent to location + + + L + Equivalent to line + + + location + + + Used to output location information of the caller which generated + the logging event. + + + The location information depends on the CLI implementation but + usually consists of the fully qualified name of the calling + method followed by the callers source the file name and line + number between parentheses. + + + The location information can be very useful. However, its + generation is extremely slow. Its use should be avoided + unless execution speed is not an issue. + + + See the note below on the availability of caller location information. + + + + + level + + + Used to output the level of the logging event. + + + + + line + + + Used to output the line number from where the logging request + was issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + logger + + + Used to output the logger of the logging event. The + logger conversion specifier can be optionally followed by + precision specifier, that is a decimal constant in + brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the logger name will be + printed. By default the logger name is printed in full. + + + For example, for the logger name "a.b.c" the pattern + %logger{2} will output "b.c". + + + + + m + Equivalent to message + + + M + Equivalent to method + + + message + + + Used to output the application supplied message associated with + the logging event. + + + + + mdc + + + The MDC (old name for the ThreadContext.Properties) is now part of the + combined event properties. This pattern is supported for compatibility + but is equivalent to property. + + + + + method + + + Used to output the method name where the logging request was + issued. + + + WARNING Generating caller location information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + See the note below on the availability of caller location information. + + + + + n + Equivalent to newline + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + ndc + + + Used to output the NDC (nested diagnostic context) associated + with the thread that generated the logging event. + + + + + p + Equivalent to level + + + P + Equivalent to property + + + properties + Equivalent to property + + + property + + + Used to output the an event specific property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are added to events by loggers or appenders. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the event properties + + The event has that can be set. These + properties are specific to this event only. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + + r + Equivalent to timestamp + + + stacktrace + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktrace{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + This pattern is not available for Compact Framework assemblies. + + + + + stacktracedetail + + + Used to output the stack trace of the logging event + The stack trace level specifier may be enclosed + between braces. For example, %stacktracedetail{level}. + If no stack trace level specifier is given then 1 is assumed + + + Output uses the format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + This pattern is not available for Compact Framework assemblies. + + + + + t + Equivalent to thread + + + timestamp + + + Used to output the number of milliseconds elapsed since the start + of the application until the creation of the logging event. + + + + + thread + + + Used to output the name of the thread that generated the + logging event. Uses the thread number if no name is available. + + + + + type + + + Used to output the fully qualified type name of the caller + issuing the logging request. This conversion specifier + can be optionally followed by precision specifier, that + is a decimal constant in brackets. + + + If a precision specifier is given, then only the corresponding + number of right most components of the class name will be + printed. By default the class name is output in fully qualified form. + + + For example, for the class name "log4net.Layout.PatternLayout", the + pattern %type{1} will output "PatternLayout". + + + WARNING Generating the caller class information is + slow. Thus, its use should be avoided unless execution speed is + not an issue. + + + See the note below on the availability of caller location information. + + + + + u + Equivalent to identity + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + WARNING Generating caller WindowsIdentity information is + extremely slow. Its use should be avoided unless execution speed + is not an issue. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + w + Equivalent to username + + + x + Equivalent to ndc + + + X + Equivalent to mdc + + + % + + + The sequence %% outputs a single percent sign. + + + + + + The single letter patterns are deprecated in favor of the + longer more descriptive pattern names. + + + By default the relevant information is output as is. However, + with the aid of format modifiers it is possible to change the + minimum field width, the maximum field width and justification. + + + The optional format modifier is placed between the percent sign + and the conversion pattern name. + + + The first optional format modifier is the left justification + flag which is just the minus (-) character. Then comes the + optional minimum field width modifier. This is a decimal + constant that represents the minimum number of characters to + output. If the data item requires fewer characters, it is padded on + either the left or the right until the minimum width is + reached. The default is to pad on the left (right justify) but you + can specify right padding with the left justification flag. The + padding character is space. If the data item is larger than the + minimum field width, the field is expanded to accommodate the + data. The value is never truncated. + + + This behavior can be changed using the maximum field + width modifier which is designated by a period followed by a + decimal constant. If the data item is longer than the maximum + field, then the extra characters are removed from the + beginning of the data item and not from the end. For + example, it the maximum field width is eight and the data item is + ten characters long, then the first two characters of the data item + are dropped. This behavior deviates from the printf function in C + where truncation is done from the end. + + + Below are various format modifier examples for the logger + conversion specifier. + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Format modifierleft justifyminimum widthmaximum widthcomment
%20loggerfalse20none + + Left pad with spaces if the logger name is less than 20 + characters long. + +
%-20loggertrue20none + + Right pad with spaces if the logger + name is less than 20 characters long. + +
%.30loggerNAnone30 + + Truncate from the beginning if the logger + name is longer than 30 characters. + +
%20.30loggerfalse2030 + + Left pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
%-20.30loggertrue2030 + + Right pad with spaces if the logger name is shorter than 20 + characters. However, if logger name is longer than 30 characters, + then truncate from the beginning. + +
+
+ + Note about caller location information.
+ The following patterns %type %file %line %method %location %class %C %F %L %l %M + all generate caller location information. + Location information uses the System.Diagnostics.StackTrace class to generate + a call stack. The caller's information is then extracted from this stack. +
+ + + The System.Diagnostics.StackTrace class is not supported on the + .NET Compact Framework 1.0 therefore caller location information is not + available on that framework. + + + + + The System.Diagnostics.StackTrace class has this to say about Release builds: + + + "StackTrace information will be most informative with Debug build configurations. + By default, Debug builds include debug symbols, while Release builds do not. The + debug symbols contain most of the file, method name, line number, and column + information used in constructing StackFrame and StackTrace objects. StackTrace + might not report as many method calls as expected, due to code transformations + that occur during optimization." + + + This means that in a Release build the caller information may be incomplete or may + not exist at all! Therefore caller location information cannot be relied upon in a Release build. + + + + Additional pattern converters may be registered with a specific + instance using the method. + +
+ + This is a more detailed pattern. + %timestamp [%thread] %level %logger %ndc - %message%newline + + + A similar pattern except that the relative time is + right padded if less than 6 digits, thread name is right padded if + less than 15 characters and truncated if longer and the logger + name is left padded if shorter than 30 characters and truncated if + longer. + %-6timestamp [%15.15thread] %-5level %30.30logger %ndc - %message%newline + + Nicko Cadell + Gert Driesen + Douglas de la Torre + Daniel Cazzulino +
+ + + Default pattern string for log output. + + + + Default pattern string for log output. + Currently set to the string "%message%newline" + which just prints the application supplied message. + + + + + + A detailed conversion pattern + + + + A conversion pattern which includes Time, Thread, Logger, and Nested Context. + Current value is %timestamp [%thread] %level %logger %ndc - %message%newline. + + + + + + Internal map of converter identifiers to converter types. + + + + This static map is overridden by the m_converterRegistry instance map + + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternLayout only + + + + + Initialize the global registry + + + + Defines the builtin global rules. + + + + + + Constructs a PatternLayout using the DefaultConversionPattern + + + + The default pattern just produces the application supplied message. + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + As per the contract the + method must be called after the properties on this object have been + configured. + + + + + + Constructs a PatternLayout using the supplied conversion pattern + + the pattern to use + + + Note to Inheritors: This constructor calls the virtual method + . If you override this method be + aware that it will be called before your is called constructor. + + + When using this constructor the method + need not be called. This may not be the case when using a subclass. + + + + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Create the pattern parser instance + + the pattern to parse + The that will format the event + + + Creates the used to parse the conversion string. Sets the + global and instance rules on the . + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a formatted string as specified by the conversion pattern. + + the event being logged + The TextWriter to write the formatted event to + + + Parse the using the patter format + specified in the property. + + + + + + Add a converter to this PatternLayout + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternLayout + + the name of the conversion pattern for this converter + the type of the converter + + + Add a named pattern converter to this instance. This + converter will be used in the formatting of the event. + This method must be called before . + + + The specified must extend the + type. + + + + + + Write the event appdomain name to the output + + + + Writes the to the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Write the event appdomain name to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output . + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Cache will + be written to the output. + + + + + + Converter for items in the . + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net HttpContext item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Abstract class that provides access to the current HttpContext () that + derived classes need. + + + This class handles the case when HttpContext.Current is null by writing + to the writer. + + Ron Grabowski + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. + + + + + + Converter for items in the ASP.Net Cache. + + + + Outputs an item from the . + + + Ron Grabowski + + + + Write the ASP.Net Cache item to the output + + that will receive the formatted result. + The on which the pattern converter should be executed. + The under which the ASP.Net request is running. + + + Writes out the value of a named property. The property name + should be set in the + property. If no property has been set, all key value pairs from the Session will + be written to the output. + + + + + + Date pattern converter, uses a to format + the date of a . + + + + Render the to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,yyyy" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter pattern based on the property. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Convert the pattern into the rendered message + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the exception text to the output + + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Nicko Cadell + + + + Default constructor + + + + + Write the exception text to the output + + that will receive the formatted result. + the event being logged + + + If an exception object is stored in the logging event + it will be rendered into the pattern output with a + trailing newline. + + + If there is no exception or the exception property specified + by the Option value does not exist then nothing will be output + and no trailing newline will be appended. + It is typical to put a newline before the exception + and to have the exception as the last data in the pattern. + + + Recognized values for the Option parameter are: + + + + Message + + + Source + + + StackTrace + + + TargetSite + + + HelpLink + + + + + + + Writes the caller location file name to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location file name to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Write the caller location info to the output + + + + Writes the to the output writer. + + + Nicko Cadell + + + + Write the caller location info to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Writes the event identity to the output + + + + Writes the value of the to + the output writer. + + + Daniel Cazzulino + Nicko Cadell + + + + Writes the event identity to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the + to + the output . + + + + + + Write the event level to the output + + + + Writes the display name of the event + to the writer. + + + Nicko Cadell + + + + Write the event level to the output + + that will receive the formatted result. + the event being logged + + + Writes the of the + to the . + + + + + + Write the caller location line number to the output + + + + Writes the value of the for + the event to the output writer. + + + Nicko Cadell + + + + Write the caller location line number to the output + + that will receive the formatted result. + the event being logged + + + Writes the value of the for + the to the output . + + + + + + Converter for logger name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the logger + + the event being logged + The fully qualified logger name + + + Returns the of the . + + + + + + Writes the event message to the output + + + + Uses the method + to write out the event message. + + + Nicko Cadell + + + + Writes the event message to the output + + that will receive the formatted result. + the event being logged + + + Uses the method + to write out the event message. + + + + + + Write the method name to the output + + + + Writes the caller location to + the output. + + + Nicko Cadell + + + + Write the method name to the output + + that will receive the formatted result. + the event being logged + + + Writes the caller location to + the output. + + + + + + Converter to output and truncate '.' separated strings + + + + This abstract class supports truncating a '.' separated string + to show a specified number of elements from the right hand side. + This is used to truncate class names that are fully qualified. + + + Subclasses should override the method to + return the fully qualified string. + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Get the fully qualified string data + + the event being logged + the fully qualified name + + + Overridden by subclasses to get the fully qualified name before the + precision is applied to it. + + + Return the fully qualified '.' (dot/period) separated string. + + + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + Render the to the precision + specified by the property. + + + + + The fully qualified type of the NamedPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Converter to include event NDC + + + + Outputs the value of the event property named NDC. + + + The should be used instead. + + + Nicko Cadell + + + + Write the event NDC to the output + + that will receive the formatted result. + the event being logged + + + As the thread context stacks are now stored in named event properties + this converter simply looks up the value of the NDC property. + + + The should be used instead. + + + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + Nicko Cadell + + + + Initializes a new instance of the class. + + + + + Flag indicating if this converter handles the logging event exception + + false if this converter handles the logging event exception + + + If this converter handles the exception object contained within + , then this property should be set to + false. Otherwise, if the layout ignores the exception + object, then the property should be set to true. + + + Set this value to override a this default setting. The default + value is true, this converter does not handle the exception. + + + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The on which the pattern converter should be executed. + + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the correct way. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + + Flag indicating if this converter handles exceptions + + + false if this converter handles exceptions + + + + + Property pattern converter + + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + the event being logged + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Converter to output the relative time of the event + + + + Converter to output the time of the event relative to the start of the program. + + + Nicko Cadell + + + + Write the relative time to the output + + that will receive the formatted result. + the event being logged + + + Writes out the relative time of the event in milliseconds. + That is the number of milliseconds between the event + and the . + + + + + + Helper method to get the time difference between two DateTime objects + + start time (in the current local time zone) + end time (in the current local time zone) + the time difference in milliseconds + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3(type param,...) > type2.MethodCall2(type param,...) > type1.MethodCall1(type param,...) + + + Adam Davies + + + + The fully qualified type of the StackTraceDetailPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the caller stack frames to the output + + + + Writes the to the output writer, using format: + type3.MethodCall3 > type2.MethodCall2 > type1.MethodCall1 + + + Michael Cromwell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the strack frames to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the output writer. + + + + + + Returns the Name of the method + + + This method was created, so this class could be used as a base class for StackTraceDetailPatternConverter + string + + + + The fully qualified type of the StackTracePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Converter to include event thread name + + + + Writes the to the output. + + + Nicko Cadell + + + + Write the ThreadName to the output + + that will receive the formatted result. + the event being logged + + + Writes the to the . + + + + + + Pattern converter for the class name + + + + Outputs the of the event. + + + Nicko Cadell + + + + Gets the fully qualified name of the class + + the event being logged + The fully qualified type name for the caller location + + + Returns the of the . + + + + + + Converter to include event user name + + Douglas de la Torre + Nicko Cadell + + + + Convert the pattern to the rendered message + + that will receive the formatted result. + the event being logged + + + + Write the TimeStamp to the output + + + + Date pattern converter, uses a to format + the date of a . + + + Uses a to format the + in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the TimeStamp to the output + + that will receive the formatted result. + the event being logged + + + Pass the to the + for it to render it to the writer. + + + The passed is in the local time zone, this is converted + to Universal time before it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Type converter for the interface + + + + Used to convert objects to the interface. + Supports converting from the interface to + the interface using the . + + + Nicko Cadell + Gert Driesen + + + + Can the sourceType be converted to an + + the source to be to be converted + true if the source type can be converted to + + + Test if the can be converted to a + . Only is supported + as the . + + + + + + Convert the value to a object + + the value to convert + the object + + + Convert the object to a + object. If the object + is a then the + is used to adapt between the two interfaces, otherwise an + exception is thrown. + + + + + + Extract the value of a property from the + + + + Extract the value of a property from the + + + Nicko Cadell + + + + Constructs a RawPropertyLayout + + + + + The name of the value to lookup in the LoggingEvent Properties collection. + + + Value to lookup in the LoggingEvent Properties collection + + + + String name of the property to lookup in the . + + + + + + Lookup the property for + + The event to format + returns property value + + + Looks up and returns the object value of the property + named . If there is no property defined + with than name then null will be returned. + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in local time. To format the time stamp + in universal time use . + + + + + + Extract the date from the + + + + Extract the date from the + + + Nicko Cadell + Gert Driesen + + + + Constructs a RawUtcTimeStampLayout + + + + + Gets the as a . + + The event to format + returns the time stamp + + + Gets the as a . + + + The time stamp is in universal time. To format the time stamp + in local time use . + + + + + + A very simple layout + + + + SimpleLayout consists of the level of the log statement, + followed by " - " and then the log message itself. For example, + + DEBUG - Hello world + + + + Nicko Cadell + Gert Driesen + + + + Constructs a SimpleLayout + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Produces a simple formatted output. + + the event being logged + The TextWriter to write the formatted event to + + + Formats the event as the level of the even, + followed by " - " and then the log message itself. The + output is terminated by a newline. + + + + + + Layout that formats the log events as XML elements. + + + + The output of the consists of a series of + log4net:event elements. It does not output a complete well-formed XML + file. The output is designed to be included as an external entity + in a separate file to form a correct XML file. + + + For example, if abc is the name of the file where + the output goes, then a well-formed XML file would + be: + + + <?xml version="1.0" ?> + + <!DOCTYPE log4net:events SYSTEM "log4net-events.dtd" [<!ENTITY data SYSTEM "abc">]> + + <log4net:events version="1.2" xmlns:log4net="http://logging.apache.org/log4net/schemas/log4net-events-1.2> + &data; + </log4net:events> + + + This approach enforces the independence of the + and the appender where it is embedded. + + + The version attribute helps components to correctly + interpret output generated by . The value of + this attribute should be "1.2" for release 1.2 and later. + + + Alternatively the Header and Footer properties can be + configured to output the correct XML header, open tag and close tag. + When setting the Header and Footer properties it is essential + that the underlying data store not be appendable otherwise the data + will become invalid XML. + + + Nicko Cadell + Gert Driesen + + + + Constructs an XmlLayout + + + + + Constructs an XmlLayout. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SmtpAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The prefix to use for all element names + + + + The default prefix is log4net. Set this property + to change the prefix. If the prefix is set to an empty string + then no prefix will be written. + + + + + + Set whether or not to base64 encode the message. + + + + By default the log message will be written as text to the xml + output. This can cause problems when the message contains binary + data. By setting this to true the contents of the message will be + base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the log message. + + + + + + Set whether or not to base64 encode the property values. + + + + By default the properties will be written as text to the xml + output. This can cause problems when one or more properties contain + binary data. By setting this to true the values of the properties + will be base64 encoded. If this is set then invalid character replacement + (see ) will not be performed + on the property values. + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + Builds a cache of the element names + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Override the base class method + to write the to the . + + + + + + The prefix to use for all generated element names + + + + + Layout that formats the log events as XML elements. + + + + This is an abstract class that must be subclassed by an implementation + to conform to a specific schema. + + + Deriving classes must implement the method. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor to support subclasses + + + + Initializes a new instance of the class + with no location info. + + + + + + Protected constructor to support subclasses + + + + The parameter determines whether + location information will be output by the layout. If + is set to true, then the + file name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + Gets a value indicating whether to include location information in + the XML events. + + + true if location information should be included in the XML + events; otherwise, false. + + + + If is set to true, then the file + name and line number of the statement at the origin of the log + statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The string to replace characters that can not be expressed in XML with. + + + Not all characters may be expressed in XML. This property contains the + string to replace those that can not with. This defaults to a ?. Set it + to the empty string to simply remove offending characters. For more + details on the allowed character ranges see http://www.w3.org/TR/REC-xml/#charsets + Character replacement will occur in the log message, the property names + and the property values. + + + + + + + Initialize layout options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Gets the content type output by this layout. + + + As this is the XML layout, the value is always "text/xml". + + + + As this is the XML layout, the value is always "text/xml". + + + + + + Produces a formatted string. + + The event being logged. + The TextWriter to write the formatted event to + + + Format the and write it to the . + + + This method creates an that writes to the + . The is passed + to the method. Subclasses should override the + method rather than this method. + + + + + + Does the actual writing of the XML. + + The writer to use to output the event to. + The event to write. + + + Subclasses should override this method to format + the as XML. + + + + + + Flag to indicate if location information should be included in + the XML events. + + + + + The string to replace invalid chars with + + + + + Layout that formats the log events as XML elements compatible with the log4j schema + + + + Formats the log events according to the http://logging.apache.org/log4j schema. + + + Nicko Cadell + + + + The 1st of January 1970 in UTC + + + + + Constructs an XMLLayoutSchemaLog4j + + + + + Constructs an XMLLayoutSchemaLog4j. + + + + The LocationInfo option takes a boolean value. By + default, it is set to false which means there will be no location + information output by this layout. If the the option is set to + true, then the file name and line number of the statement + at the origin of the log statement will be output. + + + If you are embedding this layout within an SMTPAppender + then make sure to set the LocationInfo option of that + appender as well. + + + + + + The version of the log4j schema to use. + + + + Only version 1.2 of the log4j schema is supported. + + + + + + Actually do the writing of the xml + + the writer to use + the event to write + + + Generate XML that is compatible with the log4j schema. + + + + + + The log4net Logical Thread Context. + + + + The LogicalThreadContext provides a location for specific debugging + information to be stored. + The LogicalThreadContext properties override any or + properties with the same name. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The Logical Thread Context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Logical Thread Context provides a diagnostic context for the current call context. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Logical Thread Context is managed on a per basis. + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Example of using the thread context properties to store a username. + + LogicalThreadContext.Properties["user"] = userName; + log.Info("This log message has a LogicalThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(LogicalThreadContext.Stacks["LDC"].Push("my context message")) + { + log.Info("This log message has a LogicalThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread properties map + + + The thread properties map + + + + The LogicalThreadContext properties override any + or properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The logical thread stacks. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + This class is used by client applications to request logger instances. + + + + This class has static methods that are used by a client to request + a logger instance. The method is + used to retrieve a logger. + + + See the interface for more details. + + + Simple example of logging messages + + ILog log = LogManager.GetLogger("application-log"); + + log.Info("Application Start"); + log.Debug("This is a debug message"); + + if (log.IsDebugEnabled) + { + log.Debug("This is another debug message"); + } + + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + Returns the named logger if it exists. + + Returns the named logger if it exists. + + + + If the named logger exists (in the default repository) then it + returns a reference to the logger, otherwise it returns null. + + + The fully qualified logger name to look for. + The logger found, or null if no logger could be found. + + + Get the currently defined loggers. + + Returns all the currently defined loggers in the default repository. + + + The root logger is not included in the returned array. + + All the defined loggers. + + + Get or create a logger. + + Retrieves or creates a named logger. + + + + Retrieves a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The name of the logger to retrieve. + The logger with the name specified. + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the specified repository) then it + returns a reference to the logger, otherwise it returns + null. + + + The repository to lookup in. + The fully qualified logger name to look for. + + The logger found, or null if the logger doesn't exist in the specified + repository. + + + + + Returns the named logger if it exists. + + + + If the named logger exists (in the repository for the specified assembly) then it + returns a reference to the logger, otherwise it returns + null. + + + The assembly to use to lookup the repository. + The fully qualified logger name to look for. + + The logger, or null if the logger doesn't exist in the specified + assembly's repository. + + + + + Returns all the currently defined loggers in the specified repository. + + The repository to lookup in. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Returns all the currently defined loggers in the specified assembly's repository. + + The assembly to use to lookup the repository. + + The root logger is not included in the returned array. + + All the defined loggers. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The repository to lookup in. + The name of the logger to retrieve. + The logger with the name specified. + + + + Retrieves or creates a named logger. + + + + Retrieve a logger named as the + parameter. If the named logger already exists, then the + existing instance will be returned. Otherwise, a new instance is + created. + + + By default, loggers do not have a set level but inherit + it from the hierarchy. This is one of the central features of + log4net. + + + The assembly to use to lookup the repository. + The name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Get the logger for the fully qualified name of the type specified. + + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The repository to lookup in. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shorthand for . + + + Gets the logger for the fully qualified name of the type specified. + + The assembly to use to lookup the repository. + The full name of will be used as the name of the logger to retrieve. + The logger with the name specified. + + + + Shuts down the log4net system. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in all the + default repositories. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + Shutdown a logger repository. + + Shuts down the default repository. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + default repository. + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Shuts down the repository for the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The repository to shutdown. + + + + Shuts down the repository specified. + + + + Calling this method will safely close and remove all + appenders in all the loggers including root contained in the + repository. The repository is looked up using + the specified. + + + Some appenders need to be closed before the application exists. + Otherwise, pending logging events might be lost. + + + The shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + The assembly to use to lookup the repository. + + + Reset the configuration of a repository + + Resets all values contained in this repository instance to their defaults. + + + + Resets all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The repository to reset. + + + + Resets all values contained in this repository instance to their defaults. + + + + Reset all values contained in the repository instance to their + defaults. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set to its default "off" value. + + + The assembly to use to lookup the repository to reset. + + + Get the logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Get a logger repository. + + Returns the default instance. + + + + Gets the for the repository specified + by the callers assembly (). + + + The instance for the default repository. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The repository to lookup in. + + + + Returns the default instance. + + The default instance. + + + Gets the for the repository specified + by the argument. + + + The assembly to use to lookup the repository. + + + Create a domain + + Creates a repository with the specified repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + Create a logger repository. + + Creates a repository with the specified repository type. + + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + The created will be associated with the repository + specified such that a call to will return + the same repository instance. + + + + + + Creates a repository with the specified name. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name. + + + + Creates the default type of which is a + object. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique amongst repositories. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository with the specified name and repository type. + + + + The name must be unique. Repositories cannot be redefined. + An will be thrown if the repository already exists. + + + The name of the repository, this must be unique to the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + The specified repository already exists. + + + + Creates a repository for the specified assembly and repository type. + + + + CreateDomain is obsolete. Use CreateRepository instead of CreateDomain. + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Creates a repository for the specified assembly and repository type. + + + + The created will be associated with the repository + specified such that a call to with the + same assembly specified will return the same repository instance. + + + The assembly to use to get the name of the repository. + A that implements + and has a no arg constructor. An instance of this type will be created to act + as the for the repository specified. + The created for the repository. + + + + Gets the list of currently defined repositories. + + + + Get an array of all the objects that have been created. + + + An array of all the known objects. + + + + Flushes logging events buffered in all configured appenders in the default repository. + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed. + True if all logging events were flushed successfully, else false. + + + + Looks up the wrapper object for the logger specified. + + The logger to get the wrapper for. + The wrapper for the logger specified. + + + + Looks up the wrapper objects for the loggers specified. + + The loggers to get the wrappers for. + The wrapper objects for the loggers specified. + + + + Create the objects used by + this manager. + + The logger to wrap. + The wrapper for the logger specified. + + + + The wrapper map to use to hold the objects. + + + + + Implementation of Mapped Diagnostic Contexts. + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + The MDC class is similar to the class except that it is + based on a map instead of a stack. It provides mapped + diagnostic contexts. A Mapped Diagnostic Context, or + MDC in short, is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The MDC is managed on a per thread basis. + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the context value identified by the parameter. + + The key to lookup in the MDC. + The string value held for the key, or a null reference if no corresponding value is found. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + If the parameter does not look up to a + previously defined context then null will be returned. + + + + + + Add an entry to the MDC + + The key to store the value under. + The value to store. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Puts a context value (the parameter) as identified + with the parameter into the current thread's + context map. + + + If a value is already defined for the + specified then the value will be replaced. If the + is specified as null then the key value mapping will be removed. + + + + + + Removes the key value mapping for the key specified. + + The key to remove. + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove the specified entry from this thread's MDC + + + + + + Clear all entries in the MDC + + + + + The MDC is deprecated and has been replaced by the . + The current MDC implementation forwards to the ThreadContext.Properties. + + + + Remove all the entries from this thread's MDC + + + + + + Implementation of Nested Diagnostic Contexts. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + A Nested Diagnostic Context, or NDC in short, is an instrument + to distinguish interleaved log output from different sources. Log + output is typically interleaved when a server handles multiple + clients near-simultaneously. + + + Interleaved log output can still be meaningful if each log entry + from different contexts had a distinctive stamp. This is where NDCs + come into play. + + + Note that NDCs are managed on a per thread basis. The NDC class + is made up of static methods that operate on the context of the + calling thread. + + + How to push a message into the context + + using(NDC.Push("my context message")) + { + ... all log calls will have 'my context message' included ... + + } // at the end of the using block the message is automatically removed + + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + Uses a private access modifier to prevent instantiation of this class. + + + + + Gets the current context depth. + + The current context depth. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The number of context values pushed onto the context stack. + + + Used to record the current depth of the context. This can then + be restored using the method. + + + + + + + Clears all the contextual information held on the current thread. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Clears the stack of NDC data held on the current thread. + + + + + + Creates a clone of the stack of context information. + + A clone of the context info for this thread. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + The results of this method can be passed to the + method to allow child threads to inherit the context of their + parent thread. + + + + + + Inherits the contextual information from another thread. + + The context stack to inherit. + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This thread will use the context information from the stack + supplied. This can be used to initialize child threads with + the same contextual information as their parent threads. These + contexts will NOT be shared. Any further contexts that + are pushed onto the stack will not be visible to the other. + Call to obtain a stack to pass to + this method. + + + + + + Removes the top context from the stack. + + + The message in the context that was removed from the top + of the stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Remove the top context from the stack, and return + it to the caller. If the stack is empty then an + empty string (not null) is returned. + + + + + + Pushes a new context message. + + The new context message. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.NDC.Push("NDC_Message")) + { + log.Warn("This should have an NDC message"); + } + + + + + + Pushes a new context message. + + The new context message string format. + Arguments to be passed into messageFormat. + + An that can be used to clean up + the context stack. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Pushes a new context onto the context stack. An + is returned that can be used to clean up the context stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + var someValue = "ExampleContext" + using(log4net.NDC.PushFormat("NDC_Message {0}", someValue)) + { + log.Warn("This should have an NDC message"); + } + + + + + + Removes the context information for this thread. It is + not required to call this method. + + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + This method is not implemented. + + + + + + Forces the stack depth to be at most . + + The maximum depth of the stack + + + + The NDC is deprecated and has been replaced by the . + The current NDC implementation forwards to the ThreadContext.Stacks["NDC"]. + + + + Forces the stack depth to be at most . + This may truncate the head of the stack. This only affects the + stack in the current thread. Also it does not prevent it from + growing, it only sets the maximum depth at the time of the + call. This can be used to return to a known context depth. + + + + + + The default object Renderer. + + + + The default renderer supports rendering objects and collections to strings. + + + See the method for details of the output. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Default constructor + + + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + The default renderer supports rendering objects to strings as follows: + + + + Value + Rendered String + + + null + + "(null)" + + + + + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + , & + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. + + + For example: {a, b, c}. + + + All collection classes that implement its subclasses, + or generic equivalents all implement the interface. + + + + + + + + Rendered as the key, an equals sign ('='), and the value (using the appropriate + renderer). + + + For example: key=value. + + + + + other + + Object.ToString() + + + + + + + + Render the array argument into a string + + The map used to lookup renderers + the array to render + The writer to render to + + + For a one dimensional array this is the + array type name, an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + int[] {1, 2, 3}. + + + If the array is not one dimensional the + Array.ToString() is returned. + + + + + + Render the enumerator argument into a string + + The map used to lookup renderers + the enumerator to render + The writer to render to + + + Rendered as an open brace, followed by a comma + separated list of the elements (using the appropriate + renderer), followed by a close brace. For example: + {a, b, c}. + + + + + + Render the DictionaryEntry argument into a string + + The map used to lookup renderers + the DictionaryEntry to render + The writer to render to + + + Render the key, an equals sign ('='), and the value (using the appropriate + renderer). For example: key=value. + + + + + + Implement this interface in order to render objects as strings + + + + Certain types require special case conversion to + string form. This conversion is done by an object renderer. + Object renderers implement the + interface. + + + Nicko Cadell + Gert Driesen + + + + Render the object to a string + + The map used to lookup renderers + The object to render + The writer to render to + + + Render the object to a + string. + + + The parameter is + provided to lookup and render other objects. This is + very useful where contains + nested objects of unknown type. The + method can be used to render these objects. + + + + + + Map class objects to an . + + + + Maintains a mapping between types that require special + rendering and the that + is used to render them. + + + The method is used to render an + object using the appropriate renderers defined in this map. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Default constructor. + + + + + + Render using the appropriate renderer. + + the object to render to a string + the object rendered as a string + + + This is a convenience method used to render an object to a string. + The alternative method + should be used when streaming output to a . + + + + + + Render using the appropriate renderer. + + the object to render to a string + The writer to render to + + + Find the appropriate renderer for the type of the + parameter. This is accomplished by calling the + method. Once a renderer is found, it is + applied on the object and the result is returned + as a . + + + + + + Gets the renderer for the specified object type + + the object to lookup the renderer for + the renderer for + + + Gets the renderer for the specified object type. + + + Syntactic sugar method that calls + with the type of the object parameter. + + + + + + Gets the renderer for the specified type + + the type to lookup the renderer for + the renderer for the specified type + + + Returns the renderer for the specified type. + If no specific renderer has been defined the + will be returned. + + + + + + Internal function to recursively search interfaces + + the type to lookup the renderer for + the renderer for the specified type + + + + Get the default renderer instance + + the default renderer + + + Get the default renderer + + + + + + Clear the map of renderers + + + + Clear the custom renderers defined by using + . The + cannot be removed. + + + + + + Register an for . + + the type that will be rendered by + the renderer for + + + Register an object renderer for a specific source type. + This renderer will be returned from a call to + specifying the same as an argument. + + + + + + Interface implemented by logger repository plugins. + + + + Plugins define additional behavior that can be associated + with a . + The held by the + property is used to store the plugins for a repository. + + + The log4net.Config.PluginAttribute can be used to + attach plugins to repositories created using configuration + attributes. + + + Nicko Cadell + Gert Driesen + + + + Gets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + + + + Attaches the plugin to the specified . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + Interface used to create plugins. + + + + Interface used to create a plugin. + + + Nicko Cadell + Gert Driesen + + + + Creates the plugin object. + + the new plugin instance + + + Create and return a new plugin instance. + + + + + + A strongly-typed collection of objects. + + Nicko Cadell + + + + Supports type-safe iteration over a . + + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + Creates a read-only wrapper for a PluginCollection instance. + + list to create a readonly wrapper arround + + A PluginCollection wrapper that is read-only. + + + + + Initializes a new instance of the PluginCollection class + that is empty and has the default initial capacity. + + + + + Initializes a new instance of the PluginCollection class + that has the specified initial capacity. + + + The number of elements that the new PluginCollection is initially capable of storing. + + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified PluginCollection. + + The PluginCollection whose elements are copied to the new collection. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified array. + + The array whose elements are copied to the new list. + + + + Initializes a new instance of the PluginCollection class + that contains elements copied from the specified collection. + + The collection whose elements are copied to the new list. + + + + Type visible only to our subclasses + Used to access protected constructor + + + + + + A value + + + + + Allow subclasses to avoid our default constructors + + + + + + + Gets the number of elements actually contained in the PluginCollection. + + + + + Copies the entire PluginCollection to a one-dimensional + array. + + The one-dimensional array to copy to. + + + + Copies the entire PluginCollection to a one-dimensional + array, starting at the specified index of the target array. + + The one-dimensional array to copy to. + The zero-based index in at which copying begins. + + + + Gets a value indicating whether access to the collection is synchronized (thread-safe). + + false, because the backing type is an array, which is never thread-safe. + + + + Gets an object that can be used to synchronize access to the collection. + + + An object that can be used to synchronize access to the collection. + + + + + Gets or sets the at the specified index. + + + The at the specified index. + + The zero-based index of the element to get or set. + + is less than zero. + -or- + is equal to or greater than . + + + + + Adds a to the end of the PluginCollection. + + The to be added to the end of the PluginCollection. + The index at which the value has been added. + + + + Removes all elements from the PluginCollection. + + + + + Creates a shallow copy of the . + + A new with a shallow copy of the collection data. + + + + Determines whether a given is in the PluginCollection. + + The to check for. + true if is found in the PluginCollection; otherwise, false. + + + + Returns the zero-based index of the first occurrence of a + in the PluginCollection. + + The to locate in the PluginCollection. + + The zero-based index of the first occurrence of + in the entire PluginCollection, if found; otherwise, -1. + + + + + Inserts an element into the PluginCollection at the specified index. + + The zero-based index at which should be inserted. + The to insert. + + is less than zero + -or- + is equal to or greater than . + + + + + Removes the first occurrence of a specific from the PluginCollection. + + The to remove from the PluginCollection. + + The specified was not found in the PluginCollection. + + + + + Removes the element at the specified index of the PluginCollection. + + The zero-based index of the element to remove. + + is less than zero. + -or- + is equal to or greater than . + + + + + Gets a value indicating whether the collection has a fixed size. + + true if the collection has a fixed size; otherwise, false. The default is false. + + + + Gets a value indicating whether the IList is read-only. + + true if the collection is read-only; otherwise, false. The default is false. + + + + Returns an enumerator that can iterate through the PluginCollection. + + An for the entire PluginCollection. + + + + Gets or sets the number of elements the PluginCollection can contain. + + + The number of elements the PluginCollection can contain. + + + + + Adds the elements of another PluginCollection to the current PluginCollection. + + The PluginCollection whose elements should be added to the end of the current PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a array to the current PluginCollection. + + The array whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Adds the elements of a collection to the current PluginCollection. + + The collection whose elements should be added to the end of the PluginCollection. + The new of the PluginCollection. + + + + Sets the capacity to the actual number of elements. + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + is less than zero. + -or- + is equal to or greater than . + + + + + Supports simple iteration over a . + + + + + + Initializes a new instance of the Enumerator class. + + + + + + Gets the current element in the collection. + + + The current element in the collection. + + + + + Advances the enumerator to the next element in the collection. + + + true if the enumerator was successfully advanced to the next element; + false if the enumerator has passed the end of the collection. + + + The collection was modified after the enumerator was created. + + + + + Sets the enumerator to its initial position, before the first element in the collection. + + + + + + + + Map of repository plugins. + + + + This class is a name keyed map of the plugins that are + attached to a repository. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The repository that the plugins should be attached to. + + + Initialize a new instance of the class with a + repository that the plugins should be attached to. + + + + + + Gets a by name. + + The name of the to lookup. + + The from the map with the name specified, or + null if no plugin is found. + + + + Lookup a plugin by name. If the plugin is not found null + will be returned. + + + + + + Gets all possible plugins as a list of objects. + + All possible plugins as a list of objects. + + + Get a collection of all the plugins defined in this map. + + + + + + Adds a to the map. + + The to add to the map. + + + The will be attached to the repository when added. + + + If there already exists a plugin with the same name + attached to the repository then the old plugin will + be and replaced with + the new plugin. + + + + + + Removes a from the map. + + The to remove from the map. + + + Remove a specific plugin from this map. + + + + + + Base implementation of + + + + Default abstract implementation of the + interface. This base class can be used by implementors + of the interface. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the name of the plugin + + Initializes a new Plugin with the specified name. + + + + + Gets or sets the name of the plugin. + + + The name of the plugin. + + + + Plugins are stored in the + keyed by name. Each plugin instance attached to a + repository must be a unique name. + + + The name of the plugin must not change one the + plugin has been attached to a repository. + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + This method is called to notify the plugin that + it should stop operating and should detach from + the repository. + + + + + + The repository for this plugin + + + The that this plugin is attached to. + + + + Gets or sets the that this plugin is + attached to. + + + + + + The name of this plugin. + + + + + The repository this plugin is attached to. + + + + + Plugin that listens for events from the + + + + This plugin publishes an instance of + on a specified . This listens for logging events delivered from + a remote . + + + When an event is received it is relogged within the attached repository + as if it had been raised locally. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + The property must be set. + + + + + + Construct with sink Uri. + + The name to publish the sink under in the remoting infrastructure. + See for more details. + + + Initializes a new instance of the class + with specified name. + + + + + + Gets or sets the URI of this sink. + + + The URI of this sink. + + + + This is the name under which the object is marshaled. + + + + + + + Attaches this plugin to a . + + The that this plugin should be attached to. + + + A plugin may only be attached to a single repository. + + + This method is called when the plugin is attached to the repository. + + + + + + Is called when the plugin is to shutdown. + + + + When the plugin is shutdown the remote logging + sink is disconnected. + + + + + + The fully qualified type of the RemoteLoggingServerPlugin class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Delivers objects to a remote sink. + + + + Internal class used to listen for logging events + and deliver them to the local repository. + + + + + + Constructor + + The repository to log to. + + + Initializes a new instance of the for the + specified . + + + + + + Logs the events to the repository. + + The events to log. + + + The events passed are logged to the + + + + + + Obtains a lifetime service object to control the lifetime + policy for this instance. + + null to indicate that this instance should live forever. + + + Obtains a lifetime service object to control the lifetime + policy for this instance. This object should live forever + therefore this implementation returns null. + + + + + + The underlying that events should + be logged to. + + + + + + + + + + + + + + + + + + + + + Default implementation of + + + + This default implementation of the + interface is used to create the default subclass + of the object. + + + Nicko Cadell + Gert Driesen + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Default internal subclass of + + + + This subclass has no additional behavior over the + class but does allow instances + to be created. + + + + + + Construct a new Logger + + the name of the logger + + + Initializes a new instance of the class + with the specified name. + + + + + + Delegate used to handle logger creation event notifications. + + The in which the has been created. + The event args that hold the instance that has been created. + + + Delegate used to handle logger creation event notifications. + + + + + + Provides data for the event. + + + + A event is raised every time a + is created. + + + + + + The created + + + + + Constructor + + The that has been created. + + + Initializes a new instance of the event argument + class,with the specified . + + + + + + Gets the that has been created. + + + The that has been created. + + + + The that has been created. + + + + + + Hierarchical organization of loggers + + + + The casual user should not have to deal with this class + directly. + + + This class is specialized in retrieving loggers by name and + also maintaining the logger hierarchy. Implements the + interface. + + + The structure of the logger hierarchy is maintained by the + method. The hierarchy is such that children + link to their parent but parents do not have any references to their + children. Moreover, loggers can be instantiated in any order, in + particular descendant before ancestor. + + + In case a descendant is created before a particular ancestor, + then it creates a provision node for the ancestor and adds itself + to the provision node. Other descendants of the same ancestor add + themselves to the previously created provision node. + + + Nicko Cadell + Gert Driesen + + + + Event used to notify that a logger has been created. + + + + Event raised when a logger is created. + + + + + + Default constructor + + + + Initializes a new instance of the class. + + + + + + Construct with properties + + The properties to pass to this repository. + + + Initializes a new instance of the class. + + + + + + Construct with a logger factory + + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Construct with properties and a logger factory + + The properties to pass to this repository. + The factory to use to create new logger instances. + + + Initializes a new instance of the class with + the specified . + + + + + + Has no appender warning been emitted + + + + Flag to indicate if we have already issued a warning + about not having an appender warning. + + + + + + Get the root of this hierarchy + + + + Get the root of this hierarchy. + + + + + + Gets or sets the default instance. + + The default + + + The logger factory is used to create logger instances. + + + + + + Test if a logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the hierarchy. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the hierarchy as an Array + + All the defined loggers + + + Returns all the currently defined loggers in the hierarchy as an Array. + The root logger is not included in the returned + enumeration. + + + + + + Return a new logger instance named as the first parameter using + the default factory. + + + + Return a new logger instance named as the first parameter using + the default factory. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + The name of the logger to retrieve + The logger object with the name specified + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + + Shutting down a hierarchy will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The Shutdown method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset all values contained in this hierarchy instance to their default. + + + + Reset all values contained in this hierarchy instance to their + default. This removes all appenders from all loggers, sets + the level of all non-root loggers to null, + sets their additivity flag to true and sets the level + of the root logger to . Moreover, + message disabling is set its default "off" value. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this hierarchy. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Returns all the Appenders that are currently configured + + An array containing all the currently configured appenders + + + Returns all the instances that are currently configured. + All the loggers are searched for appenders. The appenders may also be containers + for appenders and these are also searched for additional loggers. + + + The list returned is unordered but does not contain duplicates. + + + + + + Collect the appenders from an . + The appender may also be a container. + + + + + + + Collect the appenders from an container + + + + + + + Initialize the log4net system using the specified appender + + the appender to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + + Initialize the log4net system using the specified appenders + + the appenders to use to log all logging events + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + + Initialize the log4net system using the specified config + + the element containing the root of the config + + + This method provides the same functionality as the + method implemented + on this object, but it is protected and therefore can be called by subclasses. + + + + + + Test if this hierarchy is disabled for the specified . + + The level to check against. + + true if the repository is disabled for the level argument, false otherwise. + + + + If this hierarchy has not been configured then this method will + always return true. + + + This method will return true if this repository is + disabled for level object passed as parameter and + false otherwise. + + + See also the property. + + + + + + Clear all logger definitions from the internal hashtable + + + + This call will clear all logger definitions from the internal + hashtable. Invoking this method will irrevocably mess up the + logger hierarchy. + + + You should really know what you are doing before + invoking this method. + + + + + + Return a new logger instance named as the first parameter using + . + + The name of the logger to retrieve + The factory that will make the new logger instance + The logger object with the name specified + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated by the + parameter and linked with its existing + ancestors as well as children. + + + + + + Sends a logger creation event to all registered listeners + + The newly created logger + + Raises the logger creation event. + + + + + Updates all the parents of the specified logger + + The logger to update the parents for + + + This method loops through all the potential parents of + . There 3 possible cases: + + + + No entry for the potential parent of exists + + We create a ProvisionNode for this potential + parent and insert in that provision node. + + + + The entry is of type Logger for the potential parent. + + The entry is 's nearest existing parent. We + update 's parent field with this entry. We also break from + he loop because updating our parent's parent is our parent's + responsibility. + + + + The entry is of type ProvisionNode for this potential parent. + + We add to the list of children for this + potential parent. + + + + + + + + Replace a with a in the hierarchy. + + + + + + We update the links for all the children that placed themselves + in the provision node 'pn'. The second argument 'log' is a + reference for the newly created Logger, parent of all the + children in 'pn'. + + + We loop on all the children 'c' in 'pn'. + + + If the child 'c' has been already linked to a child of + 'log' then there is no need to update 'c'. + + + Otherwise, we set log's parent field to c's parent and set + c's parent field to log. + + + + + + Define or redefine a Level using the values in the argument + + the level values + + + Define or redefine a Level using the values in the argument + + + Supports setting levels via the configuration file. + + + + + + A class to hold the value, name and display name for a level + + + + A class to hold the value, name and display name for a level + + + + + + Value of the level + + + + If the value is not set (defaults to -1) the value will be looked + up for the current level with the same name. + + + + + + Name of the level + + + The name of the level + + + + The name of the level. + + + + + + Display name for the level + + + The display name of the level + + + + The display name of the level. + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + Set a Property using the values in the argument + + the property value + + + Set a Property using the values in the argument. + + + Supports setting property values via the configuration file. + + + + + + The fully qualified type of the Hierarchy class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Interface abstracts creation of instances + + + + This interface is used by the to + create new objects. + + + The method is called + to create a named . + + + Implement this interface to create new subclasses of . + + + Nicko Cadell + Gert Driesen + + + + Create a new instance + + The that will own the . + The name of the . + The instance for the specified name. + + + Create a new instance with the + specified name. + + + Called by the to create + new named instances. + + + If the is null then the root logger + must be returned. + + + + + + Implementation of used by + + + + Internal class used to provide implementation of + interface. Applications should use to get + logger instances. + + + This is one of the central classes in the log4net implementation. One of the + distinctive features of log4net are hierarchical loggers and their + evaluation. The organizes the + instances into a rooted tree hierarchy. + + + The class is abstract. Only concrete subclasses of + can be created. The + is used to create instances of this type for the . + + + Nicko Cadell + Gert Driesen + Aspi Havewala + Douglas de la Torre + + + + This constructor created a new instance and + sets its name. + + The name of the . + + + This constructor is protected and designed to be used by + a subclass that is not abstract. + + + Loggers are constructed by + objects. See for the default + logger creator. + + + + + + Gets or sets the parent logger in the hierarchy. + + + The parent logger in the hierarchy. + + + + Part of the Composite pattern that makes the hierarchy. + The hierarchy is parent linked rather than child linked. + + + + + + Gets or sets a value indicating if child loggers inherit their parent's appenders. + + + true if child loggers inherit their parent's appenders. + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Gets the effective level for this logger. + + The nearest level in the logger hierarchy. + + + Starting from this logger, searches the logger hierarchy for a + non-null level and returns it. Otherwise, returns the level of the + root logger. + + The Logger class is designed so that this method executes as + quickly as possible. + + + + + Gets or sets the where this + Logger instance is attached to. + + The hierarchy that this logger belongs to. + + + This logger must be attached to a single . + + + + + + Gets or sets the assigned , if any, for this Logger. + + + The of this logger. + + + + The assigned can be null. + + + + + + Add to the list of appenders of this + Logger instance. + + An appender to add to this logger + + + Add to the list of appenders of this + Logger instance. + + + If is already in the list of + appenders, then it won't be added again. + + + + + + Get the appenders contained in this logger as an + . + + A collection of the appenders in this logger + + + Get the appenders contained in this logger as an + . If no appenders + can be found, then a is returned. + + + + + + Look for the appender named as name + + The name of the appender to lookup + The appender with the name specified, or null. + + + Returns the named appender, or null if the appender is not found. + + + + + + Remove all previously added appenders from this Logger instance. + + + + Remove all previously added appenders from this Logger instance. + + + This is useful when re-reading configuration information. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The appender to remove + The appender removed from the list + + + Remove the appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Remove the appender passed as parameter form the list of appenders. + + The name of the appender to remove + The appender removed from the list + + + Remove the named appender passed as parameter form the list of appenders. + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Gets the logger name. + + + The name of the logger. + + + + The name of this logger + + + + + + This generic form is intended to be used by wrappers. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the and . + + + This method must not throw any exception to the caller. + + + + + + This is the most generic printing method that is intended to be used + by wrappers. + + The event being logged. + + + Logs the specified logging event through this logger. + + + This method must not throw any exception to the caller. + + + + + + Checks if this logger is enabled for a given passed as parameter. + + The level to check. + + true if this logger is enabled for level, otherwise false. + + + + Test if this logger is going to log events of the specified . + + + This method must not throw any exception to the caller. + + + + + + Gets the where this + Logger instance is attached to. + + + The that this logger belongs to. + + + + Gets the where this + Logger instance is attached to. + + + + + + Deliver the to the attached appenders. + + The event to log. + + + Call the appenders in the hierarchy starting at + this. If no appenders could be found, emit a + warning. + + + This method calls all the appenders inherited from the + hierarchy circumventing any evaluation of whether to log or not + to log the particular log request. + + + + + + Closes all attached appenders implementing the interface. + + + + Used to ensure that the appenders are correctly shutdown. + + + + + + This is the most generic printing method. This generic form is intended to be used by wrappers + + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generate a logging event for the specified using + the . + + + + + + Creates a new logging event and logs the event without further checks. + + The declaring type of the method that is + the stack boundary into the logging system for this call. + The level of the message to be logged. + The message object to log. + The exception to log, including its stack trace. + + + Generates a logging event and delivers it to the attached + appenders. + + + + + + Creates a new logging event and logs the event without further checks. + + The event being logged. + + + Delivers the logging event to the attached appenders. + + + + + + The fully qualified type of the Logger class. + + + + + The name of this logger. + + + + + The assigned level of this logger. + + + + The level variable need not be + assigned a value in which case it is inherited + form the hierarchy. + + + + + + The parent of this logger. + + + + The parent of this logger. + All loggers have at least one ancestor which is the root logger. + + + + + + Loggers need to know what Hierarchy they are in. + + + + Loggers need to know what Hierarchy they are in. + The hierarchy that this logger is a member of is stored + here. + + + + + + Helper implementation of the interface + + + + + Flag indicating if child loggers inherit their parents appenders + + + + Additivity is set to true by default, that is children inherit + the appenders of their ancestors by default. If this variable is + set to false then the appenders found in the + ancestors of this logger are not used. However, the children + of this logger will inherit its appenders, unless the children + have their additivity flag set to false too. See + the user manual for more details. + + + + + + Lock to protect AppenderAttachedImpl variable m_appenderAttachedImpl + + + + + Used internally to accelerate hash table searches. + + + + Internal class used to improve performance of + string keyed hashtables. + + + The hashcode of the string is cached for reuse. + The string is stored as an interned value. + When comparing two objects for equality + the reference equality of the interned strings is compared. + + + Nicko Cadell + Gert Driesen + + + + Construct key with string name + + + + Initializes a new instance of the class + with the specified name. + + + Stores the hashcode of the string and interns + the string key to optimize comparisons. + + + The Compact Framework 1.0 the + method does not work. On the Compact Framework + the string keys are not interned nor are they + compared by reference. + + + The name of the logger. + + + + Returns a hash code for the current instance. + + A hash code for the current instance. + + + Returns the cached hashcode. + + + + + + Determines whether two instances + are equal. + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + + Compares the references of the interned strings. + + + + + + Provision nodes are used where no logger instance has been specified + + + + instances are used in the + when there is no specified + for that node. + + + A provision node holds a list of child loggers on behalf of + a logger that does not exist. + + + Nicko Cadell + Gert Driesen + + + + Create a new provision node with child node + + A child logger to add to this node. + + + Initializes a new instance of the class + with the specified child logger. + + + + + + The sits at the root of the logger hierarchy tree. + + + + The is a regular except + that it provides several guarantees. + + + First, it cannot be assigned a null + level. Second, since the root logger cannot have a parent, the + property always returns the value of the + level field without walking the hierarchy. + + + Nicko Cadell + Gert Driesen + + + + Construct a + + The level to assign to the root logger. + + + Initializes a new instance of the class with + the specified logging level. + + + The root logger names itself as "root". However, the root + logger cannot be retrieved by name. + + + + + + Gets the assigned level value without walking the logger hierarchy. + + The assigned level value without walking the logger hierarchy. + + + Because the root logger cannot have a parent and its level + must not be null this property just returns the + value of . + + + + + + Gets or sets the assigned for the root logger. + + + The of the root logger. + + + + Setting the level of the root logger to a null reference + may have catastrophic results. We prevent this here. + + + + + + The fully qualified type of the RootLogger class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Initializes the log4net environment using an XML DOM. + + + + Configures a using an XML DOM. + + + Nicko Cadell + Gert Driesen + + + + Construct the configurator for a hierarchy + + The hierarchy to build. + + + Initializes a new instance of the class + with the specified . + + + + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + The root element to parse. + + + Configure the hierarchy by parsing a DOM tree of XML elements. + + + + + + Parse appenders by IDREF. + + The appender ref element. + The instance of the appender that the ref refers to. + + + Parse an XML element that represents an appender and return + the appender. + + + + + + Parses an appender element. + + The appender element. + The appender instance or null when parsing failed. + + + Parse an XML element that represents an appender and return + the appender instance. + + + + + + Parses a logger element. + + The logger element. + + + Parse an XML element that represents a logger. + + + + + + Parses the root logger element. + + The root element. + + + Parse an XML element that represents the root logger. + + + + + + Parses the children of a logger element. + + The category element. + The logger instance. + Flag to indicate if the logger is the root logger. + + + Parse the child elements of a <logger> element. + + + + + + Parses an object renderer. + + The renderer element. + + + Parse an XML element that represents a renderer. + + + + + + Parses a level element. + + The level element. + The logger object to set the level on. + Flag to indicate if the logger is the root logger. + + + Parse an XML element that represents a level. + + + + + + Sets a parameter on an object. + + The parameter element. + The object to set the parameter on. + + The parameter name must correspond to a writable property + on the object. The value of the parameter is a string, + therefore this function will attempt to set a string + property first. If unable to set a string property it + will inspect the property and its argument type. It will + attempt to call a static method called Parse on the + type of the property. This method will take a single + string argument and return a value that can be used to + set the property. + + + + + Test if an element has no attributes or child elements + + the element to inspect + true if the element has any attributes or child elements, false otherwise + + + + Test if a is constructible with Activator.CreateInstance. + + the type to inspect + true if the type is creatable using a default constructor, false otherwise + + + + Look for a method on the that matches the supplied + + the type that has the method + the name of the method + the method info found + + + The method must be a public instance method on the . + The method must be named or "Add" followed by . + The method must take a single parameter. + + + + + + Converts a string value to a target type. + + The type of object to convert the string to. + The string value to use as the value of the object. + + + An object of type with value or + null when the conversion could not be performed. + + + + + + Creates an object as specified in XML. + + The XML element that contains the definition of the object. + The object type to use if not explicitly specified. + The type that the returned object must be or must inherit from. + The object or null + + + Parse an XML element and create an object instance based on the configuration + data. + + + The type of the instance may be specified in the XML. If not + specified then the is used + as the type. However the type is specified it must support the + type. + + + + + + key: appenderName, value: appender. + + + + + The Hierarchy being configured. + + + + + The fully qualified type of the XmlHierarchyConfigurator class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Basic Configurator interface for repositories + + + + Interface used by basic configurator to configure a + with a default . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified appender + + the appender to use to log all logging events + + + Configure the repository to route all logging events to the + specified appender. + + + + + + Initialize the repository using the specified appenders + + the appenders to use to log all logging events + + + Configure the repository to route all logging events to the + specified appenders. + + + + + + Delegate used to handle logger repository shutdown event notifications + + The that is shutting down. + Empty event args + + + Delegate used to handle logger repository shutdown event notifications. + + + + + + Delegate used to handle logger repository configuration reset event notifications + + The that has had its configuration reset. + Empty event args + + + Delegate used to handle logger repository configuration reset event notifications. + + + + + + Delegate used to handle event notifications for logger repository configuration changes. + + The that has had its configuration changed. + Empty event arguments. + + + Delegate used to handle event notifications for logger repository configuration changes. + + + + + + Interface implemented by logger repositories. + + + + This interface is implemented by logger repositories. e.g. + . + + + This interface is used by the + to obtain interfaces. + + + Nicko Cadell + Gert Driesen + + + + The name of the repository + + + The name of the repository + + + + The name of the repository. + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository. + + + + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + The name of the logger to lookup + The Logger object with the name specified + + + If the names logger exists it is returned, otherwise + null is returned. + + + + + + Returns all the currently defined loggers as an Array. + + All the defined loggers + + + Returns all the currently defined loggers as an Array. + + + + + + Returns a named logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Returns a named logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + Shutdown the repository + + + Shutting down a repository will safely close and remove + all appenders in all loggers including the root logger. + + + Some appenders need to be closed before the + application exists. Otherwise, pending logging events might be + lost. + + + The method is careful to close nested + appenders before closing regular appenders. This is allows + configurations where a regular appender is attached to a logger + and again to a nested appender. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Collection of internal messages captured during the most + recent configuration process. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + + These properties can be specified on a repository specific basis. + + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + Configure repository using XML + + + + Interface used by Xml configurator to configure a . + + + A should implement this interface to support + configuration by the . + + + Nicko Cadell + Gert Driesen + + + + Initialize the repository using the specified config + + the element containing the root of the config + + + The schema for the XML configuration data is defined by + the implementation. + + + + + + Base implementation of + + + + Default abstract implementation of the interface. + + + Skeleton implementation of the interface. + All types can extend this type. + + + Nicko Cadell + Gert Driesen + + + + Default Constructor + + + + Initializes the repository with default (empty) properties. + + + + + + Construct the repository using specific properties + + the properties to set for this repository + + + Initializes the repository with specified properties. + + + + + + The name of the repository + + + The string name of the repository + + + + The name of this repository. The name is + used to store and lookup the repositories + stored by the . + + + + + + The threshold for all events in this repository + + + The threshold for all events in this repository + + + + The threshold for all events in this repository + + + + + + RendererMap accesses the object renderer map for this repository. + + + RendererMap accesses the object renderer map for this repository. + + + + RendererMap accesses the object renderer map for this repository. + + + The RendererMap holds a mapping between types and + objects. + + + + + + The plugin map for this repository. + + + The plugin map for this repository. + + + + The plugin map holds the instances + that have been attached to this repository. + + + + + + Get the level map for the Repository. + + + + Get the level map for the Repository. + + + The level map defines the mappings between + level names and objects in + this repository. + + + + + + Test if logger exists + + The name of the logger to lookup + The Logger object with the name specified + + + Check if the named logger exists in the repository. If so return + its reference, otherwise returns null. + + + + + + Returns all the currently defined loggers in the repository + + All the defined loggers + + + Returns all the currently defined loggers in the repository as an Array. + + + + + + Return a new logger instance + + The name of the logger to retrieve + The logger object with the name specified + + + Return a new logger instance. + + + If a logger of that name already exists, then it will be + returned. Otherwise, a new logger will be instantiated and + then linked with its existing ancestors as well as children. + + + + + + Shutdown the repository + + + + Shutdown the repository. Can be overridden in a subclass. + This base class implementation notifies the + listeners and all attached plugins of the shutdown event. + + + + + + Reset the repositories configuration to a default state + + + + Reset all values contained in this instance to their + default state. + + + Existing loggers are not removed. They are just reset. + + + This method should be used sparingly and with care as it will + block all logging until it is completed. + + + + + + Log the logEvent through this repository. + + the event to log + + + This method should not normally be used to log. + The interface should be used + for routine logging. This interface can be obtained + using the method. + + + The logEvent is delivered to the appropriate logger and + that logger is then responsible for logging the event. + + + + + + Flag indicates if this repository has been configured. + + + Flag indicates if this repository has been configured. + + + + Flag indicates if this repository has been configured. + + + + + + Contains a list of internal messages captures during the + last configuration. + + + + + Event to notify that the repository has been shutdown. + + + Event to notify that the repository has been shutdown. + + + + Event raised when the repository has been shutdown. + + + + + + Event to notify that the repository has had its configuration reset. + + + Event to notify that the repository has had its configuration reset. + + + + Event raised when the repository's configuration has been + reset to default. + + + + + + Event to notify that the repository has had its configuration changed. + + + Event to notify that the repository has had its configuration changed. + + + + Event raised when the repository's configuration has been changed. + + + + + + Repository specific properties + + + Repository specific properties + + + These properties can be specified on a repository specific basis + + + + + Returns all the Appenders that are configured as an Array. + + All the Appenders + + + Returns all the Appenders that are configured as an Array. + + + + + + The fully qualified type of the LoggerRepositorySkeleton class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Adds an object renderer for a specific class. + + The type that will be rendered by the renderer supplied. + The object renderer used to render the object. + + + Adds an object renderer for a specific class. + + + + + + Notify the registered listeners that the repository is shutting down + + Empty EventArgs + + + Notify any listeners that this repository is shutting down. + + + + + + Notify the registered listeners that the repository has had its configuration reset + + Empty EventArgs + + + Notify any listeners that this repository's configuration has been reset. + + + + + + Notify the registered listeners that the repository has had its configuration changed + + Empty EventArgs + + + Notify any listeners that this repository's configuration has changed. + + + + + + Raise a configuration changed event on this repository + + EventArgs.Empty + + + Applications that programmatically change the configuration of the repository should + raise this event notification to notify listeners. + + + + + + Flushes all configured Appenders that implement . + + The maximum time in milliseconds to wait for logging events from asycnhronous appenders to be flushed, + or to wait indefinitely. + True if all logging events were flushed successfully, else false. + + + + The log4net Thread Context. + + + + The ThreadContext provides a location for thread specific debugging + information to be stored. + The ThreadContext properties override any + properties with the same name. + + + The thread context has a properties map and a stack. + The properties and stack can + be included in the output of log messages. The + supports selecting and outputting these properties. + + + The Thread Context provides a diagnostic context for the current thread. + This is an instrument for distinguishing interleaved log + output from different sources. Log output is typically interleaved + when a server handles multiple clients near-simultaneously. + + + The Thread Context is managed on a per thread basis. + + + Example of using the thread context properties to store a username. + + ThreadContext.Properties["user"] = userName; + log.Info("This log message has a ThreadContext Property called 'user'"); + + + Example of how to push a message into the context stack + + using(ThreadContext.Stacks["NDC"].Push("my context message")) + { + log.Info("This log message has a ThreadContext Stack message that includes 'my context message'"); + + } // at the end of the using block the message is automatically popped + + + + Nicko Cadell + + + + Private Constructor. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + The thread properties map + + + The thread properties map + + + + The ThreadContext properties override any + properties with the same name. + + + + + + The thread stacks + + + stack map + + + + The thread local stacks. + + + + + + The thread context properties instance + + + + + The thread context stacks instance + + + + + A straightforward implementation of the interface. + + + + This is the default implementation of the + interface. Implementors of the interface + should aggregate an instance of this type. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Append on on all attached appenders. + + The event being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Append on on all attached appenders. + + The array of events being logged. + The number of appenders called. + + + Calls the method on all + attached appenders. + + + + + + Calls the DoAppende method on the with + the objects supplied. + + The appender + The events + + + If the supports the + interface then the will be passed + through using that interface. Otherwise the + objects in the array will be passed one at a time. + + + + + + Attaches an appender. + + The appender to add. + + + If the appender is already in the list it won't be added again. + + + + + + Gets all attached appenders. + + + A collection of attached appenders, or null if there + are no attached appenders. + + + + The read only collection of all currently attached appenders. + + + + + + Gets an attached appender with the specified name. + + The name of the appender to get. + + The appender with the name specified, or null if no appender with the + specified name is found. + + + + Lookup an attached appender by name. + + + + + + Removes all attached appenders. + + + + Removes and closes all attached appenders + + + + + + Removes the specified appender from the list of attached appenders. + + The appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + Removes the appender with the specified name from the list of appenders. + + The name of the appender to remove. + The appender removed from the list + + + The appender removed is not closed. + If you are discarding the appender you must call + on the appender removed. + + + + + + List of appenders + + + + + Array of appenders, used to cache the m_appenderList + + + + + The fully qualified type of the AppenderAttachedImpl class. + + + Used by the internal logger to record the Type of the + log message. + + + + + This class aggregates several PropertiesDictionary collections together. + + + + Provides a dictionary style lookup over an ordered list of + collections. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Gets the value of a property + + + The value for the property with the specified key + + + + Looks up the value for the specified. + The collections are searched + in the order in which they were added to this collection. The value + returned is the value held by the first collection that contains + the specified key. + + + If none of the collections contain the specified key then + null is returned. + + + + + + Add a Properties Dictionary to this composite collection + + the properties to add + + + Properties dictionaries added first take precedence over dictionaries added + later. + + + + + + Flatten this composite collection into a single properties dictionary + + the flattened dictionary + + + Reduces the collection of ordered dictionaries to a single dictionary + containing the resultant values for the keys. + + + + + + Base class for Context Properties implementations + + + + This class defines a basic property get set accessor + + + Nicko Cadell + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Wrapper class used to map converter names to converter types + + + + Pattern converter info class used during configuration by custom + PatternString and PatternLayer converters. + + + + + + default constructor + + + + + Gets or sets the name of the conversion pattern + + + + The name of the pattern in the format string + + + + + + Gets or sets the type of the converter + + + + The value specified must extend the + type. + + + + + + + + + + + + + + + + + Subclass of that maintains a count of + the number of bytes written. + + + + This writer counts the number of bytes written. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The to actually write to. + The to report errors to. + + + Creates a new instance of the class + with the specified and . + + + + + + Writes a character to the underlying writer and counts the number of bytes written. + + the char to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a buffer to the underlying writer and counts the number of bytes written. + + the buffer to write + the start index to write from + the number of characters to write + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Writes a string to the output and counts the number of bytes written. + + The string data to write to the output. + + + Overrides implementation of . Counts + the number of bytes written. + + + + + + Gets or sets the total number of bytes written. + + + The total number of bytes written. + + + + Gets or sets the total number of bytes written. + + + + + + Total number of bytes written. + + + + + A fixed size rolling buffer of logging events. + + + + An array backed fixed size leaky bucket. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The maximum number of logging events in the buffer. + + + Initializes a new instance of the class with + the specified maximum number of buffered logging events. + + + The argument is not a positive integer. + + + + Appends a to the buffer. + + The event to append to the buffer. + The event discarded from the buffer, if the buffer is full, otherwise null. + + + Append an event to the buffer. If the buffer still contains free space then + null is returned. If the buffer is full then an event will be dropped + to make space for the new event, the event dropped is returned. + + + + + + Get and remove the oldest event in the buffer. + + The oldest logging event in the buffer + + + Gets the oldest (first) logging event in the buffer and removes it + from the buffer. + + + + + + Pops all the logging events from the buffer into an array. + + An array of all the logging events in the buffer. + + + Get all the events in the buffer and clear the buffer. + + + + + + Clear the buffer + + + + Clear the buffer of all events. The events in the buffer are lost. + + + + + + Gets the th oldest event currently in the buffer. + + The th oldest event currently in the buffer. + + + If is outside the range 0 to the number of events + currently in the buffer, then null is returned. + + + + + + Gets the maximum size of the buffer. + + The maximum size of the buffer. + + + Gets the maximum size of the buffer + + + + + + Gets the number of logging events in the buffer. + + The number of logging events in the buffer. + + + This number is guaranteed to be in the range 0 to + (inclusive). + + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Gets the singleton instance of the empty collection. + + The singleton instance of the empty collection. + + + Gets the singleton instance of the empty collection. + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the . + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + The singleton instance of the empty collection. + + + + + An always empty . + + + + A singleton implementation of the + interface that always represents an empty collection. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Copies the elements of the to an + , starting at a particular Array index. + + The one-dimensional + that is the destination of the elements copied from + . The Array must have zero-based + indexing. + The zero-based index in array at which + copying begins. + + + As the collection is empty no values are copied into the array. + + + + + + Gets a value indicating if access to the is synchronized (thread-safe). + + + true if access to the is synchronized (thread-safe); otherwise, false. + + + + For the this property is always true. + + + + + + Gets the number of elements contained in the + + + The number of elements contained in the . + + + + As the collection is empty the is always 0. + + + + + + Gets an object that can be used to synchronize access to the . + + + An object that can be used to synchronize access to the . + + + + As the collection is empty and thread safe and synchronized this instance is also + the object. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Adds an element with the provided key and value to the + . + + The to use as the key of the element to add. + The to use as the value of the element to add. + + + As the collection is empty no new values can be added. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Removes all elements from the . + + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Determines whether the contains an element + with the specified key. + + The key to locate in the . + false + + + As the collection is empty the method always returns false. + + + + + + Returns an enumerator that can iterate through a collection. + + + An that can be used to + iterate through the collection. + + + + As the collection is empty a is returned. + + + + + + Removes the element with the specified key from the . + + The key of the element to remove. + + + As the collection is empty no values can be removed. A + is thrown if this method is called. + + + This dictionary is always empty and cannot be modified. + + + + Gets a value indicating whether the has a fixed size. + + true + + + As the collection is empty always returns true. + + + + + + Gets a value indicating whether the is read-only. + + true + + + As the collection is empty always returns true. + + + + + + Gets an containing the keys of the . + + An containing the keys of the . + + + As the collection is empty a is returned. + + + + + + Gets an containing the values of the . + + An containing the values of the . + + + As the collection is empty a is returned. + + + + + + Gets or sets the element with the specified key. + + The key of the element to get or set. + null + + + As the collection is empty no values can be looked up or stored. + If the index getter is called then null is returned. + A is thrown if the setter is called. + + + This dictionary is always empty and cannot be modified. + + + + The singleton instance of the empty dictionary. + + + + + Contain the information obtained when parsing formatting modifiers + in conversion modifiers. + + + + Holds the formatting information extracted from the format string by + the . This is used by the + objects when rendering the output. + + + Nicko Cadell + Gert Driesen + + + + Defaut Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + + + Initializes a new instance of the class + with the specified parameters. + + + + + + Gets or sets the minimum value. + + + The minimum value. + + + + Gets or sets the minimum value. + + + + + + Gets or sets the maximum value. + + + The maximum value. + + + + Gets or sets the maximum value. + + + + + + Gets or sets a flag indicating whether left align is enabled + or not. + + + A flag indicating whether left align is enabled or not. + + + + Gets or sets a flag indicating whether left align is enabled or not. + + + + + + Implementation of Properties collection for the + + + + This class implements a properties collection that is thread safe and supports both + storing properties and capturing a read only copy of the current propertied. + + + This class is optimized to the scenario where the properties are read frequently + and are modified infrequently. + + + Nicko Cadell + + + + The read only copy of the properties. + + + + This variable is declared volatile to prevent the compiler and JIT from + reordering reads and writes of this thread performed on different threads. + + + + + + Lock object used to synchronize updates within this instance + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Reading the value for a key is faster than setting the value. + When the value is written a new read only copy of + the properties is created. + + + + + + Remove a property from the global context + + the key for the entry to remove + + + Removing an entry from the global context properties is relatively expensive compared + with reading a value. + + + + + + Clear the global context properties + + + + + Get a readonly immutable copy of the properties + + the current global context properties + + + This implementation is fast because the GlobalContextProperties class + stores a readonly copy of the properties. + + + + + + The static class ILogExtensions contains a set of widely used + methods that ease the interaction with the ILog interface implementations. + + + + This class contains methods for logging at different levels and checks the + properties for determining if those logging levels are enabled in the current + configuration. + + + Simple example of logging messages + + using log4net.Util; + + ILog log = LogManager.GetLogger("application-log"); + + log.InfoExt("Application Start"); + log.DebugExt("This is a debug message"); + + + + + + The fully qualified type of the Logger class. + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is INFO + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is INFO enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is WARN + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is WARN enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is ERROR + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is ERROR enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Log a message object with the level. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (retrieved by invocation of the provided callback) to a + string by invoking the appropriate . + It then proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The lambda expression that gets the object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + Log a message object with the level. //TODO + + Log a message object with the level. + + The logger on which the message is logged. + The message object to log. + + + This method first checks if this logger is FATAL + enabled by reading the value property. + This check happens always and does not depend on the + implementation. If this logger is FATAL enabled, then it converts + the message object (passed as parameter) to a string by invoking the appropriate + . It then + proceeds to call all the registered appenders in this logger + and also higher in the hierarchy depending on the value of + the additivity flag. + + WARNING Note that passing an + to this method will print the name of the + but no stack trace. To print a stack trace use the + form instead. + + + + + + + + Log a message object with the level including + the stack trace of the passed + as a parameter. + + The logger on which the message is logged. + The message object to log. + The exception to log, including its stack trace. + + + See the form for more detailed information. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + An that supplies culture-specific formatting information + The logger on which the message is logged. + A String containing zero or more format items + An Object array containing zero or more objects to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Logs a formatted message string with the level. + + The logger on which the message is logged. + A String containing zero or more format items + An Object to format + An Object to format + An Object to format + + + The message is formatted using the String.Format method. See + for details of the syntax of the format string and the behavior + of the formatting. + + + This method does not take an object to include in the + log event. To pass an use one of the + methods instead. + + + + + + + + Manages a mapping from levels to + + + + Manages an ordered mapping from instances + to subclasses. + + + Nicko Cadell + + + + Default constructor + + + + Initialise a new instance of . + + + + + + Add a to this mapping + + the entry to add + + + If a has previously been added + for the same then that entry will be + overwritten. + + + + + + Lookup the mapping for the specified level + + the level to lookup + the for the level or null if no mapping found + + + Lookup the value for the specified level. Finds the nearest + mapping value for the level that is equal to or less than the + specified. + + + If no mapping could be found then null is returned. + + + + + + Initialize options + + + + Caches the sorted list of in an array + + + + + + An entry in the + + + + This is an abstract base class for types that are stored in the + object. + + + Nicko Cadell + + + + Default protected constructor + + + + Default protected constructor + + + + + + The level that is the key for this mapping + + + The that is the key for this mapping + + + + Get or set the that is the key for this + mapping subclass. + + + + + + Initialize any options defined on this entry + + + + Should be overridden by any classes that need to initialise based on their options + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + This class stores its properties in a slot on the named + log4net.Util.LogicalThreadContextProperties. + + + For .NET Standard 1.3 this class uses + System.Threading.AsyncLocal rather than . + + + The requires a link time + for the + . + If the calling code does not have this permission then this context will be disabled. + It will not store any property values set on it. + + + Nicko Cadell + + + + Flag used to disable this context if we don't have permission to access the CallContext. + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Get or set the property value for the specified. + + + + + + Remove a property + + the key for the entry to remove + + + Remove the value for the specified from the context. + + + + + + Clear all the context properties + + + + Clear all the context properties + + + + + + Get the PropertiesDictionary stored in the LocalDataStoreSlot for this thread. + + create the dictionary if it does not exist, otherwise return null if is does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doings so. + + + + + + Gets the call context get data. + + The peroperties dictionary stored in the call context + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + Sets the call context data. + + The properties. + + The method has a + security link demand, therfore we must put the method call in a seperate method + that we can wrap in an exception handler. + + + + + The fully qualified type of the LogicalThreadContextProperties class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Delegate type used for LogicalThreadContextStack's callbacks. + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + The name of this within the + . + + + + + The callback used to let the register a + new instance of a . + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this thread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.LogicalThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The depth to trim the stack to when this instance is disposed + + + + + The outer LogicalThreadContextStack. + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + + + + + + + + Outputs log statements from within the log4net assembly. + + + + Log4net components cannot make log4net logging calls. However, it is + sometimes useful for the user to learn about what log4net is + doing. + + + All log4net internal debug calls go to the standard output stream + whereas internal error messages are sent to the standard error output + stream. + + + Nicko Cadell + Gert Driesen + + + + The event raised when an internal message has been received. + + + + + The Type that generated the internal message. + + + + + The DateTime stamp of when the internal message was received. + + + + + The UTC DateTime stamp of when the internal message was received. + + + + + A string indicating the severity of the internal message. + + + "log4net: ", + "log4net:ERROR ", + "log4net:WARN " + + + + + The internal log message. + + + + + The Exception related to the message. + + + Optional. Will be null if no Exception was passed. + + + + + Formats Prefix, Source, and Message in the same format as the value + sent to Console.Out and Trace.Write. + + + + + + Initializes a new instance of the class. + + + + + + + + + Static constructor that initializes logging by reading + settings from the application configuration file. + + + + The log4net.Internal.Debug application setting + controls internal debugging. This setting should be set + to true to enable debugging. + + + The log4net.Internal.Quiet application setting + suppresses all internal logging including error messages. + This setting should be set to true to enable message + suppression. + + + + + + Gets or sets a value indicating whether log4net internal logging + is enabled or disabled. + + + true if log4net internal logging is enabled, otherwise + false. + + + + When set to true, internal debug level logging will be + displayed. + + + This value can be set by setting the application setting + log4net.Internal.Debug in the application configuration + file. + + + The default value is false, i.e. debugging is + disabled. + + + + + The following example enables internal debugging using the + application configuration file : + + + + + + + + + + + + + Gets or sets a value indicating whether log4net should generate no output + from internal logging, not even for errors. + + + true if log4net should generate no output at all from internal + logging, otherwise false. + + + + When set to true will cause internal logging at all levels to be + suppressed. This means that no warning or error reports will be logged. + This option overrides the setting and + disables all debug also. + + This value can be set by setting the application setting + log4net.Internal.Quiet in the application configuration file. + + + The default value is false, i.e. internal logging is not + disabled. + + + + The following example disables internal logging using the + application configuration file : + + + + + + + + + + + + + + + + + Raises the LogReceived event when an internal messages is received. + + + + + + + + + Test if LogLog.Debug is enabled for output. + + + true if Debug is enabled + + + + Test if LogLog.Debug is enabled for output. + + + + + + Writes log4net internal debug messages to the + standard output stream. + + + The message to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Writes log4net internal debug messages to the + standard output stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net: ". + + + + + + Test if LogLog.Warn is enabled for output. + + + true if Warn is enabled + + + + Test if LogLog.Warn is enabled for output. + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Writes log4net internal warning messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal warning messages are prepended with + the string "log4net:WARN ". + + + + + + Test if LogLog.Error is enabled for output. + + + true if Error is enabled + + + + Test if LogLog.Error is enabled for output. + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + + + All internal error messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes log4net internal error messages to the + standard error stream. + + The Type that generated this message. + The message to log. + An exception to log. + + + All internal debug messages are prepended with + the string "log4net:ERROR ". + + + + + + Writes output to the standard output stream. + + The message to log. + + + Writes to both Console.Out and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Writes output to the standard error stream. + + The message to log. + + + Writes to both Console.Error and System.Diagnostics.Trace. + Note that the System.Diagnostics.Trace is not supported + on the Compact Framework. + + + If the AppDomain is not configured with a config file then + the call to System.Diagnostics.Trace may fail. This is only + an issue if you are programmatically creating your own AppDomains. + + + + + + Default debug level + + + + + In quietMode not even errors generate any output. + + + + + Subscribes to the LogLog.LogReceived event and stores messages + to the supplied IList instance. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a native error code and message. + + + + Represents a Win32 platform native error. + + + Nicko Cadell + Gert Driesen + + + + Create an instance of the class with the specified + error number and message. + + The number of the native error. + The message of the native error. + + + Create an instance of the class with the specified + error number and message. + + + + + + Gets the number of the native error. + + + The number of the native error. + + + + Gets the number of the native error. + + + + + + Gets the message of the native error. + + + The message of the native error. + + + + + Gets the message of the native error. + + + + + Create a new instance of the class for the last Windows error. + + + An instance of the class for the last windows error. + + + + The message for the error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Create a new instance of the class. + + the error number for the native error + + An instance of the class for the specified + error number. + + + + The message for the specified error number is lookup up using the + native Win32 FormatMessage function. + + + + + + Retrieves the message corresponding with a Win32 message identifier. + + Message identifier for the requested message. + + The message corresponding with the specified message identifier. + + + + The message will be searched for in system message-table resource(s) + using the native FormatMessage function. + + + + + + Return error information string + + error information string + + + Return error information string + + + + + + Formats a message string. + + Formatting options, and how to interpret the parameter. + Location of the message definition. + Message identifier for the requested message. + Language identifier for the requested message. + If includes FORMAT_MESSAGE_ALLOCATE_BUFFER, the function allocates a buffer using the LocalAlloc function, and places the pointer to the buffer at the address specified in . + If the FORMAT_MESSAGE_ALLOCATE_BUFFER flag is not set, this parameter specifies the maximum number of TCHARs that can be stored in the output buffer. If FORMAT_MESSAGE_ALLOCATE_BUFFER is set, this parameter specifies the minimum number of TCHARs to allocate for an output buffer. + Pointer to an array of values that are used as insert values in the formatted message. + + + The function requires a message definition as input. The message definition can come from a + buffer passed into the function. It can come from a message table resource in an + already-loaded module. Or the caller can ask the function to search the system's message + table resource(s) for the message definition. The function finds the message definition + in a message table resource based on a message identifier and a language identifier. + The function copies the formatted message text to an output buffer, processing any embedded + insert sequences if requested. + + + To prevent the usage of unsafe code, this stub does not support inserting values in the formatted message. + + + + + If the function succeeds, the return value is the number of TCHARs stored in the output + buffer, excluding the terminating null character. + + + If the function fails, the return value is zero. To get extended error information, + call . + + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Gets the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Test if the enumerator can advance, if so advance. + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + Gets the current key from the enumerator. + + + Throws an exception because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current value from the enumerator. + + The current value from the enumerator. + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Gets the current entry from the enumerator. + + + Throws an because the + never has a current entry. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + The singleton instance of the . + + + + + An always empty . + + + + A singleton implementation of the over a collection + that is empty and not modifiable. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to enforce the singleton pattern. + + + + + + Get the singleton instance of the . + + The singleton instance of the . + + + Gets the singleton instance of the . + + + + + + Gets the current object from the enumerator. + + + Throws an because the + never has a current value. + + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will throw an . + + + The collection is empty and + cannot be positioned over a valid location. + + + + Test if the enumerator can advance, if so advance + + false as the cannot advance. + + + As the enumerator is over an empty collection its + value cannot be moved over a valid position, therefore + will always return false. + + + + + + Resets the enumerator back to the start. + + + + As the enumerator is over an empty collection does nothing. + + + + + + The singleton instance of the . + + + + + A SecurityContext used when a SecurityContext is not required + + + + The is a no-op implementation of the + base class. It is used where a + is required but one has not been provided. + + + Nicko Cadell + + + + Singleton instance of + + + + Singleton instance of + + + + + + Private constructor + + + + Private constructor for singleton pattern. + + + + + + Impersonate this SecurityContext + + State supplied by the caller + null + + + No impersonation is done and null is always returned. + + + + + + Implements log4net's default error handling policy which consists + of emitting a message for the first error in an appender and + ignoring all subsequent errors. + + + + The error message is processed using the LogLog sub-system by default. + + + This policy aims at protecting an otherwise working application + from being flooded with error messages when logging fails. + + + Nicko Cadell + Gert Driesen + Ron Grabowski + + + + Default Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + The prefix to use for each message. + + + Initializes a new instance of the class + with the specified prefix. + + + + + + Reset the error handler back to its initial disabled state. + + + + + Log an Error + + The error message. + The exception. + The internal error code. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log the very first error + + The error message. + The exception. + The internal error code. + + + Sends the error information to 's Error method. + + + + + + Log an Error + + The error message. + The exception. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Log an error + + The error message. + + + Invokes if and only if this is the first error or the first error after has been called. + + + + + + Is error logging enabled + + + + Is error logging enabled. Logging is only enabled for the + first error delivered to the . + + + + + + The date the first error that trigged this error handler occurred, or if it has not been triggered. + + + + + The UTC date the first error that trigged this error handler occured, or if it has not been triggered. + + + + + The message from the first error that trigged this error handler. + + + + + The exception from the first error that trigged this error handler. + + + May be . + + + + + The error code from the first error that trigged this error handler. + + + Defaults to + + + + + The UTC date the error was recorded. + + + + + Flag to indicate if it is the first error + + + + + The message recorded during the first error. + + + + + The exception recorded during the first error. + + + + + The error code recorded during the first error. + + + + + String to prefix each message with + + + + + The fully qualified type of the OnlyOnceErrorHandler class. + + + Used by the internal logger to record the Type of the + log message. + + + + + A convenience class to convert property values to specific types. + + + + Utility functions for converting types and parsing values. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Converts a string to a value. + + String to convert. + The default value. + The value of . + + + If is "true", then true is returned. + If is "false", then false is returned. + Otherwise, is returned. + + + + + + Parses a file size into a number. + + String to parse. + The default value. + The value of . + + + Parses a file size of the form: number[KB|MB|GB] into a + long value. It is scaled with the appropriate multiplier. + + + is returned when + cannot be converted to a value. + + + + + + Converts a string to an object. + + The target type to convert to. + The string to convert to an object. + + The object converted from a string or null when the + conversion failed. + + + + Converts a string to an object. Uses the converter registry to try + to convert the string value into the specified target type. + + + + + + Checks if there is an appropriate type conversion from the source type to the target type. + + The type to convert from. + The type to convert to. + true if there is a conversion from the source type to the target type. + + Checks if there is an appropriate type conversion from the source type to the target type. + + + + + + + Converts an object to the target type. + + The object to convert to the target type. + The type to convert to. + The converted object. + + + Converts an object to the target type. + + + + + + Instantiates an object given a class name. + + The fully qualified class name of the object to instantiate. + The class to which the new object should belong. + The object to return in case of non-fulfillment. + + An instance of the or + if the object could not be instantiated. + + + + Checks that the is a subclass of + . If that test fails or the object could + not be instantiated, then is returned. + + + + + + Performs variable substitution in string from the + values of keys found in . + + The string on which variable substitution is performed. + The dictionary to use to lookup variables. + The result of the substitutions. + + + The variable substitution delimiters are ${ and }. + + + For example, if props contains key=value, then the call + + + + string s = OptionConverter.SubstituteVariables("Value of key is ${key}."); + + + + will set the variable s to "Value of key is value.". + + + If no value could be found for the specified key, then substitution + defaults to an empty string. + + + For example, if system properties contains no value for the key + "nonExistentKey", then the call + + + + string s = OptionConverter.SubstituteVariables("Value of nonExistentKey is [${nonExistentKey}]"); + + + + will set s to "Value of nonExistentKey is []". + + + An Exception is thrown if contains a start + delimiter "${" which is not balanced by a stop delimiter "}". + + + + + + Converts the string representation of the name or numeric value of one or + more enumerated constants to an equivalent enumerated object. + + The type to convert to. + The enum string value. + If true, ignore case; otherwise, regard case. + An object of type whose value is represented by . + + + + The fully qualified type of the OptionConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Abstract class that provides the formatting functionality that + derived classes need. + + + + Conversion specifiers in a conversion patterns are parsed to + individual PatternConverters. Each of which is responsible for + converting a logging event in a converter specific manner. + + + Nicko Cadell + Gert Driesen + + + + Protected constructor + + + + Initializes a new instance of the class. + + + + + + Get the next pattern converter in the chain + + + the next pattern converter in the chain + + + + Get the next pattern converter in the chain + + + + + + Gets or sets the formatting info for this converter + + + The formatting info for this converter + + + + Gets or sets the formatting info for this converter + + + + + + Gets or sets the option value for this converter + + + The option for this converter + + + + Gets or sets the option value for this converter + + + + + + Evaluate this pattern converter and write the output to a writer. + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + Derived pattern converters must override this method in order to + convert conversion specifiers in the appropriate way. + + + + + + Set the next pattern converter in the chains + + the pattern converter that should follow this converter in the chain + the next converter + + + The PatternConverter can merge with its neighbor during this method (or a sub class). + Therefore the return value may or may not be the value of the argument passed in. + + + + + + Write the pattern converter to the writer with appropriate formatting + + that will receive the formatted result. + The state object on which the pattern converter should be executed. + + + This method calls to allow the subclass to perform + appropriate conversion of the pattern converter. If formatting options have + been specified via the then this method will + apply those formattings before writing the output. + + + + + + Fast space padding method. + + to which the spaces will be appended. + The number of spaces to be padded. + + + Fast space padding method. + + + + + + The option string to the converter + + + + + Initial buffer size + + + + + Maximum buffer size before it is recycled + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an dictionary to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the to a writer in the form: + + + {key1=value1, key2=value2, key3=value3} + + + If the specified + is not null then it is used to render the key and value to text, otherwise + the object's ToString method is called. + + + + + + Write an object to a + + the writer to write to + a to use for object conversion + the value to write to the writer + + + Writes the Object to a writer. If the specified + is not null then it is used to render the object to text, otherwise + the object's ToString method is called. + + + + + + + + + + + Most of the work of the class + is delegated to the PatternParser class. + + + + The PatternParser processes a pattern string and + returns a chain of objects. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + The pattern to parse. + + + Initializes a new instance of the class + with the specified pattern string. + + + + + + Parses the pattern into a chain of pattern converters. + + The head of a chain of pattern converters. + + + Parses the pattern into a chain of pattern converters. + + + + + + Get the converter registry used by this parser + + + The converter registry used by this parser + + + + Get the converter registry used by this parser + + + + + + Build the unified cache of converters from the static and instance maps + + the list of all the converter names + + + Build the unified cache of converters from the static and instance maps + + + + + + Sort strings by length + + + + that orders strings by string length. + The longest strings are placed first + + + + + + Internal method to parse the specified pattern to find specified matches + + the pattern to parse + the converter names to match in the pattern + + + The matches param must be sorted such that longer strings come before shorter ones. + + + + + + Process a parsed literal + + the literal text + + + + Process a parsed converter pattern + + the name of the converter + the optional option for the converter + the formatting info for the converter + + + + Resets the internal state of the parser and adds the specified pattern converter + to the chain. + + The pattern converter to add. + + + + The first pattern converter in the chain + + + + + the last pattern converter in the chain + + + + + The pattern + + + + + Internal map of converter identifiers to converter types + + + + This map overrides the static s_globalRulesRegistry map. + + + + + + The fully qualified type of the PatternParser class. + + + Used by the internal logger to record the Type of the + log message. + + + + + This class implements a patterned string. + + + + This string has embedded patterns that are resolved and expanded + when the string is formatted. + + + This class functions similarly to the + in that it accepts a pattern and renders it to a string. Unlike the + however the PatternString + does not render the properties of a specific but + of the process in general. + + + The recognized conversion pattern names are: + + + + Conversion Pattern Name + Effect + + + appdomain + + + Used to output the friendly name of the current AppDomain. + + + + + appsetting + + + Used to output the value of a specific appSetting key in the application + configuration file. + + + + + date + + + Used to output the current date and time in the local time zone. + To output the date in universal time use the %utcdate pattern. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %date{HH:mm:ss,fff} or + %date{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %date{ISO8601} or %date{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + env + + + Used to output the a specific environment variable. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %env{COMPUTERNAME} would include the value + of the COMPUTERNAME environment variable. + + + The env pattern is not supported on the .NET Compact Framework. + + + + + identity + + + Used to output the user name for the currently active user + (Principal.Identity.Name). + + + + + newline + + + Outputs the platform dependent line separator character or + characters. + + + This conversion pattern name offers the same performance as using + non-portable line separator strings such as "\n", or "\r\n". + Thus, it is the preferred way of specifying a line separator. + + + + + processid + + + Used to output the system process ID for the current process. + + + + + property + + + Used to output a specific context property. The key to + lookup must be specified within braces and directly following the + pattern specifier, e.g. %property{user} would include the value + from the property that is keyed by the string 'user'. Each property value + that is to be included in the log must be specified separately. + Properties are stored in logging contexts. By default + the log4net:HostName property is set to the name of machine on + which the event was originally logged. + + + If no key is specified, e.g. %property then all the keys and their + values are printed in a comma separated list. + + + The properties of an event are combined from a number of different + contexts. These are listed below in the order in which they are searched. + + + + the thread properties + + The that are set on the current + thread. These properties are shared by all events logged on this thread. + + + + the global properties + + The that are set globally. These + properties are shared by all the threads in the AppDomain. + + + + + + + random + + + Used to output a random string of characters. The string is made up of + uppercase letters and numbers. By default the string is 4 characters long. + The length of the string can be specified within braces directly following the + pattern specifier, e.g. %random{8} would output an 8 character string. + + + + + username + + + Used to output the WindowsIdentity for the currently + active user. + + + + + utcdate + + + Used to output the date of the logging event in universal time. + The date conversion + specifier may be followed by a date format specifier enclosed + between braces. For example, %utcdate{HH:mm:ss,fff} or + %utcdate{dd MMM yyyy HH:mm:ss,fff}. If no date format specifier is + given then ISO8601 format is + assumed (). + + + The date format specifier admits the same syntax as the + time pattern string of the . + + + For better results it is recommended to use the log4net date + formatters. These can be specified using one of the strings + "ABSOLUTE", "DATE" and "ISO8601" for specifying + , + and respectively + . For example, + %utcdate{ISO8601} or %utcdate{ABSOLUTE}. + + + These dedicated date formatters perform significantly + better than . + + + + + % + + + The sequence %% outputs a single percent sign. + + + + + + Additional pattern converters may be registered with a specific + instance using or + . + + + See the for details on the + format modifiers supported by the patterns. + + + Nicko Cadell + + + + Internal map of converter identifiers to converter types. + + + + + the pattern + + + + + the head of the pattern converter chain + + + + + patterns defined on this PatternString only + + + + + Initialize the global registry + + + + + Default constructor + + + + Initialize a new instance of + + + + + + Constructs a PatternString + + The pattern to use with this PatternString + + + Initialize a new instance of with the pattern specified. + + + + + + Gets or sets the pattern formatting string + + + The pattern formatting string + + + + The ConversionPattern option. This is the string which + controls formatting and consists of a mix of literal content and + conversion specifiers. + + + + + + Initialize object options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Create the used to parse the pattern + + the pattern to parse + The + + + Returns PatternParser used to parse the conversion string. Subclasses + may override this to return a subclass of PatternParser which recognize + custom conversion pattern name. + + + + + + Produces a formatted string as specified by the conversion pattern. + + The TextWriter to write the formatted event to + + + Format the pattern to the . + + + + + + Format the pattern as a string + + the pattern formatted as a string + + + Format the pattern to a string. + + + + + + Add a converter to this PatternString + + the converter info + + + This version of the method is used by the configurator. + Programmatic users should use the alternative method. + + + + + + Add a converter to this PatternString + + the name of the conversion pattern for this converter + the type of the converter + + + Add a converter to this PatternString + + + + + + Write the name of the current AppDomain to the output + + + + Write the name of the current AppDomain to the output writer + + + Nicko Cadell + + + + Write the name of the current AppDomain to the output + + the writer to write to + null, state is not set + + + Writes name of the current AppDomain to the output . + + + + + + AppSetting pattern converter + + + + This pattern converter reads appSettings from the application configuration file. + + + If the is specified then that will be used to + lookup a single appSettings value. If no is specified + then all appSettings will be dumped as a list of key value pairs. + + + A typical use is to specify a base directory for log files, e.g. + + + + + ... + + + ]]> + + + + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + Write the current date to the output + + + + Date pattern converter, uses a to format + the current date and time to the writer as a string. + + + The value of the determines + the formatting of the date. The following values are allowed: + + + Option value + Output + + + ISO8601 + + Uses the formatter. + Formats using the "yyyy-MM-dd HH:mm:ss,fff" pattern. + + + + DATE + + Uses the formatter. + Formats using the "dd MMM yyyy HH:mm:ss,fff" for example, "06 Nov 1994 15:49:37,459". + + + + ABSOLUTE + + Uses the formatter. + Formats using the "HH:mm:ss,fff" for example, "15:49:37,459". + + + + other + + Any other pattern string uses the formatter. + This formatter passes the pattern string to the + method. + For details on valid patterns see + DateTimeFormatInfo Class. + + + + + + The date and time is in the local time zone and is rendered in that zone. + To output the time in Universal time see . + + + Nicko Cadell + + + + The used to render the date to a string + + + + The used to render the date to a string + + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current date to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date and time passed is in the local time zone. + + + + + + The fully qualified type of the DatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an folder path to the output + + + + Write an special path environment folder path to the output writer. + The value of the determines + the name of the variable to output. + should be a value in the enumeration. + + + Ron Grabowski + + + + Write an special path environment folder path to the output + + the writer to write to + null, state is not set + + + Writes the special path environment folder path to the output . + The name of the special path environment folder path to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentFolderPathPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write an environment variable to the output + + + + Write an environment variable to the output writer. + The value of the determines + the name of the variable to output. + + + Nicko Cadell + + + + Write an environment variable to the output + + the writer to write to + null, state is not set + + + Writes the environment variable to the output . + The name of the environment variable to output must be set + using the + property. + + + + + + The fully qualified type of the EnvironmentPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current thread identity to the output + + + + Write the current thread identity to the output writer + + + Nicko Cadell + + + + Write the current thread identity to the output + + the writer to write to + null, state is not set + + + Writes the current thread identity to the output . + + + + + + The fully qualified type of the IdentityPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Pattern converter for literal string instances in the pattern + + + + Writes the literal string value specified in the + property to + the output. + + + Nicko Cadell + + + + Set the next converter in the chain + + The next pattern converter in the chain + The next pattern converter + + + Special case the building of the pattern converter chain + for instances. Two adjacent + literals in the pattern can be represented by a single combined + pattern converter. This implementation detects when a + is added to the chain + after this converter and combines its value with this converter's + literal value. + + + + + + Write the literal to the output + + the writer to write to + null, not set + + + Override the formatting behavior to ignore the FormattingInfo + because we have a literal instead. + + + Writes the value of + to the output . + + + + + + Convert this pattern into the rendered message + + that will receive the formatted result. + null, not set + + + This method is not used. + + + + + + Writes a newline to the output + + + + Writes the system dependent line terminator to the output. + This behavior can be overridden by setting the : + + + + Option Value + Output + + + DOS + DOS or Windows line terminator "\r\n" + + + UNIX + UNIX line terminator "\n" + + + + Nicko Cadell + + + + Initialize the converter + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write the current process ID to the output + + + + Write the current process ID to the output writer + + + Nicko Cadell + + + + Write the current process ID to the output + + the writer to write to + null, state is not set + + + Write the current process ID to the output . + + + + + + The fully qualified type of the ProcessIdPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Property pattern converter + + + + This pattern converter reads the thread and global properties. + The thread properties take priority over global properties. + See for details of the + thread properties. See for + details of the global properties. + + + If the is specified then that will be used to + lookup a single property. If no is specified + then all properties will be dumped as a list of key value pairs. + + + Nicko Cadell + + + + Write the property value to the output + + that will receive the formatted result. + null, state is not set + + + Writes out the value of a named property. The property name + should be set in the + property. + + + If the is set to null + then all the properties are written as key value pairs. + + + + + + A Pattern converter that generates a string of random characters + + + + The converter generates a string of random characters. By default + the string is length 4. This can be changed by setting the + to the string value of the length required. + + + The random characters in the string are limited to uppercase letters + and numbers only. + + + The random number generator used by this class is not cryptographically secure. + + + Nicko Cadell + + + + Shared random number generator + + + + + Length of random string to generate. Default length 4. + + + + + Initialize the converter options + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + + + + Write a randoim string to the output + + the writer to write to + null, state is not set + + + Write a randoim string to the output . + + + + + + The fully qualified type of the RandomStringPatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the current threads username to the output + + + + Write the current threads username to the output writer + + + Nicko Cadell + + + + Write the current threads username to the output + + the writer to write to + null, state is not set + + + Write the current threads username to the output . + + + + + + The fully qualified type of the UserNamePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Write the UTC date time to the output + + + + Date pattern converter, uses a to format + the current date and time in Universal time. + + + See the for details on the date pattern syntax. + + + + Nicko Cadell + + + + Write the current date and time to the output + + that will receive the formatted result. + null, state is not set + + + Pass the current date and time to the + for it to render it to the writer. + + + The date is in Universal time when it is rendered. + + + + + + + The fully qualified type of the UtcDatePatternConverter class. + + + Used by the internal logger to record the Type of the + log message. + + + + + String keyed object map. + + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class + with serialized data. + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Because this class is sealed the serialization constructor is private. + + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + Remove the entry with the specified key from this dictionary + + the key for the entry to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + an enumerator + + + Returns a over the contest of this collection. + + + + + + See + + the key to remove + + + Remove the entry with the specified key from this dictionary + + + + + + See + + the key to lookup in the collection + true if the collection contains the specified key + + + Test if this collection contains a specified key. + + + + + + Remove all properties from the properties collection + + + + Remove all properties from the properties collection + + + + + + See + + the key + the value to store for the key + + + Store a value for the specified . + + + Thrown if the is not a string + + + + See + + + false + + + + This collection is modifiable. This property always + returns false. + + + + + + See + + + The value for the key specified. + + + + Get or set a value for the specified . + + + Thrown if the is not a string + + + + See + + + + + See + + + + + See + + + + + See + + + + + + + See + + + + + See + + + + + See + + + + + A class to hold the key and data for a property set in the config file + + + + A class to hold the key and data for a property set in the config file + + + + + + Property Key + + + Property Key + + + + Property Key. + + + + + + Property Value + + + Property Value + + + + Property Value. + + + + + + Override Object.ToString to return sensible debug info + + string info about this object + + + + A that ignores the message + + + + This writer is used in special cases where it is necessary + to protect a writer from being closed by a client. + + + Nicko Cadell + + + + Constructor + + the writer to actually write to + + + Create a new ProtectCloseTextWriter using a writer + + + + + + Attach this instance to a different underlying + + the writer to attach to + + + Attach this instance to a different underlying + + + + + + Does not close the underlying output writer. + + + + Does not close the underlying output writer. + This method does nothing. + + + + + + that does not leak exceptions + + + + does not throw exceptions when things go wrong. + Instead, it delegates error handling to its . + + + Nicko Cadell + Gert Driesen + + + + Constructor + + the writer to actually write to + the error handler to report error to + + + Create a new QuietTextWriter using a writer and error handler + + + + + + Gets or sets the error handler that all errors are passed to. + + + The error handler that all errors are passed to. + + + + Gets or sets the error handler that all errors are passed to. + + + + + + Gets a value indicating whether this writer is closed. + + + true if this writer is closed, otherwise false. + + + + Gets a value indicating whether this writer is closed. + + + + + + Writes a character to the underlying writer + + the char to write + + + Writes a character to the underlying writer + + + + + + Writes a buffer to the underlying writer + + the buffer to write + the start index to write from + the number of characters to write + + + Writes a buffer to the underlying writer + + + + + + Writes a string to the output. + + The string data to write to the output. + + + Writes a string to the output. + + + + + + Closes the underlying output writer. + + + + Closes the underlying output writer. + + + + + + The error handler instance to pass all errors to + + + + + Flag to indicate if this writer is closed + + + + + Defines a lock that supports single writers and multiple readers + + + + ReaderWriterLock is used to synchronize access to a resource. + At any given time, it allows either concurrent read access for + multiple threads, or write access for a single thread. In a + situation where a resource is changed infrequently, a + ReaderWriterLock provides better throughput than a simple + one-at-a-time lock, such as . + + + If a platform does not support a System.Threading.ReaderWriterLock + implementation then all readers and writers are serialized. Therefore + the caller must not rely on multiple simultaneous readers. + + + Nicko Cadell + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Acquires a reader lock + + + + blocks if a different thread has the writer + lock, or if at least one thread is waiting for the writer lock. + + + + + + Decrements the lock count + + + + decrements the lock count. When the count + reaches zero, the lock is released. + + + + + + Acquires the writer lock + + + + This method blocks if another thread has a reader lock or writer lock. + + + + + + Decrements the lock count on the writer lock + + + + ReleaseWriterLock decrements the writer lock count. + When the count reaches zero, the writer lock is released. + + + + + + String keyed object map that is read only. + + + + This collection is readonly and cannot be modified. + + + While this collection is serializable only member + objects that are serializable will + be serialized along with this collection. + + + Nicko Cadell + Gert Driesen + + + + The Hashtable used to store the properties data + + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Copy Constructor + + properties to copy + + + Initializes a new instance of the class. + + + + + + Deserialization constructor + + The that holds the serialized object data. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Gets the key names. + + An array of all the keys. + + + Gets the key names. + + + + + + Gets or sets the value of the property with the specified key. + + + The value of the property with the specified key. + + The key of the property to get or set. + + + The property value will only be serialized if it is serializable. + If it cannot be serialized it will be silently ignored if + a serialization operation is performed. + + + + + + Test if the dictionary contains a specified key + + the key to look for + true if the dictionary contains the specified key + + + Test if the dictionary contains a specified key + + + + + + The hashtable used to store the properties + + + The internal collection used to store the properties + + + + The hashtable used to store the properties + + + + + + Serializes this object into the provided. + + The to populate with data. + The destination for this serialization. + + + Serializes this object into the provided. + + + + + + See + + + + + See + + + + + + See + + + + + + + Remove all properties from the properties collection + + + + + See + + + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + See + + + + + + + See + + + + + The number of properties in this collection + + + + + See + + + + + See + + + + + A that can be and reused + + + + A that can be and reused. + This uses a single buffer for string operations. + + + Nicko Cadell + + + + Create an instance of + + the format provider to use + + + Create an instance of + + + + + + Override Dispose to prevent closing of writer + + flag + + + Override Dispose to prevent closing of writer + + + + + + Reset this string writer so that it can be reused. + + the maximum buffer capacity before it is trimmed + the default size to make the buffer + + + Reset this string writer so that it can be reused. + The internal buffers are cleared and reset. + + + + + + Utility class for system specific information. + + + + Utility class of static methods for system specific information. + + + Nicko Cadell + Gert Driesen + Alexey Solofnenko + + + + Private constructor to prevent instances. + + + + Only static methods are exposed from this type. + + + + + + Initialize default values for private static fields. + + + + Only static methods are exposed from this type. + + + + + + Gets the system dependent line terminator. + + + The system dependent line terminator. + + + + Gets the system dependent line terminator. + + + + + + Gets the base directory for this . + + The base directory path for the current . + + + Gets the base directory for this . + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the configuration file for the current . + + The path to the configuration file for the current . + + + The .NET Compact Framework 1.0 does not have a concept of a configuration + file. For this runtime, we use the entry assembly location as the root for + the configuration file name. + + + The value returned may be either a local file path or a URI. + + + + + + Gets the path to the file that first executed in the current . + + The path to the entry assembly. + + + Gets the path to the file that first executed in the current . + + + + + + Gets the ID of the current thread. + + The ID of the current thread. + + + On the .NET framework, the AppDomain.GetCurrentThreadId method + is used to obtain the thread ID for the current thread. This is the + operating system ID for the thread. + + + On the .NET Compact Framework 1.0 it is not possible to get the + operating system thread ID for the current thread. The native method + GetCurrentThreadId is implemented inline in a header file + and cannot be called. + + + On the .NET Framework 2.0 the Thread.ManagedThreadId is used as this + gives a stable id unrelated to the operating system thread ID which may + change if the runtime is using fibers. + + + + + + Get the host name or machine name for the current machine + + + The hostname or machine name + + + + Get the host name or machine name for the current machine + + + The host name () or + the machine name (Environment.MachineName) for + the current machine, or if neither of these are available + then NOT AVAILABLE is returned. + + + + + + Get this application's friendly name + + + The friendly name of this application as a string + + + + If available the name of the application is retrieved from + the AppDomain using AppDomain.CurrentDomain.FriendlyName. + + + Otherwise the file name of the entry assembly is used. + + + + + + Get the start time for the current process. + + + + This is the time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Get the UTC start time for the current process. + + + + This is the UTC time at which the log4net library was loaded into the + AppDomain. Due to reports of a hang in the call to System.Diagnostics.Process.StartTime + this is not the start time for the current process. + + + The log4net library should be loaded by an application early during its + startup, therefore this start time should be a good approximation for + the actual start time. + + + Note that AppDomains may be loaded and unloaded within the + same process without the process terminating, however this start time + will be set per AppDomain. + + + + + + Text to output when a null is encountered. + + + + Use this value to indicate a null has been encountered while + outputting a string representation of an item. + + + The default value is (null). This value can be overridden by specifying + a value for the log4net.NullText appSetting in the application's + .config file. + + + + + + Text to output when an unsupported feature is requested. + + + + Use this value when an unsupported feature is requested. + + + The default value is NOT AVAILABLE. This value can be overridden by specifying + a value for the log4net.NotAvailableText appSetting in the application's + .config file. + + + + + + Gets the assembly location path for the specified assembly. + + The assembly to get the location for. + The location of the assembly. + + + This method does not guarantee to return the correct path + to the assembly. If only tries to give an indication as to + where the assembly was loaded from. + + + + + + Gets the fully qualified name of the , including + the name of the assembly from which the was + loaded. + + The to get the fully qualified name for. + The fully qualified name for the . + + + This is equivalent to the Type.AssemblyQualifiedName property, + but this method works on the .NET Compact Framework 1.0 as well as + the full .NET runtime. + + + + + + Gets the short name of the . + + The to get the name for. + The short name of the . + + + The short name of the assembly is the + without the version, culture, or public key. i.e. it is just the + assembly's file name without the extension. + + + Use this rather than Assembly.GetName().Name because that + is not available on the Compact Framework. + + + Because of a FileIOPermission security demand we cannot do + the obvious Assembly.GetName().Name. We are allowed to get + the of the assembly so we + start from there and strip out just the assembly name. + + + + + + Gets the file name portion of the , including the extension. + + The to get the file name for. + The file name of the assembly. + + + Gets the file name portion of the , including the extension. + + + + + + Loads the type specified in the type string. + + A sibling type to use to load the type. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified, it will be loaded from the assembly + containing the specified relative type. If the type is not found in the assembly + then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the + assembly that is directly calling this method. If the type is not found + in the assembly then all the loaded assemblies will be searched for the type. + + + + + + Loads the type specified in the type string. + + An assembly to load the type from. + The name of the type to load. + Flag set to true to throw an exception if the type cannot be loaded. + true to ignore the case of the type name; otherwise, false + The type loaded or null if it could not be loaded. + + + If the type name is fully qualified, i.e. if contains an assembly name in + the type name, the type will be loaded from the system using + . + + + If the type name is not fully qualified it will be loaded from the specified + assembly. If the type is not found in the assembly then all the loaded assemblies + will be searched for the type. + + + + + + Generate a new guid + + A new Guid + + + Generate a new guid + + + + + + Create an + + The name of the parameter that caused the exception + The value of the argument that causes this exception + The message that describes the error + the ArgumentOutOfRangeException object + + + Create a new instance of the class + with a specified error message, the parameter name, and the value + of the argument. + + + The Compact Framework does not support the 3 parameter constructor for the + type. This method provides an + implementation that works for all platforms. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Parse a string into an value + + the string to parse + out param where the parsed value is placed + true if the string was able to be parsed into an integer + + + Attempts to parse the string into an integer. If the string cannot + be parsed then this method returns false. The method does not throw an exception. + + + + + + Lookup an application setting + + the application settings key to lookup + the value for the key, or null + + + Configuration APIs are not supported under the Compact Framework + + + + + + Convert a path into a fully qualified local file path. + + The path to convert. + The fully qualified path. + + + Converts the path specified to a fully + qualified path. If the path is relative it is + taken as relative from the application base + directory. + + + The path specified must be a local file path, a URI is not supported. + + + + + + Creates a new case-insensitive instance of the class with the default initial capacity. + + A new case-insensitive instance of the class with the default initial capacity + + + The new Hashtable instance uses the default load factor, the CaseInsensitiveHashCodeProvider, and the CaseInsensitiveComparer. + + + + + + Tests two strings for equality, the ignoring case. + + + If the platform permits, culture information is ignored completely (ordinal comparison). + The aim of this method is to provide a fast comparison that deals with null and ignores different casing. + It is not supposed to deal with various, culture-specific habits. + Use it to compare against pure ASCII constants, like keywords etc. + + The one string. + The other string. + true if the strings are equal, false otherwise. + + + + Gets an empty array of types. + + + + The Type.EmptyTypes field is not available on + the .NET Compact Framework 1.0. + + + + + + The fully qualified type of the SystemInfo class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Cache the host name for the current machine + + + + + Cache the application friendly name + + + + + Text to output when a null is encountered. + + + + + Text to output when an unsupported feature is requested. + + + + + Start time for the current process. + + + + + Utility class that represents a format string. + + + + Utility class that represents a format string. + + + Nicko Cadell + + + + Initialise the + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + + + Format the string and arguments + + the formatted string + + + + Replaces the format item in a specified with the text equivalent + of the value of a corresponding instance in a specified array. + A specified parameter supplies culture-specific formatting information. + + An that supplies culture-specific formatting information. + A containing zero or more format items. + An array containing zero or more objects to format. + + A copy of format in which the format items have been replaced by the + equivalent of the corresponding instances of in args. + + + + This method does not throw exceptions. If an exception thrown while formatting the result the + exception and arguments are returned in the result string. + + + + + + Process an error during StringFormat + + + + + Dump the contents of an array into a string builder + + + + + Dump an object to a string + + + + + The fully qualified type of the SystemStringFormat class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Adapter that extends and forwards all + messages to an instance of . + + + + Adapter that extends and forwards all + messages to an instance of . + + + Nicko Cadell + + + + The writer to forward messages to + + + + + Create an instance of that forwards all + messages to a . + + The to forward to + + + Create an instance of that forwards all + messages to a . + + + + + + Gets or sets the underlying . + + + The underlying . + + + + Gets or sets the underlying . + + + + + + The Encoding in which the output is written + + + The + + + + The Encoding in which the output is written + + + + + + Gets an object that controls formatting + + + The format provider + + + + Gets an object that controls formatting + + + + + + Gets or sets the line terminator string used by the TextWriter + + + The line terminator to use + + + + Gets or sets the line terminator string used by the TextWriter + + + + + + Closes the writer and releases any system resources associated with the writer + + + + + + + + + Dispose this writer + + flag indicating if we are being disposed + + + Dispose this writer + + + + + + Flushes any buffered output + + + + Clears all buffers for the writer and causes any buffered data to be written + to the underlying device + + + + + + Writes a character to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a character to the wrapped TextWriter + + + + + + Writes a character buffer to the wrapped TextWriter + + the data buffer + the start index + the number of characters to write + + + Writes a character buffer to the wrapped TextWriter + + + + + + Writes a string to the wrapped TextWriter + + the value to write to the TextWriter + + + Writes a string to the wrapped TextWriter + + + + + + Implementation of Properties collection for the + + + + Class implements a collection of properties that is specific to each thread. + The class is not synchronized as each thread has its own . + + + Nicko Cadell + + + + Each thread will automatically have its instance. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets or sets the value of a property + + + The value for the property with the specified key + + + + Gets or sets the value of a property + + + + + + Remove a property + + the key for the entry to remove + + + Remove a property + + + + + + Get the keys stored in the properties. + + + Gets the keys stored in the properties. + + a set of the defined keys + + + + Clear all properties + + + + Clear all properties + + + + + + Get the PropertiesDictionary for this thread. + + create the dictionary if it does not exist, otherwise return null if does not exist + the properties for this thread + + + The collection returned is only to be used on the calling thread. If the + caller needs to share the collection between different threads then the + caller must clone the collection before doing so. + + + + + + Implementation of Stack for the + + + + Implementation of Stack for the + + + Nicko Cadell + + + + The stack store. + + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + The number of messages in the stack + + + The current number of messages in the stack + + + + The current number of messages in the stack. That is + the number of times has been called + minus the number of times has been called. + + + + + + Clears all the contextual information held in this stack. + + + + Clears all the contextual information held in this stack. + Only call this if you think that this tread is being reused after + a previous call execution which may not have completed correctly. + You do not need to use this method if you always guarantee to call + the method of the + returned from even in exceptional circumstances, + for example by using the using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + syntax. + + + + + + Removes the top context from this stack. + + The message in the context that was removed from the top of this stack. + + + Remove the top context from this stack, and return + it to the caller. If this stack is empty then an + empty string (not ) is returned. + + + + + + Pushes a new context message into this stack. + + The new context message. + + An that can be used to clean up the context stack. + + + + Pushes a new context onto this stack. An + is returned that can be used to clean up this stack. This + can be easily combined with the using keyword to scope the + context. + + + Simple example of using the Push method with the using keyword. + + using(log4net.ThreadContext.Stacks["NDC"].Push("Stack_Message")) + { + log.Warn("This should have an ThreadContext Stack message"); + } + + + + + + Gets the current context information for this stack. + + The current context information. + + + + Gets and sets the internal stack used by this + + The internal storage stack + + + This property is provided only to support backward compatability + of the . Tytpically the internal stack should not + be modified. + + + + + + Gets the current context information for this stack. + + Gets the current context information + + + Gets the current context information for this stack. + + + + + + Get a portable version of this object + + the portable instance of this object + + + Get a cross thread portable version of this object + + + + + + Inner class used to represent a single context frame in the stack. + + + + Inner class used to represent a single context frame in the stack. + + + + + + Constructor + + The message for this context. + The parent context in the chain. + + + Initializes a new instance of the class + with the specified message and parent context. + + + + + + Get the message. + + The message. + + + Get the message. + + + + + + Gets the full text of the context down to the root level. + + + The full text of the context down to the root level. + + + + Gets the full text of the context down to the root level. + + + + + + Struct returned from the method. + + + + This struct implements the and is designed to be used + with the pattern to remove the stack frame at the end of the scope. + + + + + + The ThreadContextStack internal stack + + + + + The depth to trim the stack to when this instance is disposed + + + + + Constructor + + The internal stack used by the ThreadContextStack. + The depth to return the stack to when this object is disposed. + + + Initializes a new instance of the class with + the specified stack and return depth. + + + + + + Returns the stack to the correct depth. + + + + Returns the stack to the correct depth. + + + + + + Implementation of Stacks collection for the + + + + Implementation of Stacks collection for the + + + Nicko Cadell + + + + Internal constructor + + + + Initializes a new instance of the class. + + + + + + Gets the named thread context stack + + + The named stack + + + + Gets the named thread context stack + + + + + + The fully qualified type of the ThreadContextStacks class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Utility class for transforming strings. + + + + Utility class for transforming strings. + + + Nicko Cadell + Gert Driesen + + + + Initializes a new instance of the class. + + + + Uses a private access modifier to prevent instantiation of this class. + + + + + + Write a string to an + + the writer to write to + the string to write + The string to replace non XML compliant chars with + + + The test is escaped either using XML escape entities + or using CDATA sections. + + + + + + Replace invalid XML characters in text string + + the XML text input string + the string to use in place of invalid characters + A string that does not contain invalid XML characters. + + + Certain Unicode code points are not allowed in the XML InfoSet, for + details see: http://www.w3.org/TR/REC-xml/#charsets. + + + This method replaces any illegal characters in the input string + with the mask string specified. + + + + + + Count the number of times that the substring occurs in the text + + the text to search + the substring to find + the number of times the substring occurs in the text + + + The substring is assumed to be non repeating within itself. + + + + + + Characters illegal in XML 1.0 + + + + + Type converter for Boolean. + + + + Supports conversion from string to bool type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Exception base type for conversion errors. + + + + This type extends . It + does not add any new functionality but does differentiate the + type of exception being thrown. + + + Nicko Cadell + Gert Driesen + + + + Constructor + + + + Initializes a new instance of the class. + + + + + + Constructor + + A message to include with the exception. + + + Initializes a new instance of the class + with the specified message. + + + + + + Constructor + + A message to include with the exception. + A nested exception to include. + + + Initializes a new instance of the class + with the specified message and inner exception. + + + + + + Serialization constructor + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + + + Initializes a new instance of the class + with serialized data. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + An instance of the . + + + Creates a new instance of the class. + + + + + + Creates a new instance of the class. + + The conversion destination type. + The value to convert. + A nested exception to include. + An instance of the . + + + Creates a new instance of the class. + + + + + + Register of type converters for specific types. + + + + Maintains a registry of type converters used to convert between + types. + + + Use the and + methods to register new converters. + The and methods + lookup appropriate converters to use. + + + + + Nicko Cadell + Gert Driesen + + + + Private constructor + + + Initializes a new instance of the class. + + + + + Static constructor. + + + + This constructor defines the intrinsic type converters. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type converter to use to convert to the destination type. + + + Adds a converter instance for a specific type. + + + + + + Adds a converter for a specific type. + + The type being converted to. + The type of the type converter to use to convert to the destination type. + + + Adds a converter for a specific type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted from. + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Gets the type converter to use to convert values to the destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + Gets the type converter to use to convert values to the destination type. + + + + + + Lookups the type converter to use as specified by the attributes on the + destination type. + + The type being converted to. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + + Creates the instance of the type converter. + + The type of the type converter. + + The type converter instance to use for type conversions or null + if no type converter is found. + + + + The type specified for the type converter must implement + the or interfaces + and must have a public default (no argument) constructor. + + + + + + The fully qualified type of the ConverterRegistry class. + + + Used by the internal logger to record the Type of the + log message. + + + + + Mapping from to type converter. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an encoding + the encoding + + + Uses the method to + convert the argument to an . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Interface supported by type converters + + + + This interface supports conversion from arbitrary types + to a single target type. See . + + + Nicko Cadell + Gert Driesen + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Test if the can be converted to the + type supported by this converter. + + + + + + Convert the source object to the type supported by this object + + the object to convert + the converted object + + + Converts the to the type supported + by this converter. + + + + + + Interface supported by type converters + + + + This interface supports conversion from a single type to arbitrary types. + See . + + + Nicko Cadell + + + + Returns whether this converter can convert the object to the specified type + + A Type that represents the type you want to convert to + true if the conversion is possible + + + Test if the type supported by this converter can be converted to the + . + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Converts the (which must be of the type supported + by this converter) to the specified.. + + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to an IPAddress + the IPAddress + + + Uses the method to convert the + argument to an . + If that fails then the string is resolved as a DNS hostname. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Valid characters in an IPv4 or IPv6 address string. (Does not support subnets) + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternLayout + the PatternLayout + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Convert between string and + + + + Supports conversion from string to type, + and from a type to a string. + + + The string is used as the + of the . + + + + + + Nicko Cadell + + + + Can the target type be converted to the type supported by this object + + A that represents the type you want to convert to + true if the conversion is possible + + + Returns true if the is + assignable from a type. + + + + + + Converts the given value object to the specified type, using the arguments + + the object to convert + The Type to convert the value parameter to + the converted object + + + Uses the method to convert the + argument to a . + + + + The object cannot be converted to the + . To check for this condition use the + method. + + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a PatternString + the PatternString + + + Creates and returns a new using + the as the + . + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Supports conversion from string to type. + + + + Supports conversion from string to type. + + + + + + Nicko Cadell + + + + Can the source type be converted to the type supported by this object + + the type to convert + true if the conversion is possible + + + Returns true if the is + the type. + + + + + + Overrides the ConvertFrom method of IConvertFrom. + + the object to convert to a Type + the Type + + + Uses the method to convert the + argument to a . + Additional effort is made to locate partially specified types + by searching the loaded assemblies. + + + + The object cannot be converted to the + target type. To check for this condition use the + method. + + + + + Attribute used to associate a type converter + + + + Class and Interface level attribute that specifies a type converter + to use with the associated type. + + + To associate a type converter with a target type apply a + TypeConverterAttribute to the target type. Specify the + type of the type converter on the attribute. + + + Nicko Cadell + Gert Driesen + + + + The string type name of the type converter + + + + + Default constructor + + + + Default constructor + + + + + + Create a new type converter attribute for the specified type name + + The string type name of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + Create a new type converter attribute for the specified type + + The type of the type converter + + + The type specified must implement the + or the interfaces. + + + + + + The string type name of the type converter + + + The string type name of the type converter + + + + The type specified must implement the + or the interfaces. + + + + + + Impersonate a Windows Account + + + + This impersonates a Windows account. + + + How the impersonation is done depends on the value of . + This allows the context to either impersonate a set of user credentials specified + using username, domain name and password or to revert to the process credentials. + + + + + + The impersonation modes for the + + + + See the property for + details. + + + + + + Impersonate a user using the credentials supplied + + + + + Revert this the thread to the credentials of the process + + + + + Default constructor + + + + Default constructor + + + + + + Gets or sets the impersonation mode for this security context + + + The impersonation mode for this security context + + + + Impersonate either a user with user credentials or + revert this thread to the credentials of the process. + The value is one of the + enum. + + + The default value is + + + When the mode is set to + the user's credentials are established using the + , and + values. + + + When the mode is set to + no other properties need to be set. If the calling thread is + impersonating then it will be reverted back to the process credentials. + + + + + + Gets or sets the Windows username for this security context + + + The Windows username for this security context + + + + This property must be set if + is set to (the default setting). + + + + + + Gets or sets the Windows domain name for this security context + + + The Windows domain name for this security context + + + + The default value for is the local machine name + taken from the property. + + + This property must be set if + is set to (the default setting). + + + + + + Sets the password for the Windows account specified by the and properties. + + + The password for the Windows account specified by the and properties. + + + + This property must be set if + is set to (the default setting). + + + + + + Initialize the SecurityContext based on the options set. + + + + This is part of the delayed object + activation scheme. The method must + be called on this object after the configuration properties have + been set. Until is called this + object is in an undefined state and must not be used. + + + If any of the configuration properties are modified then + must be called again. + + + The security context will try to Logon the specified user account and + capture a primary token for impersonation. + + + The required , + or properties were not specified. + + + + Impersonate the Windows account specified by the and properties. + + caller provided state + + An instance that will revoke the impersonation of this SecurityContext + + + + Depending on the property either + impersonate a user using credentials supplied or revert + to the process credentials. + + + + + + Create a given the userName, domainName and password. + + the user name + the domain name + the password + the for the account specified + + + Uses the Windows API call LogonUser to get a principal token for the account. This + token is used to initialize the WindowsIdentity. + + + + + + Adds to + + + + Helper class to expose the + through the interface. + + + + + + Constructor + + the impersonation context being wrapped + + + Constructor + + + + + + Revert the impersonation + + + + Revert the impersonation + + + + + diff --git a/Default.aspx b/Default.aspx new file mode 100644 index 0000000..c4b26e6 --- /dev/null +++ b/Default.aspx @@ -0,0 +1,40 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> + + + + + + + + + + + +
+
+
+
+ + diff --git a/Default.aspx.cs b/Default.aspx.cs new file mode 100644 index 0000000..6604e7d --- /dev/null +++ b/Default.aspx.cs @@ -0,0 +1,115 @@ +using BizCom; +using SevenZip; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class _Default : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + + + + //string fileName = "(C2_1975999718512169836)-80x40mm-1000张-不干胶铜版纸烫金覆膜模切--YJSJ-郑凌宇1-四川省-金陵-[C2].cdr"; + //string ctid = MidStrEx(fileName, "(", ")").Trim(); + + // CeErpTradeCell entity=CeErpTradeCell.GetByCtid("C2_1975999718512169836"); + //entity.Update(); + //Response.Write(entity.ctid + "
"); + //if (IntPtr.Size == 4) + //{ + // SevenZipCompressor.SetLibraryPath(@"D:\fireant\ecomerp\UploadWeb\Bin\x64\7z.dll"); + //} + //else + //{ + // SevenZipCompressor.SetLibraryPath(@"D:\fireant\ecomerp\UploadWeb\Bin\x86\7z.dll"); + //} + //SevenZipCompressor.SetLibraryPath(@"D:\fireant\ecomerp\UploadWeb\Bin\x64\7z.dll"); + //SevenZipExtractor.SetLibraryPath(@"\x64\7z.dll"); + + //SevenZip.SevenZipExtractor + + //LibraryFeature lf = SevenZipExtractor.CurrentLibraryFeatures; + SevenZipExtractor.SetLibraryPath(Server.MapPath("bin\\7z.dll")); + //var path = Path.Combine(Server.MapPath("bin"), Environment.Is64BitProcess ? "x64" : "x86", "7z.dll"); + //SevenZip.SevenZipBase.SetLibraryPath(path); + //SevenZipExtractor.SetLibraryPath(path); + + //using (SevenZipExtractor szExtra = new SevenZipExtractor("d:\\4.rar")) + // { + //szExtra.ExtractArchive("d:\\temp"); + // foreach (string afn in szExtra.ArchiveFileNames) + //{ + //if (afn.IndexOf("123123", StringComparison.OrdinalIgnoreCase) != -1) + // szExtra.ExtractFiles("d:\\temp", afn); + // } + //} + } + + + private void CdrExportPng(string path, string cdrFile) +{ +if (!File.Exists(cdrFile)) +{ + Response.Write("找不到文件:"+cdrFile); + return; +} +string fname = path + "\\" + Path.GetFileNameWithoutExtension(cdrFile) + ".png"; +CorelDRAW.Application cdr = new CorelDRAW.Application(); +cdr.OpenDocument(cdrFile, 1); +object obj = new object(); +Response.Write(Utils.Serialization.JsonString.Convert(cdr.ActiveDocument.ActiveLayer.Shapes[0])); +return; +cdr.ActiveDocument.ExportBitmap( + fname, + CorelDRAW.cdrFilter.cdrPNG, + CorelDRAW.cdrExportRange.cdrCurrentPage, + CorelDRAW.cdrImageType.cdrRGBColorImage, + 0, 0, 72, 72, + CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing, + false, + true, + true, + false, + CorelDRAW.cdrCompressionType.cdrCompressionNone, + null).Finish(); +cdr.ActiveDocument.Close(); +cdr.Quit(); +} + +public static string MidStrEx(string sourse, string startstr, string endstr) +{ +string result = string.Empty; +int startindex, endindex; +try +{ + startindex = sourse.IndexOf(startstr); + if (startindex == -1) + return result; + string tmpstr = sourse.Substring(startindex + startstr.Length); + endindex = tmpstr.IndexOf(endstr); + if (endindex == -1) + return result; + result = tmpstr.Remove(endindex); +} +catch (Exception ex) +{ + Console.WriteLine("MidStrEx Err:" + ex.Message); +} +return result; +} + +private string formatMemo(object memo) +{ +string m = memo.ToString(); +m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); +return m; +} +} \ No newline at end of file diff --git a/Global.asax b/Global.asax new file mode 100644 index 0000000..63ac2c2 --- /dev/null +++ b/Global.asax @@ -0,0 +1,79 @@ +<%@ Application Language="C#" %> +<%@ Import Namespace="Castle.ActiveRecord" %> +<%@ Import Namespace="Castle.ActiveRecord.Framework.Config" %> +<%@ Import Namespace="BizCom" %> +<%@ Import Namespace="Utils" %> +<%@ Import Namespace="System.Threading" %> + diff --git a/NeedDownList.aspx b/NeedDownList.aspx new file mode 100644 index 0000000..76ded41 --- /dev/null +++ b/NeedDownList.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="NeedDownList.aspx.cs" Inherits="NeedDownList" %> diff --git a/NeedDownList.aspx.cs b/NeedDownList.aspx.cs new file mode 100644 index 0000000..8c6c0e1 --- /dev/null +++ b/NeedDownList.aspx.cs @@ -0,0 +1,54 @@ +using SiteCore.Redis; +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class NeedDownList : System.Web.UI.Page +{ + + private void conSuc(string msg) + { + Response.Clear(); + Response.ClearContent(); + Response.ClearHeaders(); + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conErc(string msg) + { + Response.Clear(); + Response.ClearContent(); + Response.ClearHeaders(); + Response.Write("{\"type\":\"error\",\"result\":\"" + msg + "!\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + + int userId = 0; + if (Request["userid"] != null) + { + userId = Convert.ToInt32(Request["userid"]); + } + + if (userId<=0) + { + conErc("缺少必要的参数"); + return; + } + + string key = "file_client_down_list_" + userId; + string data = erpRedis.RedisHelper.ListRightPop(key); + if (data == null) + data = ""; + + conSuc(data); + } + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29 diff --git a/UploadWeb.sln b/UploadWeb.sln new file mode 100644 index 0000000..17e95c2 --- /dev/null +++ b/UploadWeb.sln @@ -0,0 +1,41 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.7.34221.43 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "UploadWeb(1)", ".", "{ED18D3B6-538B-47CA-9CFA-60B890612930}" + ProjectSection(WebsiteProperties) = preProject + TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.8.1" + Debug.AspNetCompiler.VirtualPath = "/localhost_54673" + Debug.AspNetCompiler.PhysicalPath = "..\UploadWeb\" + Debug.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_54673\" + Debug.AspNetCompiler.Updateable = "true" + Debug.AspNetCompiler.ForceOverwrite = "true" + Debug.AspNetCompiler.FixedNames = "false" + Debug.AspNetCompiler.Debug = "True" + Release.AspNetCompiler.VirtualPath = "/localhost_54673" + Release.AspNetCompiler.PhysicalPath = "..\UploadWeb\" + Release.AspNetCompiler.TargetPath = "PrecompiledWeb\localhost_54673\" + Release.AspNetCompiler.Updateable = "true" + Release.AspNetCompiler.ForceOverwrite = "true" + Release.AspNetCompiler.FixedNames = "false" + Release.AspNetCompiler.Debug = "False" + VWDPort = "54673" + SlnRelativePath = "..\UploadWeb\" + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ED18D3B6-538B-47CA-9CFA-60B890612930}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED18D3B6-538B-47CA-9CFA-60B890612930}.Debug|Any CPU.Build.0 = Debug|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5D88026A-4AC6-4787-B9F4-B6EDE7C80384} + EndGlobalSection +EndGlobal diff --git a/Web.config b/Web.config new file mode 100644 index 0000000..33760bc --- /dev/null +++ b/Web.config @@ -0,0 +1,146 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Web.config.bak b/Web.config.bak new file mode 100644 index 0000000..049318c --- /dev/null +++ b/Web.config.bak @@ -0,0 +1,145 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/autocopy.aspx b/autocopy.aspx new file mode 100644 index 0000000..e85ce49 --- /dev/null +++ b/autocopy.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="autocopy.aspx.cs" Inherits="autocopy" %> \ No newline at end of file diff --git a/autocopy.aspx.cs b/autocopy.aspx.cs new file mode 100644 index 0000000..912c1ee --- /dev/null +++ b/autocopy.aspx.cs @@ -0,0 +1,363 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using SQLData; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Text; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class autocopy : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + private void conErc(string msg) + { + Response.Write("{\"type\":\"error\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (Request["hexdata"] != null) + { + + string tids = Request["hexdata"]; + if (tids.Trim() == "") + { + conErc("无法下载"); + return; + } + int userId = 0; + if (Request["userid"] != null) + { + userId = Convert.ToInt32(Request["userid"]); + } + try + { + string[] tArr = tids.Split(','); + if (tArr.Length != 2) + { + conErc("订单ID不对,无法下载"); + return; + } + string oldctid = tArr[0].ToString(); + string newctid = tArr[1].ToString(); + + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierId,SupplierName from view_erptradecell where ctid='{0}'", oldctid); + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单" + oldctid); + return; + } + StringBuilder sqlnew = new StringBuilder(); + sqlnew.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierId,SupplierName,orderSn from view_erptradecell where (orderstate=3 or orderstate=4) and ctid='{0}'", newctid); + DataTable dtnew = CeErpTradeCell.ExecuteDataset(sqlnew.ToString()).Tables[0]; + if (dtnew == null || dtnew.Rows.Count < 1) + { + conErc("没有找到相关new新订单" + newctid); + return; + } + List files = new List(); + string oldDesignTime = ""; + string oldFilename = ""; + + string df_name = ""; + string[] extArr = new string[] { ".cdr", ".zip", ".rar", ".pdf" }; + string oldTag = ".cdr"; + List noFileLst = new List(); + List errorFileLst = new List(); + DataRow dr = dt.Rows[0]; + + if (dr["FinishDesignTime"].ToString() == "") + { + conErc("没有找到相关old老订单附件,FinishDesignTime为空"); + return; + } + DateTime ftime = Convert.ToDateTime(dr["FinishDesignTime"]); + DateTime splitTime = new DateTime(2023, 06, 27, 15, 30, 0); + if (ftime.CompareTo(splitTime) > 0) + { + oldDesignTime = getDesignTimeWithDay(dr["FinishDesignTime"]); + } + else + oldDesignTime = getDesignTime(dr["FinishDesignTime"]); + //oldDesignTime = getDesignTime(dr["FinishDesignTime"]); + df_name = upPath + "\\" + oldDesignTime + "\\" + formatMemo(dr["seller_memo"]); + foreach (string ext in extArr) + { + oldFilename = df_name + ext; + oldTag = ext; + if (File.Exists(oldFilename)) + { + break; + //if (!isUpdateError) + //{ + // files.Add(fname); + // copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + // fc++; + //} + } + else + oldFilename = ""; + + } + if (oldFilename == "") + { + conErc("没有找到相关old老订单附件"); + return; + //noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + + } + //if (hasFile) + //{ + // fname = upPath + "\\" + dTime + "\\" + formatMemo(dr["seller_memo"]) + ".png"; + // if (File.Exists(fname)) + // { + // files.Add(fname); + // copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + // } + //} + + + + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", tids, (int)OrderState.下单完成, userId, "下载设计文件"); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo not like '%电子稿%' ;", (int)OrderState.下单完成, tids, (int)OrderState.设计完成); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo like '%电子稿%' ;", (int)OrderState.已发货, tids, (int)OrderState.设计完成); + + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + DataRow newDr = dtnew.Rows[0]; + string newMemo = newDr["seller_memo"].ToString(); + newMemo = newMemo.Replace("(", "("); + newMemo = newMemo.Replace(")", ")"); + string newmemoctid = MidStrEx(newMemo, "(", ")").Trim(); + string orderSn = newDr["orderSn"].ToString(); + if (newctid.IndexOf("C") != -1) + { + /*if (newMemo.IndexOf("[") != -1 && newMemo.IndexOf("C") != -1) + { + if (newmemoctid.IndexOf("S_") != -1) // (S_S_1962772776865084101)[C1] 对应ctid是 S_S_C1_1962772776865084101 + { + int lastIndex = newmemoctid.LastIndexOf("S_"); //最后一个S_的位置 + string sPre = newmemoctid.Substring(0, lastIndex + 2); //S_S_ + string initTid = newmemoctid.Substring(lastIndex + 2, newmemoctid.Length - lastIndex - 2); //1962772776865084101 + + string pre_ctid = MidStrEx(newMemo, "[", "]"); //C1 + if (pre_ctid.IndexOf("+") != -1) + { + pre_ctid = "C" + pre_ctid.Split('+')[1]; + } + newmemoctid = sPre + pre_ctid + "_" + initTid; //S_S_ + C1 + _ +1962772776865084101 + } + else + { + string pre_ctid = MidStrEx(newMemo, "[", "]"); + if (pre_ctid.IndexOf("+") != -1) + { + pre_ctid = "C" + pre_ctid.Split('+')[1]; + } + if (newmemoctid.IndexOf('C') == -1) + { + newmemoctid = pre_ctid + "_" + newmemoctid; + } + } + + }*/ + } + if (string.IsNullOrEmpty(newmemoctid)) + { + conErc("上传的文件名格式不正确"); + return; + } + if (orderSn != newmemoctid) + { + conErc("新订单备注中的订单号不正确"); + return; + } + string newUpDesignTime = getDesignTimeWithDay(DateTime.Now); + //string newDfName = upPath + "\\" + newUpDesignTime + "\\" + formatMemo(newDr["seller_memo"])+oldTag; + string newPathFileName = ""; + copyUpFile(newUpDesignTime, oldFilename, formatMemo(newDr["seller_memo"]) + oldTag, ref newPathFileName); + //copyFile(getDesignDate(DateTime.Now), dr["SupplierName"].ToString(), oldFilename, formatMemo(newDr["seller_memo"]) + oldTag); + + CeErpTradeCell.UpdateRelationOrder(newctid); + StringBuilder up_sql = new StringBuilder(); + up_sql.AppendFormat("update ce_erptradecell with(rowlock) set orderstate=5,IsReturn=0,StartDesignTime=getdate(),SupplierId={1},FinishDesignTime=getdate() where ctid='{0}'", newctid, dr["SupplierId"]); + CeErpTradeCell.ExecuteNonQuery(up_sql.ToString()); + if (oldTag == ".cdr") + { + //string sqlpng = string.Format("insert into s_cdrtopng(name,addtime)values('{0}',getdate()) ;", newPathFileName); + //CeErpTradeLog.ExecuteNonQuery(sqlpng); + } + CeErpTradeLog.AddLog(newctid, 5, userId, "自动上传老客户文件-" + newPathFileName); + + conSuc("文件已上传到共享目录"); + return; + } + catch (Exception ex) + { + conErc("错误的下载访问" + ex.Message); + XLog.SaveLog(0, "autocopydown," + ex.Message); + return; + } + } + } + + public static string MidStrEx(string sourse, string startstr, string endstr) + { + string result = string.Empty; + int startindex, endindex; + try + { + startindex = sourse.IndexOf(startstr); + if (startindex == -1) + return result; + string tmpstr = sourse.Substring(startindex + startstr.Length); + endindex = tmpstr.IndexOf(endstr); + if (endindex == -1) + return result; + result = tmpstr.Remove(endindex); + } + catch (Exception ex) + { + Console.WriteLine("MidStrEx Err:" + ex.Message); + } + return result; + } + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyUpFile(string date, string oldfile, string newfilename, ref string newPathFileName) + { + try + { + string path = upPath + "\\" + date; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + //string fname = Path.GetFileName(file); + File.Copy(oldfile, path + "\\" + newfilename, true); + newPathFileName = path + "\\" + newfilename; + if (!File.Exists(path + "\\" + newfilename)) + { + File.Copy(oldfile, path + "\\" + newfilename, true); + } + } + catch (Exception ex) + { + XLog.SaveLog(0, "自动复制上传文件发生错误," + newfilename + "," + ex.Message); + throw ex; + } + + } + + private void copyFile(string date, string supplier, string oldfile, string newFileName) + { + try + { + string path = copyPath + "\\" + date + "\\" + supplier; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + //string fname = Path.GetFileName(file); + File.Copy(oldfile, path + "\\" + newFileName, true); + if (!File.Exists(path + "\\" + newFileName)) + { + File.Copy(oldfile, path + "\\" + newFileName, true); + } + } + catch (Exception ex) + { + XLog.SaveLog(0, "自动复制下载文件发生错误," + oldfile + "," + ex.Message); + } + + } + + private string getDesignTime(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMM"); + } + private string getDesignTimeWithDay(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMMdd"); + } + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd"); + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(List files, string zipFileName) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName)); + Response.BinaryWrite(buffer); + Page.Response.Flush(); + Page.Response.SuppressContent = true; + HttpContext.Current.ApplicationInstance.CompleteRequest(); + //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "alert('123');", true); + //Response.Flush(); + //Response.End(); + } + + private void downLoadFile(string file) + { + string filePath = Server.MapPath("d/" + file);//路径 + + //以字符流的形式下载文件 + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开 + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file, System.Text.Encoding.UTF8)); + Response.BinaryWrite(bytes); + Response.Flush(); + Response.End(); + } +} + diff --git a/caiyintongload.aspx b/caiyintongload.aspx new file mode 100644 index 0000000..66e8eac --- /dev/null +++ b/caiyintongload.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="caiyintongload.aspx.cs" Inherits="caiyingtongload" %> \ No newline at end of file diff --git a/caiyintongload.aspx.cs b/caiyintongload.aspx.cs new file mode 100644 index 0000000..be067dd --- /dev/null +++ b/caiyintongload.aspx.cs @@ -0,0 +1,654 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using Newtonsoft.Json.Linq; +using SiteCore.Redis; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Net.Security; +using System.Net; +using System.Text; +using System.Web; +using System.Web.UI; +using System.Security.Cryptography.X509Certificates; +using Utils; +using System.Runtime.InteropServices; +using NPOI.OpenXmlFormats.Shared; + +public partial class caiyingtongload : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + + public static string siteUrl = ConfigurationManager.AppSettings["OriSiteUrl"]; + [DllImport("DrvInterface64.dll", CharSet = CharSet.Unicode)] + public static extern uint DecFile(string filename); + + [DllImport("DrvInterface64.dll", CharSet = CharSet.Unicode)] + public static extern int IsFileEncrypted(string filename);//返回1为加密,0为未被加密 + [DllImport("DrvInterface64.dll", CharSet = CharSet.Ansi)] + public static extern void CreateUserKey(StringBuilder key, int len); + [DllImport("DrvInterface64.dll", CharSet = CharSet.Ansi)] + public static extern int InitAesKey(StringBuilder key, int len); + + [DllImport("DrvInterface64.dll")] + public static extern int IsInitedAesKey(); + + private void conErc(string msg) + { + if (msg.IndexOf("访问远程主机") == -1) + { + XLog.SaveLog(0, msg); + } + Response.Write(msg); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + Response.Buffer = true; + downloadcayingtonge(); + } + } + + private string getCanDownFile(string fileName) + { + string[] extArr = new string[] { ".cdr", ".zip", ".rar" }; + foreach (string ext in extArr) + { + string fname = fileName + ext; + if (File.Exists(fname)) + { + return fname; + } + } + + return ""; + } + + private void updateIsDownSuccess(int userId, string ctid) + { + try + { + XLog.SaveLog(0, "updateIsDownSuccess ,ctid:" + ctid); + + SqlParameter[] sqlParameter ={ + new SqlParameter("@mainctids", SqlDbType.VarChar,500), + new SqlParameter("@userid", SqlDbType.VarChar,4), + new SqlParameter("@res", SqlDbType.VarChar, 4000) + }; + sqlParameter[0].Value = ctid; + sqlParameter[1].Value = userId; + sqlParameter[2].Direction = ParameterDirection.Output; + CeErpTradeCell.ExecuteDataSetStore("sp_set_download", sqlParameter); + + CeErpTradeCell.UpdateRelationOrder(ctid); + } + catch (Exception ex) + { + //errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + XLog.SaveLog(0, "下载发生错误,ctid:" + ctid + "," + ex.Message); + } + } + + private void downloadcayingtonge() + { + string tids = Request["hexdata"]; + int onlyDownFile = 0;//只下文件 + if (Request["onlyfile"] != null) + { + Int32.TryParse(Request["onlyfile"], out onlyDownFile); + } + int cyt = 0; + if (Request["cyt"] != null) + { + Int32.TryParse(Request["cyt"], out cyt); + } + int userId = 0; + if (Request["userid"] != null) + { + Int32.TryParse(Request["userid"], out userId); + } + String ui = ""; + if (cyt == 1) + { + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName,FileMd5,IsSF from view_erptradecell where FinishDesignTime is not null and ctid in ({0}) {1}", ("'" + tids.Replace(",", "','") + "'"), ((onlyDownFile == 1) ? "" : " and OrderState=5 ")); + + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + List files = new List(); + List noFileLst = new List(); + List ctidLst = new List(); + foreach (DataRow dr in dt.Rows) + { + string fileMd5 = "", fileNames = ""; + String seller_memo = ""; + int ISSF = 0; + string finishDesignTime = getDesignTime(dr["FinishDesignTime"]); + + string df_name = upPath + "\\" + finishDesignTime + "\\" + formatMemo(dr["seller_memo"]); + + if (!Convert.IsDBNull(dr["seller_memo"])) + { + seller_memo = dr["seller_memo"].ToString(); + } + if (!Convert.IsDBNull(dr["IsSF"])) + { + ISSF = Convert.ToInt32(dr["IsSF"] == null ? 0 : dr["IsSF"]); + } + string fname = getCanDownFile(df_name); + if (string.IsNullOrEmpty(fname)) + { + noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + ui += dr["ctid"].ToString() + "未找到附件,"; + continue; + } + + files.Add(fname); + ctidLst.Add(dr["ctid"].ToString()); + + fileMd5 += "," + dr["FileMd5"].ToString(); + fileNames += Path.GetFileName(fname); + + + String er = downLoadFiles(userId, dr["ctid"].ToString(), fname, fileNames, seller_memo, ISSF); + if (er.Contains("成功")) + { + copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + } + ui += er + ","; + + } + conSuc(ui); + } + else + { + conSuc(ui); + } + + } + + + + private void downloadMore() + { + if (Request["hexdata"] == null || Request["hexdata"].Trim() == "") + { + conErc("错误的下载访问"); + return; + } + + string tids = Request["hexdata"]; + int onlyDownFile = 0;//只下文件 + if (Request["onlyfile"] != null) + { + Int32.TryParse(Request["onlyfile"], out onlyDownFile); + } + int cyt = 0; + if (Request["cyt"] != null) + { + Int32.TryParse(Request["cyt"], out cyt); + } + + int userId = 0; + if (Request["userid"] != null) + { + Int32.TryParse(Request["userid"], out userId); + } + + int mvClientDown = 0;//转移到客户端下载 + + int isFromClient = 0; + if (onlyDownFile != 1) + { + if (Request["supplier"] == null || Request["supplier"].ToString() != "1")//如果不是只下文件,那他就要是供应商 + { + conErc("错误的下载访问"); + return; + } + else + { + Int32.TryParse(Request["isFromClient"], out isFromClient); + + if (userId > 0 && isFromClient != 1) + { + string file_client_down_flg = erpRedis.RedisHelper.StringGet("file_client_down_flg_" + userId); + if (file_client_down_flg != null && file_client_down_flg == "1") + { + mvClientDown = 1; + } + } + + } + } + + try + { + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName,FileMd5,IsSF from view_erptradecell where FinishDesignTime is not null and ctid in ({0}) {1}", ("'" + tids.Replace(",", "','") + "'"), ((onlyDownFile == 1 || isFromClient == 1) ? "" : " and OrderState=5 ")); + + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + + string fileMd5 = "", fileNames = ""; + String seller_memo = ""; + int ISSF = 0; + List files = new List(); + List noFileLst = new List(); + List ctidLst = new List(); + foreach (DataRow dr in dt.Rows) + { + string finishDesignTime = getDesignDate(dr["FinishDesignTime"]); + + string df_name = upPath + "\\" + finishDesignTime + "\\" + formatMemo(dr["seller_memo"]); + + if (!Convert.IsDBNull(dr["seller_memo"])) + { + seller_memo = dr["seller_memo"].ToString(); + } + if (!Convert.IsDBNull(dr["IsSF"])) + { + ISSF = Convert.ToInt32(dr["IsSF"] == null ? 0 : dr["IsSF"]); + } + string fname = getCanDownFile(df_name); + if (string.IsNullOrEmpty(fname)) + { + noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + continue; + } + + files.Add(fname); + ctidLst.Add(dr["ctid"].ToString()); + + fileMd5 += "," + dr["FileMd5"].ToString(); + fileNames += "#$#" + Path.GetFileName(fname); + + if (onlyDownFile != 1 && mvClientDown != 1) + copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + } + + if (files.Count == 0) + { + conErc("没有找到相关的设计附件"); + return; + } + + if (noFileLst.Count > 0) + { + string tips = ""; + string notids = string.Join(",", noFileLst.ToArray()); + sql = new StringBuilder(); + sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", notids, (int)OrderState.下单完成, 0, "找不到设计文件"); + CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += "找不到文件,单号:" + notids; + + conErc(tips); + return; + } + + if (mvClientDown == 1) + { + for (int i = 0; i < files.Count; i++) + { + if (onlyDownFile != 1) + updateIsDownSuccess(userId, ctidLst[i]); + } + + string key = "file_client_down_list_" + userId; + string data = "{\"hexdata\":\"" + tids + "\",\"fileMd5\":\"" + fileMd5.Substring(1) + "\",\"supplier\":\"" + + (Request["supplier"] != null ? Request["supplier"].ToString() : "0") + "\",\"fileName\":\"" + System.Web.HttpUtility.UrlEncode(fileNames, System.Text.Encoding.GetEncoding("GB2312")) + "\"}"; + erpRedis.RedisHelper.ListLeftPush(key, data); + return; + } + + if (files.Count == 1) + { + downLoadFile(userId, ctidLst[0], files[0], onlyDownFile, isFromClient); + if (cyt == 1) + { + downLoadFiles(userId, ctidLst[0], files[0], fileNames, seller_memo, ISSF); + } + } + else + { + ZipFileDownload(userId, ctidLst, files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip", onlyDownFile, isFromClient); //downLoadFile(userId, ctidLst[i], files[i]); + } + + //conSuc("文件已下载完成"); + return; + } + catch (Exception ex) + { + conErc("错误的下载访问" + ex.Message); + + + return; + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyFile(string date, string supplier, string file) + { + string path = copyPath + "\\" + date + "\\" + supplier + "\\" + "车间下载"; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + File.Copy(file, path + "\\" + fname, true); + if (!File.Exists(path + "\\" + fname)) + { + File.Copy(file, path + "\\" + fname, true); + } + } + + private string getDesignTime(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMMdd"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + /*if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd");*/ + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(int userId, List ctidLst, List files, string zipFileName, int onlyDownFile, int isFromClient) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(zipFileName)); + + Response.BinaryWrite(buffer); + Page.Response.Flush(); + + for (int i = 0; i < files.Count; i++) + { + if (onlyDownFile != 1 && isFromClient != 1) + updateIsDownSuccess(userId, ctidLst[i]); + XLog.SaveLog(userId, files[i] + " is success"); + } + } + + //public static object downfileObj = new object(); + private void downLoadFile(int userId, string ctid, string file, int onlyDownFile, int isFromClient) + { + XLog.SaveLog(userId, file); + + string filePath = file; + string dfile = Path.GetFileName(file); + + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + + + Response.Clear(); + // + Response.ClearContent(); + Response.ClearHeaders(); + + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开\\fileDownload=true; path=/ + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/;"); + //Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(dfile, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", bytes.Length.ToString()); + Response.BinaryWrite(bytes); + Response.Flush(); + + if (onlyDownFile != 1 && isFromClient != 1) + updateIsDownSuccess(userId, ctid); + + XLog.SaveLog(userId, file + " is success"); + + } + + + + private String downLoadFiles(int userId, string ctid, string file, String fileNames, String seller_memo, int ISSF) + { + int IsFileEncrypt = IsFileEncrypted(file); + if (IsFileEncrypt == 1 && File.Exists(file)) + { + string key = "gBQnlxiBb7MthH9644V0W0pFwqYZgyy7"; + var sb = new StringBuilder(key); + + //Linux系统的接口要调用一次,Windows系统要调用两次 + CreateUserKey(sb, key.Length); + CreateUserKey(sb, key.Length); //破解用dse生成的文件,需要调2次。 + int result = InitAesKey(sb, sb.Length); + result = IsInitedAesKey(); + if (result != 1) + { + addLog(ctid, userId, "初始化秘钥失败" + result, 0); + return ctid + "调用失败"; + } + uint a = DecFile(file); + if (a != 0) + { + addLog(ctid, userId, "解密失败" + a, 0); + return ctid + "调用失败"; + } + } + int Isshunfen = 2; + int Isjifu = 1; + if (ISSF > 0) + { + Isshunfen = 1; + } + if (ISSF == 2) + { + Isjifu = 0; + } + UpLoadFile uf = new UpLoadFile(); + string YEAR = DateTime.Now.Year.ToString(); + string MONTH = DateTime.Now.Month.ToString(); + string DAY = DateTime.Now.Day.ToString(); + string strid = Guid.NewGuid().ToString("N"); + string fileExtension = Path.GetExtension(fileNames);//文件格式 + string finalfilename = strid + Path.GetExtension(fileNames);// ".cdr"; + string onlinepathfilename = "Uploads/temp/" + YEAR + "-" + MONTH + "-" + DAY + "/" + finalfilename; + uf.uploadFilName(file, onlinepathfilename); + string output = fileExtension.Replace(".", ""); // 移除点(.) + CeErpTradeCell ce = new CeErpTradeCell(); + ce = CeErpTradeCell.GetByCtid(ctid); + if (ce.ReturnReason != "")//打回先取消 + { + try + { + cancelOrder(ctid); + } + catch (Exception ex) + { + addLog(ctid, userId, "订单取消失败" + ex.ToString(), 0); + } + } + + if (ce.OrderState == 5) + { + JObject jsonObject = new JObject + { + { "Userid", "77886" }, + { "pwd", "lt666888" }, + { "FileId", strid }, + { "ext", output }, + { "platformorder", ce.tid },//淘宝单号 + { "Filename", fileNames }, + { "Isshunfen", Isshunfen }, + { "Isjifu", Isjifu }, + { "LTOrderId", ce.ctid } + }; + + string response = HttpPost("http://www.kiy.cn/m-mobile/autobaojia/LTInsertNewOrder", jsonObject.ToString()); + JObject jsonObjects = JObject.Parse(response); + string msg = (string)jsonObjects["msg"]; + if (msg == "插入订单成功") + { + string sql_pay = "INSERT INTO CE_CaiYingTongLog (ctid, ctime,type,msg) VALUES ('" + ctid + "', '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'," + 0 + ",'" + msg + "');"; + CeErpTradeCell.ExecuteNonQuery(sql_pay.ToString()); + addLog(ctid, userId, "上传彩印通接口成功:" + msg, ce.OrderState); + if (ce != null) + { + ce.FinishPlaceTime = DateTime.Now; + ce.OrderState = 6; + ce.IsReturn = 0; + ce.PlaceUserId = userId; + ce.Update(); + + CeErpTradeLog logenty = new CeErpTradeLog(); + logenty.tid = ctid; + logenty.OrderState = 6; + logenty.UserId = userId; + logenty.OperateTime = DateTime.Now; + logenty.Con = "下载设计文件"; + logenty.Create(); + } + return ctid + "上传成功"; + } + else + { + string sql_pay = "INSERT INTO CE_CaiYingTongLog (ctid, ctime,type,msg) VALUES ('" + ctid + "', '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "'," + 1 + ",'" + msg + "');"; + CeErpTradeCell.ExecuteNonQuery(sql_pay.ToString()); + addLog(ctid, userId, "上传彩印通接口失败:" + msg, ce.OrderState); + XLog.SaveLog(userId, ctid + "订单下单接口调用失败!" + msg); + return ctid + "调用失败"; + } + } + return ctid + "调用失败"; + } + + public static void cancelOrder(string ctid) + { + JObject jsonObject = new JObject + { + { "Userid", "77886" }, + { "pwd", "lt666888" }, + { "LTOrderId", ctid } + }; + string response = HttpPost("http://www.kiy.cn/m-mobile/autobaojia/LTCancelOrder", jsonObject.ToString()); + } + public static void addLog(string ctid, int userid, string con, int orderState = 0, int aftersaleState = 0) + { + CeErpTradeLog log = new CeErpTradeLog(); + log.tid = ctid; + log.UserId = userid; + log.Con = con; + log.OrderState = orderState; + log.AfterSaleState = aftersaleState; + log.OperateTime = DateTime.Now; + log.Create(); + } + public static string HttpPost(string url, string param = null) + { + HttpWebRequest request; + //如果是发送HTTPS请求 + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult); + request = WebRequest.Create(url) as HttpWebRequest; + request.ProtocolVersion = HttpVersion.Version10; + } + else + { + request = WebRequest.Create(url) as HttpWebRequest; + } + + request.Method = "POST"; + request.ContentType = "application/json"; + request.Accept = "*/*"; + request.Timeout = 120000; + request.AllowAutoRedirect = false; + + + + StreamWriter requestStream = null; + WebResponse response = null; + string responseStr = null; + + try + { + requestStream = new StreamWriter(request.GetRequestStream()); + requestStream.Write(param); + requestStream.Close(); + + response = request.GetResponse(); + if (response != null) + { + StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); + responseStr = reader.ReadToEnd(); + reader.Close(); + } + } + catch (Exception ex) + { + return ex.Message; + } + finally + { + request = null; + requestStream = null; + response = null; + } + + return responseStr; + } + + + private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) + { + return true; //总是接受 + } +} \ No newline at end of file diff --git a/copydownload.aspx b/copydownload.aspx new file mode 100644 index 0000000..b07d5d7 --- /dev/null +++ b/copydownload.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="copydownload.aspx.cs" Inherits="copydownload" %> \ No newline at end of file diff --git a/copydownload.aspx.cs b/copydownload.aspx.cs new file mode 100644 index 0000000..c4f1edb --- /dev/null +++ b/copydownload.aspx.cs @@ -0,0 +1,365 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using SQLData; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Text; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class copydownload : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + private void conErc(string msg) + { + Response.Write("{\"type\":\"error\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (Request["hexdata"] != null) + { + + string tids = Request["hexdata"]; + if (tids.Trim() == "") + { + conErc("无法下载"); + return; + } + int userId = 0; + if (Request["userid"] != null) + { + userId = Convert.ToInt32(Request["userid"]); + } + try + { + string[] tArr = tids.Split(','); + List tLst = new List(); + foreach (string id in tArr) + { + tLst.Add("'" + id + "'"); + } + tids = string.Join(",", tLst.ToArray()); + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName from view_erptradecell where orderstate=5 and ctid in ({0})", tids); + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + List files = new List(); + string dTime = ""; + string fname = ""; + int fc = 0; + bool hasFile = false; + string df_name = ""; + string[] extArr = new string[] { ".cdr", ".zip", ".rar", ".pdf" }; + List noFileLst = new List(); + List errorFileLst = new List(); + foreach (DataRow dr in dt.Rows) + { + if (dr["FinishDesignTime"].ToString() == "") continue; + hasFile = false; + DateTime ftime = Convert.ToDateTime(dr["FinishDesignTime"]); + DateTime splitTime = new DateTime(2023, 06, 27, 15, 30, 0); + if (ftime.CompareTo(splitTime) > 0) + { + dTime = getDesignTimeWithDay(dr["FinishDesignTime"]);//这个时间以后得按天分文件夹 + } + else + dTime = getDesignTime(dr["FinishDesignTime"]);//上传原来按月分文件夹 + + df_name = upPath + "\\" + dTime + "\\" + formatMemo(dr["seller_memo"]); + foreach (string ext in extArr) + { + fname = df_name + ext; + if (!hasFile) + { + if (File.Exists(fname)) + { + bool isCopyError = false; + double payment = 0; + string ctid = dr["ctid"].ToString(); + CeErpTradeCell entity = CeErpTradeCell.GetByCtid(ctid); + try + { + if (entity != null) + { + payment = entity.payment; + } + hasFile = true; + files.Add(fname); + copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname, payment); + fc++; + } + catch (Exception ex) + { + isCopyError = true; + errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + XLog.SaveLog(0, "复制文件发生错误," + fname + "," + ex.Message); + } + //复制完成后修改数据 + if (!isCopyError) + { + try + { + + if (entity != null) + { + //update ce_erptradecell WITH(ROWLOCK) set FinishPlaceTime = getdate(), OrderState = 6, IsReturn = 0, PlaceUserId = @userid where CHARINDEX(',' + ctid + ',',',' + @mainctids + ',')> 0 and orderstate = 5 and isDianziOrder = 0 + //insert into CE_ErpTradeLog(tid, orderstate, userid, operatetime, con) select ctid,6,@userid,getdate(),'下载设计文件' from ce_erptradecell where CHARINDEX(',' + ctid + ',', ',' + @mainctids + ',') > 0 + entity.FinishPlaceTime = DateTime.Now; + entity.OrderState = 6; + entity.IsReturn = 0; + entity.PlaceUserId = userId; + entity.Update(); + + CeErpTradeLog logenty = new CeErpTradeLog(); + logenty.tid = ctid; + logenty.OrderState = 6; + logenty.UserId = userId; + logenty.OperateTime = DateTime.Now; + logenty.Con = "下载设计文件"; + logenty.Create(); + + CeErpDataSendOrderInfo.createObject(entity.ctid); + } + + SqlParameter[] sqlParameter ={ + new SqlParameter("@mainctids", SqlDbType.VarChar,500), + new SqlParameter("@userid", SqlDbType.VarChar,4), + new SqlParameter("@res", SqlDbType.VarChar, 4000) + }; + sqlParameter[0].Value = dr["ctid"].ToString(); + sqlParameter[1].Value = userId; + sqlParameter[2].Direction = ParameterDirection.Output; + CeErpTradeCell.ExecuteDataSetStore("sp_set_download", sqlParameter); + } + catch (Exception ex) + { + errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + XLog.SaveLog(0, "下载发生错误,ctid:" + dr["ctid"].ToString() + "," + ex.Message); + } + } + } + } + else + { + break; + } + } + if (!hasFile) + { + noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid='{0}' ;", dr["ctid"], (int)OrderState.下单完成, 0, "找不到设计文件"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + //conErc("找不到文件,订单号:" + dr["ctid"]); + //return; + } + //if (hasFile) + //{ + // fname = upPath + "\\" + dTime + "\\" + formatMemo(dr["seller_memo"]) + ".png"; + // if (File.Exists(fname)) + // { + // files.Add(fname); + // copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + // } + //} + + } + if (fc == 0) + { + conErc("没有找到相关的设计附件"); + return; + } + + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", tids, (int)OrderState.下单完成, userId, "下载设计文件"); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo not like '%电子稿%' ;", (int)OrderState.下单完成, tids, (int)OrderState.设计完成); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo like '%电子稿%' ;", (int)OrderState.已发货, tids, (int)OrderState.设计完成); + + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + + foreach (string ctid in tArr) + { + CeErpTradeCell.UpdateRelationOrder(ctid); + } + + if (Request["supplier"] != null && Request["supplier"].ToString() == "1") + { + ZipFileDownload(files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip"); + } + else if (noFileLst.Count > 0 || errorFileLst.Count > 0) + { + string tips = ""; + if (noFileLst.Count > 0) + { + string notids = string.Join(",", noFileLst.ToArray()); + sql = new StringBuilder(); + sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", notids, (int)OrderState.下单完成, 0, "找不到设计文件"); + CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += "找不到文件,单号:" + notids; + } + if (errorFileLst.Count > 0) + { + string ertids = string.Join(",", errorFileLst.ToArray()); + sql = new StringBuilder(); + sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", ertids, (int)OrderState.下单完成, 0, "下载设计文件出错"); + CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += " 复制下载出错,单号:" + ertids; + } + conErc(tips); + } + else + { + conSuc("文件已下载到共享目录"); + } + + return; + } + catch (Exception ex) + { + conErc("复制错误的下载访问"); + XLog.SaveLog(0, "copydown" + ex.Message); + return; + } + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + Dictionary replaceRules = new Dictionary + { + { "皙贝", "白卡" }, + { "睿狐", "莱尼" }, + { "岚蝶", "安格" }, + { "琮纹", "刚古" }, + { "珠光", "珠光" }, + { "溪雪", "珠光" }, + { "雅柔", "雅柔" }, + { "萱姿", "雅柔" }, + { "草香", "草香" }, + { "芳怡", "草香" }, + { "金绒", "牛皮" }, + { "素芸", "棉卡" }, + { "玉蕊", "蛋壳" } + }; + private void copyFile(string date, string supplier, string file, double payment) + { + + string SupName = supplier; + if (payment >= 500) + { + SupName = supplier + "500"; + } + string path = copyPath + "\\" + date + "\\" + SupName; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + foreach (var rule in replaceRules) + { + fname = fname.Replace(rule.Key, rule.Value); + } + File.Copy(file, path + "\\" + fname, true); + if (!File.Exists(path + "\\" + fname)) + { + File.Copy(file, path + "\\" + fname, true); + } + + + } + + private string getDesignTime(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMM"); + } + private string getDesignTimeWithDay(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMMdd"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd"); + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(List files, string zipFileName) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName)); + Response.BinaryWrite(buffer); + Page.Response.Flush(); + Page.Response.SuppressContent = true; + HttpContext.Current.ApplicationInstance.CompleteRequest(); + //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "alert('123');", true); + //Response.Flush(); + //Response.End(); + } + + private void downLoadFile(string file) + { + string filePath = Server.MapPath("d/" + file);//路径 + + //以字符流的形式下载文件 + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开 + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file, System.Text.Encoding.UTF8)); + Response.BinaryWrite(bytes); + Response.Flush(); + Response.End(); + } +} + diff --git a/downCookie.aspx b/downCookie.aspx new file mode 100644 index 0000000..d9c91c1 --- /dev/null +++ b/downCookie.aspx @@ -0,0 +1,18 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="downCookie.aspx.cs" Inherits="downCookie" %> + \ No newline at end of file diff --git a/downCookie.aspx.cs b/downCookie.aspx.cs new file mode 100644 index 0000000..21434cc --- /dev/null +++ b/downCookie.aspx.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class downCookie : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + //Response.AddHeader("Set-Cookie", "fileDownload=true; path=/; HttpOnly;"); + //Page.Response.Flush(); + //Page.Response.SuppressContent = true; + //HttpContext.Current.ApplicationInstance.CompleteRequest(); + } +} \ No newline at end of file diff --git a/download.aspx b/download.aspx new file mode 100644 index 0000000..5c2e780 --- /dev/null +++ b/download.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="download.aspx.cs" Inherits="download" %> \ No newline at end of file diff --git a/download.aspx.cs b/download.aspx.cs new file mode 100644 index 0000000..39ad2bc --- /dev/null +++ b/download.aspx.cs @@ -0,0 +1,348 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using NPOI.OpenXmlFormats.Shared; +using SiteCore.Redis; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Text; +using System.Web; +using System.Web.UI; + +public partial class download : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + + public static string siteUrl = ConfigurationManager.AppSettings["OriSiteUrl"]; + + private void conErc(string msg) + { + if (msg.IndexOf("访问远程主机") == -1) + { + XLog.SaveLog(0, msg); + } + Response.Write(msg); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + Response.Buffer = true; + downloadMore(); + } + } + + private string getCanDownFile(string fileName) + { + string[] extArr = new string[] { ".cdr", ".zip", ".rar", ".pdf" }; + foreach (string ext in extArr) + { + string fname = fileName + ext; + if (File.Exists(fname)) + { + return fname; + } + } + + return ""; + } + + private void updateIsDownSuccess(int userId, string ctid) + { + try + { + + SqlParameter[] sqlParameter ={ + new SqlParameter("@mainctids", SqlDbType.VarChar,500), + new SqlParameter("@userid", SqlDbType.VarChar,4), + new SqlParameter("@res", SqlDbType.VarChar, 4000) + }; + sqlParameter[0].Value = ctid; + sqlParameter[1].Value = userId; + sqlParameter[2].Direction = ParameterDirection.Output; + CeErpTradeCell.ExecuteDataSetStore("sp_set_download", sqlParameter); + + CeErpTradeCell.UpdateRelationOrder(ctid); + } + catch (Exception ex) + { + //errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + XLog.SaveLog(0, "下载发生错误,ctid:" + ctid + "," + ex.Message); + } + } + + + private void downloadMore() + { + if (Request["hexdata"] == null || Request["hexdata"].Trim() == "") + { + conErc("错误的下载访问"); + return; + } + + string tids = Request["hexdata"]; + int onlyDownFile = 0;//只下文件 + if (Request["onlyfile"] != null) + { + Int32.TryParse(Request["onlyfile"], out onlyDownFile); + } + + + int userId = 0; + if (Request["userid"] != null) + { + Int32.TryParse(Request["userid"], out userId); + } + + int mvClientDown = 0;//转移到客户端下载 + + int isFromClient = 0; + if (onlyDownFile != 1) + { + if (Request["supplier"] == null || Request["supplier"].ToString() != "1")//如果不是只下文件,那他就要是供应商 + { + conErc("错误的下载访问"); + return; + } + else + { + Int32.TryParse(Request["isFromClient"], out isFromClient); + + if (userId > 0 && isFromClient != 1) + { + string file_client_down_flg = erpRedis.RedisHelper.StringGet("file_client_down_flg_" + userId); + if (file_client_down_flg != null && file_client_down_flg == "1") + { + mvClientDown = 1; + } + } + + } + } + + try + { + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName,FileMd5 from view_erptradecell where FinishDesignTime is not null and ctid in ({0}) {1}", ("'" + tids.Replace(",", "','") + "'"), ((onlyDownFile == 1 || isFromClient == 1) ? "" : " and OrderState=5 ")); + + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + + string fileMd5 = "", fileNames = ""; + List files = new List(); + List noFileLst = new List(); + List ctidLst = new List(); + foreach (DataRow dr in dt.Rows) + { + string finishDesignTime = ""; + DateTime ftime = Convert.ToDateTime(dr["FinishDesignTime"]); + DateTime splitTime = new DateTime(2023, 06, 27, 15, 30, 0); + if (ftime.CompareTo(splitTime) > 0) + { + finishDesignTime = getDesignTimeWithDay(dr["FinishDesignTime"]);//这个时间以后得按天分文件夹 + } + else + { + finishDesignTime = getDesignTime(dr["FinishDesignTime"]);//上传原来按月分文件夹 + } + string df_name = upPath + "\\" + finishDesignTime + "\\" + formatMemo(dr["seller_memo"]); + string fname = getCanDownFile(df_name); + if (string.IsNullOrEmpty(fname)) + { + noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + continue; + } + + files.Add(fname); + ctidLst.Add(dr["ctid"].ToString()); + + fileMd5 += "," + dr["FileMd5"].ToString(); + fileNames += "#$#" + Path.GetFileName(fname); + + if (onlyDownFile != 1 && mvClientDown != 1) + copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + } + + if (files.Count == 0) + { + conErc("没有找到相关的设计附件"); + return; + } + + if (noFileLst.Count > 0) + { + string tips = ""; + string notids = string.Join(",", noFileLst.ToArray()); + sql = new StringBuilder(); + sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", notids, (int)OrderState.下单完成, 0, "找不到设计文件"); + CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += "找不到文件,单号:" + notids; + + conErc(tips); + return; + } + + if (mvClientDown == 1) + { + for (int i = 0; i < files.Count; i++) + { + if (onlyDownFile != 1) + updateIsDownSuccess(userId, ctidLst[i]); + } + + string key = "file_client_down_list_" + userId; + string data = "{\"hexdata\":\"" + tids + "\",\"fileMd5\":\"" + fileMd5.Substring(1) + "\",\"supplier\":\"" + + (Request["supplier"] != null ? Request["supplier"].ToString() : "0") + "\",\"fileName\":\"" + System.Web.HttpUtility.UrlEncode(fileNames, System.Text.Encoding.GetEncoding("GB2312")) + "\"}"; + erpRedis.RedisHelper.ListLeftPush(key, data); + return; + } + + if (files.Count == 1) + { + downLoadFile(userId, ctidLst[0], files[0], onlyDownFile, isFromClient); + } + else + { + ZipFileDownload(userId, ctidLst, files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip", onlyDownFile, isFromClient); //downLoadFile(userId, ctidLst[i], files[i]); + } + + //conSuc("文件已下载完成"); + return; + } + catch (Exception ex) + { + conErc("错误的下载访问" + ex.Message); + + return; + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyFile(string date, string supplier, string file) + { + string path = copyPath + "\\" + date + "\\" + supplier + "\\" + "车间下载"; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + File.Copy(file, path + "\\" + fname, true); + if (!File.Exists(path + "\\" + fname)) + { + File.Copy(file, path + "\\" + fname, true); + } + } + + private string getDesignTime(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMM"); + } + private string getDesignTimeWithDay(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMMdd"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + /*if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd");*/ + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(int userId, List ctidLst, List files, string zipFileName, int onlyDownFile, int isFromClient) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(zipFileName)); + + Response.BinaryWrite(buffer); + Page.Response.Flush(); + + for (int i = 0; i < files.Count; i++) + { + if (onlyDownFile != 1 && isFromClient != 1) + updateIsDownSuccess(userId, ctidLst[i]); + } + } + + //public static object downfileObj = new object(); + private void downLoadFile(int userId, string ctid, string file, int onlyDownFile, int isFromClient) + { + string filePath = file; + string dfile = Path.GetFileName(file); + + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + + + Response.Clear(); + // + Response.ClearContent(); + Response.ClearHeaders(); + + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开\\fileDownload=true; path=/ + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/;"); + //Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(dfile, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", bytes.Length.ToString()); + Response.BinaryWrite(bytes); + Response.Flush(); + + if (onlyDownFile != 1 && isFromClient != 1) + updateIsDownSuccess(userId, ctid); + + + } + + +} \ No newline at end of file diff --git a/libman.json b/libman.json new file mode 100644 index 0000000..ceee271 --- /dev/null +++ b/libman.json @@ -0,0 +1,5 @@ +{ + "version": "1.0", + "defaultProvider": "cdnjs", + "libraries": [] +} \ No newline at end of file diff --git a/mulUploadImg.aspx b/mulUploadImg.aspx new file mode 100644 index 0000000..76d3543 --- /dev/null +++ b/mulUploadImg.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="mulUploadImg.aspx.cs" Inherits="mulUploadImg" %> \ No newline at end of file diff --git a/mulUploadImg.aspx.cs b/mulUploadImg.aspx.cs new file mode 100644 index 0000000..20a0d9c --- /dev/null +++ b/mulUploadImg.aspx.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Utils; +using Utils.ImageUtils; + +public partial class mulUploadImg : System.Web.UI.Page +{ + public static string dPath = ConfigurationManager.AppSettings["dPath"]; + + private void conSuc(string msg) + { + Response.Write("{\"res\":\"1\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conErc(string msg) + { + Response.Write("{\"res\":\"0\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + public static string GenerateStringID() + { + long i = 1; + foreach (byte b in Guid.NewGuid().ToByteArray()) + { + i *= ((int)b + 1); + } + return string.Format("{0:x}", i - DateTime.Now.Ticks); + } + protected void Page_Load(object sender, EventArgs e) + { + if (Request.Files.Count < 1) + { + conErc("空文件!"); + return; + } + try + { + string ut = Request.QueryString["ut"]; + HttpPostedFile postFile = Request.Files[0]; + if (postFile != null) + { + string errMsg = ""; + if (ut != "fp") + { + if (!CheckImage(postFile, out errMsg)) + { + Response.Write("{\"res\":\"0\",\"msg\":\"不是有效的图片文件!\"}"); + Response.End(); + return; + } + } + + //using (System.Drawing.Image imgThumb = System.Drawing.Image.FromStream(postFile.InputStream)) + //{ + // result = ImageMaker.ToThumbnailImages(imgThumb, saveFile, 400, "", 9, 3); + //} + string sPath = Path.Combine(dPath, ut); + if (!Directory.Exists(sPath)) Directory.CreateDirectory(sPath); + string fName = GenerateStringID() + Path.GetExtension(postFile.FileName); + string saveFile = Path.Combine(sPath, fName); + //上传文件 + postFile.SaveAs(saveFile); + + //conSuc(fName); + Response.Write("{\"res\":\"1\",\"msg\":\"上传成功!\",\"fn\":\"" + fName + "\"}"); + return; + } + } + catch (Exception ex) + { + conErc("发生错误!" + CommonHelper.FormatTextArea(ex.Message)); + return; + } + conErc("无法上传"); + } + + public static bool CheckImage(HttpPostedFile postedFile, out string errMsg) + { + errMsg = ""; + if (postedFile == null || postedFile.FileName == "") + { + errMsg = "请选择要上传的图片"; + return false; + } + + if (postedFile.ContentLength > 83886080) + { + errMsg = "上传的图片大小不允许超过80MB"; + return false; + } + + return true; + } +} \ No newline at end of file diff --git a/packages.config b/packages.config new file mode 100644 index 0000000..940c945 --- /dev/null +++ b/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/simUploadFile.aspx b/simUploadFile.aspx new file mode 100644 index 0000000..dedc5bc --- /dev/null +++ b/simUploadFile.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="simUploadFile.aspx.cs" Inherits="simUploadFile" %> \ No newline at end of file diff --git a/simUploadFile.aspx.cs b/simUploadFile.aspx.cs new file mode 100644 index 0000000..ac65ef4 --- /dev/null +++ b/simUploadFile.aspx.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Utils; +using Utils.ImageUtils; + +public partial class simUploadFile : System.Web.UI.Page +{ + public static string dPath = ConfigurationManager.AppSettings["dPath"]; + + private void conSuc(string msg) + { + Response.Write("{\"res\":\"1\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conErc(string msg) + { + Response.Write("{\"res\":\"0\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (Request.Files.Count < 1) + { + conErc("空文件!"); + return; + } + try + { + string ut = Request.QueryString["ut"]; + HttpPostedFile postFile = Request.Files[0]; + if (postFile != null) + { + string errMsg = ""; + if (ut != "fp") + { + if (!ImageHandler.CheckImage(postFile, out errMsg)) + { + Response.Write("{\"res\":\"0\",\"msg\":\"不是有效的图片文件!\"}"); + Response.End(); + return; + } + } + + //using (System.Drawing.Image imgThumb = System.Drawing.Image.FromStream(postFile.InputStream)) + //{ + // result = ImageMaker.ToThumbnailImages(imgThumb, saveFile, 400, "", 9, 3); + //} + string strMonth = DateTime.Now.ToString("yyyyMM"); + string sPath = Path.Combine(dPath, ut, strMonth); + if (!Directory.Exists(sPath)) Directory.CreateDirectory(sPath); + string fName = DateTime.Now.ToFileTime().ToString() + Path.GetExtension(postFile.FileName); + string saveFile = Path.Combine(sPath, fName); + //上传文件 + postFile.SaveAs(saveFile); + + conSuc(fName); + return; + } + } + catch (Exception ex) + { + conErc("发生错误!" + CommonHelper.FormatTextArea(ex.Message)); + return; + } + conErc("无法上传"); + } +} \ No newline at end of file diff --git a/simdownload.aspx b/simdownload.aspx new file mode 100644 index 0000000..d963fa8 --- /dev/null +++ b/simdownload.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="simdownload.aspx.cs" Inherits="simdownload" %> \ No newline at end of file diff --git a/simdownload.aspx.cs b/simdownload.aspx.cs new file mode 100644 index 0000000..9a85e7f --- /dev/null +++ b/simdownload.aspx.cs @@ -0,0 +1,182 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.IO; +using System.Text; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class simdownload : System.Web.UI.Page +{ + public static string dPath = ConfigurationManager.AppSettings["dPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + private void conErc(string msg) + { + Response.Write("{\"type\":\"error\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (Request["hexdata"] != null) + { + string tids = Request["hexdata"]; + string fpId = Request["hexdata"]; + if (tids.Trim() == "") + { + conErc("无法下载"); + return; + } + try + { + string[] tArr = tids.Split(','); + List tLst = new List(); + foreach (string id in tArr) + { + tLst.Add("'" + id + "'"); + } + tids = string.Join(",", tLst.ToArray()); + StringBuilder sql = new StringBuilder(); + string ut = Request["ut"]; + if (ut == "fp") + { + sql.AppendFormat("select tid,img from ce_erpbill where id=" + fpId ); + } + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关附件"); + return; + } + List files = new List(); + string dTime = ""; + string fname = ""; + int fc = 0; + foreach (DataRow dr in dt.Rows) + { + + if (dr["img"].ToString() != "") + { + if(!File.Exists(dPath + "\\" + ut + "\\" + dr["img"].ToString())) + { + conErc("找不到文件:"+ dr["img"].ToString()); + return; + } + files.Add(dPath + "\\" + ut + "\\" + dr["img"].ToString()); + } + } + if (files.Count < 1) + { + conErc("没有找到相关附件"); + return; + } + if(files.Count==1)downLoadFile(files[0]); + else + { + ZipFileDownload(files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip"); + } + return; + } + catch (Exception ex) + { + conErc("错误的下载访问" + tids + "," + ex.Message); + return; + } + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyFile(string date,string supplier,string file) + { + string path = copyPath + "\\" + date + "\\" + supplier; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + File.Copy(file, path + "\\" + fname,true); + } + + private string getDesignTime(object v) + { + if (v.ToString()=="") return ""; + return Convert.ToDateTime(v).ToString("yyyyMM"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd"); + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(List files, string zipFileName) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName)); + Response.BinaryWrite(buffer); + Page.Response.Flush(); + Page.Response.SuppressContent = true; + HttpContext.Current.ApplicationInstance.CompleteRequest(); + //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "alert('123');", true); + //Response.Flush(); + //Response.End(); + } + + private void downLoadFile(string file) + { + string filePath = file; + string dfile = Path.GetFileName(file); + //以字符流的形式下载文件 + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开 + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(dfile, System.Text.Encoding.UTF8)); + Response.BinaryWrite(bytes); + //Response.Flush(); + Response.End(); + } +} diff --git a/supplierDownload.aspx b/supplierDownload.aspx new file mode 100644 index 0000000..ffe5893 --- /dev/null +++ b/supplierDownload.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="supplierDownload.aspx.cs" Inherits="supplierDownload" %> \ No newline at end of file diff --git a/supplierDownload.aspx.cs b/supplierDownload.aspx.cs new file mode 100644 index 0000000..0c69333 --- /dev/null +++ b/supplierDownload.aspx.cs @@ -0,0 +1,410 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using NPOI.OpenXmlFormats.Dml.Diagram; +using NPOI.OpenXmlFormats.Shared; +using SiteCore.Handler; +using SiteCore.Redis; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Linq; +using System.Net; +using System.Runtime.InteropServices; +using System.Text; +using System.Web; +using System.Web.Services.Description; +using System.Web.UI; + +public partial class supplierDownload : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + + public static string siteUrl = ConfigurationManager.AppSettings["OriSiteUrl"]; + [DllImport("DrvInterface64.dll", CharSet = CharSet.Unicode)] + public static extern uint DecFile(string filename); + + [DllImport("DrvInterface64.dll", CharSet = CharSet.Unicode)] + public static extern int IsFileEncrypted(string filename);//返回1为加密,0为未被加密 + [DllImport("DrvInterface64.dll", CharSet = CharSet.Ansi)] + public static extern void CreateUserKey(StringBuilder key, int len); + [DllImport("DrvInterface64.dll", CharSet = CharSet.Ansi)] + public static extern int InitAesKey(StringBuilder key, int len); + + [DllImport("DrvInterface64.dll")] + public static extern int IsInitedAesKey(); + + private void conErc(string msg) + { + XLog.SaveLog(0, msg); + Response.Write(msg); + //Response.StatusCode = (int)HttpStatusCode.NotFound; + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + Response.Buffer = true; + downloadMore(); + } + } + + private string getCanDownFile(string fileName) + { + string[] extArr = new string[] { ".cdr", ".zip", ".rar", ".pdf" }; + foreach (string ext in extArr) + { + string fname = fileName + ext; + if (File.Exists(fname)) + { + return fname; + } + } + + return ""; + } + + private void updateIsDownSuccess(int userId, string ctid) + { + try + { + SqlParameter[] sqlParameter ={ + new SqlParameter("@mainctids", SqlDbType.VarChar,500), + new SqlParameter("@userid", SqlDbType.VarChar,4), + new SqlParameter("@res", SqlDbType.VarChar, 4000) + }; + sqlParameter[0].Value = ctid; + sqlParameter[1].Value = userId; + sqlParameter[2].Direction = ParameterDirection.Output; + CeErpTradeCell.ExecuteDataSetStore("sp_set_download", sqlParameter); + + CeErpTradeCell.UpdateRelationOrder(ctid); + } + catch (Exception ex) + { + //errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + XLog.SaveLog(0, "下载发生错误,ctid:" + ctid + "," + ex.Message); + } + } + + + private void downloadMore() + { + if (Request["hexdata"] == null || Request["hexdata"].Trim() == "") + { + conErc("错误的下载访问"); + return; + } + + string tids = Request["hexdata"]; + int onlyDownFile = 0;//只下文件 + if (Request["onlyfile"] != null) + { + Int32.TryParse(Request["onlyfile"], out onlyDownFile); + } + + + int userId = 0; + if (Request["userid"] != null) + { + Int32.TryParse(Request["userid"], out userId); + } + + int mvClientDown = 0;//转移到客户端下载 + + int isFromClient = 0; + if (onlyDownFile != 1) + { + if (Request["supplier"] == null || Request["supplier"].ToString() != "1")//如果不是只下文件,那他就要是供应商 + { + conErc("错误的下载访问"); + return; + } + else + { + /* Int32.TryParse(Request["isFromClient"], out isFromClient); + + if (userId > 0 && isFromClient != 1) + { + string file_client_down_flg = erpRedis.RedisHelper.StringGet("file_client_down_flg_" + userId); + if (file_client_down_flg != null && file_client_down_flg == "1") + { + mvClientDown = 1; + } + }*/ + + } + } + try + { + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName,FileMd5 from view_erptradecell where FinishDesignTime is not null and ctid in ({0}) {1}", ("'" + tids.Replace(",", "','") + "'"), ((onlyDownFile == 1 || isFromClient == 1) ? "" : " and OrderState=5 ")); + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + string fileMd5 = "", fileNames = ""; + List files = new List(); + List noFileLst = new List(); + List ctidLst = new List(); + foreach (DataRow dr in dt.Rows) + { + string finishDesignTime = getDesignTime(dr["FinishDesignTime"]); + string ctid = dr["ctid"].ToString(); + string df_name = upPath + "\\" + finishDesignTime + "\\" + formatMemo(dr["seller_memo"]); + string fname = getCanDownFile(df_name); + int IsFileEncrypt = IsFileEncrypted(fname); + if (IsFileEncrypt == 1 && File.Exists(fname)) + { + string key = "gBQnlxiBb7MthH9644V0W0pFwqYZgyy7"; + var sb = new StringBuilder(key); + + //Linux系统的接口要调用一次,Windows系统要调用两次 + CreateUserKey(sb, key.Length); + CreateUserKey(sb, key.Length); //破解用dse生成的文件,需要调2次。 + int result = InitAesKey(sb, sb.Length); + result = IsInitedAesKey(); + if (result != 1) + { + addLog(ctid, userId, "初始化秘钥失败" + result, 0); + noFileLst.Add("'" + ctid + "'"); + continue; + } + uint a = DecFile(fname); + if (a != 0) + { + addLog(ctid, userId, "解密失败" + a, 0); + noFileLst.Add("'" + ctid + "'"); + continue; + } + } + if (string.IsNullOrEmpty(fname)) + { + noFileLst.Add("'" + ctid + "'"); + continue; + } + + files.Add(fname); + ctidLst.Add(ctid); + + fileMd5 += "," + dr["FileMd5"].ToString(); + fileNames += "#$#" + Path.GetFileName(fname); + + if (onlyDownFile != 1 && mvClientDown != 1) + copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + } + + if (files.Count == 0) + { + conErc("没有找到相关的设计附件"); + return; + } + + /*if (noFileLst.Count > 0) + { + string tips = ""; + string notids = string.Join(",", noFileLst.ToArray()); + sql = new StringBuilder(); + sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", notids, (int)OrderState.下单完成, 0, "找不到设计文件"); + CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += "找不到文件,单号:" + notids; + + conErc(tips); + return; + }*/ + + if (mvClientDown == 1) + { + for (int i = 0; i < files.Count; i++) + { + if (onlyDownFile != 1) + updateIsDownSuccess(userId, ctidLst[i]); + } + + string key = "file_client_down_list_" + userId; + string data = "{\"hexdata\":\"" + tids + "\",\"fileMd5\":\"" + fileMd5.Substring(1) + "\",\"supplier\":\"" + + (Request["supplier"] != null ? Request["supplier"].ToString() : "0") + "\",\"fileName\":\"" + System.Web.HttpUtility.UrlEncode(fileNames, System.Text.Encoding.GetEncoding("GB2312")) + "\"}"; + erpRedis.RedisHelper.ListLeftPush(key, data); + return; + } + + if (files.Count == 1) + { + downLoadFile(userId, ctidLst[0], files[0], onlyDownFile, isFromClient); + } + else + { + ZipFileDownload(userId, ctidLst, files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip", onlyDownFile, isFromClient); //downLoadFile(userId, ctidLst[i], files[i]); + } + + //conSuc("文件已下载完成"); + return; + } + catch (Exception ex) + { + conErc("错误的下载访问" + ex.Message); + XLog.SaveLog(0, "download" + ex.Message); + + return; + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyFile(string date, string supplier, string file) + { + string path = copyPath + "\\" + date + "\\" + supplier + "\\" + "车间下载"; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + File.Copy(file, path + "\\" + fname, true); + if (!File.Exists(path + "\\" + fname)) + { + File.Copy(file, path + "\\" + fname, true); + } + } + + private string getDesignTime(object v) + { + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyyMMdd"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + /*if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd");*/ + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(int userId, List ctidLst, List files, string zipFileName, int onlyDownFile, int isFromClient) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + List addFiles = new List(); + List addCtid = new List(); + using (ZipFile file = ZipFile.Create(ms)) + { + + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + for (int i = 0; i < ctidLst.Count; i++) + { + if (File.Exists(files[i])) + { + try + { + file.Add(files[i]); + addFiles.Add(files[i]); + addCtid.Add(ctidLst[i]); + } + catch (Exception ex) + { + + } + } + } + + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("Access-Control-Expose-Headers", "Content-Disposition"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(zipFileName)); + Response.AddHeader("Content-Length", buffer.Length.ToString()); + Response.BinaryWrite(buffer); + Page.Response.Flush(); + + //for (int i = 0; i < addFiles.Count; i++) + //{ + // updateIsDownSuccess(userId, addCtid[i]); + //} + //StringBuilder sql = new StringBuilder(); + //string tids = string.Join(",", addCtid); + //sql.AppendFormat("update CE_ErpTradeCell set OrderState = 6 where ctid in ({0}) ;", ("'" + tids.Replace(",", "','") + "'")); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", ("'" + tids.Replace(",", "','") + "'"), (int)OrderState.下单完成, userId, "下载设计文件"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + } + + //public static object downfileObj = new object(); + private void downLoadFile(int userId, string ctid, string file, int onlyDownFile, int isFromClient) + { + string filePath = file; + string dfile = Path.GetFileName(file); + + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + + + Response.Clear(); + // + Response.ClearContent(); + Response.ClearHeaders(); + + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开\\fileDownload=true; path=/ + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/;"); + //Response.AddHeader("Cache-Control", "no-cache, no-store, must-revalidate"); + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(dfile, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", bytes.Length.ToString()); + Response.AddHeader("Access-Control-Expose-Headers", "Content-Disposition"); + Response.BinaryWrite(bytes); + Response.Flush(); + + //updateIsDownSuccess(userId, ctid); + //StringBuilder sql = new StringBuilder(); + //string tids = string.Join(",", ctid); + //sql.AppendFormat("update CE_ErpTradeCell set OrderState = 6 where ctid in ({0}) ;", ("'" + tids.Replace(",", "','") + "'")); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", ("'" + tids.Replace(",", "','") + "'"), (int)OrderState.下单完成, userId, "下载设计文件"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + } + + public static void addLog(string ctid, int userid, string con, int orderState = 0, int aftersaleState = 0) + { + CeErpTradeLog log = new CeErpTradeLog(); + log.tid = ctid; + log.UserId = userid; + log.Con = con; + log.OrderState = orderState; + log.AfterSaleState = aftersaleState; + log.OperateTime = DateTime.Now; + log.Create(); + } +} \ No newline at end of file diff --git a/testcopydownload.aspx b/testcopydownload.aspx new file mode 100644 index 0000000..38d77e1 --- /dev/null +++ b/testcopydownload.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="testcopydownload.aspx.cs" Inherits="testcopydownload" %> \ No newline at end of file diff --git a/testcopydownload.aspx.cs b/testcopydownload.aspx.cs new file mode 100644 index 0000000..74e7c04 --- /dev/null +++ b/testcopydownload.aspx.cs @@ -0,0 +1,295 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using SQLData; +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Data.SqlClient; +using System.IO; +using System.Text; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class testcopydownload : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string copyPath = ConfigurationManager.AppSettings["copyPath"]; + private void conErc(string msg) + { + Response.Write("{\"type\":\"error\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conSuc(string msg) + { + Response.Write("{\"type\":\"success\",\"result\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + if (Request["hexdata"]!=null) + { + + string tids = Request["hexdata"]; + if (tids.Trim() == "") + { + conErc("无法下载"); + return; + } + int userId = 0; + if (Request["userid"] != null) + { + userId = Convert.ToInt32(Request["userid"]); + } + try + { + string[] tArr = tids.Split(','); + List tLst = new List(); + foreach (string id in tArr) + { + tLst.Add("'" + id + "'"); + } + tids = string.Join(",", tLst.ToArray()); + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select ctid,seller_memo,FinishDesignTime,OrderState,SupplierName from view_erptradecell where orderstate=5 and ctid in ({0})", tids); + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + if (dt == null || dt.Rows.Count < 1) + { + conErc("没有找到相关订单"); + return; + } + List files = new List(); + string dTime = ""; + string fname = ""; + int fc = 0; + bool hasFile = false; + string df_name = ""; + string[] extArr = new string[] { ".cdr", ".zip",".rar" }; + List noFileLst = new List(); + List errorFileLst = new List(); + foreach (DataRow dr in dt.Rows) + { + if (dr["FinishDesignTime"].ToString() == "") continue; + hasFile = false; + dTime = getDesignTime(dr["FinishDesignTime"]); + df_name = upPath + "\\" + dTime + "\\" + formatMemo(dr["seller_memo"]); + foreach (string ext in extArr) + { + fname = df_name + ext; + if (!hasFile) + { + if (File.Exists(fname)) + { + //bool isUpdateError = false; + //try + //{ + // SqlParameter[] sqlParameter ={ + // new SqlParameter("@mainctids", SqlDbType.VarChar,500), + // new SqlParameter("@userid", SqlDbType.VarChar,4), + // new SqlParameter("@res", SqlDbType.VarChar, 4000) + // }; + // sqlParameter[0].Value = dr["ctid"].ToString(); + // sqlParameter[1].Value = userId; + // sqlParameter[2].Direction = ParameterDirection.Output; + // CeErpTradeCell.ExecuteDataSetStore("sp_set_download", sqlParameter); + //} + //catch (Exception ex) + //{ + // isUpdateError = true; + // errorFileLst.Add("'" + dr["ctid"].ToString() + "'"); + // XLog.SaveLog(0, "下载发生错误,ctid:" + dr["ctid"].ToString() + "," + ex.Message); + //} + //if (!isUpdateError) + //{ + hasFile = true; + files.Add(fname); + copyFile( fname); + fc++; + //} + } + } + else + { + break; + } + } + if (!hasFile) + { + noFileLst.Add("'" + dr["ctid"].ToString() + "'"); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid='{0}' ;", dr["ctid"], (int)OrderState.下单完成, 0, "找不到设计文件"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + //conErc("找不到文件,订单号:" + dr["ctid"]); + //return; + } + //if (hasFile) + //{ + // fname = upPath + "\\" + dTime + "\\" + formatMemo(dr["seller_memo"]) + ".png"; + // if (File.Exists(fname)) + // { + // files.Add(fname); + // copyFile(getDesignDate(dr["FinishDesignTime"]), dr["SupplierName"].ToString(), fname); + // } + //} + + } + if (fc == 0) + { + conErc("没有找到相关的设计附件"); + return; + } + + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", tids, (int)OrderState.下单完成, userId, "下载设计文件"); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo not like '%电子稿%' ;", (int)OrderState.下单完成, tids, (int)OrderState.设计完成); + //sql.AppendFormat("update ce_erptradecell set FinishPlaceTime=getdate(),OrderState={0},IsReturn=0 where ctid in ({1}) and orderstate={2} and IsReturn<>2 and seller_memo like '%电子稿%' ;", (int)OrderState.已发货, tids, (int)OrderState.设计完成); + + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + + foreach (string ctid in tArr) + { + CeErpTradeCell.UpdateRelationOrder(ctid); + } + + if (Request["supplier"] != null && Request["supplier"].ToString() == "1") + { + ZipFileDownload(files, "LT_" + DateTime.Now.ToString("yyyyMMddhhMmss") + ".zip"); + } + else if (noFileLst.Count > 0 || errorFileLst.Count > 0) + { + string tips = ""; + if (noFileLst.Count > 0) + { + string notids = string.Join(",", noFileLst.ToArray()); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", notids, (int)OrderState.下单完成, 0, "找不到设计文件"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += "找不到文件,单号:" + notids; + } + if (errorFileLst.Count > 0) + { + string ertids = string.Join(",", errorFileLst.ToArray()); + //sql = new StringBuilder(); + //sql.AppendFormat("insert into CE_ErpTradeLog(tid,orderstate,userid,operatetime,con) select ctid,{1},{2},getdate(),'{3}' from ce_erptradecell where ctid in ({0}) ;", ertids, (int)OrderState.下单完成, 0, "下载设计文件出错"); + //CeErpTradeCell.ExecuteNonQuery(sql.ToString()); + tips += " 下载出错,单号:" + ertids; + } + conErc(tips); + } + else + { + conSuc("文件已下载到共享目录"); + } + + return; + } + catch(Exception ex) + { + conErc("错误的下载访问"); + XLog.SaveLog(0, "copydown"+ex.Message); + return; + } + } + } + + + private string formatMemo(object memo) + { + string m = memo.ToString(); + m = m.Replace("\\", "").Replace("/", "").Replace(":", "").Replace("*", "").Replace("?", "").Replace("<", "").Replace(">", "").Replace("|", ""); + return m; + } + + private void copyFile(string file) + { + try + { + string path = copyPath + "\\" + "testcopy" ; + if (!Directory.Exists(path)) Directory.CreateDirectory(path); + string fname = Path.GetFileName(file); + File.Copy(file, path + "\\" + fname, true); + //if(!File.Exists(path + "\\" + fname)) + //{ + // File.Copy(file, path + "\\" + fname, true); + //} + } + catch(Exception ex) + { + XLog.SaveLog(0, "复制文件发生错误," + file + "," + ex.Message); + } + + } + + private string getDesignTime(object v) + { + if (v.ToString()=="") return ""; + return Convert.ToDateTime(v).ToString("yyyyMM"); + } + + private string getDesignDate(object v) + { + return DateTime.Now.ToString("yyyy-MM-dd"); + if (v.ToString() == "") return ""; + return Convert.ToDateTime(v).ToString("yyyy-MM-dd"); + } + + /// 批量进行多个文件压缩到一个文件 + /// + /// 文件列表(绝对路径) 这里用的数组,你可以用list 等或者 + /// 生成的zip文件名称 + private void ZipFileDownload(List files, string zipFileName) + { + MemoryStream ms = new MemoryStream(); + byte[] buffer = null; + + using (ZipFile file = ZipFile.Create(ms)) + { + file.BeginUpdate(); + //file.NameTransform = new ZipNameTransform(); + file.NameTransform = new MyNameTransfom(); + foreach (var item in files) + { + if (File.Exists(item)) file.Add(item); + } + file.CommitUpdate(); + buffer = new byte[ms.Length]; + ms.Position = 0; + ms.Read(buffer, 0, buffer.Length); //读取文件内容(1次读ms.Length/1024M) + ms.Flush(); + ms.Close(); + } + Response.Clear(); + Response.Buffer = true; + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Set-Cookie", "fileDownload=true; path=/"); + Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(zipFileName)); + Response.BinaryWrite(buffer); + Page.Response.Flush(); + Page.Response.SuppressContent = true; + HttpContext.Current.ApplicationInstance.CompleteRequest(); + //ScriptManager.RegisterStartupScript(Page, Page.GetType(), "popup", "alert('123');", true); + //Response.Flush(); + //Response.End(); + } + + private void downLoadFile(string file) + { + string filePath = Server.MapPath("d/"+file);//路径 + + //以字符流的形式下载文件 + FileStream fs = new FileStream(filePath, FileMode.Open); + byte[] bytes = new byte[(int)fs.Length]; + fs.Read(bytes, 0, bytes.Length); + fs.Close(); + Response.ContentType = "application/octet-stream"; + //通知浏览器下载文件而不是打开 + Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(file, System.Text.Encoding.UTF8)); + Response.BinaryWrite(bytes); + Response.Flush(); + Response.End(); + } +} + diff --git a/uploadFile.aspx b/uploadFile.aspx new file mode 100644 index 0000000..ef41732 --- /dev/null +++ b/uploadFile.aspx @@ -0,0 +1,2 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="uploadFile.aspx.cs" Inherits="uploadFile" %> + diff --git a/uploadFile.aspx.cs b/uploadFile.aspx.cs new file mode 100644 index 0000000..67e00b9 --- /dev/null +++ b/uploadFile.aspx.cs @@ -0,0 +1,704 @@ +using BizCom; +using ICSharpCode.SharpZipLib.Zip; +using Microsoft.Win32; +using SevenZip; +using System; +using System.Configuration; +using System.Diagnostics; +using System.IO; +using System.Text; +using System.Web; +using Utils; +using SiteCore; +using Aspose.Imaging.ImageOptions; +using Aspose.Imaging; +using Microsoft.WindowsAPICodePack.Shell; +using System.Drawing.Imaging; +using CorelDRAW; +using System.Security.Principal; +using System.Threading.Tasks; +using System.Threading; +using System.Runtime.InteropServices; +using System.Text.RegularExpressions; +using System.Data; + +public partial class uploadFile : System.Web.UI.Page +{ + public static string upPath = ConfigurationManager.AppSettings["upPath"]; + public static string curPath = ConfigurationManager.AppSettings["curPath"]; + static CdrConvert cdrConvert = new CdrConvert(); + + private void conSuc(string msg) + { + Response.Write("{\"res\":\"1\",\"msg\":\"" + msg + "!\"}"); + //Response.End(); + } + + private void conErc(string msg) + { + Response.Write("{\"res\":\"0\",\"msg\":\"" + msg + "!\"}"); + //Response.End(); + } + + public string GetMD5HashFromFile(HttpPostedFile file) + { + try + { + System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider(); + byte[] retVal = md5.ComputeHash(file.InputStream); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < retVal.Length; i++) + { + sb.Append(retVal[i].ToString("x2")); + } + return sb.ToString(); + } + catch (Exception ex) + { + XLog.SaveLog(0, "上传MD5错误!" + ex.Message); + } + + return ""; + } + + + private static byte[] GetBlobByHttpPostedFile(HttpPostedFile httpPostedFile) + { + var contentLength = httpPostedFile.ContentLength; + var result = new byte[contentLength]; + var inputStream = httpPostedFile.InputStream; + inputStream.Read(result, 0, contentLength); + return result; + } + protected void Page_Load(object sender, EventArgs e) + { + //if (CurrentUser == null) + //{ + // Response.Write(err); + // return; + //} + //CeErpTradeCell.GetByCtid("1717009344450030601"); + + if (Request.Files.Count < 1) + { + conErc("空文件!"); + return; + } + int userId = 0; + int orgid = 0; + if (Request["userid"] != null) + { + userId = Convert.ToInt32(Request["userid"]); + } + if (Request["orgid"] != null) + { + orgid = Convert.ToInt32(Request["orgid"]); + } + + HttpPostedFile postFile = Request.Files[0]; + if (postFile != null) + { + string file_name = postFile.FileName; + string namePattern = @"《(.*?)》"; + Regex nameReg = new Regex(namePattern, RegexOptions.IgnoreCase | RegexOptions.Multiline, TimeSpan.FromSeconds(2));//2秒后超时 + MatchCollection nameMatches = nameReg.Matches(file_name);//设定要查找的字符串 + if (nameMatches.Count > 0) + { + foreach (Match match in nameMatches) + { + file_name = file_name.Replace(match.Value, ""); + } + } + file_name = file_name.Replace("(", "("); + file_name = file_name.Replace(")", ")"); + string ctid = MidStrEx(file_name, "(", ")").Trim(); + if (string.IsNullOrEmpty(ctid)) + { + conErc("上传的文件名格式不正确"); + return; + } + string memoCtid = ctid; + if (ctid.IndexOf("C") == -1) + { + if (file_name.IndexOf("[") != -1 && file_name.IndexOf("C") != -1) + { + if (ctid.IndexOf("S_") != -1) // (S_S_1962772776865084101)[C1] 对应ctid是 S_S_C1_1962772776865084101 + { + int lastIndex = ctid.LastIndexOf("S_"); //最后一个S_的位置 + string sPre = ctid.Substring(0, lastIndex + 2); //S_S_ + string initTid = ctid.Substring(lastIndex + 2, ctid.Length - lastIndex - 2); //1962772776865084101 + + string pre_ctid = MidStrEx(file_name, "[", "]"); //C1 + if (pre_ctid.IndexOf("+") != -1) + { + pre_ctid = "C" + pre_ctid.Split('+')[1]; + } + memoCtid = sPre + pre_ctid + "_" + initTid; //S_S_ + C1 + _ +1962772776865084101 + } + else + { + string pre_ctid = MidStrEx(file_name, "[", "]"); + if (pre_ctid.IndexOf("+") != -1) + { + pre_ctid = "C" + pre_ctid.Split('+')[1]; + } + memoCtid = pre_ctid + "_" + ctid; + } + + } + } + CeErpTradeCell entity = null; + if (ctid != "") entity = CeErpTradeCell.GetByCode(ctid); + if (entity == null) entity = CeErpTradeCell.GetByCtid(ctid); + if (entity == null) entity = CeErpTradeCell.GetByCtid(memoCtid); + try + { + + if (entity != null) + { + string pname = Path.GetFileNameWithoutExtension(file_name); + if (entity.IsRefund == 2) + { + StringBuilder sql = new StringBuilder(); + sql.AppendFormat("select refund_status from CE_ErpTradeOrder where tid='{0}'", entity.tid); + + DataTable dt = CeErpTradeCell.ExecuteDataset(sql.ToString()).Tables[0]; + bool isAll = true; + foreach (DataRow dr in dt.Rows) + { + if ("NO_REFUND".Equals(dr["refund_status"])) + { + isAll = false; + break; + } + } + if (isAll) + { + conErc("此单退款,不允许上传"); + return; + } + } + if (entity.seller_memo != pname) + { + conErc("上传的文件名与备注不符合!"); + return; + } + if (entity.OrderState == -1) + { + conErc("还未审核不允许上传"); + return; + } + if (entity.OrderState < (int)OrderState.设计中 && orgid != 10 && orgid != 4) + { + conErc("还未开始设计不允许上传"); + return; + } + //if (pname.IndexOf("现货") != -1) + //{ + // conErc("设计款的单文件名不能有现货字眼"); + // return; + //} + //更新状态 + if (entity.OrderState >= (int)OrderState.下单完成) + { + conErc("已经下单无法上传!"); + return; + } + string extend = Path.GetExtension(file_name).ToLower(); + if (!(extend == ".cdr" || extend == ".zip" || extend == ".rar" || extend == ".pdf")) + { + conErc("只允许上传zip和cdr文件!"); + return; + } + + + if (entity.OrderState != 5) + { + entity.FinishDesignTime = DateTime.Now; + if (entity.isDianziOrder == 1 || entity.ProductId == 57 || entity.ProductId == 28) + { + entity.OrderState = 7; + commonHelper.setOrderDummyDelivery(entity.tid); + } + else + entity.OrderState = 5; //设计完成 + //if (entity.IsReturn == 2) //2是下单人打回给设计的,重新上传的话,需要清除打回 + //{ + entity.IsReturn = 0; + entity.IsXianHuo = 0; + entity.IsVerifyToSupplier = false; + //} + } + if (entity.MemoOpt == 1 || entity.MemoOpt == 2) + { + entity.MemoOpt = 0; + } + if (entity.payment < 500) + { + if (entity.seller_memo.Contains("插卡") && entity.ProductCount != null && !entity.seller_memo.Contains("S_")) + { + int num = 0; + try + { + string text = entity.ProductCount; + string pattern = @"(\d+)\s*张"; + + MatchCollection matches = Regex.Matches(text, pattern); + foreach (Match match in matches) + { + if (match.Success) + { + num = Convert.ToInt32(match.Groups[1].Value); + break; + } + } + } + catch (Exception ex) + { + + } + if (num >= 100) + { + entity.IsVerifyToSupplier = true; + entity.SupplierId = 3; + entity.FinishPlaceTime = DateTime.Now; + } + } + if (((entity.seller_memo.Contains("条幅彩色") && !entity.seller_memo.Contains("辽宁") && !entity.seller_memo.Contains("山东")) || entity.seller_memo.Contains("贡锻布") || entity.seller_memo.Contains("贡缎布")) && !entity.seller_memo.Contains("双喷")) + { + entity.IsVerifyToSupplier = true; + entity.SupplierId = 98; + entity.FinishPlaceTime = DateTime.Now; + } + + } + + + string dPath = entity.FinishDesignTime.GetValueOrDefault().ToString("yyyyMMdd"); + //XLog.SaveLog(5, dPath); + string sPath = Path.Combine(upPath, dPath); + string cpath = Path.Combine(upPath, entity.FinishDesignTime.GetValueOrDefault().ToString("yyyyMM")); + //XLog.SaveLog(5, sPath); + //XLog.SaveLog(5, Directory.Exists(sPath).ToString()); + if (!Directory.Exists(sPath)) Directory.CreateDirectory(sPath); + if (!Directory.Exists(cpath)) Directory.CreateDirectory(cpath); + string saveFile = Path.Combine(sPath, file_name); + + string f_ext = Path.GetExtension(saveFile); + string[] extArr = new string[] { ".cdr", ".zip", ".rar", ".pdf" }; + string _file = ""; + foreach (string ext in extArr) + { + if (f_ext != ext) + { + _file = saveFile.Replace(f_ext, ext); + if (File.Exists(_file)) File.Delete(_file); + } + else + { + if (File.Exists(saveFile)) File.Delete(saveFile); + + } + } + //上传文件 + postFile.SaveAs(saveFile); + entity.FileMd5 = GetMD5HashFromFile(postFile); + //XLog.SaveLog(0, saveFile); + + entity.Update(); + //CeErpTradeCell.UpdateRelationOrder(entity); + CeErpTradeCell.UpdateRelationOrder(entity.ctid); + + CeErpTradeLog.AddLog(entity.ctid, entity.OrderState, userId, "上传设计文件-" + saveFile); + + if (Path.GetExtension(saveFile).IndexOf("cdr", StringComparison.OrdinalIgnoreCase) != -1) + { + //string sql = string.Format("insert into s_cdrtopng(name,addtime)values('{0}',getdate()) ;", saveFile); + //CeErpTradeLog.ExecuteNonQuery(sql); + } + else if (Path.GetExtension(saveFile).IndexOf("zip", StringComparison.OrdinalIgnoreCase) != -1 || Path.GetExtension(saveFile).IndexOf("rar", StringComparison.OrdinalIgnoreCase) != -1) + { + try + { + DecompressZIPandRAR(saveFile, sPath, file_name); + } + catch (Exception ex) + { + CeErpTradeLog.AddLog(entity.ctid, entity.OrderState, entity.DesignUserId, "解压失败!"); + XLog.SaveLog(0, "上传解压发生错误!" + ex.Message); + } + //Decompress(saveFile,sPath); + } + //new Thread(new ThreadStart(delegate () + //{ + //System.Threading.Thread.Sleep(2000); + + if (Path.GetExtension(saveFile).IndexOf("cdr", StringComparison.OrdinalIgnoreCase) != -1) + { + var identity = WindowsIdentity.GetCurrent(); + var principal = new WindowsPrincipal(identity); + writeLog("上传完成!" + saveFile); + Task.Run(async () => + { + string filePath = Path.GetFullPath(saveFile); + string targPath = Path.Combine(cpath, file_name); + using (identity.Impersonate()) + { + try + { + if (File.Exists(filePath)) + { + cdrConvert.CdrConvertPng(filePath, targPath); + } + + } + catch (Exception ex) + { + XLog.SaveLog(0, filePath + ",转成图片出错:" + ex.Message); + } + } + }); + } + + //})).Start(); + conSuc("上传成功!"); + return; + } + else + { + conErc("找不到对应的订单"); + return; + } + } + catch (Exception ex) + { + + conErc("上传发生错误!" + CommonHelper.FormatTextArea(ex.Message)); + CeErpTradeLog.AddLog(entity.ctid, entity.OrderState, entity.DesignUserId, "上传失败!"); + XLog.SaveLog(0, "上传发生错误!" + ex.Message); + return; + } + finally + { + if (postFile != null) + { + postFile.InputStream.Close(); + } + } + } + conErc("空文件!"); + } + class CdrConvert + { + private object lockObject = new object(); + + public void CdrConvertPng(string filePath, string targPath) + { + lock (lockObject) + { + writeLog("开始截图!" + filePath); + targPath = targPath.Replace(".cdr", ".png"); + try + { + Application cdr = new Application(); + cdr.OpenDocument(filePath, 1); + cdr.ActiveDocument.ExportBitmap( + targPath, + cdrFilter.cdrPNG, + cdrExportRange.cdrCurrentPage, + cdrImageType.cdrRGBColorImage, + 0, 0, 72, 72, + cdrAntiAliasingType.cdrNoAntiAliasing, + false, + true, + true, + false, + cdrCompressionType.cdrCompressionNone, + null).Finish(); + cdr.ActiveDocument.Close(); + cdr.Quit(); + cdr = null; + } + catch (Exception ex) + { + XLog.SaveLog(0, targPath + ",转成图片出错:" + ex.Message); + + } + finally + { + KillProcessByName("CorelDRW"); + } + + } + } + + void KillProcessByName(string processName) + { + Process[] processes = Process.GetProcessesByName(processName); + + foreach (Process process in processes) + { + try + { + process.Kill(); + process.WaitForExit(); // 等待进程退出 + } + catch (Exception ex) + { + } + } + } + } + private void DecompressZIPandRAR(string zipFile, string targetPath, string filename) + { + + string notExtension = filename.Substring(0, filename.Length - 4); + SevenZipExtractor.SetLibraryPath(Server.MapPath("bin\\7z.dll")); + LibraryFeature lf = SevenZipExtractor.CurrentLibraryFeatures; + using (SevenZipExtractor szExtra = new SevenZipExtractor(zipFile)) + { + //szExtra.ExtractArchive("d:\\temp"); + foreach (string afn in szExtra.ArchiveFileNames) + { + if (afn.IndexOf(notExtension, StringComparison.OrdinalIgnoreCase) != -1) + { + szExtra.ExtractFiles(targetPath, afn); + break; + } + } + } + + } + + private void Decompress(string GzipFile, string targetPath) + { + //string directoryName = Path.GetDirectoryName(targetPath + "\\") + "\\"; + string directoryName = targetPath + "\\"; + if (!Directory.Exists(directoryName)) Directory.CreateDirectory(directoryName);//生成解压目录 + //helper.writeLog(GzipFile); + //helper.writeLog(directoryName); + string CurrentDirectory = directoryName; + byte[] data = new byte[2048]; + int size = 2048; + ZipEntry theEntry = null; + Stream _stream = File.OpenRead(GzipFile); + if (_stream.Length == 0) { _stream.Close(); return; } + try + { + using (ZipInputStream s = new ZipInputStream(_stream)) + { + while ((theEntry = s.GetNextEntry()) != null) + { + if (theEntry.IsDirectory) + {// 该结点是目录 + if (!Directory.Exists(CurrentDirectory + theEntry.Name)) Directory.CreateDirectory(CurrentDirectory + theEntry.Name); + } + else + { + if (theEntry.Name != String.Empty && (theEntry.Name.IndexOf(".png", StringComparison.OrdinalIgnoreCase) != -1 || theEntry.Name.IndexOf(".jpg", StringComparison.OrdinalIgnoreCase) != -1)) + { + //解压文件到指定的目录 + using (FileStream streamWriter = File.Create(CurrentDirectory + theEntry.Name)) + { + while (true) + { + size = s.Read(data, 0, data.Length); + if (size <= 0) break; + + streamWriter.Write(data, 0, size); + } + streamWriter.Close(); + } + break; + } + } + } + s.Close(); + } + } + catch (Exception ex) + { + XLog.SaveLog(0, "解压uncau:" + ex.Message); + } + } + + public string unCompressRAR(string unRarPatch, string rarPatch, string rarName) + + { + + string the_rar; + RegistryKey the_Reg; + object the_Obj; + string the_Info; + try + { + the_Reg = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe"); + the_Obj = the_Reg.GetValue(""); + the_rar = the_Obj.ToString(); + the_Reg.Close(); + if (Directory.Exists(unRarPatch) == false) + { + Directory.CreateDirectory(unRarPatch); + } + + the_Info = "x " + rarName + " " + unRarPatch + " -y"; + ProcessStartInfo the_StartInfo = new ProcessStartInfo(); + the_StartInfo.FileName = the_rar; + the_StartInfo.Arguments = the_Info; + the_StartInfo.WindowStyle = ProcessWindowStyle.Hidden; + the_StartInfo.WorkingDirectory = rarPatch;//获取压缩包路径 + Process the_Process = new Process(); + the_Process.StartInfo = the_StartInfo; + the_Process.Start(); + the_Process.WaitForExit(); + the_Process.Close(); + + } + catch (Exception ex) + { + throw ex; + } + + return unRarPatch; + + } + + private void ShellCdrConvertPng(string path, string targPath) + { + ShellFile shellFile = ShellFile.FromFilePath(path); + System.Drawing.Bitmap shellThumb = shellFile.Thumbnail.ExtraLargeBitmap; + + //在画板的指定位置画图 + targPath = targPath.Replace(".cdr", ".png"); + shellThumb.Save(targPath, ImageFormat.Png); + shellThumb.Dispose(); + shellFile.Dispose(); + } + + private void CdrConvertPng(string path, string targPath) + { + using (Aspose.Imaging.FileFormats.Cdr.CdrImage image = (Aspose.Imaging.FileFormats.Cdr.CdrImage)Aspose.Imaging.Image.Load(path)) + { + PngOptions options = new Aspose.Imaging.ImageOptions.PngOptions(); + + options.ColorType = Aspose.Imaging.FileFormats.Png.PngColorType.TruecolorWithAlpha; + + // Set rasterization options for fileformat + options.VectorRasterizationOptions = (Aspose.Imaging.ImageOptions.VectorRasterizationOptions) + image.GetDefaultOptions(new object[] { Aspose.Imaging.Color.White, image.Width, image.Height }); + options.VectorRasterizationOptions.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; + options.VectorRasterizationOptions.SmoothingMode = Aspose.Imaging.SmoothingMode.None; + targPath = targPath.Replace(".cdr", ".png"); + image.Save(targPath, options); + options.Dispose(); + } + } + private string CdrExPng(string path, string targPath) + { + try + { + targPath = targPath.Replace(".cdr", ".png"); + Application cdr = new Application(); + cdr.OpenDocument(path, 1); + cdr.ActiveDocument.ExportBitmap( + targPath, + cdrFilter.cdrPNG, + cdrExportRange.cdrCurrentPage, + cdrImageType.cdrRGBColorImage, + 0, 0, 72, 72, + cdrAntiAliasingType.cdrNoAntiAliasing, + false, + true, + true, + false, + cdrCompressionType.cdrCompressionNone, + null).Finish(); + cdr.ActiveDocument.Close(); + cdr.Quit(); + cdr = null; + GC.Collect(); + } + catch (Exception ex) + { + XLog.SaveLog(0, path + ",转成图片出错:" + ex.Message); + } + finally + { + + } + return "111"; + } + + private static object cdrpngobj = new object(); + private void CdrExportPng(string path, string cdrFile) + { + lock (cdrpngobj) + { + string fname = curPath + "\\" + Path.GetFileNameWithoutExtension(cdrFile) + ".png"; + string new_fname = path + "\\" + Path.GetFileNameWithoutExtension(cdrFile) + ".png"; + CorelDRAW.Application cdr = new CorelDRAW.Application(); + cdr.OpenDocument(cdrFile, 1); + cdr.ActiveDocument.ExportBitmap( + fname, + CorelDRAW.cdrFilter.cdrPNG, + CorelDRAW.cdrExportRange.cdrCurrentPage, + CorelDRAW.cdrImageType.cdrRGBColorImage, + 0, 0, 72, 72, + CorelDRAW.cdrAntiAliasingType.cdrNoAntiAliasing, + false, + true, + true, + false, + CorelDRAW.cdrCompressionType.cdrCompressionNone, + null).Finish(); + cdr.ActiveDocument.Close(); + cdr.Quit(); + + if (File.Exists(fname)) + { + File.Copy(fname, new_fname); + File.Delete(fname); + } + } + } + + + public static string MidStrEx(string sourse, string startstr, string endstr) + { + string result = string.Empty; + int startindex, endindex; + try + { + startindex = sourse.IndexOf(startstr); + if (startindex == -1) + return result; + string tmpstr = sourse.Substring(startindex + startstr.Length); + endindex = tmpstr.IndexOf(endstr); + if (endindex == -1) + return result; + result = tmpstr.Remove(endindex); + } + catch (Exception ex) + { + Console.WriteLine("MidStrEx Err:" + ex.Message); + } + return result; + } + + private static string logPath = ConfigurationManager.AppSettings["curPath"] + "\\log"; + private static object logFlag = new object(); + public static void writeLog(string log) + { + lock (logFlag) + { + using (FileStream fileStream = new FileStream(logPath + "\\" + DateTime.Now.ToString("yy-MM-dd") + ".log", FileMode.Append, FileAccess.Write)) + { + using (StreamWriter sw = new StreamWriter(fileStream, Encoding.Default)) + { + sw.Write(log + " ------时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n"); + sw.Flush(); + } + } + } + } +} \ No newline at end of file diff --git a/uploadImg.aspx b/uploadImg.aspx new file mode 100644 index 0000000..877cae7 --- /dev/null +++ b/uploadImg.aspx @@ -0,0 +1 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeFile="uploadImg.aspx.cs" Inherits="uploadImg" %> \ No newline at end of file diff --git a/uploadImg.aspx.cs b/uploadImg.aspx.cs new file mode 100644 index 0000000..7bc05d1 --- /dev/null +++ b/uploadImg.aspx.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.IO; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using Utils; +using Utils.ImageUtils; + +public partial class uploadImg : System.Web.UI.Page +{ + public static string dPath = ConfigurationManager.AppSettings["dPath"]; + + private void conSuc(string msg) + { + Response.Write("{\"res\":\"1\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + + private void conErc(string msg) + { + Response.Write("{\"res\":\"0\",\"msg\":\"" + msg + "\"}"); + //Response.End(); + } + + protected void Page_Load(object sender, EventArgs e) + { + string err = "{\"res\":\"0\",\"msg\":\"上传失败!\"}"; + //if (CurrentUser==null) + //{ + // Response.Write(err); + // return; + //} + if (Request.Files.Count < 1) + { + Response.Write(err); + return; + } + string idx = Request.QueryString["idx"]; + if (idx == "") + { + Response.Write(err); + return; + } + //string fn = DateTime.Now.ToString("yyyyMMddHHmmss"); + string ut = Request.QueryString["ut"]; + try + { + HttpPostedFile postFile = Request.Files[0]; + if (postFile != null) + { + string errMsg = ""; + if (!ImageHandler.CheckImage(postFile, out errMsg)) return; + string sPath = Path.Combine(dPath, ut); + string fileName = postFile.FileName; + string saveFile = Path.Combine(sPath, fileName); + string result = ""; + using (System.Drawing.Image imgThumb = System.Drawing.Image.FromStream(postFile.InputStream)) + { + result = ImageMaker.ToThumbnailImages(imgThumb, saveFile, 800, "", 9, 3); + } + Response.Write("{\"res\":\"1\",\"msg\":\"上传成功!\",\"ridx\":\"" + idx + "\",\"fn\":\"" + SecurityHelper.EncodingBase64(fileName) + "\"}"); + return; + } + } + catch(Exception ex) + { + Response.Write(err+ex.Message); + } + Response.Write(err); + } +} \ No newline at end of file diff --git a/vwd.webinfo b/vwd.webinfo new file mode 100644 index 0000000..6a74c6d --- /dev/null +++ b/vwd.webinfo @@ -0,0 +1,11 @@ + + + + + + + + + \ No newline at end of file diff --git a/website.publishproj b/website.publishproj new file mode 100644 index 0000000..1c6c017 --- /dev/null +++ b/website.publishproj @@ -0,0 +1,47 @@ + + + + + Debug + AnyCPU + 10.0.30319 + 2.0 + {a804226a-ae92-41fa-ac2c-ae69ba8a42f5} + $(MSBuildThisFileDirectory) + /UploadWeb + v4.8.1 + + + + + + + 10.0 + + 10.5 + $(VisualStudioVersion) + $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(WebPublishTargetsVersion) + <_WebPublishTargetsPath Condition=" '$(_WebPublishTargetsPath)'=='' ">$(VSToolsPath) + 1.0.0.0 + 1.0.0.0 + + + + $(AssemblyFileVersion) + + + $(AssemblyVersion) + + + + \ No newline at end of file