From 69f41dde9b2415dc15fac2936960db054f96c1b3 Mon Sep 17 00:00:00 2001 From: Gustavo Martin Date: Mon, 13 Jan 2014 02:26:00 +0100 Subject: [PATCH] Windows Phone: Connect4 MonoGame --- WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln | 32 + WindowsPhone/Connect4MonoGame/Connect4MonoGame.suo | Bin 0 -> 7168 bytes .../Connect4MonoGame/Connect4MonoGame.v12.suo | Bin 0 -> 59904 bytes .../Connect4MonoGame/Connect4MonoGame/App.xaml | 20 + .../Connect4MonoGame/Connect4MonoGame/App.xaml.cs | 223 + .../Connect4MonoGame/Assets/AlignmentGrid.png | Bin 0 -> 9042 bytes .../Connect4MonoGame/Assets/ApplicationIcon.png | Bin 0 -> 3392 bytes .../Assets/Tiles/FlipCycleTileLarge.png | Bin 0 -> 9930 bytes .../Assets/Tiles/FlipCycleTileMedium.png | Bin 0 -> 9070 bytes .../Assets/Tiles/FlipCycleTileSmall.png | Bin 0 -> 3674 bytes .../Assets/Tiles/IconicTileMediumLarge.png | Bin 0 -> 4937 bytes .../Assets/Tiles/IconicTileSmall.png | Bin 0 -> 3724 bytes .../Connect4MonoGame/Connect4MonoGame.csproj | 159 + .../Connect4MonoGame/Connect4MonoGame.csproj.user | 15 + .../Connect4MonoGame/Connect4MonoGame/Game1.cs | 94 + .../Connect4MonoGame/GamePage.xaml | 62 + .../Connect4MonoGame/GamePage.xaml.cs | 47 + .../Connect4MonoGame/LocalizedStrings.cs | 14 + .../Connect4MonoGame/Properties/AppManifest.xml | 6 + .../Connect4MonoGame/Properties/AssemblyInfo.cs | 38 + .../Connect4MonoGame/Properties/WMAppManifest.xml | 38 + .../Resources/AppResources.Designer.cs | 127 + .../Connect4MonoGame/Resources/AppResources.resx | 137 + .../bin/WindowsPhone/x86/Debug/AppManifest.xaml | 11 + .../x86/Debug/Assets/ApplicationIcon.png | Bin 0 -> 3392 bytes .../x86/Debug/Assets/Tiles/FlipCycleTileLarge.png | Bin 0 -> 9930 bytes .../x86/Debug/Assets/Tiles/FlipCycleTileMedium.png | Bin 0 -> 9070 bytes .../x86/Debug/Assets/Tiles/FlipCycleTileSmall.png | Bin 0 -> 3674 bytes .../Debug/Assets/Tiles/IconicTileMediumLarge.png | Bin 0 -> 4937 bytes .../x86/Debug/Assets/Tiles/IconicTileSmall.png | Bin 0 -> 3724 bytes .../WindowsPhone/x86/Debug/Connect4MonoGame.dll | Bin 0 -> 16384 bytes .../WindowsPhone/x86/Debug/Connect4MonoGame.pdb | Bin 0 -> 38400 bytes .../x86/Debug/Connect4MonoGame_Debug_x86.xap | Bin 0 -> 1167739 bytes .../WindowsPhone/x86/Debug/MonoGame.Framework.dll | Bin 0 -> 524800 bytes .../x86/Debug/Properties/WMAppManifest.xml | 38 + .../bin/WindowsPhone/x86/Debug/SharpDX.DXGI.dll | Bin 0 -> 101888 bytes .../bin/WindowsPhone/x86/Debug/SharpDX.DXGI.xml | 6048 +++ .../WindowsPhone/x86/Debug/SharpDX.Direct3D11.dll | Bin 0 -> 148992 bytes .../WindowsPhone/x86/Debug/SharpDX.Direct3D11.xml | 20143 ++++++++ .../x86/Debug/SharpDX.MediaFoundation.dll | Bin 0 -> 111616 bytes .../x86/Debug/SharpDX.MediaFoundation.xml | 11527 +++++ .../bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.dll | Bin 0 -> 68096 bytes .../bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.xml | 5016 ++ .../bin/WindowsPhone/x86/Debug/SharpDX.dll | Bin 0 -> 496640 bytes .../bin/WindowsPhone/x86/Debug/SharpDX.xml | 47667 +++++++++++++++++++ .../Connect4MonoGame/obj/ARM/Debug/App.g.i.cs | 53 + .../DesignTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 14295 bytes .../Connect4MonoGame/obj/ARM/Debug/GamePage.g.i.cs | 63 + ...tedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...tedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...tedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../Connect4MonoGame/obj/x86/Debug/App.g.cs | 53 + .../Connect4MonoGame/obj/x86/Debug/App.g.i.cs | 53 + ...nnect4MonoGame.Resources.AppResources.resources | Bin 0 -> 471 bytes .../Connect4MonoGame.csproj.FileListAbsolute.txt | 31 + .../Connect4MonoGame.csproj.GenerateResource.Cache | Bin 0 -> 921 bytes ...t4MonoGame.csprojResolveAssemblyReference.cache | Bin 0 -> 33811 bytes .../obj/x86/Debug/Connect4MonoGame.dll | Bin 0 -> 16384 bytes .../obj/x86/Debug/Connect4MonoGame.g.resources | Bin 0 -> 4445 bytes .../obj/x86/Debug/Connect4MonoGame.pdb | Bin 0 -> 38400 bytes .../DesignTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 14295 bytes .../Connect4MonoGame/obj/x86/Debug/GamePage.g.cs | 63 + .../Connect4MonoGame/obj/x86/Debug/GamePage.g.i.cs | 63 + .../TempPE/Resources.AppResources.Designer.cs.dll | Bin 0 -> 5120 bytes ...tedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs | 0 ...tedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs | 0 ...tedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs | 0 .../obj/x86/Debug/XapCacheFile.xml | 23 + 68 files changed, 91864 insertions(+) create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame.suo create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame.v12.suo create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/ApplicationIcon.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileLarge.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileSmall.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileMediumLarge.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj.user create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/AppManifest.xaml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/ApplicationIcon.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/FlipCycleTileLarge.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/FlipCycleTileMedium.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/FlipCycleTileSmall.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/IconicTileMediumLarge.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/IconicTileSmall.png create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Connect4MonoGame.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Connect4MonoGame.pdb create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Connect4MonoGame_Debug_x86.xap create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/MonoGame.Framework.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Properties/WMAppManifest.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.DXGI.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.DXGI.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.MediaFoundation.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.MediaFoundation.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.xml create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/App.g.i.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/GamePage.g.i.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.i.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.Resources.AppResources.resources create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.FileListAbsolute.txt create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.GenerateResource.Cache create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csprojResolveAssemblyReference.cache create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.g.resources create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.pdb create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.i.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TempPE/Resources.AppResources.Designer.cs.dll create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs create mode 100644 WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/XapCacheFile.xml diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln b/WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln new file mode 100644 index 0000000..2378ac3 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Connect4MonoGame", "Connect4MonoGame\Connect4MonoGame.csproj", "{1B061ADC-B891-4E69-B96A-E054C80333C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.ActiveCfg = Debug|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Build.0 = Debug|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|ARM.Deploy.0 = Debug|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.ActiveCfg = Debug|x86 + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Build.0 = Debug|x86 + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Debug|x86.Deploy.0 = Debug|x86 + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.ActiveCfg = Release|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Build.0 = Release|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|ARM.Deploy.0 = Release|ARM + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.ActiveCfg = Release|x86 + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Build.0 = Release|x86 + {1B061ADC-B891-4E69-B96A-E054C80333C0}.Release|x86.Deploy.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame.suo b/WindowsPhone/Connect4MonoGame/Connect4MonoGame.suo new file mode 100644 index 0000000000000000000000000000000000000000..5fa2a355b7b7d187e7ba04092365644ec5114fc1 GIT binary patch literal 7168 zcmeI0+foxj5QZBR6%Qrccwu>w;=(J1fCR-tC}*fZbWb1tp3V2e{vThz-Tf(^Yf>&rq1Y=|s_0$x zwVA6=q??Yu7mCHAC5q7PT<6FFN9d~l)23Gsj#QstrCp=-(yr5P&~DO7e3rZOd)_Uu zEE(>73CNtJd1mDRFSmZ(k)CqSm$9MF^uGJ=ejVLD?5f6#8A(YJ$(ypmbD!JcZCi46 z*6@<=Nq1MZ54_{G-Y-M^(qC(&J(^$n?MbOW>rdoY&+YUtpalx`r}b3$SeiB_tWY}X9H+i2a0#N|C}C6E-5B_!_hraG>m zOUh_!cU51vfn)tumX#MpSBI4xqrY0GzML1x%t^GopB!_NSSuoXJk#vd;rR(3wdN{y zR_Rv51E|Wq%id?uS2a$uURoZ&yUVCrJ`2@hpGx!EZPfTlEv8L5!t6Q4s%n3gljc|b zrQS#xjwtVOvt~kGF?xVj8Tmj@eIJ*{+%X9uJA{9SWn3P~D5F7nLSL=5%4&Hi6Eeik z8`-MjML(WYU!}OMU#wdSy=%3B;nr$i)?`6un;_;q z803JoXB#VrLDZnZ(HOcWsG4zuqr>zRRmZ?orH#{z(NmlaF_M5Q2=eNkpywBB+q3)v z{$C*iV#I~kki8~8xCmA2EM$G_=uyePzjJQ#exG}>p;alhP|cn7ZY*jh_p~u7EKjK= zYvhMLD{EcJ8?=m3lQN8H)zVX!o^aPiYt|l=9Q`n3J0_?0j((0x2E!sA!Yt1=IHSlER+dw1LQ`aw@RyJhXWPKbRH2*hckiJ>ly67A;Fln@m;Q4f9pG#63rE)tq(p zJpvLCNG QV}6xZ`3Ge3AOFSl8%*=Yx&QzG literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame.v12.suo b/WindowsPhone/Connect4MonoGame/Connect4MonoGame.v12.suo new file mode 100644 index 0000000000000000000000000000000000000000..ec4c049dcdf6c6ebc19eaa73ca2146b73dc17e10 GIT binary patch literal 59904 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ⅈc!w)5x-J5@)m6#cY;x0w3D;KR2xX zPaWo&ouq>(h*-m!UnF5fXSYiZ;C33xt8V|xd+@+R*oQZdxTC9t5Jf{QtsMzwOiHWw z!cA?E!Ydx`2802_n@VP}dtBH%s|Tmj-g!B;W?LSZSXb-YfY0SE!~J#l0ou?;QAd4P zTH@{$tiu}OD3Js!yVMPvt+2Pz<`PzSCAhf+J1nkUcVEPeQ`q67w66I^;#biAuDkH! zdJirRo-fXQ!~Wxuz)|-79Xq(n>T>f!EY(E=MDjb%y|{d6osj5UI0goCHX&b{3ug24 z>1Z}SE-&Pr_aG0~HY^Y8e|qqPu(sizvnlBz>1O5Ja0o%53oOpat?&F^a_e+F^`&^K zu=VqM8CG;5J`1;+-^|WAu9PE@-bU^JQ+jqXxMyT&eWk$m`OVhOxh|EKi_y~h@_R*k zTTzTC$d$apcG{vFkAoO+__Dv|6t=UgOXWQHKH32e^n(eH06+rII9+MvHC5(?e(9k)Z6MS zxHgAnvWI#ruK!4i78nnrbP<)ev?|zk=1`e=xlFa?$JG?;PRdtiqsbL{Dw@cyfxe+F z|F`+qG`RmXIQ2aE_*wAtIasYl!M(ecGlN!e7Lb)Xs-(YPeP6Ny|B9p18acy*{97yY zueGcOn17?IbfR?e)G5{K)(_)-hPU}wa~ZZ?QA03Ot5YMt@#w!u)66_dRt(ssMU^*$ ze>Dz~;yVX`&A)D1{#CV8SZgx_cDJ48r*iTW4`TB}*lqM-;rv9s{yxt^tbS@@@vAsL z@r@8QoK)AyP6W362j{Z{2G5=2BwE@2Ctm!qip^!n}eO&5x>{RzixMEC7EBz%12W2NX;8KlyJ5hVJ@$*yl^S|+IUn}RQius>=-&i>< z*tqYIJ$~%@Upc6+x#q<7{I8p1^@PzmlIkra|JCPhT^nudFTk~Lq~v?UN=}uxEf?e~ z+b&YB@7Qvu$zB5mD}N^y+a@3PkM#BR`}zZ(k>F^b$3NIN>KQyZ(C_j4{XHXrfPZu_ zH~>|d$y29BLNoq}$y1YK!HJQG@ds}xJT*P}u#5DvZ!XLF!S%OnjYB3Z-;K!mEJkn&+RAIy9Bxb9vzKb>W zhDd@oQD}8DrI5zcShrT^xkZlu6lK|iH?(@&l%>$>G*#Qm(O4A;a8+~1csd#%jmGln zY?+v%i|8Vhj?38bz%kb*w0No+(8fTq6hX;;enpDBzVA~ z>)rIgrWYQ9iU-BK&)oh`=fMrXw*8;c25}~xaqdISbPvlH6ES%*qil8)mh<^UYB4t# zmbw3p99O^6dT|2%tcz_;jwR7YpZNDO}92i&=9q z4=yIv#Xet%Q*zP7#dQ!D5hot-cC?HApEd3b;Ih#+t2DgXIGfct`|KfPp}sy#YZf&Qj zI;E95ntdBbpW7^QuMR~x;Ay);XV1+^oy-q^*~&q?Qwuw`l8AGNb<9OO=H@%*VjXkw zjybtwZlPmtv19Ih$6TUgZmDDL0{jTqxqW+waDVW~#qT=*_Le7J;`xsIzwh7(X5N^P zgCm)VZ87>{Yw$yd@dMkY5S;aE8l1H)eC-^7jkFG|~+58{2>?`i~R^Y*!D;hax z^M5w~SK!bKoWM;O(GHvcD^!e8bYbB7ZT>HvDs0nu!}5Qem#gxBqyjY-)13d)d2qw8 z&Hvf_-vj6el__a5WfjPJoBtDg7TNsYywm3Yz%XO5*!D3p0c=ls^pC9?$q1R$h|Lij5CU9XXu(0R)o7e9e|LmvZ&wlEz z9}HIVDM62MKsj?~7&iXoOatIhc|MOHXYrJBs}$W%z}_GUEsBIVLHR`B%pFk4fiIw@KK1P^X3B zGS)hAU2|*QsE4AS(&&X1%8;^mgn2$FrE6|J^k+}0XEtqY9<0?vBPUUXu9@vl`TtnT B9qa%A literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml new file mode 100644 index 0000000..a03ea47 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs new file mode 100644 index 0000000..74b8d52 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/App.xaml.cs @@ -0,0 +1,223 @@ +using System; +using System.Diagnostics; +using System.Resources; +using System.Windows; +using System.Windows.Markup; +using System.Windows.Navigation; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using Connect4MonoGame.Resources; + +namespace Connect4MonoGame +{ + public partial class App : Application + { + /// + /// Provides easy access to the root frame of the Phone Application. + /// + /// The root frame of the Phone Application. + public static PhoneApplicationFrame RootFrame { get; private set; } + + /// + /// Constructor for the Application object. + /// + public App() + { + // Global handler for uncaught exceptions. + UnhandledException += Application_UnhandledException; + + // Standard XAML initialization + InitializeComponent(); + + // Phone-specific initialization + InitializePhoneApplication(); + + // Language display initialization + InitializeLanguage(); + + // Show graphics profiling information while debugging. + if (Debugger.IsAttached) + { + // Display the current frame rate counters. + Application.Current.Host.Settings.EnableFrameRateCounter = true; + + // Show the areas of the app that are being redrawn in each frame. + //Application.Current.Host.Settings.EnableRedrawRegions = true; + + // Enable non-production analysis visualization mode, + // which shows areas of a page that are handed off to GPU with a colored overlay. + //Application.Current.Host.Settings.EnableCacheVisualization = true; + + // Prevent the screen from turning off while under the debugger by disabling + // the application's idle detection. + // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run + // and consume battery power when the user is not using the phone. + PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; + } + + } + + // Code to execute when the application is launching (eg, from Start) + // This code will not execute when the application is reactivated + private void Application_Launching(object sender, LaunchingEventArgs e) + { + } + + // Code to execute when the application is activated (brought to foreground) + // This code will not execute when the application is first launched + private void Application_Activated(object sender, ActivatedEventArgs e) + { + } + + // Code to execute when the application is deactivated (sent to background) + // This code will not execute when the application is closing + private void Application_Deactivated(object sender, DeactivatedEventArgs e) + { + } + + // Code to execute when the application is closing (eg, user hit Back) + // This code will not execute when the application is deactivated + private void Application_Closing(object sender, ClosingEventArgs e) + { + } + + // Code to execute if a navigation fails + private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) + { + if (Debugger.IsAttached) + { + // A navigation has failed; break into the debugger + Debugger.Break(); + } + } + + // Code to execute on Unhandled Exceptions + private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) + { + if (Debugger.IsAttached) + { + // An unhandled exception has occurred; break into the debugger + Debugger.Break(); + } + } + + #region Phone application initialization + + // Avoid double-initialization + private bool phoneApplicationInitialized = false; + + // Do not add any additional code to this method + private void InitializePhoneApplication() + { + if (phoneApplicationInitialized) + return; + + // Create the frame but don't set it as RootVisual yet; this allows the splash + // screen to remain active until the application is ready to render. + RootFrame = new PhoneApplicationFrame(); + RootFrame.Navigated += CompleteInitializePhoneApplication; + + // Handle navigation failures + RootFrame.NavigationFailed += RootFrame_NavigationFailed; + + // Handle reset requests for clearing the backstack + RootFrame.Navigated += CheckForResetNavigation; + + // Ensure we don't initialize again + phoneApplicationInitialized = true; + } + + // Do not add any additional code to this method + private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) + { + // Set the root visual to allow the application to render + if (RootVisual != RootFrame) + RootVisual = RootFrame; + + // Remove this handler since it is no longer needed + RootFrame.Navigated -= CompleteInitializePhoneApplication; + } + + private void CheckForResetNavigation(object sender, NavigationEventArgs e) + { + // If the app has received a 'reset' navigation, then we need to check + // on the next navigation to see if the page stack should be reset + if (e.NavigationMode == NavigationMode.Reset) + RootFrame.Navigated += ClearBackStackAfterReset; + } + + private void ClearBackStackAfterReset(object sender, NavigationEventArgs e) + { + // Unregister the event so it doesn't get called again + RootFrame.Navigated -= ClearBackStackAfterReset; + + // Only clear the stack for 'new' (forward) and 'refresh' navigations + if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh) + return; + + // For UI consistency, clear the entire page stack + while (RootFrame.RemoveBackEntry() != null) + { + ; // do nothing + } + } + + #endregion + + // Initialize the app's font and flow direction as defined in its localized resource strings. + // + // To ensure that the font of your application is aligned with its supported languages and that the + // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage + // and ResourceFlowDirection should be initialized in each resx file to match these values with that + // file's culture. For example: + // + // AppResources.es-ES.resx + // ResourceLanguage's value should be "es-ES" + // ResourceFlowDirection's value should be "LeftToRight" + // + // AppResources.ar-SA.resx + // ResourceLanguage's value should be "ar-SA" + // ResourceFlowDirection's value should be "RightToLeft" + // + // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072. + // + private void InitializeLanguage() + { + try + { + // Set the font to match the display language defined by the + // ResourceLanguage resource string for each supported language. + // + // Fall back to the font of the neutral language if the Display + // language of the phone is not supported. + // + // If a compiler error is hit then ResourceLanguage is missing from + // the resource file. + RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage); + + // Set the FlowDirection of all elements under the root frame based + // on the ResourceFlowDirection resource string for each + // supported language. + // + // If a compiler error is hit then ResourceFlowDirection is missing from + // the resource file. + FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection); + RootFrame.FlowDirection = flow; + } + catch + { + // If an exception is caught here it is most likely due to either + // ResourceLangauge not being correctly set to a supported language + // code or ResourceFlowDirection is set to a value other than LeftToRight + // or RightToLeft. + + if (Debugger.IsAttached) + { + Debugger.Break(); + } + + throw; + } + } + } +} \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/AlignmentGrid.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d2e97804e451530960b57429a2b0a26c86f5d7 GIT binary patch literal 9042 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 IP1{HR1(GMkF8}}l literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/FlipCycleTileMedium.png new file mode 100644 index 0000000000000000000000000000000000000000..e93b89d600641c9d5b05f94493a9fde6afa850e8 GIT binary patch literal 9070 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 literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Assets/Tiles/IconicTileSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b5ede1b567fd4b90505217330edf7de0474432 GIT binary patch literal 3724 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 + + + Debug + ARM + 10.0.20506 + 2.0 + {1B061ADC-B891-4E69-B96A-E054C80333C0} + {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} + Library + Properties + Connect4MonoGame + Connect4MonoGame + WindowsPhone + v8.0 + $(TargetFrameworkVersion) + true + + + true + true + Connect4MonoGame_$(Configuration)_$(Platform).xap + Properties\AppManifest.xml + Connect4MonoGame.App + true + 11.0 + true + + + true + full + false + bin\WindowsPhone\x86\Debug + DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + pdbonly + true + bin\WindowsPhone\x86\Release + TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + true + full + false + bin\WindowsPhone\ARM\Debug + DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + pdbonly + true + bin\WindowsPhone\ARM\Release + TRACE;SILVERLIGHT;WINDOWS_PHONE + true + true + prompt + 4 + + + + App.xaml + + + + GamePage.xaml + + + + + True + True + AppResources.resx + + + + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + + + + + + Designer + + + + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + + + PublicResXFileCodeGenerator + AppResources.Designer.cs + + + + + + $(MSBuildExtensionsPath)\..\MonoGame\v3.0\Assemblies\WindowsPhone\ARM\MonoGame.Framework.dll + + + $(MSBuildExtensionsPath)\..\MonoGame\v3.0\Assemblies\WindowsPhone\x86\MonoGame.Framework.dll + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj.user b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj.user new file mode 100644 index 0000000..9396e3f --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Connect4MonoGame.csproj.user @@ -0,0 +1,15 @@ + + + + + + + False + Managed + Managed + False + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs new file mode 100644 index 0000000..ac0bc4f --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Game1.cs @@ -0,0 +1,94 @@ +using Microsoft.Xna.Framework; +using Microsoft.Xna.Framework.Graphics; +using System.Windows; + +namespace Connect4MonoGame +{ + /// + /// This is the main type for your game + /// + public class Game1 : Game + { + GraphicsDeviceManager _graphics; + SpriteBatch _spriteBatch; + Texture2D texture; + + public Game1() + { + _graphics = new GraphicsDeviceManager(this); + Content.RootDirectory = "Content"; + + _graphics.SupportedOrientations = DisplayOrientation.LandscapeLeft; + } + + /// + /// Allows the game to perform any initialization it needs to before starting to run. + /// This is where it can query for any required services and load any non-graphic + /// related content. Calling base.Initialize will enumerate through any components + /// and initialize them as well. + /// + protected override void Initialize() + { + // TODO: Add your initialization logic here + + base.Initialize(); + } + + /// + /// LoadContent will be called once per game and is the place to load + /// all of your content. + /// + protected override void LoadContent() + { + // Create a new SpriteBatch, which can be used to draw textures. + _spriteBatch = new SpriteBatch(GraphicsDevice); + + + + + // TODO: use this.Content to load your game content here + } + + /// + /// UnloadContent will be called once per game and is the place to unload + /// all content. + /// + protected override void UnloadContent() + { + // TODO: Unload any non ContentManager content here + } + + /// + /// Allows the game to run logic such as updating the world, + /// checking for collisions, gathering input, and playing audio. + /// + /// Provides a snapshot of timing values. + protected override void Update(GameTime gameTime) + { + // TODO: Add your update logic here + + base.Update(gameTime); + } + + /// + /// This is called when the game should draw itself. + /// + /// Provides a snapshot of timing values. + protected override void Draw(GameTime gameTime) + { + GraphicsDevice.Clear(Color.CornflowerBlue); + + // TODO: Add your drawing code here + _spriteBatch.Begin(); + if (texture == null) + { + texture = new Texture2D(_spriteBatch.GraphicsDevice, 1, 1); + texture.SetData(new Color[] { Color.Yellow }); + } + _spriteBatch.Draw(texture, new Rectangle(120, 120, 300, 300), Color.Yellow); + _spriteBatch.End(); + base.Draw(gameTime); + + } + } +} diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml new file mode 100644 index 0000000..6fe3197 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs new file mode 100644 index 0000000..dc8b81e --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/GamePage.xaml.cs @@ -0,0 +1,47 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Navigation; +using Microsoft.Phone.Controls; +using Microsoft.Phone.Shell; +using Microsoft.Xna.Framework; +using MonoGame.Framework.WindowsPhone; +using Connect4MonoGame.Resources; + +namespace Connect4MonoGame +{ + public partial class GamePage : PhoneApplicationPage + { + private Game1 _game; + + // Constructor + public GamePage() + { + InitializeComponent(); + + _game = XamlGame.Create("", XnaSurface); + + // Sample code to localize the ApplicationBar + //BuildLocalizedApplicationBar(); + } + + // Sample code for building a localized ApplicationBar + //private void BuildLocalizedApplicationBar() + //{ + // // Set the page's ApplicationBar to a new instance of ApplicationBar. + // ApplicationBar = new ApplicationBar(); + + // // Create a new button and set the text value to the localized string from AppResources. + // ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative)); + // appBarButton.Text = AppResources.AppBarButtonText; + // ApplicationBar.Buttons.Add(appBarButton); + + // // Create a new menu item with the localized string from AppResources. + // ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText); + // ApplicationBar.MenuItems.Add(appBarMenuItem); + //} + } +} \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs new file mode 100644 index 0000000..8ac08f7 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/LocalizedStrings.cs @@ -0,0 +1,14 @@ +using Connect4MonoGame.Resources; + +namespace Connect4MonoGame +{ + /// + /// Provides access to string resources. + /// + public class LocalizedStrings + { + private static AppResources _localizedResources = new AppResources(); + + public AppResources LocalizedResources { get { return _localizedResources; } } + } +} \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml new file mode 100644 index 0000000..6712a11 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AppManifest.xml @@ -0,0 +1,6 @@ + + + + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..c09b700 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/AssemblyInfo.cs @@ -0,0 +1,38 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; +using System.Resources; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Connect4MonoGame")] +[assembly: AssemblyProduct("Connect4MonoGame")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyCopyright("Copyright © 2014")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("92d9cb94-79bd-41a2-9323-da24110f57eb")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] +[assembly: NeutralResourcesLanguageAttribute("en-US")] diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml new file mode 100644 index 0000000..69ebedb --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Properties/WMAppManifest.xml @@ -0,0 +1,38 @@ + + + + + + Assets\ApplicationIcon.png + + + + + + + + + + + + + + Assets\Tiles\FlipCycleTileSmall.png + 0 + Assets\Tiles\FlipCycleTileMedium.png + Connect4MonoGame + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs new file mode 100644 index 0000000..241ac84 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.Designer.cs @@ -0,0 +1,127 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.17626 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace Connect4MonoGame.Resources +{ + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + public class AppResources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal AppResources() + { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Resources.ResourceManager ResourceManager + { + get + { + if (object.ReferenceEquals(resourceMan, null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Connect4MonoGame.Resources.AppResources", typeof(AppResources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + public static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to LeftToRight. + /// + public static string ResourceFlowDirection + { + get + { + return ResourceManager.GetString("ResourceFlowDirection", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to us-EN. + /// + public static string ResourceLanguage + { + get + { + return ResourceManager.GetString("ResourceLanguage", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to MY APPLICATION. + /// + public static string ApplicationTitle + { + get + { + return ResourceManager.GetString("ApplicationTitle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to button. + /// + public static string AppBarButtonText + { + get + { + return ResourceManager.GetString("AppBarButtonText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to menu item. + /// + public static string AppBarMenuItemText + { + get + { + return ResourceManager.GetString("AppBarMenuItemText", resourceCulture); + } + } + } +} diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx new file mode 100644 index 0000000..529a194 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/Resources/AppResources.resx @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + LeftToRight + Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language + + + en-US + Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language. + + + MY APPLICATION + + + add + + + Menu Item + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/AppManifest.xaml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/AppManifest.xaml new file mode 100644 index 0000000..fe65e5a --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/AppManifest.xaml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/ApplicationIcon.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/ApplicationIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..7d95d4e0810f4a4c85b5bb631ddd4d3a6be24ca7 GIT binary patch literal 3392 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 IP1{HR1(GMkF8}}l literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/FlipCycleTileMedium.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/FlipCycleTileMedium.png new file mode 100644 index 0000000000000000000000000000000000000000..e93b89d600641c9d5b05f94493a9fde6afa850e8 GIT binary patch literal 9070 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 literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/IconicTileSmall.png b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Assets/Tiles/IconicTileSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..d4b5ede1b567fd4b90505217330edf7de0474432 GIT binary patch literal 3724 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

Q-~_Pj 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

  • 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 z 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 KPK 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 !yzzN4bPIN5Qn$K@C^B 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 z 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

    4{^7jDm zs{Gu9`oZnMayN8xRp?&YJgHHi){62f-7yVg8x?F_np_DC7sgNBIrjb;Pwr{#SGyNlYC<+tE2!!Xsv$`YQC5a zbdaL*kC7-j1e%ly(7kcEnmh$=cdx-M@%3&g6uJ5ErFUIy-tWAFTjt%X-`$fvZA1m4 zcaB%u&Pnu;Z(|pn@FO&`4S==@UD@aW2LA-30ZCoY$q)PO>C{9Pv zdK23y)C?`uh$rp)k;kKWA1bE%1dA&5VUxdEeEvPY4_&Cf`W^nN{w~kTw5-T_fC;n} zAeZUD3_|3DVs>!FFE)ljDg{@1T>MU2`Ojbv^bkh=lh#fs=DXVW(ZbjJ2_o5+peI>n zV0hADORsBA7#oQ5HK&CVQ+${}y3%#CY+P9BM_Qr3JB;@b*r&^1cZ){kccyL9HWE5Q z23LT8j6%>J?z2gM*ryjj_l^7t3?i<>tL~cqhUZ1U1rvPEA7+p(cAW>R9SWT6Kh2C> z{tr;`NY}qfveYaZf1&v_L=em3+6l%e#0+8vn;PR_W1_$?dOFlYn1qd@17BniV@zs{ z0j>zW<>$X0bb*VsSAQp{Rfj19{gvmOFED^yB)saG0#x}l%kW++hz`GTn4|{~KlV(= zK}M|k`qq3xG4aeT9s{^V3mU;Bk^BJBE-&^@p5ea`FT4b1bk{e?+3TK*5|e1*ms-Ryl`?|}$Ra}5fdL(Y zPzyzR4~#G@HH$Ga1tln851m>NAuEue{Z}boXPbi7O>QT5R_T&N(l01CUms58PdM`X zCEjZ*3by=5{vdu~wfP8@{O+OGz5@Z?ooG90u!v5rKkeij(I(DZ-9!iQqFqI&siZ$c z9?5NBkN2=ebRHr-;(;4z@EqixQKB(7u44O5Qd`3+(Yl|paxpFD-P zs=j~sk83)@er63`?quHZsIr3Kbi_rP7l^h*DZvyjDg=>-e3Q;ArY%VV0ek2%EHjF6 zGPwoQ#fMkqRlds)jfV+_LCcnXn`WPeuI^eFXO7D-CKv>&sArL>+A@fN9Fuo&FNbyw zqKc<&M4Ze?l4X0xB%iA7gSZzkU%mIK(vzKMy81A9;eIj1qiU;Yp1BTUOSj{Br?caKw1kj3iWQQ)nFe7}+J(btN1#k&gqJ*LofrY(WH`UmNB z1e|C3LJ{&V!7_UoJbP{g^&vgRSG!mm%2_%*eJixOwCwQ7t zox#wF6=9xRdG-#b($a&C4GCR0wp?c;WF#GirRFh4Cby*M<9JASX)jD3oQ_9G682-$ z_AFC3Zv)do;s*iX$)xF78_?=cOKc)Er8fNz%yh600Wy0~3=~|lD$#YAx z^c8M`Pw{Qo+>_NJwqmCxQx9yVf44LZQ0b;aGMSP0^`~p`DYI!8Tf6<0U0n zD3W$TFAb&*5lOX#Ej|@#S*1H8`5@$8UY6-&+%adqe;g*2Zak*d6r7I;_X#V370{djQM4bw+@=+gIV`gUp0 z)VvSl7kq+2)q!3{S$Pg+`}iZTAXDdZrUr53Tq4D>k8C#-$kiEQS#;FjA(TJAoz8M? zDoXeLE{J&9tdUZx5(i40Et{D?R!mq*b2 zhH#%qsv!hbfs+qA&B!&ND4{asYz;x^BaJw0rb8TbKM*MpnWEsgiW*kbZ$y#P%X31`c>%ii=$UlN3-lcCThQ_TIlW9w1I-0JdI><+#jqEt^kZ!I` zB+}SbfSKRGmi;Ai%UqMJqJx84_V=7tKka;?^xR{W{97Rd2wDp+X%BVL>2a5#U_oVh(y6e1D4P;kdMT;T0eV{jS28@;k=71=vlmnE zpT~zB;}CQnXV6K0k~h+FmuDGl5$r+SFazCn9GCSs@w;P0- z&$Z|GfI{2;IEPf#X;A1~`9;2YkH&{eh)dTYm`gns{rWr_j|n(p(Nh%sCNYyu`VC=4 z_Jm)ZG;9O2;iuW|6D|s2ydt0Jw_ZB5f!Op>M}OhDE=)5CUK(bTDtN5O%hLZ?QH_YS zU@J8I?*;+g+*dRcLi1nvUL<;8;WvnJ9=WNWf8UIhwqZjb$A=%7O+$NzS@$_Zwl{lF z_6<%Te{+ID@&w#{etKoM4L~f z4`0U@+VK-@>R`^U+-o6(CXfw)W8M(Q+mbKD!;&PcbONiy^ zdo~OfxIW(Fk$uidXlRD>}KCEEht+sW}r78i;_hj#}=XES-8 z>1>vlhE8&c?-g@tWqY6JytU^2$}4aQ4;bxSvdd$V=c8c$1I84Em`6H;P1*F@U4F!R zQeRl9yBc6#vL|9 zA~iZwB$Aa6lHd54r&&d-Gibz=x)>!CX9e05@?6si>q-a~o1`arFuzi3ltQR%YYv;- zmU&5)Sb16b_?V=Ro~O^^36>ks0vS&;=O*a)VFE4l#u?;xwmBvR8zBV`Y`5KQJk4*W zG%b2#yUQcc=Z1q)a>5Oa^5`et2#@ZtrHtyZziu?g`jFE}KLLjA!H?ILONZ#h0pi&V zdMJTh{ZRr1@h5G!!^i6Sj`o}vzaaKhcdXWt7q*|Lo?ZVNU)X7wLpb7emrjL&yb{KC z+zG6MNwISMZXPVBW!&J!tzwEwszt1ly?!{A6)qm#3RapC>sAzm$e$~G8^W*k2wLt3 zpMM-_0I_a=3HOEDZ{M})lk=tPbMay(pv84WuCNT+Z3U^q90*o^W<#t^^;v(r!90qe~ z^F}%6~j#b@D z2(tQnbHD38K0;Hb+wi3`90!@?-a)Fr+PD{|XY5d=M{NWp59ISuQK?8QjBI`YzMd9m2fUn6$?pkODzF#1jY^AGtu$|~sXLj-6d`L^~A#pnq+A+4Yz|Crz7 zXOcwBDrWJ?wvhlAztbJ2o}W&XNJ|J6P%Q%FKbbnJJuTg}h!f5cX&xmIGmN`j(l?Gn zUSbbtd$Q_a46$yx0g7oCHq+VgY!Gdn;GQr-AzN`LcTd&p=?&DT5nMM4SJ9e7=?g|o zCZB4>NlM|L?Nwwre1pT(Z_eZr}h~O#NvhMVESJ4)n*t4ldVhCImfX1+MrP z?6RBw5RH|bzi23`1)-C&eSsWH&baQUeMbLgu; zJF}4!THGKS0x2eO%cayPoLoMC+w1qf#)?+>W12MDcaxAuuQ95-70`6g71Wwnmhg@s}ie180vVThVIH#^5 z=+0`*o=gL|%p2p7y$cjmeUwAC=$j%r{!DizB$%F;e&cK2*3<)m%+fwoO#2BI+3H*Q zd!89-nY==$aJuxCyP-qF%|KhtZxwzE6w`f_Lw;I8rITxaet>QM2Xnf0a?5rt#Fbib zL5U_83=zmr8A{22^7j)iKH(MVn!RJvNzmUTIun@x4QU82nnpCqB;6S5Z~i)v9&F+K z3AP5r^H{4xk_j>A`RehXf7ix}onV+1JM6Zlle za&oRni!z@NQ#B5^@o%~i;Y}5jTD$iY|>X`-HG0HAbw58Pu zhx`o0bzbZ+O+S5u?nbQD(AxEN#BxB_oIQ@(Na0RLBP6ng*LFMVDf+mqiWEBF*UPWz zwR7g9AoNYH=_$i#F)NrRl4=S5{^%8XmGANcRG#{=Z+LVHcIfJ^#Z`ZL3*?u6l0*7) z)cyl94=)cthAonHctr`mHw_XfP#Q9gdt!@a8Fzrp zL=D8VNesXRH;ZW|$+pm>p1j-co9KMf$+scapV|iZ8|&-#TbK-Vay;?Wf;xb0iDhIN}P9XzQ$%#6bnsb zoK3QAKrb`8@ErZinx7WZS7o0vql~fysus>m9XY(E3SE$pzQcIwcL6`$ml|2pT>_Jk zYyaCf>F#OKdsxU9Dd<5(F94$~(#5y)0#gG3-5uHk&_`_Txg@`!MAaT5kbcYC38hp|r^!?@4R>`4|QXu+G^B#~r8Am94Odtqj21y2KP`N?-@ zZ+xPH8FD=f3_*qTpJI_LzWe%L{g9O9Q<@(VND8B?@2>udbxRBA(~N6r964dbU?CHj z=8D31RGtb-^c(`Nc;&BslwAg$9pe7q`OBC!v|ZCsJVu+2Pa7j1o+Mt-WKt z(5lMW5!@S`xa>m|as@B)kGyU&T&2Gs{ZRLO*LIsmzM=Uv_eAf*1oR$fkSe#6gWzq! z9amKI0VKcd(vUOqI-|!jZIipD(;!wz{Ye_h77(QWf(3Lf;QzDtwabm_+P3d> z>bw93*=C2YAV@m<4@KKb!fpayfYY7*^j8wt#x`I}NIAEvXWetxTAl7Wy0+#(n%@)K z|CVOJwX75aCSg>U)NVhr!T}1LmD5@-b*E%WFeEKkL^}9Yc*!sMoEipsxP)EqaLN(Xp7;}5<#^IE^eZ_0GrN@({dDeV^)pzp6yrpd+FR~4X zjZYJ|{KgO@UBjDTIxRrAQxovw+yrxt$XwsQ8D>;ofi*Y)rT(s{n<~wU2AX#IA13w8 z4BLxjx^{-7W$%Y6AmzQfc)xjX3;%!u9-E?PuDfbGp?=+-oNUMLFobGnFwas}4?yk6 z4^TLLf(@ROrN6}d$w}wzuE5C+jOn&58 zum`gfkkc>L+;Pb-aEqSoE8OB|m#Kw9w3NNe&xB{(=wmp_qd~v3Jg27|l>w>f*#irb z*n74ehx$!PgQy>_!saWHdY?CSRF+O!y+K*ep&c$nICdgT zZ(2WbjBtg7rmPGi$c|dM1*X~xe0`<7s9j2nY?l+OPGKxVVl0k7-tP&?RrCzXD>wBvDRl50tS-|KZr|w% zNt${?@`|;LicPtthY5=2XO2A6x0tOZsOxh%DRqxRDAu?|K;u1)TS!jh=WM6VcaGxG3*jPD+MNMuJ3kGUj1S; z=)ySLPbSfMF~8g5n>sAKvJ1fpUy4HC5gwQ|Br01!HHxBI`FTbUfTdtS@1|oTFXHJC0ga!8H zETo(1M*wE^Uwm6jJ*HsY-S1{~4F%OK3Q7&G7z>qC4@t`fW2b>sC+J>ZYtn>i z@dl%jyJXmMiBXh*o!13C|VYHYhPj*| z8o7qhn%Zk|*%h^uNQ$Z8rhojO|6%j?z&kvsz%_pG%_MBzorG^VC@#f?TS)5b^>9UdMZ^s8(be23*f{!rUY{h!ug;_BIAm>)x#L|#Y{AW*U>Q+$WvW9%p zDVz5gBTTJ%X4qlTtkMX8d}?tLOLd=DO{&HI^_5gni9gaDCOaiDMq#pumrMGu$WO3q zI093ihNR`%yrzNFdz&^ZFYya%U;+o2gJ-ve9=^wHIx#QvOjO##979pv#hvHmEzQ~f z&BOi-%zYonQ0Yy}qNzYmriyv2N00 zL!z%8C_Gsh%sIo6;h89jUIGE7Ux`X7ehNi-P?0(U)wWJykl!hkNA2#=!iK~MziU~^ zXyOEnmeyasaT_>r(P_&UUQ5tmP<&3y?!2+%IuL>S1Hgr@w&!^I%qkbS5eB5? z?u2O|U3teP{SmtxfCv3_-;(}_f0J@~$D{b{yyFm(dMX%sMbhmTB$`eNFq{w>){AhG z=~`Br1EVmi>(A4oF}Cb6cuMm<0RkkZ;YGX>gsI`laAG9DfB|8-s`N=5RH%8`K%z04x71eW2!rKDUgaU4XwO+fDg zFbl5C0{ZdIG7YZfrOks$C=Dh;NIp9E5!}YZ^Bf}g=(q{FjYHD%R>C-tZXP_rmY`uB zu+MWI9TN3LQ}lnmT^j{o7XX^?&fTUSnAeW#7n(hFAuBtAY8*y` zx$kCw+9Cp@V10`~g4UvP?H^qlpX!0P42p(`2N2}V{b?}Ow0O_*Exj3dUaJk-u+8W0{y zGaxL#8fX+pebp%IJ%xpDr;<(H=_$JI?LttxUUV2k%T~uSE7+0{F!}o{7Jb{}D>+21 z{z36MyB;+3Q&tHjuL;FVAB`r z66j0G8G6G2S}MaAgck&Vl%G%-eyqn{ptcm(^`9i_!q24Vl!cE0X}Rii(y#?k&>4EV zZ5hZChEMXNUm*{LwkbMy@=Q!h=VJ(}m&Md+J9f}! zvqM;P7j(`(vBUg7n~&>Y;Z%XmF@y4Q8)R-lDW5=|)@&{Sr3LVy?Zx5^7}yXQLf#XT z978^gpn4KOQSV=0jm?JCb(p=qLun^w-MI0RdRC^1SRbCfT8k8R4oS<60hk8TGZF&t zcl70lSN}AH0mlJ-ghd|yOUYS7AO=9xmv>j$&wWGu-v!w&zHkbQ-&vJpXfI-FZ2Qlw zre^VyV8azE?;ensE$^O&Qok6SL}lrw#aED4@F3te+|Gt`xQ6$_YA!_Hg8^aL{ooTg zdN|;ekniiAyyFX%aQ4OKsr&*#gR*(EA85RP@NH|Iq~6bk<+VSGqk#i)u}iC(u$>b? z0enOF#${C&l1KNRWZzmk<}ZR2a3Pg@&LsOz8+`1FSX^CeE3EF1?oQz)xs}0LT=)F&Wproub%Y0*X* zVGQ*{S*o(GD?ZH`jQn;oO6X%8b`z9^to$ok>ESG+Fsl9j_kGjQ6Sg3k!(8lj97U{e z!V*g4oQcW#_9Fl_(olq|993wZJa(sF+M zG>~c{Fq_ZYSVc$*Nb<1bXZ98~v=YlpLL`>wxt5hF=*tY|XmQgViuFbJY&vP(PS;gBQ%{U0W) z97g6IBK6`kUM>-44SJaXQ(r0ARD@82A$$Fz|MWI%lENFo-sUJoh`rPH@`XRw)R|u+ z!xAbN9Kn#S7`zRqK8s9wvCMLMYeZ#9PjZ(Nm;!px!P0ivXUgjLP2UY1^g}4IJPaY5 zV!nx{dUVi!7j7Zxlvr_)gqA?6sS}VJ2y`W@UaLMh3GG4qB3?l!Agxtjr`=Dr>ZZHQ z2F3ETc8$PJM3vhKNh|nTUcHj>=AC?`_LkNAfvVZ5V{?sMgPuDtyA#v+xvaF}M`6_K z-`S=+E30>T`UU-7hx2zVBSQ4GaeZ)3W4 zacKJly|+Qt#P&{YmiOy^Kv+uu(>S^~kbVILE>54mxzY^iWakp#8b*1%t{{v8giUh> z3Ur|{kE;Oj`N^Ur7?PHZ&`knqBm%q#Ln;t|5eCKQb3y;BVC?^xdCmNQWtzdV=ER79 zB&LJ86`m{&TVP%Dm8jfU*9jDT7eP?gHQw()|NYM|U>SHE2XfcIL3;KrFaV@J(+iit zd4^Z^61WnT&F6mCC9p`h;kGcE#@@mn$I~js(DHaR#HrdOEwBk;V5Q7R1wn71NF*gnH5?64n&|P zIIFAd7A&&5%BAhucrC()F$5_}+ySO-@h6a>w{25u)#uz5pIWy)wFN>U`3FkD_;#g3 zaZZRHg$ly1L}k}IjiRUz0UXs2F@Tfn-BW=~4B$#!ItDO>q~W$VQ%VKO2w(xfdQF2K zJ=1~Um4B3zzx9V8bSd0~mf(wX7iCdz#{AZwj%ZQAHfl@1q-R-yBS3m~!L@WSs}Nj( z(>k_J5oVYOc>;stv-ZM`A*tUCyRWk5%X}xBU+i`OW1!p68i#iDl9+2`KJZUd%qkcG zkX;vh14}h2c%INJ8>dXSP$7a3nK@RC;rNCnQW|n4Do23{6fMd(=pk>QQta&X4af0K z;YzUq;W-o-!O>VN0`&re(0)yfz>PB?e3#>NOYs_B1z%*z*Hj{d6Y}%fnMQ|=B z=PZsvsE!O(Y5VoV5RqeuCNvJ;ocJJ-0b#i~(Ik$BjKMN1wpN|`KmP*^-~sxj?OF5} z2AkzBm?r3p%4Y~hP&DcO5G#UZlKta9MrlO$Ne+t7)(;7 z8MzdnNrhn~jY(wlJ?Em$=bFo#MS|t!WYCP zz?@5B0!w|*$vPudT5aCh4gs(mc%#SKMxha!Yd)`36jAO)RLm8-Xh>D0IpfE^0^^f@q!9`|>I<@yk3#{|^HNfZ z1`{BPH6Ithit={>=}La?vG?Hl&z@+u@=Q!h;bRD@CmWSz6Ow=SSw(8z*%*~D-YN-w zpE>)Fu^rNPxoswle1REPBLH$Uj&5QppLX@SXKuu@{wTvTC(!fGib!K#P`bpfPc`Bo zEHdosN?3B()fA4Na(Bi7Od94^01b|1#asaxMa+W7;sx(#;lU1k7WIO1!Ts zQfx^D*FyJ5bDKP(I*7v%c@_#qFNaYGNvq*Dn)+&|6)8xSLB@ht7_E?pLfaH8Z|a1k z%bKp`)oa-|riAz&p3Q0W~7W*2q*8JQT zF@6!#Ig^l9^M$Ym&8AxzX40LtVF`^fImyVY_flMof}tSsblRRNu3*ocrC?9*Lv0o9 zymHVnJ8;YEMum&1`6wo>=^+FiR#_XUhj?wz66#{*qN6CTWM>#-BQQD$aGXNZSQ!i@ z=+6H*113r=I}#{;?*|4L7r0z)tQ~@3`Bir|clevT9(p;EA(qiNt z=9EQWJILQ2ZLh;QFEvcu)R zf?2iQ`@8s8VzWAmAi;hdnu7M3<^677g{BiArmJ z3`NJ+-r)UiM^Qofhp#STn*ahoj6{`xCOYG@A4bt&+V3_d3-09*=slR$fytV*P2>m% zdCx@UZTk@v4b#QAO>bp2tI7oRw}ZX79i3Ps(g;`5%MP^#p_@V@WFO%4WOs6^Mf8mMm;?GtT$PjV**e6v9Qt& zjL2r)j`VSjY{OxFu;O)|LnyQAJ#PT&as}+V;|QdHu8nXTAGINs5gLV=>m5uYs;3J2 z(-cr9JVX@qBl70f3J+sQQ{*O`@{vzGlmM$ME(bqx_g#K{#R!1p7^quVsxOWG&dG{j zHe3^l6$gpKBD}W9y>Jqey9fs5Rd2MUe}exyBz2j8!UR#aNRq{J+h2tU`_7Zl1koXB zxqX(?K)Q$kWupTMkfS&b^B^v=fA&y7dZ~ffvmaw5&4gB51r@H4^l`yW zcRP3-E>)1YMi9up4kz*XTo^#o#RaSUNVCE(au@>B*Ma4`hV3Q3=e$U2=23*TZ z5nvKVM~~tz4@j|v2jkcx7&u9QJWJ?(xRjjHp*RSlTJd!^bR4ezcCs^{?ky5mJPFCE zdQe_@MuATZb++lw%IaO7eldd)G=3P>=~za<>V*Txc;U8~NK#=0LNcvz8%?$AP!@}{ zCYZ2|G(ZW@_mYKyQGyZM_9EaIoD0gi0izfiH{epM9}K>W-Lur-#P+t^!r z6f9H>3}6Z{Jd6Hklz3)hTgc-PSTQ0DAxQJ#2AJ|t03`(62q(v!AH4W|a3Lre6&S-% z?)^2!o|=GF)?}Y#Syr3{pnaCmH)3jhg?409YkbLn90?7nAIFe%4)1_d|5U8@*%oev z{olUP&<4cYoX|3fy=_R_lPu1~)}3pt3T=lsRLkQoWa z3kDG6qXyGpig^)iH~x-P{1ojXsLHpBK+X^+fn_FsfI@?J3D_PRHM4tTrTP^JPkGni%A=sO|z=X{m$i* z_4^JUnD(h>Az?P$FiKXTPrq3gxeFBHbs(Cs7zdKKL+-*PqJ; znu!}z-*9cv&zAl|bn?ouyqw#53re{KVt?$Y5t8vm$xp2AA#I@6fj;<&?FRJGx4Xr} zywbpkkcb5`0wHOE+(uI$;%seGuWY=OMZAC)EQHjVfh@x087#OY7VW$emyUT(At~lU zH>b-kUaPb%fZkX10O@gN1?*HlZML_)WoWdO$Z^P~>Uj}Wk;r=GTS!uD5dhT`7NaIA zRZ?rE0$omFC~E%svDaCEGC{F3fSEC|F)U4-V13(c2n>+oLJzEGnh#o$X2m(eOj?YB z=_$Nziz}CT3Z?bO64$oGF(Cp@dpb{I!_jy0-CmqjstmdsBD8hCyZh3Js9 zNQ{Ng-9wS=>L7q*YV{VD@}|3ezAYN3-27tPV0m{=58wrTt{sbB(~fUGv`XQ5Zmt-S zCcJSJ$!@&60QJzMtT1gPvt`WX)eTWR68v&T( zz)oQ4N!jxT!FC)a%!fE-#@klCZUUspjEE6{S!w!lEcFeeb^6-z!F*4PH?SdC=O#9m zM+KN`!&@Pt=Fw|$*%s1CB-JJbXFRuJk|z|3ZBQG>m^I^i5>6XEj@+>6|I65c14;TCIcbAccH5r4v>hbJ zl|iW4l(~hfC)LJ78`0Me*m6vAwIPJ)C6E|vbCR8vXB&i3?w5F^ZdQ5uGtGJU!Y!F z$TJExi#zwADyB|*=P-|lRiSeVwQUPPoAyg?{S00K&ehZP1>8@WNf;@*+>5A{Dshp0 zQX?1WGOCr>vzZa8f-;v-YG^Zos+c-QvcN?%z?_pF=H4~8kfeAc0IK!I;r+R-O#{ps z`J{PkY}bh}`_{PzQ*-Z3;wq*Pzi0*+1Q$?`M(x);tRT6I=w3uALP>xtW)&k-S8dQW z`2vZ!D!SzUp?UUx!VF1Ek>duC>KtNI(No4-vn)Q_kS{Dm?b3Ep$a&&$CgHObM=mBNQepQ)q$BnWXH#nlTX7ExQFZKgwVG z9h9pc`eZ%!dixJ?AYQO~Ei2cmI|ZYs2EHvZ!Mg&igkuSLSI&V04~rMK_k?HFu@B>D zoL7&*Ft`{Mk1g3*_1ID{sUB;5_aDd?tUf)S`vZEB+Ie~|C#CXH2pyZq*g68fj*c%g z`~!+_cY(1j0Npk?z9R64=uWaLfEkO)rm)mEEO~@%7iHP}B40sT*T2gOUIE@YtGs$kZxtVg{GAo%e>s}U={AQB9@LH1TQmq(E_Mp#TAwYYY{hT z1%u#POASXxC_0{)%g7stm*UEc{h)ufS7ayCyE?mX^?Q0&y)yXK1XcE#Zod4&EQ^9{ zplP)$cnTgO7N&nP%$LOXSUlE4rdZ$V6pCye);)l#%>X`jsU7ZT7t69DHQfG5H{_^G z>(T#P`XRysPr(R)oEdNvOLgd&av&@C2_C0D0ymB^TzdAl*N%qoja`%=$t@(g5cB<@ z`e%aCR#H-0V40D+{9DAP09cHA9|VaCMCa$Ybcy*HyZhifANpB zt=p$RkFiLl)F_1Xiltj<>Y0JFE&7wyO${bWUlG{067<8y5tg!FM-ZfWaRW@(rp|Wq zo0+F|4ZGNeR%EtA)DqJ%FaRt;)4rD6%{B=&dxz&ORHe*;32!~7NRD@#Kilp52D@2R z+78&Ti`NprXE1s?u|nf8^~Cm;euCGwz}V>_X*qXf8b}up%(8gRGuYO6rU29TmX0m5 zsBu7eE(->5)RO?ERh}J&?f@71YCuNl*vC0HlAIU;k>Yr&>*(8Td+YpH{tLgzp*rfUzcKNb-LHMmc@b^S9Kx8< zj(G!4d1=LRSK7sKt^kip!$ZI-7?y$0;(MpAeI5tKLS+>r7_vnbx8XG8vyAOFDxu%5 z%NH4z#r9N+blaWF$)~D@Ae3JR<~!N^+Lc+mf;rfN-r0voeKPYQ@a@BTQzQZyhh zdk0KIX(_3K5{S{Vs(IB96CiWStG>VHp`G$<7hYMkV?kiO+4*2)Ub^HRikM8fQO_43 zv!^|ed`;Q>SA_K5p$f1>KSgkM+^s^_-NL?^sM2mBS4CIu*~v?u#%UWEm>y! zmU)LCOnt%0(stMwg%~5u7Z|f;#%*hz$n=*f6e)h(38;R|-G=_x?)R3L>pt$wh5$#H z-)H(33ZAV)9qeQ5M+ghewHri`oo9CoO!dC@lqu%0b(_&5MSnJgY{4SMiEEf^+dHkh zX38)U^ut8R5;01rapV@Y-wUalFZ;S#kZ@o4g;h5e*rbUY<0x66B#b@Qmcy!&L|oZH zaXCudKvG{tXKh+K;NAcF)rvbTP@Mce& zb`5&MPcOCmXvdz$rY@VZ7{7cZI9fOhgY41SP*MLmjnYx7SH0KS$%wfR3 zBiWC9ke=O_JOHG1nKE!;WT~+@AI1=r>{!;%i?)ZOTVWNIk@~(|R%X4A`K&}GsCYI)V!YO|PB?i7s$A6x6OHg@L zm&7@g<~suTF#J^t@nKkA)diuI4|YM1gq~9NGbgYt^=RUoz8e^ky>O7sn$&A)Nl#-E zNO?8qZ>vs$1ILQVXI3OFuKo)_$#Tsx4CO^x3-X?RW@UBUh6`&6&+D@mXl*>%^q0MD zv$A^$Z(zyRZQT#6oIVZS?{*ZDY%%?(Uu_}qjd{uv$3ftSETN6*zY;&RL}K1!2$BrB z38sFX27$TS{dE>dYOwZ&pzJOU^ev;c&ok(4+1@s&=yCinP~b96-ImE&Nf070`d|4B z`Zg9n1>mEJ<(l3}e1eItHiQ$_&XXjJrFU`ypB;63)j-OxDjBL{O~kkkq95 zBwMzl!-hM6o;gP06Mc@^LX5-~`0_6$rL;Z)qB{P>6;8bd<1@{2)(Qm5?+%@t@5Ym1 zJFMSEAQUwuE*FrxfuxuV#v81#AEAV?QnJ2&5=M$5_adtHI?HYL`n4^rjFNxf=p_)iQ|>{Nb3?^|mD`x@ z3{1EDBzDnGwt_}OZuNDeC0+lCxAk>Hq&%@MYs(1HlK#?g1al=r5b{}*8)!>;jxK(y`Ebz;ye*R)G<71vmtdIl8>?>L0UEbs{!${Zk&;6BFutU zt{DI|UvIg4T52}dPAu?F#+qEN!ZudcPDNfu% zQeW0(=4A~_V!Glf)A6y;UYMScbj8-SyapS>B31TD@UCDJ`O1CM+MCob0mbw8+CriI z#5%-1J`s-~-Gwt2Dm z0^$v!LSy@e0pz+;Z(^x_H=1p|sj^*zzvw~!;lBl(@FEMFp&iig^2LjcA8lAc;4vAL zmwQ)kLFpnyP?gMC1x8$`Aqai$5K2?x3}7ZF#;{bkAZD+xghjji78t%ZC@$B4cmqlKrkEQ2X-L6}fNS$TE#AP4V2fJlSNJ1B9;?5l zcHY|XRzji04rHhDEBugk8!y5wzi8VgZqXRRJfQ|cSj->re|WZl^lZz zs$ZG?4zzu`(&Io%-RE+0ugMsMVuc@8U5DEuZ9wT3?roJ0EzgLA6n`x%rTj@4)fL41 zhT>)a<%b5*sjfsfj@Eu?|J#UITbF2PYDikHQg|9j&w>EV;}F1s!&Ls(=NDfK(8|qP z2yg|V+=XBz5oT4^bwytN9en-=%bQmnn4ym`Yvu9-;X7ayLedquji$UDqGUBQuZw*R zn+n^L=WTt97{7=VJ@n-y%N#}^bY?l1Wz`N}-aRjls;}%S}Y}F$Na6Y>2&GGUWh6 zsI$)^eQX<;MZenE6N@!m$jZhW#$l8@8ukA5HQQwLB-rMusBCB8w2fsz2iwE(a%r13 zOD?f3Ppr7HTNl^1bBTB(x3DBV6aiS(JJZ>EWV0+j+le@kDsLB=vn|AI(8ysJjbNsH zSYB?Y`Yk98wg+oRHFmp2T4x(h5MTs<-g)1r5d_J?z_!_{M$qOMf{?d2ZlLL-#^at; zUqFokO+3aZe3?g$9)tpF45O(Iew8`PnLkmN_cep47fwRoX*109+P0UrP_*k(R4&Rj zfudOX&%a7GK`qS+Qqeo2DEUq@vdN&w6erIQKA%`-*d7Ymr^$4}*MA|?7U?v-0VG9| z`!TgF1PBTHlXekQo_B<^hG5b#2cw1@86PK03n;u5kkj#%tYWpYY8h56V{M=wf}c36L*Zp8mMK&YF(fLb@+lPM?N#k4 z5xCfojZWQE4$)GFOG(*2t1%Geif2v#Dd_!p@T|e!kWqVIP*&?B7|NAi81+Axq}2vC zj?-iJ5(7WdFU|H0B--y_h0m}uqBwA7 z@`FPtW5*?$Vs5N6QZZV5MJb;`TUvxbxmvQeQOI=glC)k~b7a{-f3>iN*c0xeQN@nWZe zE>K6mMb8!+0(B`XO@dJvP0JtMbeF;M$KLiu*9dI6<&T}@yycJAAj)@#Glj$Q$Mcop z{Lp2WKMsmZE(o7SQvV9LSzXh^eyDynZ%z9o03X;z?An-3^-UhaMYM{#ds*yB7=)01 z8E&CzsaED&l)4E|%d&zw^{4XSc5l&f(9+Tmg$CD8q0FgTz6Ge5Cd)i+fF#!>q0W9Z zmm=dBQUtjRPANUQNEI7hA5`?Lvt61qvi#-rIK+kcxcDHnJ<|>hhpXmJa!eqIQ{z4` z#rKAvG1p^9wrw+Zw}ZM}JqFD34PlAwtgs^WVhF1CE)EagtOd>IDPA3tB}q47bkOfiQ&$1e(v!U8)qOTpqC0Pjywc6S8bn4SbN%RujACeprmWf8*z){PBT}?KRA8luB zo5T3qNf2OUCXeo+J+;jh+)IK%VF?o4!qGM0t?+yrT;ZtafC~@9B?;U)4}+`dVQ|0mVQ}GLn4*E)!{DlW7~F4u7+iQ5 zM#&)YFt~~y2KRd(hGmvFq=JW`fBs9`iBKr{Fq{d`Ai)@pJ`%vgFsK3Phv8CwJ{i8} zVTh`sT?Tdos5YM=DR%6dY&YWPz0D!cEI*p~56mWrzYCx$`2?c&kSI{*j>zaN=G;V67AO5)9`)WNAknR- zX&!?nq0~H7-^!gshy{2vRoXH4y&8d;U+(eETw(DQV9I!Gb}ml_LFUG5zm+48aG%^! zLp+NokIL_p$N!uA#QsG*@`mZb?&}44%YY?J8TJE8JhVz!%V3O?1zOo+{1^g|WyTFG zEu3JF4C`D3HgpQ$w>WDE6sEyZa*qCoK=dfSX{ziesJ?&pQ54z>N#&npXQ_V>M%Qal zHW@#-&VB$QoGxKMvfJL^?va*x6fQAlz6%p@S_rZt1*y_JsLBoDqkH)u0g`kYSs@RF zhLZ%LZ=!Z!F8?FKOc?{3Lzg=+wQwfNKFHSJH^7ok5s~d8i!EOkro~Zm4iAPv^t>je zNh(nL@w)aC6NTbR@8o8^6ju;h6pm9KZXl45JsdnXT2CHX!fHQ>&e8lJiYDcUB;A4T z`$r!lBal;lD>+m1S0Gvx?|vAYfA(2Ltg76B_PgU}!C&(+wnLOyp&tly;6i>56UL#m z@Zk~oFu;e$nS6Lu$A`yn=EI)sITzdyV8cNLF^b#Mr(dTy7y8n(m@opQmj_-6Oc+uD zwbJL2fdeSw!zGp$O0;YUNxdrz=rTI0;h=yJ;lTF}KeQ%}5>+oul_b6fMf{wzWNwuehdv2~eQZz+pey1A0kfY^=nM!7GG0gqQ-;$qSZA zf+5)hiePyip-I`}2r76n1g0su7*yG3+7NnU04Yv+z96)pj0mw0R3_8d6Q7xI97fWU zddfcbd6O2T+}9!b1%x;yfowN+BEv&|%+|cikm4F*R#s{XO;3yoYFW?1Ig*vE*8DnF z>wBtL%_?iMO_~SkS6-%URcA;xc7d(reVQ)t^TaFVLFOF}tt29Go`YX@=x0Jgv zi8s#&xffce0lFsXmOvch(%xGm!$P67?b(W}Fg&l2bXlFey9#*FGxT`pl9aK@CFk0i zmmoTC0i3-RX|u1u554^Uu)Xq(C=TWQ&?AD1>tF~>3o#x@MgMqNLzud+h6fZbQ0QaH zc=fsX96pR9>3SaaKk54bF^TglI$qE_S~?_gl%D%i3;}83LDwHce*!69*`!&Ar;uxEH2oVDlXX8 z_i+JQYDbhH)mwWBpo$US(QSLqiIDsQv>4Gu5~9c1)L2ZOlnIh}7eg}RGsA6s4 z^(<~M09CxWz|tL>$Y8wBU`W7T%?nQ0D`n9Md-Z*M@XBHXUdNCcJl`|tIUXEA6)P^m zwDY3LULm0|tcl28zRY9>gHT6}3pCB#Xa~LkHwIME&RvI)|Wy@+#_QuA#IL!l5+4C6@mzK7;%UVOHbD1en&w zzq0(5fq{9|XXpD5_KcoCF0Q2E?-EH@VI3im`?xG%%Sl7F($iO=|96vjEj04-V#hrtm>>LIR!)Rl`KYLPr zQ5paRdguQbqws|)L5c$h;khIjz|r#(RG;bQA9x7*w{ZAmn2&Prz)^J8GcbgrOZ)r^ z*i;Z5=pR4-`pi&f4Mk6QCI^OaG%YA=s3ib*z}eofh`z#7cfd(>-r}(V6rDMPWtKNE ztK}+G->$cp&Kb1gDsl!_NLt9??;HQsB_Cx4aiN0-{5VSdW#S^&55)sRXVPua>o}Bo3@@OrvZHVGw23#@ic!T5FRakUUrqBo|6P7gti4^ey4! zxcF6+zYD9(fC-%fV(-E8pIPmPElh)+>>LgZ!|0v&)$IA{0S&GOY(+6&Jw0RISBIcx z-q$sl#&NPR0q$z7tIX)Plc<8ZvfnW5t-BRgRk?>a^W`VF3jH{cz74pviksjPNY7H5 zVpDzXAl-D_5968POCX+V>f~mvrn!R9bMF(-_}Qh4F(E52@ zmup1kTDH233o9rtyTsAt2-f@Ej^dInOyTJ{VmJ;0Ka7wiGll0|e4a-*f~0j6Jj~J< zn7=MFN24#SWC;8>%+KhNz{p{M#*hjU!&%MZ0s~ORhYKv-oWR+CAv7?k2WUyhXS!u2s=_Z?kTU9)=2b48!TEKcJ zW_VO^GdzCN&ES5ZKf4TCZ_n;z^dqok8gEacGarR(6m65)+z+Fs8YA1za0DLor=n3^ z7#PPcD^qE0HMv1;*Eq8WwoO86p$qdV%=a`ax(d6j{(vI8o?5sSZ>|m7JC?fHSgz!5 z9BK}4?n2d6jz|9N$fhA%m((@=YoI8vR|`k4dt|awI2U1TtdLx7-T=zH61{0a-HCM= zHb0Tio;z{A527r|{!O#zt+H;1OJjOgK#xOly^p(@&Iv}IM1B9c{H!|vQ7AnFgx>c} zL(d$h(D!Hetm7!My_Mty`o8q65kezCdhFA;lsz0!gK=*3t&H}1maN0Lke_9Ljza0) zgqAiXY$_StJ7z?_F>enVLr}H`?E*||D)nPoR*xS*i_3JSn=I*XJi783)B}Q&?CAiQ zrua96La&0*vZ2sNC85yAZwrM+W$C8HS37~O1_pErhsS93js{2^)11A}sDa z4S~#xzfR-ndD7B`cYG&|2=V&9#0q`!;d|%evmUH5By9y}R!Qoj!R>S= zxBQv?0_*s!u*>ohrY2`MAc@}g3;J7fWoLs>vn$VTq3W3izi%jN_FsO^;8k4=UXP=- zAKL$JpMP0@Y7k}CJop=cdddNssx02jifn;0Qw0K1=zFV#?eJloMa@dNfV!=b)%B(clnZe-;b*NwmAJ1;Y%;0>N1=?<>7 zd+!OuYx^u+BhYZg4WR3}?xz1D&3Ujt)Y;#XE#$+7(@;OCYi%KGc4DlDqbfr-45^+j zi*$>3uzZE7U}0DZ4#bwObTYD9zZO@oVVoW&nn1bC>Ey9-8VDj&GczDBOM+=A^@Mn4 zCJKh~N_O_o{Mp806_p1eS%nYCtJiW!c6s_`zLU)_D6l>reTV|bcuCAPG9P3LtOw*} zSuhQy!7%Lh?xmYw1ln-8&2?CHXP6I2umk5zRNCkpL(!rAhP+i-12@7I2_m!#?P$iO zFbpA2iW_L^$zkRsts?RVa()LTm<}?+B%*GZc*5^OR+b0jFzN}w+pwr_@H@?O;6SH< zw)2Ua1(G#9UhG85%BzPcSALZ67 z8-pD>+!H4)JfIiXx7Zx|ggSKov&=PdjWLTDlW=Bo0hHx0^)GvXGEY66&P(X2>eY?@8;2h^XKh8HC( zOR7R|Be6^2Ib}0a0^NoA%e833Gm@U34sw}Bu|H)_)InoBPo9(sPpj2&(181hSk8p z!lmOiO>Ow6wvEN~y|xrZY~#`m6v@})E@NR1- zy%t{cYy(~eKCHxKU)|ENO%Z3}QdCa$6DX>+-*!o~p{3|+M?n3DzJ)Hb6TJjTfB@IR zauk@vQB8vAy&~!MaZgw-6AXi+5~6j842y+!St?P+C>TMI-RF&w zGn#y10*?efj)%9<(uf_FPh`q@p`WbCdoh6`$C3L0Rr4e+eih~K0u`H*>DT<$ebo zNn-E8^Pjy0d8W@M-zBTij{^aE3$UQkQ3+o&^XCiEAm z4-2wfGC8o#tjf9$=()4OqaoR`dV`?M3J4RjcpS^&qLbpx(8u)0Mzn4RcZR4f00?~B z6N?;*0LumwCI1f9gtPX$JljypSve0U0I?D)4jkKL+OeG0YZoBTwXhsPCULZpfd1aL z{JqK3x&|^_=;7J+EdSYbsF^EIic65WYy(tOvuP+xt4$vY$rKN)&^d)z@%$L z=30Ob*TQm4n8Z;YoGR(%@C8jT{UDT2Kg1WwmX~W`$zakHj%pJ8_{dS0Yx!qiLY|JE zKP&D)hxEi_>M%v>9xFdZ%d<}hLcOA{%857#P~Lj^@F_&x$K zPti&o5D^wnopGk%hC>?~L|9?w1IoJzlI-viwkm*R;3un@Es4xbk z@n&G-c7O)wpCTJ-BYPt-Sp~Pj1&l`b@%MYyK-JWc`}VxHBjF0E5d;O^DlMhSSK8xX7p*0=C7aB4W>`_CAv4MJKO<6W35W_;3nal+{0bQnSOPiu?u4 z=+tov5%}R_j4+$w>KfsLFh$0I=5XZ>OubPrQf#RvfGk&`CFEI=v6>O=Y5~;5xvsGE zkb?WHz=tyxaK})R3P;&_EEs~(L4ac`R|*rgE|hR=pOP7)H3l(<6_aQ>;}%s}HW0SB zj1{nPi}FDWF0CSDaS5c+0ZALigq(a5a8NHSe5v3miuf1Z0{-=Ay(jL9lUe_g<6b}P$Qpun{o=P&0t zl>SnYH+cr6=^5Bj9lT~mz5iLmijw|a9H0;_Z4bu_vF#+o05czkF)W?&1>X4yL56D& zpEq01i8LGlRD>G_uym3F;*f({kd8w3#Z}PZTO*Lr|2gtWO0|EUi>tXCzM=W^K!)yU zfDIQ)=;k#@)1i}B!G~)oorHks!hi~-;tPFY6+HNc7{l>afL`FC4^gTc_)J>Keeew( z!6B(h^-1{15a`fri1llwPa{)72G|uD|q$R$oHKQX$ z{X2sxlvg^y&$ieY$^mHwRJa1tmz>(9HM|w)xgpcQNHRIaMCT``E>JYy0=P+wZJL(_ zaNx3D6-S0=8IJGCSI?dxR20w-qUp_B0X?RgfM+md5JgcF@VD`#yF;ExRcA0+0S%hR$ zev;~InP#xwxLsN2N36Zp_mU8qKK&?PlBHpbtu!77k=>(r2cABX1pA+Pws|05QCVX4 zmjF-tDhc9+W1GnXdPySRPw?6gBRR4RAcrEgx@JTVglNYmGfX++fg zTk%EY{QZ|>%oWURx=bOe=1N>NRa(?JCCbm7tSeIQbGTeEbrhn|@UTNwv0$4|LWE;S z5RvD_edW}*;O(Es(g8QOOeA;FMCT5FKfOG z=nOlp|L(>L9T#e`j7DTfFNsW(*d1t+TgruiRr9C|nT+xXw#9KJ9pV-fN)lZkcQ2$I zt0d4>Q|rJfc+CzfawoKM>|P{}Hl$J+&Ovah$j)mEN0zk>tyLh`PuU zq*YB2tWP`FMPP)~5Eb2@HY7fi6vIeL$>63rJ@gN<#rvN%rNq9?!ocW`#5J6yAG)kH zAzomrkGRWv2+Z%8#1JRPy>RMnl1*7vWYhHOUVp)gEdJiJ90@X`^Podqi_c6{?eC{#Nj zJ+s_n5J-Je|6^Ac^fYi&R-{Yu0~r#w>eBb9-ABJgKSYPryHK)!5J5Kce+x`0F^uge zU+ircb(7{fsi6CcD#Eay_%3bwpySAJ92AN*UX99&bK)K-rHo*mnceUgH>Z zNtefB*VJb*EV9eXFBoBZ?lIVyI}Ju+p}_H91SgqJ!OV1JrV&+Bg>~amk_2hh_^$`v z08iR3H>QWc2&2Sb9`z$Yl2HsfhTH?E%ZiE0a*;uYOYgyF-S-Q7C1Z|sqBAXyYZT=b zMx<%z@zU!dByU;WP!&Mz3nv&w5pyEgrx>D@jU)P=i-f<10VE5CZegh=MZ|ji)3%{I zFYA3pScc_emlMd=Q+@F6dZX)@c6=O%i03riz(GR!`e`6JvfPcSmNXw(P-P#~JNYCK zBs(LFYbQZyyVNsyLb8#vX%Gpb+>57_Br8&oD%-FlOp7hBgDPT$JQUg{i)YhE-x6cR zu&_8AZsO>0NY-in4o%f(cK_PIYl*JvE7=*Y#|Vs40-(>PD!wqu35pG$V~p#HWb3a_a#=Ay`8J5IRYxAbGr5@5p=j2t=cL{!Zc^hpmXBGmaz z8v;BzsslZ->W2tXzm8R9%Wz~2LXIDIplNzJj@JqFpqyRfr!Q8Z^<*4i-kUOtrHK^$ z-mqYQS6>J1Cn~VMYgl+55e9Kolc4h~;Jr8=|G}7-c_^-A{&j-HQgfw^BdaTJhb z0#Y?!yt3fCGg4Mn8%TQC;FS%@o0@<}dQ^btN63jVio{uP z6rII@Arw8@XEsFj2C6@tJbRhLmAKwpxmilTg3zY%hSc!2_s=~-IFiyi6P&B`3k-c) z|Js4ecy{nF0g}@?6`Za0a|}IN=i{nK1rej;$@2+O^rzx_KS<6}`~Zj^&BsN(-|Z+c z*_Jy{|Ka>&563~^hY_;;K%4_-;*qqaOV{`i2fCti>s@W(ysY} z+0G-y%^}lQ^ddCb`8JTE%Ih&q-Ia8}np-7xvw1THrK-&C+qlzRG$#FLd00{aoH>;{ zne<=&an3)IsJpsAm{)x@4yMN#j>^*Hy~BTi69?0i_4T(cxj)2h;GXa-`*#>ec_ALD zYl;h%n5Pmrgt4)bE7`x2m8`;>fYC$%dkYk}I)D0L&tXAdd>#=-kW_OaE-F%&`6tMrgRG zO=-vz&H(H%TnQ)ifKp?aDDY1z{LDIhIGV=riGTa$EzJ@^o9@GTEl5q)p;M+?0_I`QLUVk>LQ?i&D>>6Z zyaG|G_>k1)zS_6g~RJi%;8~#}xXdId-L0;@8F-Bp6qr3b4N2J9`a2rVdlhNdL zyFjy!vpnT{G!N_V;7VXubL4c}D{&Irj?rzgJZzk^gkFvtShBCj{jfUu19s>Q`ph*- zr=b*(=R3{S>Lc72)KH}ch(%4+ect$$NA^vX=7$IBZ|6_wCSmMRlaN^jtn%1kqhRUp zcqooS!#Tbe_p<12KnX6%V5?@-VFo~zZ6FrX>g3o}AKGHEkRe$)T1>%cVgPe&BA8y+ zKYi|82n?_rl$}R_AsE#Jh>KrE`MY@BQyRQxqyh#cvG?Hl&tCEvQ!OlQ6bdllN>+{m zQ!tvYfFlE70L=MUc+`Q=+?NT2d6&XCm}+8prI{96HrO8M;4&l4G(3w9k{97XUrbK% zBM9oX?Xt7?tIoRs-JhwzH6nA(%=3e#E=h)Q9BFpk1*zN_?R-vVHM&{Nbq7p2MI@Qo z#@4EH<%sy3g8-8L9rJIu6fo$6=S%7sMaC(9dyh zeK$bb4_`zBk>en;@u)lS^kpZYGWRkuAXJ?@AUZoUp|?u6`e5$E(UO3Q{FA?Luua;> z=UTWne*!`>0C5{lH8+@d35+->fV*@OG&qx!)BPBPMsp#k%2!BM4!z4k=*#3R#~|h# z3L|K`^H=T8l@grJp`1~>sl*RwWw8z*suEcPcAWfNvUvLbB=q&ly7VzF7SuI;ff z(VT?m1dc3Q?t@fK7-Qd*AEbIC-PR^xNn*s2@1k&p4hxP1m~ka5$A&2w)eMNr(oKu6 zgAY;z19)V}HN2OjxsL@Xa4jsyfk_;-B-o^f&06U${h8%ilaU%X6-<9|P2;q>$_R{w z?bwlxaDt=o{xL8&P$c+qH=rh>JZ*N}v{4|)Q4>#Qa2Wb2L5!aCJVFcusV0J378&(E zp0YBhre^JKHZ|Un4YfBn{5XLZiR*hdHTRPz+jpo{hv^SZ`iTa}q_&;O7byzxtPG z>NrG_56czK{MTg)QYm4KkDuAwzTDUNt8U1LMLx5?zTenz7xpUlW9k#UV5)<}LQnSH z&BY_q;+(h*q?8GL0zej?YvAnMg>&&E(&9w84WyI^>$HBS1i*(^3=ea|w&m&7(%xyzGnp^)n(L@S%##^K$!z&%hBPl6b#QtqsFS!w1O zJuYWTg*Eq0NI?Ux!D<^zgE2r>a9Nt62! zm6N3{`=n=Tks^cJgK46zt7OM-A+o9bV1U$hFL z4nY_PQDQhDGOU**_FMx$h}|6HDAGK+15hbZ+MSR1cScne?u(p!{`HH1x|NFf*=ECL z!q{`r)7`6phK0rHa1%!<3l8RIM*!T8?fuJnaJ25a!%wq0)L;T#81tzy z2B(oAb`ezNTSe*`=y9eC+hZZ=RfsT_Bu5WnJ~f8H6sJ=vmNu`KDLvUOYcZ>vv}*qP zEK0~S);L)jwu3C*5gyy7`0eHJ*Si^f7YmCYw!vfiaCaZ&-JZrMf{e3q z510;Obfkbvt1~?uR3KVwH7YMpi76-@gg8vaYIy;C;7T|SrfQWT$c77Pc`l3t>0kou zOwT`wMd;hHCB^0oUXGqFSa-Pdgc1v}7aV!!i`@G$iX%^xdmyzK8T-b6wK8gM?$Qlh z9o>^2M~S~oESnj8^urasJg($tSQiseI{4s`=66~BV%G+AeH@hFq3GEUANUt}f3L@g zv^*Eaf%H5jrxF{W!}(p^t74Jk#1O=s$72#r2RkgP58%fzKP;qxA;Tc@9Jz_7gC%BK zZ2tN*`9TAw;hA@*$Ipf2)qW+fL(Sl1^iEvLqnPVH==Bvs@=<<55VBn_?)p!HVaGEW znT_Vd;!0KA#g4iPIP`};?SFf2@({&4RG6V3^!dCuEjcVKuKb%gN?G6$vaRXYPPQ2g zrebTCk%ig!hb&uU1l5(CxZbBAwB!^jdfxx+vpQ?wqCbn}htzO>jBRX3lG&yKgc+%Y zNiZExLP&OH&BoV#nI*51{_Cl6xRXN^_}J!aPfVXzBj3%9DG2#T;s%A1 z|M4639lML)i~IfO!ZR+4F&rItM7-OkPzZhe4&%Tw1PY)p#pEx50R*M$w#Y6ozu5om zMP6=xk?rEEy#W4l#ak$F{1=zikuDtHd_Y#Rcl*;@fa0#EHn)Bs!23m4lfPh>XWn7Di&)C7`ZvmhtT{NrIm`fp>`u6xed zpr9tj)Om!ULi;Q`h}mat7?1sj5wx3_Z8no9GFW|aC>UoD1C_BQB=I%YzFOt);;l-z zaOIp=oLc^~w+amlNfy5z<>wc_4nb*{Itd}`p}CW?k?S#W>B*Dd7RRP<&L1|&;jPM= zLp;jNEANf`?UbOm^$$KUVHMiZF(QWhSF(!yrvL65G1)B3eNjL#^H^G9hv=F8N7o41j*5&uPh`Tw zZKxTwFZZFUwLR#`5~obJ;M*K6kBDvKbbP~-abiZKCG3uyK3L=asem3wUGT1Y)Au67_E0E8jzI)jYTN=-PYkmn?4Ll5 zD{7b_;{TdMju8x5dfbLnPY|AT0fGz=geNR!5@ZBJmLRv`)Dt8m)IDtnR027UnqX!0 zhq;h4#2Ap5CB-z9dO|!`8Fx>B5oe5e4(--4kfp>BfGj6&VCi~BfE6Q;$P8KxBFub1 zzL6M@ds2M?FD`lU7_%Cy8MGJzkY&XUEIl>_JviPG0++_Haltki_;}`i(R%(XQsP54kJsLyAU;!rMqKl;L3nX zx~~_{qsj%!e5Q;8YKX61JVsAxz9%^QFLAPutU-S^glvH~ZFKYM)_*dbnEuNCH%c7a zwW9?6FcGpugRuAGN(W}8{t7KgVIbM946#CLX(QDC7c}zdp9L08vB)!AbtD=Co6Dg) zaCN+Uoe>Qr8h`H&2CEVp-G-BY-2{*oSKDWCk$zI!I{lfGzrMiUPGZk^qDHH+aM0Za z^=DEt1@vP8YE`}8X6(_ivYP4oZ@(gp*s}TUZP}O|`@MI;m7IjaCm__SJkN2qt(RHe z&=ddbHO@-QZ40xegb0QAYy479LgNzi$KSBq_W5>^$xe7 zZ+h`2Ys0e~#6}=2shed9sQp@4PWzKMs!70N1LRNB4FLuw9F)NPZ1m%_YhIiVBM5Sw zxDBTK9cah>81+}Nd9TW%+}F%rAaw)mI8NI!@QY`zL*Mgb%wKARBaw$<0!H%XxDQb^ zSy-TesbQJc)PMkjaChBt{O4q8VD_F1km6EQjtCPdnr;dfT!tIs@r_y1zzRBs*4hAEKw5qN#N6O(hpE5;#p3E$eNmW;AxZ7FAfBVFbp6^hnraHZAW?`6lu>8BXCbCy|+d=!cp zgcp*MH^C@~^2Ec>?LSaobPDhE<02o>)Hjx{N3? z%(cj8-j|d7$VVWwDBL2T@cyY=NKWCc+$@D(L8$lU>V~cVHu5HG_UxSUJgXu8+d5Y` zVvD&G!-?!Dwpb~*+{_MsEa5pX9Oe}&<4-e%p%A+!c20Ef@zBoFPSoc z5&Zz|(vLk$E<(&jXGe%HQB*7csm$q-f%1=M|KvNdi=>o)DJrM@2^4Kl0;vD``jsHS zweZ|G;2TJAtVYbsc9$5iVW0%i@!LgQQoNXgnOmDUiKwaUsH03s-maY-AC( z;|EfWr|tp^@trxsxyAs{Krg>bQR()EF%&%xMc3Ql(z9g|PHf$F8Tk7%zzx+E4Uj zjMnUCzLN^$0OEYO3ri^}+_K1;vSNN@y{WQY^VioYyS`^fe%Ly4*bMC;y1P_)P*$7< zw_tQIATE9t>rca%U1#wNYwi zf&a_YRDCwTAA?fufc%u|g)L@>z6c{Xx3*ykltfCm$qU0&i>55BC&TybO(_xD?gIV6cn#cd-GO{*)&D6DVr>lLP$wzU9(`5*x5WZ+Ze0Y5HHpnJUW;^E+{UZ62Dn-++)zy_YMaHGQ zo-LI1CHi$ZU0Pr`*m4|E5Lt*RL(VLft+P)gS#q6F8-bn{Dl=tivyi0`hKnr65QUJ1 z(&NsFO*eKENfV+CD*g4H0*P`h)gDTa8UP11y0C=KAUNCs>=R$|qB2TJkO5c#bLP3D zfHB6z(F`YqAj=3%7C{2km_9qf(>H&9kZEHH0~9Uy*fyNrDEf8pGlNbH4uTwk6G;$b zgQYFmQBj34MSF-DJ2TSuBe0?YN+cs@Zs18iRFyDOb&Z`3r1c0~r~wIK!qf?ZFxiBD z7;VA;Ss2plqnFd@{S7N-|uMM+u^J*1YMW-S!E zcb2HO<{X4*M-sDSI1%K7hayLlqPcaO-W|aN+L4Z$967;jn#utIbqny-*iM@1*B#&ACqf+mJ;0 zN0NEC`6$^?aYoo{9O}+ShiZF1zepRDm^0ce@twSWUN{xa6Uz;_f!@}f=XkaiNeCP4 zFkCpno9R9xZ3G)PmV_XBunhwO`R>sU@=7&TeX3eRNznkoL5yxRG31Eelqbgv=8lZ{ z$@O5~ua#>>)7RjQ8XW6WY0g84RwSWh(8E_rg{lU0_r4S8;yU@N!i9h$jO^x1q2 z;t-&5X;Z@#6Oa;xXdj+Yh7>%Jl%cU6rU84}TqmUX$lySfW*D9zl%t5EjTR_{009WG zyq3{mEI<(geEM(MJoZZgW+W@78BqvXuJ;G^)5hI{Xbm~BlvHxPTtS8qb&0jYJh8OE zaB$@~q7bfFAH97(xhx}h@5pj|MZH+RY0Kh3UYhDsF`2g09Z(#^>4z%P?!EQ4`@jzO zp&vfU@TZDhd8^Hq`r0;@#@x8RXSI0CC?lA=t$;#^Qeuc6CYC&ODyyZe4jdWJeBjiD z#lf7Ou;TeMJwy?bqc4ecoJiA^X(F?8J}#wNP{$+J@dpTB&m^H577VWCYphl4bS!W~ zdRNE_50TtMHE2UMvb#8zu`=0x!A)4>5T*=t(AT>sF4fnAgMexOHKT&Yv2r zIAdoKZV`zRY2&ooI16KjRAi50*)(Hu+cQUDh42Tmz9HI>m@LT|q7a;14b(t_oQBe* z(wu`C?MT8+T4KfQ(4S={(H4gYu@FE<7S~!-g&NIc(}pVEzlTj2NuDlm8a59`Ax{Zv zJa=CUsz~x&Mectd++ZUe!xfcWnd;wGsy=1*31$yT#W;i6<5B_{BRr-BPb5j~FmZgzktTK6hONvwDN@83fgvq$r*+Z6-bZrfxDO0( zL&o&gVL(9+yDIi+y>^mP{oG=Ie5EVvW0fNS^YABG)NHyTe?!@j_Rvg{_$iXXYo_Dz#fHnn`V_RU(Eo2oLq2Ys-{ z*|gzsrP@6TDa`$w@ns?XH8tmJK_`s9nid#duW%=#aHD5WjGh?V(ULRGW(2h&h+S%N z9#>Yu#0y1~--fZav<4XqK3s>aavj_t(38U=jJAx9N z(ipA{@`a&mHu^($`fNh+OAdp$6>x+ZsSozaNhKN8M@i$-Nf?(z6RAucJxrtpUC>Qg z7dS+d&5CXX;vh~ROhHx=vY{W{C?W@0k}R2(vBX*9O?oiIVE&W=_)MNwtP@Nmayx!> zGU3~ncY=*KshoD3ZY7TI%HyfBPt8{5D(j(CsWFdZuLb7>wynIN(8IJH<%&Wh*ocPh zA8}2gL?UUd98(TgyjBC$=}uEmgjpbsoxB7%WW5EjIY z9nSJhwINEFx^uaLmn#^&fy?c1V)7f)cq8YgYk?L*C)1^Oosq?4y1pYb>}IMlRq7YUhKQ-o z6^7KhjUXI+Iff_jR;paXI_{-%FI;Un{I^q2zC@8_Nz$d`iYhl<+Hm+Us-B!KdZ@fO zp6@*PZo#UNgvr8rlv_ocE0=S%WF;^}95n;+#Tp&O6uH5gh6jI(ESF1HiQ{nNf%$Uh zCC~JrLvpCJZCOu^)qI8x2Q;`9%QB`Km=Eha4YD+m0|dqmS1)Y-o!8LE2%50)Jhgk0 z1k2|EJo*>cCd0IpHsza$8c;+nS2%C8jE=1=1SB~!Ycy=JIp>Phj3n*?kIa+MdX0xK zJwg)(_obfGCPScx3bIkAVGy_*>0hZW>9Ckj4P95KHcL&K29Oc#j5a)h{uLP-*zR88 z3=V8Y;diZ^I6#p4{+E#l8jTOpqqA`>?;p~;Qt_rQO>Lo=_twh1QjnS~?RRFMe*@GA z?*496u?I)7_uwO?K}8A4ou-o*OS_z_q=o|*b?Qi?929kciX@JeM4r4(T2+T-n;QEK zQqp<^R@8umu0P%<*GDQqDw1@l%72P7f5{`<(eXz%3T>r-iOK8%`JG5b=rnfxyE@c)uqBy*5qPFeu zGx6b1;7ydm`Y@4`;NIBaASSHG&BtM#cy^E!EkP ztATIwX~W@QN)Jdev0Dc}@nXamA1Op~rXhlBHMcbj>1D3z*L<|;fZ~bf>V+yS4=VOo z%k=K`bfeTO%u{)|48fcKv=vPVH)c-aAWCQ?3#w!WQN&EK6}a}S(G;OWX;E#@!HEti zLB|%0FmhF@7A>Fzk<7>r02YR+uGKmA`h)G5s)*sBq791ggrWzk_s%Nf!4F(>js%0whboOL`INNPZ1dlFBPb0iBC z+rRCjFd=E)C2g7_w3hcv)38Y*bS~mFK#dYY)`cpBJgdNoWA7;-rTF5k5W4!wixU}g zNENiw70c4Dby^G0Dik1BKWLUcI0Eq~AP1Xkd;zpKCfkXID*4zh=IGQ3V>~E=C8YnBZ8t?VCR1 z66uewlck8h&yTm;fW?Wf+y+<(#G{mN5IPADU-7# zOm^dEs?Mv&rpoFX&g_|D{*NQ_T~O)|F7%+z_vE>5^ZD0Y<2}(WK#Xx9*N7%&(!s2F zfk_8qV`a2bHg2&F$gssBr^BO^8X$Nkl1?-+84dUD#(VVK?ey96xAcfsX27gw5nQTM z?MhS8xV_Qlv+UH9IUD9tK%SI`1F*$RI6$RYvBaMY$ghrcteHv)J?5DFZZw_=sV}gg z2$GLM_!?k3SxD>$dB%|iV*I8XcRJONg^bJ&o%uwv&+(j$;ZT4PAFIcW_}ww0n|_ zAxfc>JW&p<7e)Rw{c-(1iNN=7Ep+l(k;!x5#%%V zR-3ALKY}-_DoZ?9I~r$5S1(|pTPD0d&D=*fisUL)+nL~n04e7ReSu@kRE8O2%hZY} z%Kx$qV>;i=BJV|dV2bXJrD0_wcxGz1Y(AJe3a1yQ6Hv^xEu;pd1Un3AC|2UjT~d0l z$(ZAuH@0Dza>+-F8URmlK?jzoC4|P*s=+3DL#D`f=|re8 zvPonVN?{I9<5^XGYTly-AF>pg%0fj;zs0h?bm4I>H$9=nnIyN~)(wqAvOgp-&VnO} zR5S)4fL=A$#>!rQ-+VKY&hkhpD?BcS4@AvEO#j*tH+2~!--XyEF~e2xFcHrEsp zxM!CZFv087jT3BrdB)Q)&)+EeY_9SwLIh!?Wv2!v#?|_=PcH+xQQ|#%8z*t+Zt#>m zOO8<2=It`ShNGIccBM@rZNgmDukD+`p4Uz^9uI6^U{Mo{wRZwY>i`)Z)Buvs$jwn< zTw6;;$C(mv+5}aHBrZ%Yl|~@WN#_`*D9+f=E}Cy5Nts5<*f**IK2cuAG~sX(<_M&y zwd&?EzH&TClhUkzb7ifs6peu#<<^{wPa}|EYu1Wn@}LIW(J~i2b}VW>k`Y@*5=92$ zBbkLbMI!ag-fTCrKv+Q|#1FBa88ihUb&alXX454LSGw>x$=2En~hSbuA2IeWP99urQ?ohLbAY zh@!Zn_&&@kH%_#Dbt0FhbkTxUEKdmv%2DQXGL~-?b9SegYL+KO)7LAD>D=HLCMTZ; zz>6YR;Rss~=V9>VMzWquRZqo(VmLUS8~Qa`D%k3|90lYgRbOmjrwnc!)2dRWEP@s+ zqwpz0A4^UZ9QvwdrInj#=>Zt^OVhYU%M25%jzIFBK=ejG!CXbRY&Xt}3vr;9iyobz zZ%Kx=Oa$46=tj9!Nl>PxE)?BH-{zjdy1>Vr&3ZmZuuEGDvg%YOTz-;aUrml>P0y=1 z;p;|hv0oi_n)2@HmUV|Y1b=rG~1~Wa3t&L7`B+)IPa%&8fwUg^M1-V`P2Y-vfgxHi6RBfTS9Cjc_F8w zjWk0@YDX~L$7u!Pq{=Z&QIx?S;*!%lFG-MUW=%lUi)DgJZ(E=up7_$$O& zL`c<=fwVB?RLR{XY2jQ=g#>ISQrFr zrZDu$CbstOhNQ`p)G28wU3P9YV~$2Qe3%!PpW*;67Ap0C<)qfICkUe&;uf8d7G8|? zE!kC266k~u{PjY!7K%N+Vd7I05HEv{V2a|*Du~mw{sMg@ZF0@5^z2lQ@=jDWz!7JwE^INEJp%u28U}IbyEF}e zjCHGCp3vv_aBIRc=4y7Qp8dK|CmPQkkG{Zy>X6R7c<(!JB%*&BMv)uu!(bcRp^h*l znbPW?>zQUP=gNH=KtDB1Q?-_cKC{-gvDTG^I=n_{4^Xa>rNi*W_(F^P(!)ea5@+-5 zZtZa9#vhYVW|K_agk@Dh9IRs7%Jc@UFGyE2)%wjg1}By5hsxvK9Qpt;HkJn;!Q}wV zvseayH&|F2{Eox$v92t>An+q_Jl0ijWT7X=p$9>7l0B6pSOdqTF`o^S=3|@%*N_BR zNYwQm=f;s;wwfeGGJAu1kgbBHfmeajBEeuM^}^*dm4-e-Oksz#RH70^&YK;E*3R*L zNibSlA+0*NR!kG=1agB~3uQhZTW8tsU!)@wfDGg-1$-!T!|H#VsJZcQUL3_4oduW9 zRvx2fqQ6vT15Zq=%@}pwj37eWXvv724I27hEK}U&!bfwjsZ7zp)2snm?An@hu%I1j zbT%kkXOD=WhshOaK~lk5D>G#Y#yz;Au8dXh+g{C$8EMdkGdc;3y&K39gQ@6^rK%6B zEm&>FsPkro(X~xnSyJDr*y(x3aE+H5GU~hyV|1-A4nA7zojAEVeDiK5EcwN1juuzN zLi6jYw_mBDC8Oe7LBwfZ-e#%`f6xu4#CZ3fqHb7N)-wBw9U0vR(?W&lfc zOuZqa=1&swLY)01+Qr#?{N}5uQYSl&FHxqy^{$-S(3085-vT1g$!9{HOR4*^e+}1% zWOef4#v?fSsyL#Czf93o9e;xoGBvd19R6aHEfq8`)83W^KOos{tsSS%MJBezXMBgp zM>m3?G60rJx7L@dt1HO90ijwq$kZBixL0Y*da~CJBWlPSp0w`^!_LrVECU`j;~ej0 z1X1>#>F&Z8xuYvuR;IczZdIleT-ub=w5y|xuKi+01b6GnH6Dq-lwd%eX@eH}T4P2I zbm5H7g6k+e?3L{nyn0%&id{(qYkh4Rt0fwXGw`T^cWq^~Og1i8P?A(}CxG_13I0A6-DA zyg_t#AZd_0W~e>R;uWGzIXy#l6k+av9QG@Vgx8(%Bm{R@Rqzf3-m`%=u+fRJbPlmx z6+re&1?|QMtpub6qpE9-#a--_E`X*>l}vtshUVP2J5S;fC^(2sv^-T0^B}JPlUulk{qxUjWn~-KGpk*%Rb9CpdL6h8 zg!O804?Hm(!JcCoL{QQL@z@RzA*i?JqC*Ri7#`$?0yQ5c9a23M7VOl38_tRb5H50b z+}(x#(n%mG;oOs%1v2;EVtr@K*Gt8Qlz{8G#*ky64TII=cpOduJ(f|JgqzSe z9v}VC*-DO-6tXl8+n6G)7*|(wLzyuXr5%W!Exj-Wcqz8D%Ank%6deRJT9c1ypVH8r z*;CPlG=5qtGHonF-`mJbi;y6Sj>V-h*QSGRES6ic=BH`{5vBPliCn?c!QW*FOGOPd zbcBq?|2sIAr2~eOAKi$;rU@iINt1@rs@OMN1StXVP8}^+qmtt0g>F}G-u7;^aeN;> z{>C|RbDJGB+}tl!bE?eeXr#{iIx||^4`)OlD8Yo#g8dV)+fxRp3lb*;CJSZ&6n@iqiuV?FUeP%`+TI^Jvz@7IQeK(qt! z4*nLbkx60T!rVxHauy&OFmO$4ko?ezpxTm&039GBYkn1c48m7Pf{7@Qyh+Wk^xt&j z4kw>PO0e(yYrfi&N%I{bBWpfY`K{w0T;q@!k0w;lk_<>izebbrN?jW(du?2;O(;gy zp9~!!OuXoaH@dA5A08jQjfaG^aCc!O=LfVlTdS)pZK|Oi*?OTa4D)`7kx*;QXdraq zj6G4LrlK8&GuPcq4&-(jWH6hl>TTma&C2>M%8rfx11N(bmJt9TzO7Z zT6Qhv7827~wqdHQM@4lEE=!;jP7pud0&gRkQC7pfu1%RKkvHb!LL<)Dr-ly@Vk$33 zk|VoIh~yl0E3(>*?X0i`L68d|3O{)}FL|4VJI4#O;4zfC&$i^I@j+W?_WgQhEEJ>> zO}{c2yaP=ze7=Gsh@)>2WPu%Gnh&Y0lQ&@82MDdD12cfLNxT<1*Q3#+Ol|FU(E3hV zFplC{m-NBT?NjIN7k=8ShsiQ>V|fjTde@gwk$lJnph6>Nmwvtds9L`DwzI?DhZGa; zjT3DBZ~oTLEhHRYE$5KdL0#V{`fT3&+D~KK;i^9dGd2V4FkCpn8`Xa-34nv?7K(nK z3f~$)fLdEN0(8NQO@O~0+=DCg5MjChZKbZ%AvuT2jo6gk*nVs+)A22r^@6tP;9^+c zTUxW}zZ+<5BBZ5|@wttTzAuT8*Ci&$D7vyx2N0p5H5(DSfyO367Rn7IKvuv!44xzx z3Q^P`f4maU4gGomA6gLDIB^_oY+fwfI7YbGERfVFQe&Z7mU6Aq1)G%~9Vl!R=?5rm z`k-|+)lXiW$n8UM#HJN4)eo9wTTC-Z8G?5TX+;x8j#=o&$mYc4klZM!VrHlow)n6v zn7C1f;N?aunozq#*5hhh>4(Vg=>^blT~t73b|b*0PtU|w6gV8*aNPPWFVpEj<$ zb+?O$y&5DD6!xA&RGOp;lKoUwXDU+7<#Mg+wu!53ujdf{HGnEzFlpRY~zN;Oq|st#Fc8d@_>9-TmA6Jh%7`P=Kgvqa#Qn@qzf zI_zbFTu{XHMw`#p*GmPh`)D$^RC_%&Omnrg2N9zShK(UT5e4~4^~26VOi7S7q!E(4 zDD~As0ae(Ver+-MN=xneyrpeW0tum`k7PhhgBo;WrVa{>=|C8P6^&qH^8#&Qy+>N6 zqquQV;yB!Rj$BSVQ<5PzDrU8X-&gljm-;eg>;%t4!iyJ*6Wk`Y$3lS&8TN}5kc{Mlg z2D#5_tyw*1T|mMnjNEr7XN=m=Ec&Q8ri?la@0`(zD2OX)3yh}@$&-pYV4Fz>E;C1} z5PbaTKpWqXE!Z42t5%W(ZfBL2_`0Py$bvlv#%jI}z#aemCL_=s{X0cEOHx0*Bv4r~ z_&-x)rQ4ZXe9$pYHx%npPH$8}E7NknlZ#Si4OlK0?8{N!m~SC!#2NpfW*;k&3v-8@ zF!1Tf(poE~ipS!>1DaAx*29@L5RnJ}Q$LKQ_G^2C>D;geE)n(SW1R5Ukj5s%trsN+ z$6rPv6eS8He5^0ch)f-~nrW|;Ib?K!azW@*e1OhkMjV4;NWtF`xxOl+l>Z6fzB6#c0b0;E-H&9SEE@WGk4c;IQ9z(=bTf zPYK?N%J{HK7}jqK$Q^B~A8fkOV-68(M&gVTI|@2BZGPKnh%M2hvq?{JwZKa}G{^iy zS{@o!h=%lGUMbW3R8-S7TSMdf_d%A&F(@|b3_u-!@0wQAqSUe6#B^g7cH)gq5m-v17nf2)i!WWIij{PffkI%eHgDBD zKv=WZmnzzNLOSFj6G%4@8(Vr~ie-!)hStuJSzekn0@tOjg)%7XOFPI&G-<*UaNa_V zRdVFAijgWPZ*YK_WDCBklp2QQ90Uzq7`{|vB;0G*(M%6O<`bJ?*a8?;I`x+>ms~OB zv-H8fmNp1>rW`>V-8b)`Sp~aj>BTF_3tX^eM%)^UtYqq*zannfZ;y{) zv2K0(!;Z_I(BC~pWKQwj#5LU~H*g~?@o$|v#(Z&Y(lI<&ZKx`Dt?H_Y1Bv@`rW1sL zEPe5WvSjAP9~a(}q)DSjW}5ZedZAr&5~U0?231-S1&{?wUp+XnOskwJ0?JZdD%P;% z$_-7Knb3wJLi=cfn1;cl_jDkWgv>KiRt1d2si9wK*DEp_ho>4jj>OKCexRoyjvgjj zV7&z!Nt_nVKvp_UhgzpoZt4`U#w1TOtN{8foeibWYQIIBb>SeuJ z&R~CfrD*e^6HY4(GhzB5ikoT@DEOs^f#rd1i~e+w3E|5F*@gmJXbhtPtbrv7e_!>_ z58n%nd$u`_D~Li_{UAx2OdnbG9tMtNZTTqC1S5(8Z|J+8G*Ak{zt@$8#$t}pmYlk; zfe6yPmWHiK-Dkqjqr(`~pEu@XKqHPQ5=aVErO&SaQIvlw&Ci`UxeXIpGq521xnkMq z1G|6Gz{bXW3~0m=MuNBSkjP1(u7i7HWpm60WdL46v|tG(1=>|!IN5CDS+G3$|{g_})_>-C#}H zve(o5IpoJR*Jx(A*3}sg#p-Ayk*X6|D2?*@N`}w3=_eoD!{g}tp^ZYLBfw&56nUU( zx)RRACvW5UaxLuOl&LKgNJK`Lk-2fLO(CJk2y5YS>~Z)urFE|0ia+V>2~ z&)V{-zX?Vl0fO-G^la^&jXdD1=s-7C*EefxsZ3Q?HWVO6AVo8pAa0oMi@Qm}2x&k@ znN+l4s<-OYHcYs7$r5AI0>Vd;PCP**u`op}?;oyo5LfkKVQs7}?RS;KOWc6MN0V+q zVLZY9IueZ}r;?I7sQ-(E_^50gsbKIjq#aHWKj0?U<=f)mC*Iz77r43H#O5l2D^lyr z`}JZqw>60VTBwUl)nwViwn6c6rU&XtsI&ClPp)K6hhosbAJkEZLy$)1O$}58ZAd^H z-2qvL{T@9*u1ZubB)BZ!c37+B(lCc#+-SvNXG|YR0en$EB}i5@jgGu@oT@|pV8cb; zG#Sm1o5rmG%-rb45=IJY)p}2d@F16+q9#%cQoCLmD~pL3We8qsw4#Y5hZZak55BiC z-6wgKxULUPUoTgeb2O)$>h<8u#2r9mkfj4tBxQ(CMaHx=D}}l*n1WeaVa8xfE21#2 zKvh`Z*~jWbl%4!az7*5~m09P?(psyRW`3l~#F=I&Ufvu<6~-NM4{+`VPswvU3(>T* z0EJ5W6tqKb*sbTPer?}a>zRSa`9iU$H%uJrz~d!SKWG7Lx^fPFVu!vPIb`vYo9Uu@ zu9Vdr!aC-vsif-!+jhDOiJ3h;L51YnNzmfuIxln%lE+7-lr}b67gXgo9noy(N3Ad% zxps~t3LwkE`Q+^mJJ>_Th&GVKSRM~hl`NDG+G4f9TNDdv2d4ubd@|66!pxK&fFg*3 zzbx~q6!d_PVc7Dgl-sgXp$$eL0k-ZZnYW->3p4ctYyN^}41Qv?!HFe^G&$OI!DMYT zA&f(f)7TjJ%Q6u6GIVz zmk%vi!bp*44VH65NfCK+Ud9Qc2*AsV7Ayg*P<$VPM`9Tmohw0^&v9Ue#S{@;ZOzPu z4j=(U&_n5zXyAfwaQY(}0GJukjU|K>)?xDubdYSI3b0nw8!Y<4G{{===)Va>h~g9P z5qu6vVzMr9K>@aQ1$%o)l{=^&a9ev0E_6VNV8j8wY&_D4cIk2`>SBehHsdOd6=(B1 zw8F5Hqz9rvu8Gj2C}L#lc5a2M~GG|A*7(UL9FD>mu5m)7xa?F+OqHG%*H|^ z2nRuq;fW-PtR&V>60SO8jUXeC7(km5Lz)%MdSJ6CYVF6M#A)mZLR=7mt~KZ7#i>HJi%B;nA?kYINp{x=!Ap!&Cb=t;Bg+B}`{lH>iKI$hGlj&< zc(a<85#ixZ8|Fx4>H#l|U6AJ2gTKf~uaatTvRn=Rpt4OnMF3u&v|x!Oh3U$=Y>j#_ zRhFV`4FF@1q5(@7Ddd%sx(=8wm6Y4^(%>W)O9%txoX{YDuK8fBx!^SOK$?z#)C-XL z2%0bcll=SK2?;7NBV;6KM-)!>cRRgbED>lYeOK#RdqDqKn;V z0?2XcY%jwwkhuk=lg8H%WBC3EY(8?8{m}E~CkfX~X`HD` zr~>dLiSNJ?F>mDi-DTv)NJNqqcz_o6n&=nRQuTr9;+qiI=ZkJI@dm0iOgrqoQOwb? zjnGpRtHVa8EVo^&N`*~6o-*4_2<&yKy1@hx1K+cjyr}X5-*e`nMFRjcE4r~pCB@}t zi^!n(z8WMEGCZ}NWCc>h<#dMS54FP3dTwe^x?wSh7hMp;nb8w%Y;Mq7w<^_*WJP|5 zRh_E~h@Tlihgw@U9(2J7og5&`<8u@S-aq67(J&q%=i-fN=-TgGlSC0_oQa|Zaa`-- zc{_`|7xyX*6ImshF6TG1^~}_6)%BHO*ux7Yw=`$4D~=-xB*XOC-F!p}M5MralB_5z zV|t@bf3sE#(8@xwr#Gzpr~!?@lrBt>oC%}ouumjaD%vnibG5XY2|}8WL5mvF*krg0 zBczm7@G%Hq1IYsohWv1TxTndiw2@tOU1O*^^K~`IIW8#NNkkp4=R#3a*8?1 z9KM<6DApM4`2*)2X`nWb=fM_gWBXC27U4GPr5|oSDoExeAt8h#A0k(BVtqL`roVv? z%AiU9AoO=-ssm`z2EoRR9%zEeVLK1LD`$;Xh1kmFTxFO(x`9SwOB?3coT1Sim^$)~ zEY<}Lm!LWsayz!MF&iN|aYmmwykzI><%T97j+(ttmMj~XN=wGspcQ0n%`Y9eB9DI1 z!{iF&E|m{e?cg#x{0Qe-SH?=84PZc1b2b_rK^mJ2(`V18gwVEfGRV|0z0u~GGSHOF zFe|h{u<@b?nm}&Y-p-8^XD8Q-7LC~2LbYsVvE*h-9ccu@bb^k}n}wS=TPJZ$*V)R= zYO0TgYAZ9vR@SDf%ouj6jqTZ}aSTcnA?_lN+@_X{D5>Gj)abosMoN?bI62XVC1?{W z_n)P$ALGuGf6pm+w@I~qg(N36UK0G3Hdk5Ip0(xEeG|;M1n{C{>%||JQTXC*-AHac zi4HW=#swsnrg5vmVZz|OXFCD|C3=AgAqFA@{CIGDnVv1z1Bf4fSt;{DIojIVb5NoK zN|<{}*=*c6p1FZ1?+=wdL&|ijTGo1|>YB>vrYb>jyQc{(ZxqI{Z2PEy?k z-y#}jOkPcB$LZFrKnU?(6r#Lg)|bTxs*a3e05$%Ap$b7CEDi@pPgo)R0n#Xbu%lc!ub?STZQNZ{hJ+zuGJ4yRh=PwV4-{% zV5#&#Vx>%9(D8YLeeX_yux0(6Tpz^8t?1WC3&YCiw6gh(A5bkUJp-c%8p zt0A45 zH~OhRumf#tkQn!e#9erSw>#|UIg9kOk+mOd1hx`WW3gP>aMZ4Ai`61K^cWap*bk5~ zE?_A3*o>myHYG8lOBX3iQmTPcsjEw|*O2m2of~(&r0NUFMk@w%QCA(V4!$obl;0}2 zTFvJyHyfZG=Y@s}#Hbqo+rf?AtR##OGXC@%*ZJR8s(Ft#7>21_t0dr}r`8)<4%d4( z$f%mP_RhwQmtpANIq?iBLB^I@OJ%BB>!o4L*LMm;gU;3d(PS;Hhm+tqkN_gUHpchd zVDko{9IGzBK;LNjmbbw?@K_MjXYvItHjVG-z z%uMNnD2gklyG6Qj(5xc4Qd5bk&Q|(Nfg#L6l{yM1Q#t_!5GAYAg?1gJte@mcK`Dj0 zSg;u&CH2?{(+S1Qn!czatXC)UlDE0@79J8wnxgHfn3{dRo-6mp%4Q==BLurKdjw4Y zIkX^gBj0si+_@V(CC`!|1$}6`t(tRHLG%4w)vxUvHj=c$FcYN@qQFIH3bm*MxdJs$ z@KY!Vt#hwF6_^oLo_0hLTnQ632oF!s*u;$`Nw6*qd#&om>iUM5k=8(RRGYJtq62B{ zLXmOc>@UMG0g*xm06AwsZAMF1mg`HyuyLptzIZ>Zyle{qQ=!P?Sfi3+_V6@~Tqkjt zQ3#j+X|kw!xcRu11zKj8*XyaN!ioFRH1Lgknx|CG6tIfBH-oBp7q&o^NZxSPasqZc=lys6DMhOVnqdu^%aEix8)=9_LL z#`&f<=-9lm5+{BM1UOkYR_zStGM03n9l{Qk@S*NKf(R{c0mqA+;+ z^)IpOPBxMI*zu&FenqSyU!S-EQe}iSIYImJgBv3XY&{6E#LP%ggGu-}fieKVkI4N` z^qs`bxfAc*jrZuGPa=r@hc7?8C2srz6(rfz=&X?RW7u_|e<`>Nw~B`lml#{43%&{iJ{m`ZNOn%?LK% zxH=7eesAd0p4v>mJy@9y4M#9sXhb7i>hj{m+r(GC^Aw9WV_Kfu*Qj}YMvJ#g^i9_B z36jOZ-%gU~ZIXn@!buKMFmdo}r}j$Pul?&L*3suhTL8-lSv|=(uTy#x^#8*K^~dG4 zrT{;KJ!@@2dsF*9pW$`wCi(k)-$$K|_7-R-c3wblyAUZ0sj{bbym%6X2{vB6$lZPw zh8x__yP7N4eGIqrpa0y)a7!VF%rFgYMp!7CS@CY>J~{{g+s&_+3VS_MuawpNcn-a4 z0~XCTv=ygeJ%j-)6|5V&vQYc$mwcZ|y|tzywL2s!K;VAy`aG&Yc*`MLt9*Y1I}W`K zS*FFCZqyzqt?eF!5Is5@cjCK9U2oxG0@v=a#qkQe_6b~-!b?AHJP9BE?rxCqCsyhA z$tFZPq6QIe;(-yD8BoZ~Bb=lS&cJ*?)S#cnlRc?BKzv%c*=2dVy-yK0PB3|Jakmm= zdTfy`u}OSvH9Bec9u5e47skot5&Oyl^o29}M`F2U)C`Ct?bS=3XCqm+|DMhvw1G7Zu0CPdmO!g_=?^d=Wm}x-qSPs1eA{C;JP0X2}punYWeO!wc9l7 zu8Y)=yt*z(4SIolKpU4Hg$%#s*-27E*>{lQBBaOIE$bxQy8%+gA%+JjBJ}Fry*H6VYr@!xuNgzin`~7o^A_6DEE{ zDpB13$O&QxvTCDIu_an6f}{6IB5y;`2^sKkDm#-?1(L_4qO#~i$?IT>;Ku^4k2EmZ zyO9SEg58;ic5^V)!b1X5LX#Uj5)|-bj2*zx6(rS7>blN0MXTUrfVle0FD4qgh&t7c z39zg%I*=0lFwRE=h=*wU-Ne8YATZmr!YdUB8-%#?h$J{b4oeKZA#7kC$i6Rq|0&!i zO7QDB@msKYM!f>f@4~?Q=te{^o97UElMfgm%a8km?}PT~FYz(lUQmAG#_|1_IyZ>tAk!bH4J@@oJVjr6a5f)*`Nas} zu7L95AXXy@7Uwh&A|h1s3dZ+q;D-(w+J5}Y*RZdqLhf}Qa(>ZgTTKy%n0fUkV_JH^ z*OOU$_+ibfBF%`4XV1M)4iU+!1(^u|aX^m03(G;(^b=w4cmY}g!7PD)TfkwA_Zr0b zys7TMdW^!|c#?egbqu#m;R6QV&wuJS@G98DhG2W+5eB0shoT&cawz^0Ly^mhYa6TO zj{yd@V|j2)a7fRI$c6^V7xe30gB+c1e88snyDb9g{g zOceq5tXWF$(0ir`Bk3K_5+f)c<8*5ttGKTDQ)v6MRCMZ2Ym&++dM??$@BRr=E0i_e zSGjr0Y|wDvz9L{6C{f zEZncvPsk|Pcu7TW|HZPwD1W>}Yd+e%gYR$R(x-rb<^}EW!DWDFfU;PNT>wEM;tY`c zyUF)9_|$UWjWfY($mWn#pq3fbbiX&q)T0yO6JaB`A13S?q##{dY#C1FkI6(HAN(Zc zVJ^TL!A2iY%u8mAdE0E^QFTQlEUahUb8YT<9%R%N_4{JFkKg_Jm+kgfcq^sg{-u)~ znTRK^&)(*_*jaLLK^H&hGVTL|9i zU8M7maRX(Ga|t15iH6`BZsQ@@JeB{vJH*({OAjOpZaT}pUaTQ^VPQ(nK3yfD7q8z^5^b;-ESVq$VER-FnL@$p<(S{ivj$M zXnLa0>QX#Ca`W--6V6PMMwO;P>E0t=N8k>|B;2539fOnGBa@8sP|F~@&(-r@;#mU^4F>0oc|E`rt`TfUMCHtzfGXK1%P zImARuJJ$)~QfyS?YzoI=yM02sieDRPEKZuGRiuZrhn1Q*^{D{JDc0m6OrGKRCVc^- z3%o&Z*k0#x114U--WeZDJ^>nxN8{em!%(k&3?F}_`YUUyB_O|T?0zY`a5#5zw*B_v zKlj;--Cw>2K2ApAE;w9?eCoiG5{pZR44`Sz_r;Yy&8ARU$$V_H-AS=m`2|dIdL6-k9b161uxz-;3Cc=F33?k zp5Y5&5~VkJH&N)ZW{#b%c{Bne9d!sOTRtZ43qryHpRmSk9?0^7zEWGlM>Ue@1PMQq zV3dkt=<18-r*y6A*&}WXio~xZh1H)DD`DGf6LVyPmuCDfv6~S1Qpd7ceDiB?@cqC1 zwE49VDC`B)sD&7dQs=gzOQLX#fi~UUK z4BHfogqC{0b38%(3ozZwORQm51n}+%esh3O5j<(o3B;qlfhz}2oC*gl9ULK)g)C5Q zR)eod086TZI}e*+nfj<8n}Vx4baB=^dN(-r1~H0qIiR;o^>I`Mh;1~iiNs++KoVX8 zVCw04i=sU;B7v-_rQnFBy9D(P*ZGr2AeLXYXa{!=D?Eul!-WNht`K+?tM5^=u|u>w zH5NZ+YatFl%#6vi%K2MHwHQ4W&0!M-ajc*h9B+soN+$^PpAc@rY{8Vq%eEJPB*ciR z-Bw=SzEXo4PxbvQ>I+Vbnyf0wcFrwoh(1er?P^LnUelUdr~*#5WjL`6Czj#FGMre3 z6U%U78BQ$2iDfwP7amT`OP_x608_dMWcx;XB2K14h`GR97#RL&;v!hWj@={J!yzXRR5g{!eeg;6e@kVjY^; zTQ+jKc#iirXte}OlG1}g-lXLW8DK=@X-EV5zzfJ~Iy~?UWZW8fwn2aFgNYl^4RbSC z!Qp&t&@~-Xk2;v9*gpQgc3_1*q`5Kr@&}rvMx~2P)F?ID!4sKU+dF6LHu$XDE$#^K zKYSN|L^%fL5Ri)4YMDQ|W{jqwWUq?>&(e;T+{u$L-`70)$e_g59WpX$Y%Dp5inAkj z_fzttk9HD%)3z5pYS?HaMgVM*%5F8#X1e9bJe@Qo9`_lZo_?V&6PD4k$rVZ{d2L?N ztr2=*xGX>7Ol9IdR!`o{ym;e85M_nLy~$>0Cn3Jf2Qd3{(iB8NwT(8t8<*~n<7Cpq z06ot5pNPfzu1ByPvyiyb1NIFIC%e#Sam z1{l?n@VoM@RICN~Zk+lDNmP4Zp^V!3EHvkjkJSHCqVyRe^gp}kd>NTP?%?6|${dMo z1BjaAdQ8oaVxn`$Mv#IjqR?TcE65*__(d_JuE`VLR*X<+j{Zd zcQ$xCL1W*X?KVG4&)<(Gq1>jy*bqLjeI=@Bipi<}9f>Fp2sc$_v9?t8H}oI75QLS` zkP=MTeFSBv@o`R&A0v}^g!1W8@lOLo>e5b@1w%Ypnb)->r`%ZbNK9WUTl}76+eX{d zbJ9j0;LY6k$3*hOSqB}On@?9}u{nK(0@d1|tm=7;{tx8*vU;vCaUS5{h{QFYL5E7g z+6A=6tfu_og(Y5gMiLUH(3i$;w6gS$dK$A!8u#?5aClr{HDu^$Tw%SRCyOOyJ5Fhz zIpdIQzT?9Ky^vpxXvhQL)1k5_%Qg)A1dizFL3dJ|ikbpIHSDCxqLUy%06O#FK8BIo ztz?ZJHYR72=kOK$4QF+rj>`pbJcla`bVLWD2OMJe@j%WM3j(Ri;VccJOQR?t3XW{b zUU6^~LjRPY2NW)8q>R~zu}4I-Ljv^BbnU+tB|zhVW9(4!(cGFIpQiN22i}KD^ecKw z_>cvZq!UqTY}N1UfXjniN-2y?2<|(wc90PkPL9oMS-53w{;gyEDI;QYcqfhx#4O&@ zK;q`fwkdmL3ZSIlb_*ZaIy%}J_Z z5^-kTDCTnZ0kgs|wQEhEq;#r9pRGzj|2(N^>j#FjNYYI~w>kzMNHyK+E1J3(tJ~Ub zJ-A}FHHnDH30As@ThwTZ^C_z#ZWV8N%PyWF21EHyBMFAVx3Iz>dsIGbhzUdHz^#v- zu}yv*e$fl{EP=MU?bs^O$t!xn_<;RxXesdDvS}xO$5JoU^%7ZRTHy{w`DscqXv0cR z4+8(~m&wur|9^x%;ibN$K~kl-_Cw&L0S+xzAIKw%lej`FQI?^-JSR7GsqOVF`+BXe z7wSw~Ev{Dcd6!I62mL>)Q#M-QHV#>{V2&hVL-C%(Q9dSVxNz##+PW{^=17ldo!G0D zKD9MN@90)(6@i znVM#IhFQ3BOQJ`q1C!r;SHSEaDSoYZ90W%s<*0XtFsO%7NQ~X5sgRcE2rB{ zhX&de!>1n5Vt~6y1d|@+z~7Ke%liEZ4Q}Cv^ReLlep4>KUR<@l&^9=Yey7CF3RtBU zY)=CEPV|(LtF)`kN7q@!YONZZxg!9-#RG}iPwyY&ZTky7bi`f7MqhS04cRX^n08yb zLXzv%t3}uHg`y3+7?pbO+U@~m_I)ZhYUh_@G5abb-jVxiE!wCmB8d(G5qzU2ib1o@ zCa!}|r*jVuVI+*8g8H+7N@~B4I|j%W5B65LFW@YDb>0d)42Mt@_3aRR1ko0wc!5t} zn>md|*3Y88V6>=-R)5gh`Onx^?*Wk51~glF4)GMlx#Ow-U(2Y=6he?$~YULTFRrK5*7ma$6i4jkiuZRSD=Vmqu zATPekc(2~@~IZd~Fu}olm<&z1WF0cbL^WM>m5!o1V3Jts@cKyfZE8Riqeo}Vi+~=xy@%{|G z>0LSsh0;~X+@nWK@NH~a6p|qnGDpxLIdcE##P<*qNYYUBox&SY({|TBbB@y4L6+(n z(ly-QDQxx%kNIz%LBH#AE&%FN#`}F_m3bSuNK-T>8{Rit0orGLdf9qg_676Yk0ucz zb#uL7c5}*t4(ZJIf0o`5!`5?*R$jNwjZE&&ky}bIObX|}R4j0ts5t2>+pR}@lyECD z$t&d1&3P#o6;46aa9=yULJc{Skc8oQ0pHW6+(^=Eld0Q!d|4H}S!YKl_VnNfRzim! zN=Y;&wx4{g6eYM|gJr>R)geKl5JkDSDh11q>^k&PX_32^g)^Kl=8P!2 zHrA9U4NvLiGonwdNCzmlOIucan?*cjrq<7I~s|%n&GhM%RS#1 zx(aM^-ZoACbarQ%{-@nnb&}!%AhyEDQ7U~Zg-IH9{N`=Zhx1v z;uj$eFI5{3RPxEOowq|@L-Quy@W2J~(%gxAQq8MNV@|pjhuVq&py{emSUH;d9ET;R z2api;`fcJPQTcAeVuw13*SpF>*F3sO0AOub*CRQ|kxuQ49yX=dY2o-@~VygF z6{q~gxsHRNG(i-)^xtEuT6}fyE8DDrVES#={>->p!}=hhTK4sHQnoQ!H&07u##;---7#>AA@n&~K`glHaqsl$Dcs z_TB+~ZV_X2daj0t5d(wFP>?5Vk3R6gJWlW7d_&g%7*_7Fky`h0937U`?Zwx%SP+5r zi%)pZv{;ZQe9yKhr1})ICJ$K4LTewN=#Z;qAD@&dvwnFkkMIS~QjB-Cdg-)8B42W3F^` z%*?RyqreA}f}cUA*is0zgJX}E zRNGiQG)$MYtT^d&&j7w*LB~1{uiWhpL0S$c&5W5}x=Z6g;!0n#^r2udK^ICzG_tJz zdpy3HEAd2dM1bfQr~JctRLMJL-1sH?3tX!HM9duGtHQBF5t@KozX3~BH~BP(D4{61QF3&cj;<_&%4jk zJiqCYczU)z+!K_oVl8Jlsp28adxR|P#BYno70D5SCwkho zLhuUv_M0=QPdQo#iOT)tkX+ko)dd}>w=U{Yb~(0j zxhDZhP0r+w9YgszJH5Z#;h#Ax-laNv20>ODD(A9dGFLv;4sDSYN6H=6nMUAm4YIG) zjL43E;P{0SD%UW**wE}{CY>no4Ry#~T_C|b-aUN{ zuA+clz{sZZTdfE}csz&ruo$FHT)C zTnq>|o|D!uBG+ihR{bjr^9EV;I|}+2wyUZL|9cXeO?iQ1yqzRYo@nA1^zqePxt9R1;(kfEb+=Zl6eRfMF^BK?@d*l<6tPak8 z7#4`?jX*pb<)_$Z9TxJ$u zJoVnC&XmT2VRc;etpXL&l3Dp3n;)x5Dd@3y;SwwMZ04cg#Y=N9UhF}sA?k3TcNEQ{ zw*dPlpK+o2)aP7_gf4~7(Q>440W>Mzx@o*_jc=uGo31ie3zgtqjbfU)+b$ghc8Ohq=FZTGUA`)HXV>oVT+IYGMP!+2-KWYNILADt+2-pY~cIXXH0%`RUI*^iyIe!Cvn zaCU4{S-ig9tLopNX!H2p*HCkhDxl9Yd;W7TFM6iZ{tIZm3B$^Hb!;rWTfS~$9er24 zqx$n!_AkHesU(j2ZC^J?rfVppOhA4qQ3Z(X&UhmP!Rx&CTrC6%OUM-_YwK!}nTu(6do-hmj7s`yHqtG2dKC;00_ zblcie%*d5W#RGSkQa8*>-JC+Hic~5n)fuK#hgqr4DU^C0JuZ+Sq*|YdAcmPxv=Orv zRc|j!$*_-(tu!i3s{5%blEI2EH|L>1E0UPC*^fO*fL}HshNDWqUTL!l{^}3~H?|Tr zvf(%P(o15g)2D(o29M{gCC^Z90uiEk(~Thmz8uKEL{t*P6rQ$XR(1mbgQ9cS^Nr&_ z_B?8tOq9tp`a0ax-*~vn==VSWdGg>TKTIC|(7|WS_(+46KNz7T_*JQ+@0RJ4XWmoS z)Kl%ao}F-Q5x@?PA20xXlD&<9{w|yVjhxuIWb5n$bdjEG>?o9wUg9*OGa?%G(>@Fk z-+T9$HqS)sQUGy1z4QWv!`#sa++1isy?{%ir1?oCN*={3QQA@Q5>2~iI$Q5k@BXE& zCXm1ClYnled5%q3kI?+re=5xqBu^sRR)o~{vFC?D?_OEBXiE$ic{a}^yzb|Bf13P{ ziA#Vc|Lw2vfslcH3v0&Uv0N^Kif2wSqhw(B=)e%vy+yfurF!fZzE=1{@2(E0$Ugb& zq-r`$ekz>w509My#1|r2h(TyFBWTi!=QObyLui=s^T==d`3;)Gr_%BJ>VsaOP-Xy0z z$Ku4nV%2G)_*^_s;9@47QwjG3LT8L&>L3Y9OKKQj3xz)*C6r{tq6Kf)Qw!C}xre@ z{~{6euO7~dy7~3d@nig;(MDk43emn7Nc}hKzgX5jv*3b1js$jSCDD+*S!P=#)f%|; zP6*9cS*ZLJ<0niacMlG_)Y;jS1jQM!5h#6pp)ZBF>`{bt?It%){5^^SRzky;|0TNF7X1yZ7844(j@kO`p;rBxEr=ZGgu5c zv-4U`*v;g96;sTv9H5A@q)7!}???1b1rr5^?ldZ)NMPmA@I z`IKJADc(`T%*m=AR0zk$C@iY)el@bWdFOm|vur?48bP36h76nhQE8HGY_*YL3wQMj5{t(WS(D@M z7Bl>P*#X;k<{ajKEeex9_PdJbuP$#Ew_jbzeVlv|&Y7Jh70BLV43p@6tJAe0`BWyN zWuFSRRr0xVz8cv#x?10#l{L{*@}gX=e;vWm_SezfY@Hj}zYcS;{`Ew@wf7w!R&J$_ z?P2}$)!xgqdOFe!vn#=HglcVQ-*=hK`x7TnapW%dcq3d=T{&lFs@W`+m z>@56ir>pSGbQCrd=!b!0U5KNQg+_w>grB>Y@I9BCP@t2LNrxhQgrA=V%X^6P;r=yT zf8;atu$_PH9=7wZ&%;)I!QWY5@b~dv@ON=8#Pee=#8dkd&p&H_Vy)FbzN>18-=%i` z$9N&n#d;y}tadiJCkexTAJqwY-r6zuJdC~$n&qn5q93{ggmc0 zA;rr+73>iwU%T)9;%oQ4UwnPO_v#DYvA*ElcrSP-?r`B^(BZrU;HuW6BnmCpZJ{|QQVDsL~+q^L~&7e)n1(Fh~naytM=k6aTi{+9#LFWU9}e{ zIik2Y?yCK&WZ!Z`an8?smLrPuZ;JPgM-&%h9L)_sqPX~Wj^-}3a8M_c8&TpK!kCqSaq5 zR*x2A_frx%NV<4ivv&aOm&xnv>$}JB(~n6Q`X9aIT^K$6^qA~_dUWChPWtfiUIBN% zg&OOV|LaDf3rUEB30eatzk7e*kDe493+LS`*gKn#DaBV>ko^4Tz7!{I#BqsYNa1o%4Z!RC+NWRK0F(6#0PzS2i0A*02f#9pLP}0f!cMRh+s*8SK)1s7JV_HDhdp303ovvp?2iNI(Hgp6D?AfB+vr@?z^vU^qAr)hqh8Bre7$;Z(c3rO?8m156 zd!TME*jAyB#)?&Fk=I$jU%mjbe){fL`fMuJEcl}%5UNj1Pc!O059&YKP=Dt^eQiU% z8-U7BsUZb${@6iSD}O@6Xf+%rM5qcZ-ExHb#kNc8ONF@v9P91`Qvbb=>$ za4$AtkT^)GlU*3O;0N_x@Lj;kMpZUV{ToV0J5)gU{i`HIE_QWgTBH4iXl77xRm0q0g1S}S1yZyfSL4Hoq@Y@eV>i@;~*p75{tb!pJ43Ed{mbqF8 z0|-7o|L)g2U^K2)>L$dcGa)lq!m}$(ny` zSceDf6csT*Qf#4mi0MQ4l`#-$;CM-oxAVn)++owGNXD`Al_{<`l#Z!^e?%=1Exf(| zRvl5L-38--+BiP873sS_yx})^@?PAacfsxk;TAV#xm4j{{gi{hO4>WS@PHP1)U(%T z4+_vyph4C=(|QC?*^X!0H>#0wTljVBt+Y~Av@pVO3bzLzS*aoxs1&=P8sanz@F6Ei zgB~)1otoLGKf>uJ+VWt6z-jS-LScPp#~tk&|LiyrY2dI+(Z?KlO&Vuh$)tuW1GGV3 z{9|R=GG;->qL2=$UyqI6Pa407o7&_;l} zKR)3zEm;H^M+@P{9{0^V|#9UxNHJp8C#i-``|oXE+pF-6Vw| zK3uUH)_C-S#mKw}9Ju3^#ooXR_TxD+El6YZgSR{Ey05fU+B)<$Hu_;`+o1~zex*X) zZr*WJ=fK$r7M)ai>uOY0;0T*9=hOE>hHVykOXj4?X+XSld}Ki+4aWkxc1Lwf#o-~^ z47As37C8&ZkTo#CXM~x^kZ7PrBo&PBL{BXuD|TxPS7VhG%pe?q4^b!oI1l%0WxMsj#+L`ICp%z8QeVNH z$fbXX8TXV*9J^7HkD%{KuO?nHIRu+$uyVIQjJTn6$n(BW!GGu@LedD0)$j8@jp-Oc za!ijUMmu7z6*ycBv4%kyTU`wiyzVJU-6>umK*XMhwiqos2 zmi~rg=@pg!rg1GEoC&36B_5ayr85mf*3rIcZ}L8gOn#E;x*_k)DB2!7@6DI1?_T+C zPOJ1ei8oPXq&y}#<4h%&36Uq6(ZfT=SsYqD z`L{ovP0s(FHF-&Ckh)R0@0&&+bPJJl@KR11FMwAWk{cHN@aXw)0`~AWq1cxP&xb^< z`!G&^e1KmNyMAK)?Ju>f|grrS* z4Wo}RAn>yOtBA#KI|G#u*o3934S^rH9@+KOJTZEnoB6l z1-{MqE3G_^T=WJX7FEU27ANzNWOeDxok;S$Y&U$ zD&0*OK|F{5)?kKIyE7nz+`>toA)77EH)@Bz8-WcpfaiHCD{>$VNzt5#IP?#RI|&Z( z(3pl1M&tykDK)*A9HiOHExn#^q|o;vbJ|-P2I=hgQTWN*Wn=mO`+w={B1QiEuYW?z z!Bgapod-7SzWo}G{s!-huWet7Jjfk?ht@JOz~lV-6V6vY zamlk;3|czf!)Y~B6`2Rp9-mwD9-=#?x5PKSTHf@mB}qN!W+qc9POL_kbEf#CS%{YP zIE2vuY#GO!4xUAP0kQ$VpHE_$;48rQEO8qRTO_-io=ZM;HrzdjlaE383hobVi;@NS zv0pmI4FocM_bW1J9-If-JKqhS&|6azGVN2hL6K&rLycZb9eOvGW=;16mQyrS#CA9% z^8#Dm`6=GWA*n|>ByhI>WK$Dkj#RyjNS@W}S|IuASQi7E1!p>2&k05rTtq;>YQbGc zA|&_pm5PpzPsF$UeK{pZMgpsg%Yf+0%F|d;0w4HjbTElo^MS_65jmoSDDGG4^5k^x02iBW(jl zVb|v>ESlb>-MPW&>Hyek^)ANSIsL<4i*1U@TY7!Jkg#Rg=^rF)@%A{hhpINc6|n;k zN3aD*A^IAr;)PU}AZ0DW?I?aj$KTNWmszsTupzy|Ni~K$@m-#cG8}$nPG7{??|qL{ zi@}c{QTp$f+V>-h{QW;KwLd`af0zXCB4_Nm1|S=!8mNg4RahC*ef_mD+1D$2+8;gt zm?e!tk6`+FCqhT#t>33p(^syZYv&Nh{q@88TVK86?qsL#Ob1I4xRo3rAbWaGEht2v=pg<2Q52ZR3!qi!Kc*r?6=5LazlBt|b)!k1Ct`wfK)kJoCxEp1D zbQ4(Gwh)NA`4yi{(p0x79-i`zjIZsh9_qeo{#1m*ucXE+!WdKKwzqTRy%RLAH}F>r{k8f# zx1P&z->in~Vqns(UDR#led?(lGf!vcOfEiMOm>JFF5EiZI6nM>phmwb3z(Mo4_6B= z-x4<-aF;wrt&l( z{QRD)kMB>?$8)Yeo}Z+T7hHY3I7J`dGx72LN%{ExJy#!3!pHaLTzxzVAKzba_3I5&--Ds$ou_8KWr9xpLfgqoJZd0@B3l1$ou@fA2y4;&oBC6 zv&j3RTizEu^1gWA51U2a7w7%3S>%0j(GUB$yhmAR|Lxzu6ze1|$Sp1ij%HA;7YL_< zBZ*OWhd9BeOqwnYdqiXJQv&ys(`;~U8a$dgSU>oFOU~eGzF_(?Bw_GhHopd_DJ@dh zlq9&{^N(gOZtn%HxQ;{=MlR%;_Fa-CHfRzLQy$|Q5!1>64rIV%xiq}Z0S4RjwR<(~ zVEpG`*aME!OY|OQBsGTMZHgT^LA(#+-l=xe?+fpl5hc&zQyAc>rf2U;ZK`)`hZ3VH zxiTI;zZM@uGN;mf%ljyVeCfcRo%4}YqVZuqhh*_-8sa6(H+#~E&+&`x$;pNRDu z%_l!vo9CUkO;Q1z(PY+ePYt9%o>hKE;s#qhe?Q>-%#fuU3F~cgfYk)o5|kyIsnm`okwBwgXf*l(VAzfmMp*k^R?p^$E>04M zgvKOmdWz_fOW>brGOS90l{f9;Gd{DkhZf-qHXT5)KJV3V zWT57EwV(&kRI90^XD{_E>T(`kSqD@K^jFAzaT*d;DvGjTlrfhJFA;@dr7csZCO|P1 zXVKCUFkwEBus@e5nc_6+o4eNW98gveCe?!#-+agSzQ+tE2A_%(m4PdwXV7VbPJ3FN zcFOP^60?6^ZWn+0$EfsKyDYXG5{_L0*HkDZAbHBPq11oYKS`uTg>jAp&R5)cj^yu` zZ4P1ogo4+i2Z|6N0LbrqT(RcV9SHvZ zpZycu^22)&vAN~F7dpI_A=(i9y*}FO;A%_pmGN2!f^U}+<#KxeGv(*hDBv^xqnxm4 zf(c^2x3Cdc!PMG^dMlx#^X<0vJa9~Xq{HK|SLMB!O8CxgF`e2QVkHg4JPB#PFav;s zJbf6HmpXv4pqG!B--CM6`TbiqGKl-t7-TL9ag zOP0yeI7;tBvMLH^-Bulc!A9WViLSkwr37ZUm~J=gmIUqc)Glc7Ah(brH1)W#g<+98 zMO`>q0ymqLJ{q64J-JTEg6dAOwge#npsSW9F6&=t;q3~sJBhBZk=x|pXv}=YLhfbr zoUC_9C(q-tbg#Y=<5f>q>(@5pn>=>iWp+z@J0@!ni+e^o#T9Tl#}zp3iv2>@9aXZ0 zzJs07b+vXIFcAw<+I$E+3^v#<#nNHdP?v9lwdV;~qSwnLm+IfIN52UPx=L^O7VIP| z5+m0ei&lYIb>04G6pOWWB~+tv8VXkxLi!N28akViwr5Gz!X29yl}yOv2k_I){Kt8D zECy$_lg2AJC@E*M8*1D|Zp_xzigQ{i*oB!IlE|JyQ!xOFTKP2^rs<{z1G^@}6KW{e zE{^Vb5vs7Al@Q;r(Dbs2&7#mvoupp_V=C6vRn0XTM+nh%X_0+wNVVc(VncdX6jG&U zF;z^+(y0d>s)y}o)3%>Vx(%C8|C>*p!1S{9{Fa7^Cq1>jX*L&^)K#xF7^R`~6tK|8 z=2Rn0Cbp*MLqS!rmQcimoV|M>Ph#EHB%H$S#O#9Z?1@B7%;ed=a=9M{nMUlGqm(09 zgbL7ApfZyV;Uttaru;;$+dL66kj>PG6sl-id`;9n02l+bOF_UH0w@?cV7DB7cg$Fr zZwx_5Y~{H5xMN`9Hw3>(ZbA7MadDw2Xmi_LQdgn8lEy<8WFp-tMhm3Z9%G^*S` zhZYli;(Hd&mRp`Cj&7L(vn`+7GIj*<9DMdr#1PE;eZ6)z4c;Sf9bLgc4T2z8;BFng z3!21D&_QDB=(|F*ztQI-> z_>N2*;0IxCC#lG}p8N6{)v}Xm zm9ED;1Migkq-*nn3CldoI5l+|ETs_VsUdS+hfN-H?kAXil1=8xJRwJd)5{rh`Ra_s zRmxf3K3=l%K&bU6R7)4Y#*swTTRJEhOmV-#iVjQNkfAzP9~@qopj}4LP=I1c)*h0zdniCrqqsI!PpSI9PVY2w zw+)(S&^&|Y>9h2WQJcw7Z5%yilug!~)ijsc-`Z>%iunx1d^%zI{|PVQ~Ob*=`oA$_;)`-Ef&t8;^TQR7KOlftsDzNrqrI3F-8iMc9F4+6k@-n zMBI^t4+Lw>HIuquFb{<^2)Q=#QxrM&;KfjoC89z;V~;D;l2CEQ1w79ulW)cJ+V0cH z(907U)y%0Efkt-DAO!0y1n;2=;Yv4>xw?l>A{CWT^b$^8UFLDvNM4c*y*!aA1U1)+ zz_5`#8zHz1@83BS=7+%w_7GroMziV2!rzR`LK%QQc8#GXTBwuymzl989trW9)aX$E2bRSn1Z|8Fw?sTi`- zFUuc{7E6G-ITs3(4xqV^)+p%1h$J-qZv8Nw{w1qm=<0)>X*40VW(- z6K;TUGigMq5SG&{jAKu_amiMQh07jI5nMg|##fI9kv*GnlVzzxSMs0@`61x@#uD7z z1i53v7>cV5pk3?pOjHHu$jk_t4LB-!!YdN(i&C+7Br?880_YM+nor~smH_Qq=ZKbc zCQ-}5E?qs~J%a5&{?4o$jwKP*nmd6ryAtb-i{dMmHwF_>&MJ78Y_~q$!*BV*Z$dkA z>kIC;_@Zerwk!#4#j^=rRaiF?Fk(flVh@i*VT#>1@>{;}=HGmNE9*nhVhf=mF2o3; zz?}Fb)r6Qv03d2R@$Yj$k%!WN$DB=(LT?J7F)tEXWik)w!?8#;-0Te z9dk@ywH~-}iX8HWtDxDSRa?vbqlTXcP9HdZE}^fUbB)y22*WSO$@_1&pF&SVWv^F! z?{}FyvV0E7D?8~BZowW|HCNnu?4Cvc9b5bftzIK`bjyUnPL#@^qn~sJNoVQ+{~hPt z)u)0hVbO$ot78%K+HBy5rD|Y~zUGv`<-Se#>6n(|jd3{p!OU=NRnI)7OlY5utU0jarm=%rhsInwQ-0&{>rb zlS+2zJl;*1@U`avK6V{231>NYoktrK`XMvB!KD&lDAWFwX(vt}IQwOC_S0$Q z4KYp!<{i}X)3N%%+JjzRrC#3HSQX>vx#1RKxba*4X0b5=D}%fZ^0wYP*v3Vz3?em% z)N|Ux);@G)5V%3$)@Kj9WMiMk%~F6bd^=$6Yb~ap@5XtxDXd#kD&rKKYSBH z1th4c6|goUfG>)4VE7X&Gv&oeqHK{?=s0NNh~R_12w7u}ek!jeR?T0(RCdgR*VWBb7O{tr&r6 zwYku4fCYH*ayav=$JG;S2!g_-cBp2^Q7cU`u-^u-pQ`1`>|{j4Ieh-$ zcH4aM7?r7FJ_~&5htO?^FXiDCx2?FiJc@sza3cNPhQV<7ts}7(YiwgZFW7@@ETtJS zX4wxc?(=XIi^)w2do^vIH7Tmh<~h_FW&G8-Z&pZ#hdC0+daw3u=0mB$^2|E2@z`M0 zN9|F6Z!qfb+M}+c9QWs_7+9-k)_Q8aWK#E}fj36O!+$I?i>jhKsei24Nwd%lHF$>! zpNl}h6q>9|5-y?qEVuc8=u;L-#dsB^)dJHtz_)dD4F7<)FcK?JLsu;P6($4@w&OJ7 z_;dWw`Eu{Yj2|vIcS8v|>dz{bQ#KNS#t#qoR81J#n|ili(5L)lQyXnIQc2o@l=Y;n z61#cQn3TI8S1fmrgWRo3?tbi9?j8rZYfqe?RxEeF4|2CEx%;VSx%+*PyY|F6=I~Yc zL02Y=&{Z(H@e&)n$Zg5U-y>5Wv0d!&5Xz1YhOb2iHDG|#M*V4qfw4AMDg86$lSF|U z4v>FkqQrj@dTShoQ~vdD*&J<{MGi^~laB>VfF0d9FF=?=%NBdrD-zR%xPN}Aeu5LG zeShI4&g3%m{Z(GXlqqrVC6huQrbqjJWX%9H@|H&&z&6z3<7^%ARnDJ{nx-=$Fk456 zu6Ykf)6rl(TStKQdF!$9SnGJcZN*pvBdwf~R;P2WBMydd7Xs_d1v@19=#m$x4=#oQ z<^A2pb2-LC&u&qVO_{|ZGCYb9YNfN}^rInFf{M_S)`PcI6$|lgLTR*O zuI^pv23Be`c$L0c!Wt{qJaby+C8{FId=%a-{9BS)J~1e^HB@Zn-kQ%}(Y+8xT_d%5 zaJsE?HX}YeFrXn1h8^}r=(J{xHSp0(RylJ@=0)nD!AjdSjaFpLm!aVX6Rl5uSw0tZ zI>oN|>}#4!C8yE9BEeb^QD%jNGZtwxiFoNU<2@+_dC1N*OoODsSc4?3MBn$P=obr| z#?gBvr}aU!2GMGA-LsP23GAVkmisC#{XupH+1c=IX#^&41>22&D(xM*OwLE+GJYQtn2yKd_9Zs~31csclPrTGv~1UHP-GKJGcm4vT)iO* zC7se~M!Uj#jA8zBz|nBwr}1`6T*onsl03m=o8YoMs9E4l?BJHUI~}9v6tvN7+j8g~ z9VF6AoQbz{h>UaaReHl^#4*Rja=>0WITn+2W#?t%sN`_H@t8#{aF}(&l6xk$>puDW zBfGULD5FaXd|k<+GRDpU4y=PTdeSw{wja37;v~X_FAA`A>1b6z7^w( z(YWI3Q&~?1%w3iBvT;=O&!W&xoup?Y#;SX=1GOZE9Q0;q;QE;@_ zQA@(;jv|r$wR4n2Df@cQIf7EZG;*5L(sp*X$bjX?y(c60b$G@91(%Z+DKBYCzKXA7hMt%4 z-?y&+D)&Gdim#MPIIvm7V!lw|Z!hN5j}x08sdVW)zdk(78=cxD4z~-i?5rb7i!Cd` zQznE5|6a!Cn?{K9GhEh16v93lZ3smqxGH79#>Fq68;R)CXrl?HBLHDAiGAbKZ%}u{3-AT1x^o*wUNV`+SOUSd z6WfaUmhbR+_({U|zAyN+saYJXX6U2C6XzR8=h5AcVZZpPE0tw8ZQi^Sn>kD%L+jHuoxe10` zXHiEpjAV7mw7JJS#bXbkZlZ^m}3ebqeG3SA64(XMGy- zYp=am>R*(p|9PfKYQAB_7T3FwGLH*QXVnZYLfc@C!q-9mlD}o8z&{-9kNAHMs9Md3 zgF_8+H(%LlcptP~o6FyAySi7nyjR)!UiG!WOF9*|TOl4_TN7{}2)Hi^xZltE-lONB z-SXf--=2W`NWlG!fITgc+tN@HuC_olCP9JF1BaLz4SNT&L^R+Rd`w}l+GT?pTh zqs8mUc#89rWUSuS@ut0sNF#3HELzALSjZb#$Q!wkH~lQ+1X|e!9ficfK^Dsi@)!_^ zRrn}Z&g(@|iSt>#dOeJ(R^4trcpSFu^PoHwu>_|M^+ekDh# zn?>7QYceT8oprlqrV#oh5MHl$TMM-pT43 zt#Wu)4uV+NnzNsnqG8w=&av#cx^y=E!)STF7TDwmc);GlybU!H4wY% zI4stx@mK(PDMqTi2{! zrDc;F1loej2zVIA`uX+9+W+$}9Hwk?vy3%*X9-?T!sc z+ZYZ7l);%Yn)^i{VehDpcMn^$uHq(!@VY5;J$v^GN*-S&5woY-tQxS$bF3JPC40e) zLmA@$R-DdeVT7B`_s8E^+ZWDsbmoV4vNN)dPcKeBjI4+6KOBo!$DS{5zG4$Q=!Yfi z+x-eGf=pIF?b6q}B6=Qp3Eh~$E*r4>e0LK>s&>g&J48V)3|T=`(l;Gb z!m5#$FWU&_ioz%0?uvu{R(~Dh^;#48I0=J07Rh^7AsN_zJ|7CgE4f^_Ue+Fy(XAqO zR7i-fk;57yC<{pHcz08c3y2My&V0}DlI_Kh?)*po-WYoqECQ84=AxJlvLZQ3W6Tx< z1T_>ij{M3u6yWxbdSk)`H$1p$Vp3?nQOT7WzK*LV>6xF#6HUrs)@sP1i#(Ux@o;jr zxz!MPci66m>#`C5huKk#EPazgoLihsNF=)}?Q9Q=Pr8>3PxsSXgVF6uU zLCaS@i~k6+;<7tW{{pXe@8%lp{FAa>mjVR>>wNE%#TN=`iH?&-Wi1VJw%UT166A`p zFN!t!mp3Ct>GIz`VRN4ygCxr=&RG~^f+OBr3bzDbJBBK@*V9x;dh6(ztGukPG-rD7 z6WlRL;<6P)J&ZthvrbGp7NmHMPnKJMkF)A4+X6!Iu#lga(c)q<1&oq})0kR7g*T9( zjgNp0AhFh5@YS~);Jm4w+83|W|8$}F7$#R_95S~Sm|TroZpigR5GK;3okU}znKy%eSol*2{+u-7)@m;cq`UW1FXkj&u*46T@gH0F zoVU0d^nI-Nl*rHqTFgCPp5wzfE7Uv5dluX#lY;W;MbG#+PqyK8)-XzFhRb3P_L4jvClv(fEYJ!ysCHiq<8wT`5&>Iph8O%c!%vNJrrKaSKR;xYBm6Nv= z0};2r?H~{YX@;N*0^n&+%fu1(RLQ5S8du)@q6B(jQAwWHcf+{p!wDKj(&#}WyavRD z=bNG*56~b|5g)v1I-O$^vh&+aRBuluVPgB049PJf>`cOgX!7asBjye4M{!J9IMocz zr6&f(hg#8wG(R}DJSL)JC#Y5dy8md|cedw46z&L=BM`{ie!U|#Dhu4K*bIpgW8B%iSDxz8&47Vii~uQb_x5FPnf|*T>ZNYu9EiV0;dB zkj}NPGYed$FL)VM9`v;>pio0A zpnCT&dHM8ac;bEU7Hf?S8{e?;t=q;Y4)iZ@lV$i#H}e;5E5ah4W){$I6*V zUTubnd;2cSRt?9E^QyXoePRdTP%&tp+%659n=?>^(8V?8=FoKNVM4VnDCQf3ta$L1HbBorGC%tOtMgq-I=2sJXU(E_~Rr=W`Et=o5pUiJN29> zjKguV>x9!i7Q9O1J>R>D_>g<~Z>|?{ygmFHyI*!6?9}zbgIya21}m71;Qw>*KX-q> zi+BI$&;RG(|Jk+U*~46&Z&cm3&q?m!Ss4>#{wl%oxDNHxcsGo0_pVOg|BCUPdypay z@qsZ%DRg(S{a*{O?*Rl5)Vw=MrkZk<22(q*Z<%}a{qcA2&OTj!IKIZ9+^_fYpUlxs zyYNd^m&Qi=sbRq#R`%|PmdiR@ysX{(?9XevzHXX0B0=;~t8>sYD4*oM{>m-Yg4mL9Pp{!A|*@V_EXWbkOm7c9EM+{ZTUR^LQPCX1Y@ICmJV)A(n-fu!#s#hy9j%+$I+JduR&Nv|#;CJ>T~z7ra%TiTb{X z=TJvnRu$D)#JY-GgOTx@b6NK_mI+M?ygEy$68 zy>X3UB(x};B;s>2Ki~HYO*xqnz{Nm}@ z`1rkjFPYdF-v!q3E8o6XRrQlA+mpq7BN2?|KOv+?tba)RK)dxJ9njv&ATeN_fYr6k zDnUbJgjS5pX8a+=CW%*ImJ!6~j4{lJ&3`d%svRESBG2EwduNSdDzKF)hs7Lo77ld{ zm@`;~0rtU;;)(5_Md7p<@1%>+ZqV?9u*|vkB8k=+%i_(gqYL_DW6*pZa?CEabvxjF zN|UH)fQ;q9B8qmXjh&CU1fet&Oj}9$?SL^?hK`LRMsfA%rDi)T*tR~2vdIv9(4;gu z2p7f;P-Gee1KG1!@!I#GV;gslpsQgF7*Q~REiqyo zsp0hyO%EwwPUPLliy&o(>xC)0)H6Pzy1+5nD0YCin8&9y|9QMzdU)rJI%|9X@8B{X9sFH*L0RJLtY8&a%kLxV*P$4-);4_*esJ_r ztOEYyMwc1&OA+puxzKCOV$YYff)%}8ehpH;47wn(;cdA4Tm`sVcO^QqP`*XkPGi1z z_>bUA=gJFeZpPu10SvKq@CLs7pAw6mP=?xT)OPSNcCT>a72x6B(kmGq9N@){%6gck z!L@dNgT8Bh8bcbu>rrt)iY366!+ys1O?Y3FixN2tkh;jkB$&FGhbyQz!PW$ABLi4l zc9He#uOBH=ebqNw%K^J^rUJJ0xWQH-T9?~w6{a<~*;c_>*IRBC#`U@JE#Yv^Zo&T_X~b8vJMXZ zcLLwVb}zjuh_-hmT*~d*Jrd!sMG=2a)vRB$bYfb@s*qM; z?Swxz()fF`@Cv7%eX%RTpIX}~fAAoG=Ro(J!~C5?-FM#P@4V@iyq_BxNE;v&ft7ke z(ksrMAIf^b*pkY<^wiFO3T(K_dc8ST=SuY|RBl9gS|e%|6#0L; zT8}NrRir>|>FX+TzF2Y%)OseWuu(|DYII@NhW*7#mpJM@op@y=c%kxDxz0;(JU*GE z!53{uh67Ji1`52apVi%tp)vq#+O~{pi8m_j!quPNhM~{wp!9Kd=ZGBr#u~whf}){M zp(9w~6lTyk<-#Q&jRJq^oQq?;+PoHdNjh)9^+{fs<60J*r6OQD19QvUlddP9ASH^PesqdVhYj2*>te*T6frx@wmECDRC?+In1)-m?3Qt142 zO=9Mjb{zlfUyWSiS)8Y9WQoAVD!s3B=9U5~+l>$ozTV4T(Je=z1SNY|Dj~}}AVmoi z^tIVmAp96AR6akf>*2W%%r*{irT7V z&ebC}YtJJWb`)!45s!c*Ml49DEV2ziL{DuD#$D!ldiL}BX4+}d7aZSqX82{v&3Ji<{Wh$${1m9tg zlXw+8@*%uqAK8PhhCNnm&F9=Kw}pU@Wbp+;1bXhF;kGEI&vmoe)H0gN%ur=5PO;bV zIE9#TQ4Zg&g6VHmT(e>r=q@s|F>t!neq;gsjT_7bSho1n3?}8jFD%!X&x>oEhA!o3 z=YiWLEI1ej*l(8vg>x<$R@2vFn=5H^6j{c@0@0{uGHYZc0@gj~_A(Adiq+VQ;+(T& z5z)q+^)e`P96L-q6^0(px)+3L(qQ}Uu6J1zSjE$Gtrk`WE;opdeIIS9xRDLz`vheC zw63Ro8SgRZTCaDr{(`QrWI1Ebq+SYeSm{ z!sPAJ)r{F+SQNi|NLT>(SaGx31XMT|Lfgei)|4Bdy(zeb5Pz4!O`rP{ss6W7_J zw%~hMqIYi!AaM+*?(TH19&f`Mve)lEUY);v|E`}}viV|nzezp!D!pmel!L#MmAp=G zL^@^vS&jxSLeFdcv`F3wA1;bkhiYO;%#xatlO^Vs^t;;p;D(q|*OaKus67 zpJ-OzDMzn>hwo^>W)>_$VVHT?L*tq!pQx<_G*8Tt{s(y)!V!VWAxyH)JE1 z3U|$@E=&!{Dqja3_PrPUkM$wsg9O&`Y}OJFe|YuEdTYD>Bi1C~V)?^|_fV;Ttn%9+ zjHq0JDEMkAyJ`Vf1ml+V>Xj~*i;HSpLg&VgJqIJ`Sk_N~?&Pswbpu*#Lj#Mfx+JAe*I$LD%yBC#OgQ<=<*CO&rkpY&niYUBE>ZO`uIWd=$+!Mfe-^ zj_q+x=~Tav3_M&~)rfe`gWyxB`B&oPs!1N4>j_j+hUxu-ng-W+flvoT>^24E0{cn~-Y3Sl^+)TE zT%CORV}gpci(wN2OdsSA!C2Id)+V|HXe9LE>&Xl9tU*71ui*Tg6h_YIp z4Pl~il)?g@m9GL^S2H_k8|2P>2wueqUifpFhv|Awsm_DZ(I;IcC{4r6;6*|l}iIhHw$-K7T!c- z)(1Cr3TOJxWA{*HR{P!+LR-XvSiEYv9KGTOz^Eft!nXT^?xt0`wwZYk*gJi5EgXLA-=5rp3|?{<=C-=D$5D~Iue z7o0*HQ63%rpNwgx+g6Iv*DlJMwvB=!}>t`fDAvZB%B&*Qfko&bj`QIh=D>$NU{jb3r%a z7`sfsUs$6!e4rRKSFxY{kmAMBH>D;LsSE(Fq5!XM?C6#yhOpc`PY*lHC?(s9x5Qbl z7BxiJZQNC$OA=nkz{m_K7f}enXUz8<171ALbLMRh(8J=7JNj2kqH~0Gcxv4-3Xg!m zCeh}EZdTAi5Och+fWB!J=!7{0B*kJTx(7s3X($5mXqJPXf96^NR;@D#Ftvbz|JC5d z`!MoFjR^d6$*YnV1oez@$LCPUWHoj_MyqeO=Am8B{uS^}W zo8#+yFE~7)YUkQUMZ%&$1{PrmIecR~qJbg}W_@6BY~M1Ym)jS<9q8W$X8WWKckKbA zcxSFfau)|*g|32V;3GgVcR#`vy5AtoAix)-vXMS79IFTLP8&exdPS>|&}sW2IPW=v z1?0GKW6n(E-Fksp4+cS94BcAANsxH1lO-$yx2|RMlxVc(`99o-av}0=14_ogw3u+p z_cAO(-O0+WMc7FD)B2-UTqgdIV@=LTJgHTum&W+9%NP!g@l%&EWCgHx!e)+FYV11k zc_lnyb%~Qi3y_~XgGXTuqPY1U0D@S|^{NI{0-?s|HMGdNs~gD_`ZreB32YTMvcAP& zRZ{RIQqhSpC<^;qM`xHgOoD+0`S`H_ol4}C@tVp9j&!hfL|uhU4~#X}y{N;uCU#8y z?$1vwc(Gz-plMFVg;Z6?BkS$RIvJs>?NqTeib5*FwnV&^9auIL2oq%+_*qOQ5Y{?m zYqQFaquUhT{FwT_l2Lv=iNgDUf@5e={I%k`DB$pG=P2N>iu?YmTyeemKc&g1@g?UX z))F8f0oZ!(q28U>Q z|M|y`c4P`4Vv5dns_79?ZJ>Zo>9O!Y-LT}Iv7nIcD_pLi8$_G*4%QcXyvX|Ex`)Nd zGSAcZSu7D}#QQMoDV%}L+}@CUX+N$U!Ik>}2c%_WC5jTYBYWHwloxH=mqdYry(ZC2D*e&YFILT7(h1S(sLrBZ3^-xC&KrNNhO(;SPF|=xP zNN_a+Os*Fd2&R^Vi0NffLNOmJ2kB*dib-Z1Ix4CuhiT@Trj9%M8#+$mnsZTCQ?lJv z(etOAnoL@vgaN5K4U;;vmu!P~oqR+y9x`kmKQnL0bvProb?`(kkE(Z(F}* zlUPwm`I8;7tIX4w-30_RP!(uB$V?)UWKw8qh+9G1ftCv-uZlMPiQdn@RLNc&0?GI| zuC~ggip|qX#G5Xd5}e=?yk3cCGUimQO*iJ$yaJ{y*&daz$Oe5f8O?Y?A$IY*2Dz>q zp?8}lKEDJKDi>g_$+i-eETpj?b=;AR<~49-Pq&Km%hJnr3Ox7-buFi^*y5jvHIPmps<&UybD8n#BqA;9_FbJT@Z_ zap>lx5`j~cP#xl~VMmSKRU%MIbCj&}Rk2oSS!*GXqI@_ywD`AT4*pH~X#!{OXi;fX zGbBC_ST98Of)`I_+j70}m|@6KmgFBi6|I{WwxU*+oeEI((ABc-)CN)5u20ZPF{(2C zSag9y(V?zxOPGAa=x|Q`y+l)*XhR4h!Bq((+pa{tsPHJ zLYFlrA>SY;e9v{M51`RqW5LiPD^9({mhA`A7%M=*3lPz0`?q1_B@;ZQyOwJww#dFu zIZiF#`@$sTIL5Bk15(lEj@w;tDKXLaN(ga&d0JiDlVaAyi5kr|st(XmY?Lt1W%K6t z7nKw!m$7UhC38IkjI6)jIO~xGNWed#$=nkQs8g(t0m`#J4f(a#zEa|gPhVZJ2&;ym zd+n?9Q?87%uek2Xe$Q{h3vcYc^#V?w?5T=f)(iNeyu=Niy>^8VMM?+9;&z*|@N@O= z^Fmpo>3B{#FL2pI^Ky@cn6IqV37=D`bTWd%&5SCAhJnbQhS}zeD9&*>K1dvne`eL6 zvz1UA8y3gA)@Q!kycT;Bhem~9Kl}Qv`t?Ef^@;j5Y)*&SPs&ns97P3`EX8;gOB<@E zf|YMdXJNu8$zqsh(LWIkWBvSkWF7v}*3Fyi`}{h!P2EVW=%QAO-lo}TSsE~LNcU5zF5Wd zNyVpZkF-uSMSA|&keQsZF&k2plrY7T&k?Jx_4+)AgHJA_ti8^3ZCoN;c2z6lS@u)IbjKBFl71_Ix97=r zWx$v4YdaJjyYBX)q|7DX>6&4DniwNC^FAMQrfH3?beh#PEMdZw zsa#FX4w;$Hg>Hr2U=bZm$<iv>^)zIqvK zy%j!la;g$oLmg8>_>tYJl?Dxo+a&KibSPstg%O$viU(-OI-%I9MjuWfyu_U z1Ltv%-U?^4F!mB;tS3$vQwRdRCx3d$cs}zxqHpftv|Hy1;FEp0a5uXm(Gz07 z+!aEr#RR}~&>Kt#tzkOs4W`33Fp(|EiC4`j*3H34SefhrLYSqxxo5Bk=0)5&Bi-A1 zACCiTyTFH)7kCGJojdwK9@GPQ*b2x)9Uu>Nfo!(nz^$}dE-2N+#!ic-wyMP{b)@-K z_YjdmcMiI9(4Egicjji|s&t_#12c=4Fnz3212Out-5ohcAHKe9@Lqfki}1ctC|1w^ zbtp5%tZJi?MkgLq)#XjyWt^eYM${8*=&~k%%@z4-+6~dYlzd;eQPmXg;C*|x1YJ@g zzQ4PucMlZT;VE_f4ec5E(7oz3rcBd^yr|>%vUw~f!3JVmW#$FgGsVIbQQD`)(>e6C z#SUGbwP&NKG+Qr>UQ4LwMw1#VYB7#YiNkvq&9+;5lG}^R1&d_)W@zVZN7T=A7W#Iv zRcZG{VC02uk6+Ubky@E>oJZ|TOKweWiuVX_wtnwSgNmQff2140E z0-5_ab%6av0}w?^uUA#hG8NEXDcU1bQ6}w#c#z@hgpEcr**fBXkjf{Q%JA04%6i64 z(Bf$~u=z@C-}2>r^Zvv>450f-$Z?!cD$64{61rZ((`y&ogI&6afG>qsg)UrLxHlFD zG}raa+zHNX+E0Tpls->w{T|X5k>fdFzNXz=FRXnjdN>_Fc=7h)j;Wm(U8ahuxS%jA zJL@Bbh7Kf?aah`59NrT_z7Le@*Q8Y(-du{;;m@Y;H5A2LMkb-!AO51hW^pMzwi=ga>);HP3qnB z#PE;y{m7aDKvXFt;$XE;LgAwk4fr2Tl@bCWS{1>cjkgvKxnuw;NBJx^rgr=?@J2`8 zSh04v@}I=pf1Wv*psioEYky>==n#r$P>CDr2UmHg2IrxfRK|r!?mg?+@7Xau@LSK$ z>bCr2Opozl-EKKCE7x}mc@NeT(IKfb|H(+~4q-_$aJoyNnGAHkoQzn@RyTG zyD?hIMv)4=s^B`>&%03#s^A&{8ktFo7zAYyl;wLzGsZW%cU{Li(vq=nG+TFIq8^XZaaQxA9~Wu>ymYI>xo6k2x+4XTKi1t_PzIMX}bRC>E!P zENo<)C_}|0)1>+g9lx+JK{c_4(ga;GoEJ=4a%>uk7ClALq5_46vQisJq4q_GXjE^d zRfoh%j8q+3GFGALkX&njM8X!NUSgO?*DMxxB@^QpJe47~;xw}Vi(W-pU(t3X(j7%2 zzSMlQ>}y0I_l}^0Fu6ncw_*0Whp9idGntQ>Er@Eb)gh}2`D|k}U z%U12{*o1xU`=D3gvDotd8TGc`WMZ73;nFUm@Xm9qdLgeRRV277bs+5-zkH5lqEDlZ zCYp{Yy+Bfb!;)|9cybcDtT7$=&N;ClpGNetGPsj07nb^HyoXuJSl0EdI^ z--a0YPkFYko!Fx5RLT)+`Q8^MA;&SQa%&9v_Sd~(e04@Yn1XQ!C)FwAFHE^j8ADGN zFq2BjBN|1CIJMCvrN&+z#UD*Il3$$$+nISuy}*joHxl@g{b>#h_2y?^yezqbbk-+4 z8T7;u>J-L#L2>OYp7m+iKzr@Ia==Ap0fe|=-|=tYa#5x|DmS({4=C#qEA{x(a0C7F4V>-_rGSM)qauvsvZlMo;q9$gv zD~Lh(FS>32JGNxyK{Mnz#w?VE>w9%BuWq(O_mQ=)e;SP zi&Jjs7S$kUTK3Q!3t3Keq5CJFQ)&J=vRpP}Tqw9ih(vOlZ5}~$+XX&I+Xen9r^;6X z_ri|D;&|8k%ni}kRsC&8)_zrU+L3io)mfI}&JU|v!|M2;3n*EN@!I75?%hSPBW%fk zM);(SEljf#VGzE+te;uE!S_^SMPhXdO(VP*pbHTp_f-D26@|PY zk>v4&vCHD6%Kdxg?4(@J?Be$6j&^FR2-ihR?6b?ZA)N!_a_#GXrxH=-P>?xDh#>4%yZ$}0b37lK~P%q z%M9NoH3@%8o>_Cex2*QOab(c54#?tZ(rmP7BP|x<*BdRN>#5+MidP0T-_q_KE&XEE zeATIO3--a-FT@T}Ym8DSktV!FBODZCi42W;NTVj0Nz!i6P2!~|-rfe*YCq_(8+T{^ zL9=cw`ws?2L%Dbxrg&-cHhfqQ(^LVdrGa`Aipw1S$NKNeDgoB+{(CER2$~QOn}Fc~1h{x(_4Y72yht!Y0O1IJFM=ll*s9 zXkXigm$;qrgWA)Vb9Oei4mUk+9sStl{X2oet)t2{XBgHj%ZNyXmoB34-&xc~WCt;2 zwSeSSPDF&$D8_e*RmZTA%7VLN1Dsfu2hG19DSr={&zqR}EQni?^4yucLz45_Bsl|> zhwNrU2prOy*NF;4KJz9>$&kqWoM=2`FdIi{DG9iN!PPGNmrlcPR+sKMKkt*~{pzfL zMM=LZ`G;)Z7m)2+B>mbKEl~Uk9Bp=kG}BWyhJ-HL%3j>1ZnT+l1q#GI9Dn>r<*bBm zB|)vz$c7HI`Q&g;K2PAy;%w-A3vAzq6sr)nM(aI4i;b?s+2|6c7`+XXgbxfvX0{7{ z#O#6ZJvW(*zQwxMB^n?5$s|l~CzhS^w>h#M%dunhx*(i3a8E6;989t2yHqR@vPgY9 zHk|;LVffv2rkyc<99Rq2@+<&X;%uiaS@@BJC5^F&CWWq-*VL zrkQe=v9_04_r)5gQR5Yk@(szXXQ-B@of>`(R9!o&77X8R^0~mGJ`iS=HjS-1B3ldN z6>+Z9t)r9twr2@cP2IZY*7yWe7Iw%5Fr;}>tD_sE_wrlfWwb7Vl@Z+PK=BSsePXho z^-K4&H6{F6ACx~^JJLTFhe3Gr?-jcX{%e!{1sVMZ7i>?6h0E~i%=a8GDXZ1&p`HJ< z^@v=s2rdFBf=f&TAx_X`1bcXZLt&9RDjZlj7xrRAd%-MCWDzF*r%n|lYJiuQL6S?_ z?UgbWB$-20-;~iJNd@_y6=mk5gXFKHd0OfEbRYQ zdSpwG%?d$9tWJN({=*AK_S(DVFDih3kEm}~FA#~3Y*3YW9wUdGTbwi8! zv4bddSWDq;LrcN?wYJN-hnJhLgI+VV0J<7%yMhU8C*R_|7Hg=mPtRIk+n$-Yw>=v! zZWmqLo~`B0?OE~aw(3%7WZ=T6>-Fu~aDUr~sB3kBd-nYA`p#D26h2$GJKTY=<_Wuo z*SKdd;U4#?2)&*+xo0ovDt8?yzfPCAXD{kDcSY16?sH%CeeT&@0!a2t56$P4X@`5{ zz6h#wk$hHhlYG|Gh2aUZ}w8cccKn}pORiMr&cIt0* z&qg|0YPi#F#ET0qb^E~gA6_!PH}PKgY_l(R&o=mG_iW>@cF&%}-R{}5y4*c`Mz_0X z8-Klfw$b;yuw81KrMS1|7rAhTI{EZLRNgb)H}0R_Y5&&#^}LE;ZLFnwTk?OlA8#@D3*%k`oW(y*P3BK1F|>aqIQngTrQ^Af?fg zeX-NTg=Q~1{ZX8LP)VX}%9hqJ6K#!{97jWT>^Ke`&rY~;A;bu_NMnXTj^OXT;P3!> zpq1b3o9yy|phP_0!G8@7N3-|GXQy=>XhZ3=c$9{_#~u>;fCcG^gyZ2beT_XAy$S&6MA zAP5umB8d_DfbmnBd>VgX(=d8$0brP-H95uid*nb2-epk>2*m)D+rgqfVEi1ghZ%N$ z0@aX4x~!PLXN~Da1JGT}nUwn8h0JuQxZi1fzgc-l)ak;OPWLJ93e8MSYQW+JuIJd8 z1e*KHxJAFj5QThKnzR`bO8zM^#-c_q-Lcb*0S#eCFmEU9h%t;}CkI!kk1OwYUDQ|> z@bJ`r@TMuZf>RupYr309=#rL%97mor;m8wu#d7#j1^?c)KF8!8vpLtNK|;sKX&NWc zRgIe6jZ@#ZB0IRnTia}u-7*mGeoH;RZb-1^bMljc8{YHjA7{+EI{)e2uh(YJdkUWB zZtgFVsOLLsl}ep1s$--x_IZMpbh?_ZMag%e=l*d=o1ISC*rrV>poO(LiCKTQ#Nx8f zRWVEYSzn_==Vq?&FK?dL`WkxR*1`w3R$jO&WVY-1wZUD#)|Mj8ugg|)VYbOvW-5A1 zxADqPO|)d2jzp!6-|WS7eyy)Fx4{eQHob{-F|ne1>MHhV6R9wCD%$8?MJgMFvtN&0 z*P{!d`QJyK)CV6q#!j(dB*pFQt8%AU7zz+)yYBL9RTyBtO{~Tc>P-;`Q=W73wU{Nr zX9!KW@Y9a!`Z$hRl<*A(SGY|OT3%wMfir>Ask_sT2#Sbh$fLQo<OT;Cird9usIq+A9CQMP{FK^bK5-&t1AdaB}DY_)r@~Iakcor%3LiY*4(HaQ_k?fgE1%VaZnjAGZu{MP?DC z$nkR^9e!j+5}gEfu?4|;D#orkwjh2_ET7NBN%8ew_Lx?dHUC3`34>&S0*D&9gJr6T zv04No<=DS6hyAz;`*4M18251(+{XrSA9uw4=fv~9#ACW)(e(VIxu!NB=0Vv#31^R# zSWvXSMs=U`J*gk<#JgjVcHqn&+o&y<#ln#Se?diZ(3q6QVELhAFGvb3M4Cp9@W+H{ z0IyfJL4IOA9;fuNfG8 zJ_bnVd-{SMR&uTYEy-KW8RO~eKZ5cS$q7%0U`?|HAr{wr zMc`EmEmKQkVHx{NQk8}@Mzaeq5Cr>&)HlZ%1@ZqD^wR&QOH4jqxlokYu_5Z#v3(z@ zOW`0Q){pNBUJx+1COM~((Fx%(s^OW{;N&#mvuM(iKvoS79fiinC)|mx&dU}GlhYv* z__JcghLl@Q&7Xf6$hm-=Bu|?`)awxT$YTJwv2HyH@3=0+gOv`aLYVo7%x4YV;0R!@Y7L5>1m06<>KJFE(L- z5-ZBLm#H4rUEinvL7EubSOyBODTRC6Vk#+K+GAb-b&R$ZG#_pFZZMBIDBqXC?%QK z;LQ{AVFY9NJN8lF=WoJW?gMf>^hf*NEjVI@W})ldw)L&V73J0uTyIH7G!2Oxi!!hn&F}Bl^-% zBXa92JXuA)GyYc91@_L?-qCzXg!0s#I0mnZnY(~-THl^8Wg@!v001C)A4S7f><)@E z+I}s`3H01q1I9y$zoR>PSzn7_O=AwWykl2p7}&XQc0P}3!ed(McK7I?rKMj4D@%mK zwX$GxFX#|1LT_R``E_p3)!%~EF%oX#@Mpv1y2gv_EqP9dp;o+|^&@AwCc<)?6Z?*T z0STN^D+#+{iP-5I0lkSKr->{;cO1mtwuvA-Vcgn9ln1Hrzaj~x>aQ`*YNa#yeQH0v zXTdGUnZseUodg2X@V(uSED_JPkL2C$_HzCqJ%1Ae!w!vlF5V&0YkQ8%KmZ ztV7aoVnd@N%gg5 z(n6L$GKWk9Ot2KXIUBm<`v$P?(ml7~&gy|D)9Qi;;${N-y8lKZ5!>W0b^|OqbK~U zQJs&l$R4mZB6FqhTfA)uS+pY`yCys?#iRtW*Ylwz*W&^XcmMn+ehhebZJqJuGe}ct zbrOKB{n!d9BTww>?QZv|!m71h>b9}7$_QM}t<0WgH2AbjUowrbT&J&G4^jwyx~93=rn=FLc<$3phnQY;p;$?#P%^@56r1 zp7=#4+M~P*D~!k&#YcyxnBy=F+#ZP^ubTStK>jBq|9N~I$KGuKwh{zRsXR_$#jU=8wi zbj#hAV3&JPiQko#)%szLtJSkcyh_%H*PAus0&6TkgjFzxxk@`eW3!A6_=)Xmrf(Ww zrCbjNt~8G$tU8}eFvSD2T9ljdKm0X@sbGrp;DhJ$6J^Viq4VQV#!?z(nJ@SVM(N=L zSa?4+RYl{>3*2`PRJ@aJIbv#a)XfBiVQG7RC>93AMai}Xwk$iMh)`ljsBQQ+ZP1D1 z&2zqfwHlg#egyhn=kSnU?a4YQr81*E9wpv~w)@_@iR?UVuvy<&7yz4Q(|w9hW3{T5 z=KCM{A6rN8Ux~%j_wVaa$Q~dv1lXfoE>`^ePCl@8bUwED@YcN@t2oR?SVeRe-%gxk z*Ns>lSKpX5!+Ulx=L*(=YbY34WYhV68~jhWJjup7^tV>(obR8d0q&UB;rVnHM#ARg zl(WX-7fjW{-wY9xTGETbpNy*D3+0D>=<$2@@w*S9i$?Lbl0DHRl?%t>>ZH;P-pbfp_mOyOU(<^P_Wk z@3Uy{W9a*P--S5l*L(I6&?E})AmKu2nl@sKxs#_NS<(^9NRWvH=*zcwd=xE$jwO{< z;+zLwQj2}%NG7x`ZQ;(N#c|Jk%IKi>I($)Zp$-WU7>z1A>j10f0SS=Ug`5Abbqycp zM-;9U=HUU*<|s+PP5z2rgXk~_1NRdz`)0RQZQHY2Z0usswrerECTGHnp6x@UMB3QM z!~xV)t%0IYl+~Lk*Slaz#}Wo}%PJCK^-DVSVsK4;^4b2WcI$BQQf!@`zQa{~djD?U ziqjdY-F^YSnla{n;!1=P5HumajyQT{HU>Z(!!Ra5&Go@|oN{4wpj~GrYY}hb1((YW z?Eo~R?ORiuvkCuweFJo)+q!MVb~^0Xwr$(C%?>+B$F^-d9osfLwmY_7`rP}@-Dkgj z->UJCsv4udS@Ww}Yt&k^J|O6RtZg@&&QR(PJZEdnrs0yBw5S=dsG!Xxm-qrd>ld00 zFuZ7h1)Nx-E9rsLiv$RmUo2nq-(1^}!V2qSa9;Qv&fV3=Ol9=>nDd9=;pgLPv=*Gd z#ol=o^TqgB1Foaf@Vjs|UU>XoDfFrK(B4b4O_+@mVCgBEy~`3!VP}Xw!;Sf0px;L( zvoYFQ=M1qAi{)Lj@6wi3g7O&a{B#MYZ4m2HISv!6#(goJXwMG9HGCUp26Hd{@D9yA zj;Y{}Z3}eSnc)kgUGm?T^_7{3XZV14Imm{fsgxFR9BV4*Za_HKzAOKwPpsN7%QsJ@&aH~;7h54k6m(Vde zoWGHY-tR#neYy6^{0jl{_*XQTl3k`r@_er;p|=Ft`g8`9JJInf=&;1&8{}an`AwH2 zRzgCxW4ME)J909|Fx*n4aEjKrf*E$W0nz*VDFmRw!s4hD8<8VSg{tXp11ORRNVJWq z@z){f9?GnnRmnu77q@m)cEr+#rnNX|;i1~7?=fGS=o3{x7~SLxuH?1vZPasz&g>Jk?RF~@|jp>OLa>I)YaGNMO0tNA}`5`cXVBC=Wc-+FN zCzjL@v8295B3{pzq}64mWk7egmW_z+GAHnGG#Xr$=X$L2oDak|BUZD@F%so@oUFUk zVmEfeZ9bQcuv>dkZ9MWCmfSYh>imuqh{1>-iW4WEH|)>N5hIG8Qv3nh449M7uANG*if@83iDf>D+Hvf9OFRG zol4D74>v=T%(XvtwjShN3!_CIDn4{sr$Q{BSlwZsGMtV(yQOstajgb{ z1Ob*7f_wF>=hqbcI5Pjb>@vg~z0oHK+YeauzKQ4ZS%t@># zxGO&Y&_MFu`$p8-SB_P%`||d=0GHoKAnx)Adj?dW0T{mA^I&zQGYuhm1Fzz!W=vco zz&Pxh&n=!Y!#Nk=-fTy06ARy3&cS0vz$G**FC$XC$vSy5e=$kMONMCP7qa1!>jTC;O)J-pNW^ z_i;9Sw~@dtu87dB63hZS;N0X?GughHGs?C+JPQQ`oo*_bv7n`7nuMA|F8#3E?|i>n zsrgvc-W>0N^yjHvkp;<99Z-jQX_RB%AR=wnvR(m+Y_x^~25H-(Hn6z^`7j&&5L91< zk+j*t!T5L+#SfChJ%`B+W$d}|KHn3a4f+%}%eD&cRZPD88VKwf|B_H1^m0vsRd#OB z{>7_d4=%w__LaaS$13TT$uRwnK=DTu^&9rcx>l!4Lx;KwW3xm`jzNlzQRcw3O%BMo zKoVMtp7^XNDJG8|oukcA#$xDMBX=)GQ5AN5o|o&<>>CE0 zP15N*)-i!oSLlcPLb;l<%!P5Z>W6!@w`&-R(>Eju_@2mbhUWRJbiL04k%|^Kw8S={ ztfIPoBDtP<^)kX0@_WDLN)b+T?Z4oqxL=eYXp{@rFTxk3B67wPS7x3Mf{!s1+YjYl z1V6Za_Pg8hluqrO9=n5tGJhNSbr4dktMTYC^qdd5{NjOtM_G$z+;(FyR`Lb)7uRSN z#N&ycQX<6Af#}T|c0Z52DZ~Ym_-M-ijeKE|s!pD;GAbR49h{I%5AhRFT^+V0@X^(} z*DN+dn0+Xi{l>C?ST~~5n`I2+GK)QhSx|R~(*QlzvG2He9q*9IOD~6=STzAFYJFqZ zlfFp#U<39`3}80EwEQiM{dnh;h8>)q5GST$3Iz((T|Y;|fcVM<2EuV>X&N`LB{$8V z`04FMu~`GpBRVU2ts~}_sIwkieKaT77`)dT^^>N`NaW+Zw03@`{pw0rz@*M;Nh+9E zHM?(NW!P`ZQG#q?Hz9OqOuW#FJd-rR!;Q)Dl;FJ7+5T{8xF^vH?trn%-$uNd9@Qq8 zLO?k`k?S4rcp-;ikfK_w#VUTEucHuc4kUaoQ9Vr#F-2V++ywjx8t= zo~&P;e8a6p6?DC-c)h$+Sl&=CPW%2Qvl{_@EjMO0*e9QFWDTtOHybsy|=D}yI+|+f))d& zwiR@X{Itrkvd+uGby5A%c;ua6oAv}B25Q&HzJtQr5rj1o@}3^*i8^f_G3puUhpB|1 zNUGR%w6u7E_<>r?;Q5*u1)UiGu3Juh;w>DQ=|5eb`YhUS;EKoXS&-+~j;Xt$tLU7R zp%}w)%NVP4cms?&?n*j;m+m2eN|wfm9hfmzg~N?@fVc3+)%QLkuO%BY(>uBdY=W z*4vy=G(EmMXx6r@FZK#ti^Mi9eI6T5(0~F;Z#~ol`=Ujmk~o*}MiA1*P7F%6ujrSh zjl&&azlB4FV?P?5I6ZQ9R*2Q`d!Z(2Bnnp$_&y4sDCaew(m`(R#t1jTtyd$JpgPPJ zZ22MI)$bt9H%A%5#h@~C!Ibq{^7cR*w47m}6iK{I*l84rvvhLjsNjrWyj&MoNtod( z{;a*8zvqV{P1L4zAH1ZCe3`#uVIu_+I#V-T8DISe(@zd-pzN}@TAp;$B1<)uFY;7l zk9+YTWqI@#c?Nc zDHWBSXltXj;rHeSU#nYm7t8}^$n&zqlPaY)e_i#$l|592^to=1xqkG>5?&;F|1R^+O4YXh@{>Ar8(Cj(ut@e4$1Mj5!Mb}r_HjvGJI6mG*+BdPvJ~i94X4Ze{F{)K*o01VO=y#8;=$uu#>WY4gN^BsT20 ztT0hA+d&?Yp%_F$=Afx<3WQVA#LF<;N9tWDg!!ko9W;rD;C>@hyWhgqzW#Y`Sg8;^ z`Wsl&>`mud`*HgvRhXZSb>gn1cQt@QyVVO?Of_T@f`E_w1A8r!gzq>&L>bxA(#IfB z5;fi)YopFL&_a4lrBhxzQ5hi&nqZVOS6Va8)c=59zxxY|K)%k zJ^|bZyPIs#$5!@gg;0MD3~Zb4la4PilbT~g0e{Q_b}%D23*FuQ*XVe{-llDdI_dcD z&Vv`!(18(##M0Ezqz2c7YK0hBguI-&7sYcG*F&gRWC84OIf!(lMh@^HzDO3qS#iw- z^~eMX=u1B;-NhDV()5QB18);lIl}n`NN}kJx~BIrD-Ct84Nht3(IwfvQMBrrflH$> zZdrg8rt)ILo$Ncr4F~>a)$xEk?}^GX$-ND?hNq4fz7# zEH_oXtM!2$T^0&Mj-Kp==I*z(-lHN~BYON?qvVQhlh{&yu==2p8mARrfklhh`@I<2-a(&v$zZ`5JsH(d+d zv`#u?0R18zJtJ$b9Phwnt_*{qL|_ZLm$AGbA-~4YFVFc`G@%*X=h2o>C5=)fsZx<} zQOR&COu^+tQKB(KuP&@?o-d=UbXVsu?rcUc;2Mqu!~gt?Mz!$HAFeXDvu;-kms(oX zxMlTyZBR;}M&Dsi5b6F;tzm8^Pshck49)YOYq2b1v5)V+I3)8D{O~}2Atq&lL+))T z=)!`3Wn~r%>)!1_^b@_^&2Tj}F$qX(Us;o6 zV3VgibvT_Wyx}H$2R%4aXAtN%vcGoQ67`IS{)+xqUqH9t@5r!jE4HuEf+(y}G;*_f z+_f``ET=pDF1I_~OxW-Ak}|ZJW~Ld`0Ew@cJU18MxAiuz9mSxMatUmiTo>Le+1S zuY@hK;|i3L>C#_18ol=|2`qj4!sKg*@n50_-DF^1W_B5*i@A0pL7w_ zIi$Q~(Zj!_ix9G*Z*xwHRHUr)puzIg?ab$=@n2$Vd%0u4a(?a!|CKD#K%+hOr*2@& z`RQlf!0lgu>ISxy*v-Re4jfijsqdNWmv?gV?Qa?DU9Hq_-f%_tVz=4x*qfNjsfeec z+uy88txd0-f-~agXl;ULjA|x3b-iFVGI%YBwD?rrfLsFQ8xSXXcYy$L%Xdp(9`xM2&_kPE-@MGZX+thA_ zPE)yrYiDS`2D<#&dGOtVBbvOb&^DSQFkEk=2Jn!zsW$jXZX;S>;H3t}b1k zx})W_OC5yHpz!=&u%x^4D-h`mL$--=i}fIIMG^X_Ej9hbk|%R7@b@8z(9Nrzm$iUkO){5r6yEc?i<}T?sck8KTkguWLCEzunLY?)mgp$)| zX}_#jn$Q7~PI@Z$3;~z3?p8mEXN`f+Y&sWz^dw+uAUa-EoCkLAghnuJE?;VcX-ztq zr>|}!2yl>BAPdwwjeoS2ftA-gSs(e2Wxxp@OD_1x8Tv^!7XMp3?>xXwPTmK48JYv9 z?%qQ~l!&KSvhoq-Muh}#b^mv;DsLIm)hl&Yx(Jg6RoPQ>MfQBhzV)_0j|)Y z7mBRUb^ox(lj~Q{rkHqWa8&1}DbRl5fqKb;NHnispaG6T%F=X*nkJTLPYQhm59(|u z(K@1U9k%n?SP{Rn&PWBt7WrLIo_V*Y7;G3dwnCD7s8WDsarkJ_DqQl@CCT2L3(1O= zD@t0_g%=&qNyD2y=~NpZp-ks9ExzWla-tNh8bDxYYr>HTIVxv5;F#=L7)~0c5g?Zy+(ui8!;cv# z5h{8u&XWlg)%jm03_Vsb&e5WlVuF?=v%@%`X=H&$Ffe6FFlo+z78)OrFBB4r1`!7; z66gXrQ{WT5H4m1y8OSYk#EC?o_!OIxU0q6hTWdEMDEie58%|0szY!2U-~_h~RcSHy z!jCzU_}WN2AY$pX0gIvk1(j;fOq_u^S<$JPYA)6zA>J(EYF@-T$wVA8CX3Us z@k=g&S|tySWt=;I6q>OnOH7$ry5g*b9c5t-24WefAbcu6)dVPK#TWrwiwfp=6kA3e zE#UMs+uk@MsE%ximHIo2vRzwohZ{0_8S;4ict}Z>p~$4c>FQ-=by`Hau2I8k+0ZT%bW^hHL7vA?UH|(Uj?2sSGc3e4-%jshB{=I6ilbicr zc_M{o5P`^(;tLu_4uN^#qMD;SFjHo-_P6La22Uug6{Rd}XML5GJ^Q|P={)K$D}EZl zB?NPj(*k?|oCfft8a!Y4Re*3hLa_#mzd9QPQ7ug^L`PELR-MGZOAro7Sx`yEwr4_{>hMcUb6 zOGGB&{6mWyxzyZ_U@0efmwj=BWnlLUg?k~h>Wog^j5`X~GU9bkIUBS!Y)Hx*uFz&> zWc4SEjuLyjdL+YM2cAe%0kVaP+<$b9h@5}v8o?yAe$v;+&CL1eYk}`L`S=20$F;Z7 z-RJ<-H2vj(b0?J^TvK_N?I@zpsfkNFB${UzuT>=Dz^afXMWJ&F<_>}m*zAPiL2sQP zmm(LqCx#xJmVKbUl~4(ie8{w$M)VI-w}V3>rQ(_i9D#98QLb!9@R0x`kiju#O|uP* zA7|uDfr^R?^*GqckJ!Jq5Iq_Ga!UZ~&cm7?>-STAQ~7IogjOIEQTub2Nd5VsfGkam z`f=8Y6H|}qt0O>AuMv&ekoCHf9hd~@gL#_fU)ee=oZn^x&lYFC^`;SB>V?<2s;ASl zi5;P#-O4`w_+t9I_|$_W?WZgLM8>J0|Dj zpbhWFHbO)bYG~irYTwBT4ZAk_f+Z`!0!bcgOy;4X&v8s1?7Z%(OPAsAYBQ|#!`6fn zKMNJPgDMWLb(Mmg(P8z9W@w@Kbx-P*Bv zK}+lzZ0iYPhK2tYE8OdHyA5S>o$Sm^ z$Az$%Qr%)p2{wmmW$arPyvK``E`CxQktfuv8md-pKy14a^fDyNMu;?a6s_46Nk_cZ ztefeEN@tZ(1gc_%?5GgV^bF_+{?;sAM0Kiode<%7_}V=a>A|KVKpe_gWzAk zM9lEc?1?z`WTc$ZwSD$?&if4}M}BfOfBz=1$YSD+)cA~e@4k2>wVX|bM;(7pipoOx z`?Kr>&Rt`=3Yf)LW6aoY$jP!upso@d|DL_JV1TnYddsUX+wdR@k#(4Vu?G>y?KQA0;P+`MudKNs}4a}%B&18yy zmt%6uJHxS_Jc|$yTj7u;uM2ntZ_g{{=8)_#a5Brq(aL!4{p)zvQe!3I=O*jRr9cLR z!^XT#TlbJ?4ZLMD5!8&K2ame_CK=-{8 z@W~hFXllCJwU{o{fY3NQ^$clKJj0dc;kLUU6}c@gQxf}+2IJId0mtXUre92NVJo4s z`|=r$zzv11+#1UdFGLv388(cfwvz(ny4aImP#t1B0y7rEtV=%QizdAD$GiglD46hN zORf#A)au4|Ku_LGJY&ByDU&%Ro0Opf%g0iL=Z7xUb~SU__Zf0tp2dcNhv6VDje3na z=e&?++euQaPj_p`W=_G#)30uOveUz{u+zvgo3KK2Be_>%Yx=ZepRlzqsga#5gy?bH_;ifIErI^`frKGvHUa2s$i`Fgc1}hES@;Vh`;t( zfYT)QP(RNFTF27Pt1(<>V1O;~C(99vrY$ zu=dm&U+y1_2p>USblQJyMB>cIB&-IQYTRv^e*o5y?sV$xL)r#jtGn3J$9k%WqIDb^ z&YQAa@$kPTnnS%~(LSU*_zgo_tX!a)k|kY~-v^LI1YPK%^HJm6NL zY4M56VzdxtY6Guy2ftMdYUjxFyv$Uw!#jWO24X9d4EMQq-LHDz(LAQVH+iICB(+&) zn~|bxiO@(HHiIrF*Os!i;o-RHD>eScvbbosF%yn{DQcaWXtk5kH%!NET)f-Rl&gc6 zkYQVKRWZH3S0r(rKp}mJ>+rJ0EQ;xg!^>Ng1hiQXNS>CPb}sBn5`GC6N>mMd8`$>b zI&j7>9eH(qaDNsqHMh0CvK#S%bk9sWmC41oEm?C7Vyofo{2HNFmcqGbKci<)#d9$> zagg*~grO!pGh3(h;tPJDRI=RmaFE#({vO1>kAGY39$98h2sFLiIb8*!2P;(ZHVuq= z%3y=`KFolM#6oiEg|9W2J)Y>+588DEkj{k-(;Y!w4X`AqsB?y!E9Sj*@Gr%rLTvq5 zqXjlczj8QQvF$}U^UF4+uANK)V?8?B-__jFc)Xxv+rlB{L105>*i%ld-;$(8 zcc>3pBWpKv+Md}6AAwR&YCrf-_%gatyG$Y7^_3wL+}C zeCEu1^~Y?YcM#A=rvs+IM}%A|&gT{PG!S$iE_}ac_XJD8{j_w2-nwT7OfhH#SxWq8 zdDU-?bY2uNZSG?hT7}k4tNEuZLe#spRMFJfVkQa5Cm#E$Q$S)9f!TvLTw6Fp3`;*a zf~`@EV}R1ZCqZ3VzYVE_aHpHDCJ9{}ZN=;EjDF(^9=4a_jv6Vy4Wd#TDmaK2x-WS* zWDxli_bi*6U&IzPL7$V=$8&Qp=4z!jBh2Ui9wp-7^4^p-WKuOm1Q>59*NC!#XsEt) z3}zayQN%wt@zI$7&Y#|b(}_c_B}G7rz+ePh$RJ&qI1Y&rhJvsN4^h$|Dh8YX`0$g} z+ii%Y+UDfpnRVbdgr;-uKNV_+x%-$Z z)Qt6HMna5HvNOw_`=8y7!ulVUCKZqiVP7$l*ftMf{noff!+U)Df(}aTml4@L#eDKn zm@+^_wS<7_kd*>HD{j~o{HeHM%~e0ks9&BTSzhqi2EmTv?qm|{`mXf4lT$mE zf+shyY|jFHkDKC#;ZcK6wD3yH-sX;HSzp;G39l;xFrg& zC7Ekqc7@;>Bz*R8OZ3#hM;Vpn;JeVwf1 zL4NIsAYzL`J~V5t3MUUhto(0r2IL#a<9>ZUk~fwO^MG@}QQ^!Jc9NIXP<;HfNo45o zgh+Fg6B3o_w`ee-=nD3`5>muhaCALfaDUm7q&XW5_YqJVm?g*a{zgOF7fvtS@6Goe zbkc&fC)jsCRIi@?G_?pq;v+^d;^9Z0+?Pna%mW z)h`0#Xt4>XxNgxzo7^sS2~o#%!U1}BCA>`BCE*))JT(@p~A3AVp~$CqapR&^4tw$o7L9TYr$W;cA#NL!&PFB_SiO2t!7 z){8<1#z^TDLUr4IWtUo(y((~n`q$_Sr#>I*LOb+#5cEguvu|)hS=T!0*_Hn8V&4uw}c2%L);mr4I%SjjvJD=W+!%DAQw{bQwGUz?r z0dW2tbhP36f`SEYviZq+t1htnXGA~{`rd@YJ=1LIqBj-Zi3m=K54u1{1;|||RJW)7@Y0&<(-|$E5}-3KC2Cz4riqt|M-Y-bdr`w$~(>x z?>prIvO}L3bxRN=6$GjZ>$Pr`yEv;;_gNKLB}L|e6fo*qa>**=-adHB5+SniJt4E_ ztdwOGvcmy&VG=Y_bxhEL*&bOE>L5xfY?=YwZysXQ4{{3N51~e3Yq*Ot{)cc$ck+ku z502Xj<8*p4*u-QU&sL&dmIRq1j1*JV;bp}&jW+G4P|~xV;q-kZRA`}?Z@$8qnw&uWGk1KJE z4GauSEgCQncxsV~U+t@15<{sBE0uG<&TcrvG!sax@yJ^;yTANQv*c6UMlRT|aw=YG zs*r7L^!j$}-xSlOSzIG;&{+-+K^<(Q@!oJe@H~6$>cRM>R)EJ{WF^XF-c-Z20Q{W7 z&{XA%<&ARrO&)$M!kxK5k_l9$$IoNqpNmD(&#B;rl!nIXV9m4C-I;mMNSw)(k%^zW zQaNJC0INcg#@FFJ6 z`>2tWr!9h}Rhb}dR7B0&FasLP@%z#7wlq3@G1RnlYN=-+BCwKO_pBSW)Kl8nsk88O=G*+DMUIa39n~TOv@icf{gACWx;(4R2JVatbvx2 zb!j?9?~q5i!%`~(<@(r{HBK5nHdD|^ObCJaPX1uBvJfj1q!|cugd9*+RNs+w%pr!X zL2AjlwHq6m8K=c+@-_h~qG8znS=Js4J#N-w7`H!3WAji}FTI6jQr7Euz+nM{dqfGT zL)Gsm$rUp!hRn1-hWKW}1YMV=8?K-*4frTDAQ+ouzgFl-$gc zUB!*0*PP{D)PjcWT$)E z56_+4bkUN>ei@+dBoYf>3;i2J;Dmk_RQ(xR{#Jl#g%+RwS;r`v4F2pPqSj2k4*9cz zq%ng3_JhOZ((({kRt;tJ<+c}yoG{rE`TYu_C!T_LX)QyMF$BVz${Ff2S2|bsX6=DZFX=sL!pvxf9NG}H+naE4Mki`Cn37KI%^~S~ z437ibg^=cyLd-=p>xg@=4@c25U6BI&IX#wG;nia`-lc78SrXMpAb1$E8DqtEUc%X= ziiY`tI)clP3u#lzT5Ty3Ea*{2#{WncW1^|^5Pq{Lc7_!dp^#;Eb?KJEkLdLEJshqI z)@&D55A|k7e(XYS3~XJbYx7rJmHn=FJN6rWd)(ocZTUy%$QbG124okpU|W30M^9|J z1!T6AY2g=f1|sGKF6Qh~P#h(N`^#TWUoWzB5_;5X292M>!G3(h1c~&)#5ucqn$-W$ zX8Mi-@AllE{!nxW$65~Rsr#FGG| zhXd?wO?juNBr8ZBmerayN|70+Pb|Oa$dF7^o$Bs;ovFTLDZhxKEGMl;2|g1`m2kAx zO{h{~>k8bItf|wQ<#Jmz9aml|GaQfh<_xfXgalh8I&P}!dxJWP(hsY%>doRl4iu1atxvPph_;V#%2geI%CV-^hrX>-%68@XDR2uBw)pnCs&|T<*#?Y=s1m?Dcd%luy=nAHG{J~=HFhDlaZIu+ z>$9#)?ws**+xYni9q1|IM-aGy?EX*nX_m#OQjg-~m}AikqtG!&azafYg=M6bJ4Qp2 z*x82dDWr%Khf6y}=!1D}?_V0@_(hV^8AX;RPB4amM?7T7{Z(^3Q>G-^<{(4NDCq7)V@Vs$tk+Uu`lh zA#tk!q_G4eEM->fkqdO%hH;$s#!%`Yr#<-{H*pJ1IF(W3i%YYH#7i&K36Br*z|Af6%6By8%+lRs&3lRWW0i792vG&s9W~F1SlEo% za%1>qVASEY=+5y|Vo9m_$Mf#iJHosP0Xl2y-^uut1&X`(hNY-*unLIWZ8V}*HSfy; zUuD^~VWIhLK?3NpX-XnI3zKofgehY#9Ov>Ac6DASk6`lN@kze2W0uim( z>&=heG_ceURkDnJYIr+c7+L$vb(6bZVy{qS_#hL%B5v0oVhv@*Nd#}{J^6c$3a7;E z0B12QE3Q?3S1>Iu)mm%CjkE_-y0=OBNvwU*hv-xLr5mo?XY}V`pWnG!zh5mIwD%>6 zWg|a|EEGf_Xn%@iwxK6k5??Q&m`!r>gG!;!caiGO#oV9BwefpiM7XB2r99 zYXe#!R>X{(8mA|<0Ouu0Q`YFap-uYz9@iBJZn53LoAb-0C$uDk*cc3;$4=4+kaVk| zcL|aMLc3g~x-g#)&b&^X!opWhZh&*17`?}>r`KWZb6%6#u7c^UYE;n*ZS$t9x%+_! zPr?d#>$Od{pLGbLFb>izNAp-a#}@sn=hazE+VkW+G0YFOIo$&5k?!Bkvqs5^7vr>2 zbFbmw)FZ{KP(f_dqgE!H2nfXCb9F$GzrXG%WQzh44mZeOl72H!>N;e`>oZv>dXOPovNw8@~n-L^jmE*$t5>O@Nk$CIY*o05iE31on2xX2V z;_>EX6s%!-ZG$39&1X9)hgbSKeR)bJb;=xai-^55pNBSnn1atkTjA%S?LuN-`jU2` zzoIM40bJ@ZNL?Q&o%p{FZM&66S0>jCRSl~%a-pRq)>%r#8j@GN$g_9(R`$(j4CuvV zOLBH-Hdh)xD!Z$qOUv)NECHmtV3RiAJjT zIQ2PF0um$eqnt#>v#}Z~5LbAR*=-==eP>{IdkCKLNe2*#xoI<*W|4p zc8~R)U71;fh-y~wHMcSx_`5!$5IHyb7h4B6V5bziu$O-yu^D+Ry|FrX8TD3p?=rf> z!`+mPZSrJYPf8tcZd2Vr6I6BRMT>oi?HaQ~1jjArgMiHVVGcQWPih+ISmLk6v?fAb zThuQ0bfSaa65nziF9p38BHIL};MbeWE(%6GFF;H0mh2p5zjfRebcJEp^rH@Zn9eff z-I`HsBNF;;x?n6tKNsVH^95xO`6Ku%^*NrE%WdH7BQrcN^YL&zJ{vJ(yt;dFzS6&1 zt3M2NdKh zs+nNDO7X&6A*LV&#M^H4JI;GW#jc%|wyQ1SClt;Y8wM|!2k1FsMGoTKM`C}Z@o_m1 z%hV9QYRD^*ygnsoe%W^4OXZV0hO6m-uDV(hNptb?hSU9?>&8gr(*AMyxMK`BfY^@2 zD=t^;XId&{dE0xSiv#4xD90(hMsets7``!-U@{32!}em=ws!CK<-bGB^Lk;s*r^ot z`9;c*jQQb(SxB5h-w3{xO~7G2b{_5$T#B7Y_o!id7N5!1D_v?H%R2Qpi$Q{mK)xC$ z-=&Z7pzRu|wRaaHi~VLD0HKYpNGKR;vcfH0x$S0B0r8v- z_Q{?@bkMqx%yH1nhYDvrpb4>|SnU5zT8(&Fvzt^qM~@Rhf0!!-Td?i+aPd{00w>>x z@rrwPjabHLMm3~4U z|D#9f2o7zg_C<&Z1I1))SB3u>bPCRN_w6~w*p@OkPBPvR&jWS8{cv>tiYlAK|RrwSE`ojghEN- z@Z4LSSGF#Y0R2j9D8P%TGpeY&HYi9Og0!rz4nW)sE8tu$D^cxLz+dXFi|dA7jJN8w zq${C0jI-sh4nle%97QeB5Y96CZ2A|DcxqJFY}rUCMXd*==^0&otBF+EAqJwYl!day ztXqSU^PYMAv&yT3ATt2YF=w?{ECo#0dnev!G+iJR47|SfqDovp{S1542^f~fkVMXp z3r%{**JRP#q^q1J95Za#XNUFZt#v>3^5X+UUJ3*h6##&Q1b9Kw2m`)6)suh#03{Fr z01^NIP?Hg`x0f-nwJih)~Q>Vq_| z#WkI6jij$T)%WED4QL62u>|f4?jkii#91mFCp@$oa$H5XDwonWoY^CEXghaV%DrNX zKwEM+G3_`m_i+ykh$;8 zZ*lx+YTCSqf}%9>sZ!dO+cUaB3^z8SqGcCMuB^t!w&=Cp}?wgK9qzHP6@h{2ngGtvy1 zp}7Hqsd_o)el0}r&7;ZqHK|jSTgoaKj70=5r918biKFf7v$5($^tdq7Owytz`3GrM z$^Z^IiO%xzl4m-R8%3o=5OCla-Dx*b%34gwM2!37EsZ|-EJ$OzAE?Xglm44=i$7qB z_>x2NalTY&tLpz8jIxiGib938*z{vn!xQTy$bCrvdUo|Oa2zzyE^eh*JriB7wj}vs z626^5`9hV4Xuf57w$%NyP+o(gavGsGL-FQv%=r!qm(628N*cDoRwIWI9mk8zL-14- z;QekLGQeAkHf0NajlW%F*%5LOF>>uJtZ>praF|@x$3HnVW9`@mX*#!X{oB%>x!Z2+ z`Btxv_c^l>g>~qP*>fsLs=-V8yw6ILc2fgQGbq-l!$%X5JE(F@YDgdn42TaPF9ie) z0Q}FYGFJzP5d#4LLZ2%O@pD!E=lG8mW?*CeS8GrAWPzmLyJ+>W0DvM90D$oyri!1K z0!~gQ&Q96_))r>AHYT>tVvZKZwDz`Ue@7YS{8}pl2LSMYUReKu!Ug|7DE9W&7Dfin z7IwB0Ms~J;$MO1P6Fr9uoBGLQloSB?y!*>&#{M^svW2yYleVa}g}sowk+sR6r_u(F zW+wjxh$mod7)SsB*nXlB{{;>Jh~xYJ0m_&dTe#T#6JlZi6xGS6o0^}F{U=2Yga03* zl8u42^*;gLU=j~pBLe^uC;-5x+kY7Wc7Fr>^RZbN{c-re`2DYLf9)X2jr}AT@p<9@ z1rY#f{qetI{v*ROWE$ZL?TN5K^W*IwMJ23+r6Ix^I z|CnX=ks5-=Ueme2(Vx>67!rW?7yD1I%K?CYTZ%e<+JCciwE8;+Ls*7D*013O!SPRH zQQ*H}_;7*%l*|nr?S<88g)JOE$uJ2sF#Hq7m(|p<#8+TIMJ3+fFz&!X{|V#sN9nI~ z{SS}+3my}vrcYlIAOJA`;Y%k7#J@5A_96T+TWO>gRhm00BN%(qG1y9L&G1|I8`_Q9Bn~ zWC06>fj;%@+$SN|`-KQKVHTuH!!0s#Qr?)A>9ciJgTZYAwdXh!j6awC>T0Q!ltswgA^d9 zQf=clE(xIG28tOJM{yk&Mjc1cQ4|~z9mg33ad&hU$8pAG7!BX=f9`u#)twNW?W?5U zJ@?#u&pr3tbI)DheNUaf$qPKs%kcNuW1ja3T>UoMbN`Q7f``UGHROG)|0~Ns(RapI zmOtwSmoz7?+!jB7+xah?xbXZdu86OmxZvW6ZP#2eamf`ECq4a{6EBP}x_D}Euy9a9 z`WYvC-Wh#?_tBf{XQsJ*&-0fT`--0TXwLIOhdpj_-t#7aCvZJ)p~1f6TL|%QzpaFW z*DvrkzCuy;zw0Jmq4@oDH19oA0CYbgLCpVc%zFdiK3vUvOXr8}&p+XL#%U5KkN>ou z_)}M3eBIUfPx=qaNSKv1;X926dh67-=C%t#7;o@s1^pdqdVU+JuBmMoUmg=tyn68L zWYEh2XwN%A!M(o;$(7$}{P|wiTl1ofH@iFV`V8xNyFcZ7yFQ)z66AiINBwBA=N0@F zo;SOpO|4}7XlK6{Mp>%Tk6tEFwdzN&64>9xQr}^1ncq^H+7$r=JnyjLHnP65IR?q? zeqi(z2V$Ap3J?Z>Kua9L01)Ki5C(vtm=0mU0|}dsx1lZeU zUH}X68W0bU6kW9VP<)j`pOyGTvz)0fAI=z2Xesx+(Q?`5S^a)_L-5+6ngnX7=ggs$?)IlA?-A0d=*PK;a-p8+nHiJvSd8=opC-oUe3>qE(W z?-Z|grALbpe5*HgpM%TD8!@Y|DETc_c1ubCXHuv5Nn$0uEO*)F%cH}A)kv!ZSR*xn zwB$_HD)`G@nuqmAw*clo~YG-CGXl!PQVl4A#6SqlL zAsmb+XmiJACK9i?V>2}GOzj+V{HXzdR{rWNlFig!Gb5+5sA67=qCysC(do>L9yPCs zjNT}w`AHlbtbh&@;|>yoE4+K&ccSs;$S=06nny!0LSaJ_Y~j0-IrE{jRTw;E2{()U4O));aH+-d%0+u z-FqjT(n*wD?8&}bCR&*D!a^94f7m{O)M11{3fm_N^drymH}>M3~CCJW*>@K6^G zc}hXCGEiTb%imJ)!%RdihWYBIfqd?UOV<8F?FvV?0ZXDEKUD;)veuMZ?JV%N;pRH! zZd~BEu;H1>!K4ss!1c65vb3oqqAoSv2BzagR7$!2nLf4TH<`?&etmSjJZ9%fNO3nnw;6ZO6% zdJ+e9G}XbCxXgMP00Qf0I+gdvQ2M-Nt3k@_-Fj?@R_D(qG6lbuY znMT2!8!pMMF6EX*&w}|~H_@nO6(}9B;JjtB+jJm_zxF4FbBvuk*yGt$b{5eZbU9nf zjvu||aGu3AOH0|s=br3SFZ5sDiG36T^wb6G*E?|C)C(2+=+_gv{vg9y|GZ`l^oFC~ z4Z4&y%+a?fN}r38!~jk-ip zi@Qt3-Sy*pqZ+)F1OvNE11rmeyGw&}l3DlxN<6f?G_e!e_zC`y2p zJW#Vj89qW4>-6!b_>q#tTX{qQxDMt5VHhyf)pyX3Wom^=?WnYqXd6c3LCO1c@@LqM zy!)}&4d15;Ua0gJ@tE{SYQbQIA=x;VSY|c47<4h`B4=^~k1QxX94z8*HOB5XT3Y{Q*=BSYKlo(j1oW9D2Drg09)6l{=lj=x>oU_ zo7UF?_8!3=w&(L!^_h+WRnZgZRbpQ*i1Mgz%;GqV-L?Fh6u5}iW^7`I#%CbmhvEJygem}mRph7+8$1fESHZo!L z+}ff}t)#Vct>4;#=vyoqQ2A}1@ykdM#6R-Uw8sto_I^YEPNAl2@57=|7p3OQ#YJGu zXehTKh%p)U!61&PxN@fXagvn7Qdr8w9|0_d`S|_j_QxMIx10@2+4vQZaU;JY{-RRO z)t?`ha`7ucmh(X_!T^Nj{!;&FKrt-p+ zHkx&$N;e$D*tzYdZ$EA#Sn@4)oEOex>IMd|zNESdJPlyNJ*?WO))rIg9{H2=C$;6bKA_z zT|a1T=2Z?>=M=xj!Pb7RbFj6O?G9F%<5vonkay#AZL~>#2XyoMJt~VNI>X0et}(<~ z-lL$yYW!O{NgMr65B%L8`1=mFynomO|JcFC$L|D-k3UZM2-NR-%iv?!bM)OaI*CEI z#k}2OYRr-Gjv?;2@hobvD`6CaoDF8EIgNzF$)L(iJcm10?;G7*Y2Fri;b4D0#v;}G zmH9hGGFY?FVTq>2SQ;kw-eCfF-Q%j6@ZCqztS~LXBmAv}Gv0{Dkl45<)(qg?-Db@$w&^Z;9 z$*V`TCBAYtR}ORK;nMK3bwQ;ZW+v&0B}mic>K?xoHjhApg}R?9Flbo61STCpMh&IB z$-dm*U&@V-Z@Cb&kV&9ou3RpatLL7~6wJH3=dV;=w(-yK=b|@ZzRLrpLTO;S%xr4N zCgvIz%o1GcFAbFjr|GN)rZ+|J7OM+8xUuO?rG?`QFSG&Mmao69H=s(;vVDe(60)xp zi$!d-n#mP(&Vv|W82P?zKE>G2k&DTlyHBUXh!Yu93q~5}y+oYnGhJ}FPWgozL1#VSpf zQnTEXUweN#lU=&@Q`Ua|giLD%GurPFXl)ZyrZr~zT6!%RRT(GRW*C139;W9s(Oji@ zSJEgk>8??}*C?r-XKlUjz`e?s+jT!`KTsL0ADff|>+DpxQ!eMn4Bx1@9b5cu=8@M6 z(_h^**q>W_cbIS92M214cPis$e*EuP9IesCze$1L3OFx%9})cc-|z(XjNh*miutQF z=C1`n<2xzhTPg5u0V$0~@C31*T^bLiF&`E{(^`}F&Qs&&=g&NoO1JfnzoC@@IOos>cuer8h| z`0Y-hP=;@Q7((r%@%l68rtuz9ygyYALK%K$It_eSfge$zP==qOBXmXnPA5<(!_Pb? z4SYm_A5}`B3_tVSH1NBfltLMP=DalUd!0a`4Bz~i7(WIt3*Q^%OcY-0dzVHZ7yfu5 zP)GfKu|X?X1ugZbxQ#E_7~Lh@iNZD6Ru9`}2#hdth4xboTny;XVhf1z{S2%4Z-xuM zSyAL84OmNd++V5~pMY#UMCabcf4+lXXn4_j za22`~Jx@GX`k3R-?h|J8VfwfIsS6a;juE#xycI>xKCVcX`pm9Z|P#^bODrXq~1@W)RkPU+k z#u`l33t@GW_Kg)De+K{Bzqal=)b7MPVJ|)bsrap932#)Ld(GNDR*JsD%7;JFRzOn5 z16BNLTRA&^0`Fk>S=r&ILF13fBff`6A>8(H>}(i)7EkkYJhrntrwXH8x1J$aM+6K2 zAqEv7Jz#m$+#sS(7+(_2(Cjs;vf>PkXyeg5p*)8>4~uB>K}ISDlL0b26(03VqZ~k# zg?+&c^;(F&pbU!Jm<}b|i>wYQt;>0soaIZhnn;Lm6mcK79dqlxo7UmJ(%tu8N_W~m^AmRe`E}Fv z=J&+up1jZegx!CB-E_VAJ#o6z_nDut`_HeNt~bBE(xEtKLCZACfV7G$s^VWK%C{Vk z-;(i*@27SW@XG>CmD^7t$ZyF|nm;~3CTRr?_9PMir61jl)+NLiK}>sKEoqOo9igMP zEw3MAg4k-s6o!6`2?}ecW00(|F?S7Rg=OocbFW9|4wlaS*N6v&(6+gJl4Cx+`q7TQ zzb8av6DvGm1-5KQ0b$l)+DXEeAN`d$+4efxNw5<-zOyyAB9rZozq|U_tr34KwUdi@ zOnxLQL|@^N$ZVfNjdnx40b`ahx(#3S0BIVLZypyAeHGLITR9KnUc!RN*Kp&n^QgZz zN!n637X3A-#sG4Z&*f`59C;_@ch%O z$e)zeu`K>9JJt=0WG|`_>WC)v6zm(sn!K}@jX|~z7$OyNmrh%!ZEV$_(aV;h=5S&p zdpMb|m=$AxE*H|yMxO0yQ`0mI6%T8LYRB5Gk_M#zoLzk>g3}LsO1*^9msBX#14UDB zf-+&nn&wsGMsrDk04&A{u-1< zKQm7^)VNSbQMS|ZW?YYcR?=pix!wyYE0`cJ$i$1_GyYq~v%Z5PG)%o-;zKjKdtZli z+GB7v{ee&S-`lJP=eHlt58jF#Y0~r^YGXE?4&#`~WW1a~eY{L*G{^2iviIm3B-7WB z!wSx`6wk0%;c!AX_8263{iFD!JLtj{LZ<7V+vg4$BeqPLmI^Q0Qm8z6!n7MsPPCf{rGMLJk9rQxD|iSB7a7> zkTs3o{##?AZvXvD8Jy=yxvc+|HyJHiyyCXs_w?UFU9EAI+lOGl;MJ|3-a&4%**w-j?$`8L{DoI30PonQBq_#F_5jx3e8m?(bpM?BjX+rKb3Z2zlV8Xu}rX#N|I_P_H; z>rOggb=Ok51%0h6VbM0G7x-N`{uP1jm-%6hC^1n8m2+-N=e^JgtnG@q#zlVgYg|A2 zjh-#>9siaG%5j+AGR9jfZ5aQDf*$3efxnfnH{d@N$4wp-J^me!wV%OGD;HM6s*IGC zC}(ss@$UuG$8fyV^0fF5`7L7#^Uz_WcDvs)8QU}7L%P5==9@4S#*g9mBTmCgP@3~# z2@^Rfm5Um|b{I1nDd?z#Z+r)_kDtBOwM+aU3V{8VDlpW1At9+_6OHQMG2`@vk+|PLlcs7UDJ63kq1f0Zm|nv9 zGI3E}hJqdG>ukj-iJ!qyVdqT@>^m_S>1gjY@Sfd~mr5UF?+Z56lW&HpEqi4=DESgc zE0q$n+d^F8krbtqdhOr3D8|2AoB9@cOq$NAPOJ_s4_B|!@_5)XK~bLO1QEt%FkQvw z$gT7~@0f5}WXfJyJ?iHpOfzCr*>m}r;i_?!=vPM~tB<4K=y0(1P4%gL=QZf}_Ymxl zdvv>-`tv;%R=d}4sc{GUPzAMa;pf)BQb>>Xl|st1j}#i4t93AQ?CN{qJssIjA=|)g zK_Z0El$&PcB;4UToZoUx<#SHuL)Qu%@xyJ|E%4n!*$p#HE(&H(8BiCRjIax{LK%Km zYEnB6Lnljvp_6H9IG8MMTNg0xWgMYb3RHl7tg9RZcE9T?WVypwrU(Xrc##nI zJ2#k$2oZ)snVd=Vu!UPkp|<0?rI!hf+emsH7b5J z1nC^<5bBe07=7xCiMIE=T-g23BfIJDLtWDO{1c~BLH5p1*!}0%P1l>>6Q`2^_s&n) z{pZ(B*PGv7>E?_XG$oY;dMXMztG_rJceUhQjj-YjGU*n=_zpUZ$yJHRM*4HdZ`a66 zUr}eIt%*k=NTwS{u`(xpb1QST6Pz+n=4ia8)fy(!fLT>4)Hoh37rkvLMJB4@NI_l( zr=}nVfS?0%2m_AuTQ`F6Tf2B}zDy~0Dgv%Ba&Jgn#jBmA0rsKB)M}p1g}kg&dwu8F zozcp)m6XwmQfhQ!6sO?rNhHz1z@NKZ0?TV%-Q^Wnj_VF^IR=*RI))sg8Q9Z~6rLAc zL-*`!czv}1BTDD`O@D`CM$8xr{tj_q;Q9Uzv5~-*;ZB6=n+Z8zeM;7Q2KBavdW#tF z7q%UX6&Ty)yVFuG`)+OCimUdF>Q$ z2=;(|Z^w))v(7DE_TT0?199VR|2)Su8f4$g)xLN-Z>!@;4O7BT8m7th0(i7~Zr!Bv zpBtYzn@sa2$!mXlfKo|BT}5Cm92sjrL!_xlrx%g8{K<}=xofb>YHwR8 z?EY`oB|+~zmeK(KuaSU)0}r&ffm~M3B575yU3|L>$`Cs^hJS zA4KOU%(aipsmFC{uYtwMM8DO!%$c_lF&yrTF@1%}jX_iCif;Ip=bAy0+HqKibu&&kTL(scGG2?EH|;vjRJj+dPFW z(C7@6fZ{wAx4BiArwJ3pXX4y&$*wbH8_xn}yuH|ugk{6hoLidDVj%>3#s*Cqf9=Bz zm>Z5$fEP$tU@iET(5D6zfC7ebM1S*q!5uh3^P_lRx8_aNnK^RwOYr zRF2x8Y?^BeOT8sWINPCqcsclnY+Rv^-E~EdpG}e7{K7D-W&B9##oGqlClUWa67?Kx zj@KJ2evCd9ip`^V4lpIa1Qzn~F+2x*>$g9(*9UqF*QIrr_3mJHbU3twZQn;5<6}vt zvK5*XK->M-(;|wY1x6b|u_g46QrqK!x91j56}OFNQm>0WkgtM0a~_t7Mo*Pv!?%s- zq!Y?sC{vZnW|w*~o!~?}49r(J7Pgc#V*M_{ZKb?GT1w%z5=%ZhL8{nmANC`)8h4(o zlx?1kEX&LyC0aJ-3%94o3i{W+x~C;Ns^wy(JWyZmNCeHxl$I4dX-jD^MjJRYLSCFd zEfv>(i>loURj1y~Eva57q;$}&$x`qV(1i zK2jJdHlGSv-g;0Roz7VQ5(0fYq*%`SjzL!X6fDu(k(H@_4%WmcQ}TrPK0=Bk<@`vw ze*`hxS+^rU15?dQS(em!Tt_f|Cf<(c>|W2adps_3@3Z*}g5z_0;>4SKJ??Xh zUe_D)M~TOBe?xDyH}*z*b8pC7dp)-%9wYGf-jH|nhWv5jF?QZ*o-zl{Qa^15){+d}$~? zTjA-8DjQz>`^O&3qtN9w1&_W~?;MqyClh6kK34|T4-)8DOgQE3#8iEq%Q(l{8As?% zjj2d;`+aMwG6ZU}WmJ{}VDYJBauj{MS1LOA6@oK5mc|J(Mr3y0jaH&@sGSe0KTpM( zc1B5u$Lb}HIS=`E0_e8RnXN%A(chN_F(!w*_zXMx$_pyxg~VS_TIgiEyR;B%vJe}v zz~V0;e)8IhJJ2b~>0oSuW9%?nM2De{yHOmS77`hR37e-$np>uYzuB zgpTP{wO&T?r{SiZ6$9SF;U6NaA@fK5;15aVRL|aCQ!dA5mO!C?MrvW0%8^rr`qShueDoh0xQ_kB(>V z?yAgzRyz)~iilp$Jh^Q`U!k``+a_QKngEtME*4ou`@zgzZ&#{Nw!UhfhngeWnhZfwqgb?711eN&{7#)L4%eG=}H>3qy|nG zf|g3$wqge@3E!1HXi3m*6FURQomOm0(aNB1Y``G(vZPk8?{aOcmdk^*> zJJ@&jU?1yXrCKS4QZ}V~M-O&o2m5ZYYQyCAl35#3J}@;6(0 z(vNT4a^x5LbeMS0BA-PLZRSg!m#y%;mz=nng>Q*lZ}FX+ryO;nmiWs8ui=j>v9s&1 z#Qi>h>sbzfR({3xv)<9?wx7%~=3#gFK>H~j`0n-@!0TCJ??m0S|ENEO^uDOx-9vSQ zqxu&;QG2QGBkJp2)HG|c+&;a-<%S;Gj^k>PHyyqFo1;vuU`1eT08b;p&kDB;oW(Y4Xpf!2*(CdZaY?3u&-`y@MGPo4uFo?7g5Q-o$PM z*ClnY;;JA5k|^qt(yYFih6|V26K zot0e2yr7i%*)H=s3()Cn7PV;DPAa{8M4 zAd>Vo?>D2XzUF?i*U$f7&oAj~lofrA>Z@&)7MLK~CWFA#&Z%5rD%Q601ud1$sZ!8V z;o4Thprz8eA_gs0u&d>urJ}a2YUxw%wBkKMpQ8FpdxVEOwqI43V!J)fCws8nK1Irr z#_jegf8K-b_9>qRoAxRHguENBPmxmkJMOWkm3)U)>W;q@#)RfuF?}nb-x3+Wr7T>Z zV(G1|x<17iHG%mis-#bm)aLXlN;giQ(oH`x3s+kjXIIz{R6R}d{_G}T)f4a1jsiQQ zkeD2oQaT!9azdxAZW8Xdgr0A5e%>)TQbb+pvY1&B>i{2-hGe3T$;n1{$r;K-pD;HY zeahT0`ZO*Al+HdKPW4ME!~=Acj!X~_2{u|moEK~agLt7}BO1iRf{ieH;)0DhMvm6t zRy+*=@#Pd@0EoXz5e9(xN{TQ5!~-e901#hI5e8r@9t5HFyn@EO@&qw!dTt-#WXg4{ zbi>7BX|6C(A7k;J1v#ykeH<|a_GUSiQha0yA*{|6CcndU#NSi7wKE+VspX_^ZryCa zJ9wR&hn&(wc&B1(!`~QERu0qQie<$D2hFq!T4*bhlep*xoN>tZ0r2xzod4zU?iD}# zo8h}xJmp;zcQ|2X713bDZ+?C4h83Ux+zA_2{Plwm9@ixr*!^;`s05BmX2qB8`sr~i zb}TvRZiBk4WmX)&?T+JCeEJigIBvy7Z@RCC%DzKHG~Mb zE^-^{kM5PekAIcG`lvrXv86E#@*ADu;P`h5u`^y-ZwGm8Ag>^^ZX%1M?QNd!V|GLH z+iAL*RYZ_EcXNRyRvR=9_xY_o8Jh338yn&E8Asu@;S}D`d2I}cw}3a;M7Rcm*_;he zSts-D{=|(c^XQgFoeMFdS&BUDF?)U!KsLDQ-_a2(^$?enxzhh$#TeVtSeikD6@MrT za4LY!|NQa)Ov{WLV>;+nIr+ zvVpNb+?TaPLoTg*PH!TXNGVh_2$kcW7AmhoMUqfC?rEWh&AL&bUd6PTEX~r%+jqIR zjFpuQw84s~%TQS38mx%9jD$7j8PrJjL)p9&J_iD}`>B;N0K^YcgaNXfr%Ofn zrFOIZkeYNR`m$6m+y0JxY~wy`Znpi1xncXe=H}YpGdCZ7MbV=Nd7|{9dx25ii*9^B zQ5^A1OT-+-OiKhE)l5r79py~?SBh`cGc7UWILfrdka1<}vKf!HFz*EELrVpS&m~!7 zY2wjdMtlwptP($+XZ$t%92>ESTHB^a6Y0h#W?BN`mvS_eEs^y}94&PxAp*;+EscmxbI{#%yhhubf-}OP2%D)fNP#cEWO>=I6RC`g(9)uO)Tz+_zJ=J-h;2P zIEh1g*V@#mFgajT(PTKPqTuT7#ryFill%^ z*+1;JRGp0h@B-p#E4ZrOa024z7)~l+H~}#)&)Fe{U*WN#y8wn8%xyE{<*jYG((zxX z;R4d|McwekTm&!q`?A`VCEoc@S|z4fW3o%mj(;iJNQ4-U;%pv|6aiq zVNc>dmbkx^%j7_=n;ZyA(ogJ0i@FSY5`$(o0+J}2*`x))8oF=+^TQc;{3Db*GaGrj zGn*eOD4p5J)1BG;NI`WJNTU^bxA~`=H4= zoa3~G%=W{Tx>|=<$Yj$3?@vUAAM>JLD5;xqnO-{3RM3H@ZEhZBnq{MqwrPafD9n2ByMo)84=Y-!_>CRAi~;qR_@gJT+{PgYIxD-ky-Tj5?sK! zAT6a?UGKH-sFsk<@RsG$RYNs`6njhuEB#Ng&+A~N?J4%=4p#b_V!N}a75?aoNms8hP#87cG44)#YK3jf@L{Y3}+^B!z>_WCb9*roYI4vDl*Nc|(h zWH3?>0~2@idyJRcCio=Y6=}T0e{<^Zq?2uQ=>($Z4VA~jBB=%C!-nPwgJTZ%AZ)vAc>;!Ln@->X}Ey-;mD{6x+5cbx-z2c>5d=d=`Me+z*oCBs7{rG(WwQ&7>8Q^ z4BhD5>8|jUUny(C&s{+y%f;vP&3~!b2)M8v|M+Q#hRt*2;aX_RXT3%ow0U210`Fwn zd{8+w8xXO$?fcz~lGq0kTQ8R^3UfE2_pT3Z7nxPrU|vJ`AKUR<8y5Vt(x<}$8^=7D zfZP1E#zVG(C0W0@F!17%=^FpjEXS4448r(4;@sHn}Xa%3*lGQPIxu z;7}VLjPXo{2bM>q8@H@H$49zwYy7lbDqwG6jjij2wZe{{w)Q7ngLw#%?R}_$v>*Kc zTefr!2k$w@uhVOM-5j zv;%9iZ4-CUQbTa9A!teLZIgY_lI*PlXmZUd$w$KowL#Yc{g&FF8%A&iwvE5C-Xp2} zlAfx&f2kIc_GjJxKJ3AE`}wa{5@BDjh&b(5^!_ktfj}cL0%u zv#jX0i&HYPm5z*{l$*yLPb6d(7Uz*sRXZ|fbltx2uI~6k=F{I{CSZr@eP)dES|+q#uui`J51|$n7;2YO>dcc zwWLnz_(Dmw>hDNMD4p?ziZ*wA!A@^7z7Vvxg?1df@x_rc+!|u2t)@c^HKNgVp~e_> zmN(=bTbB$o)V>?J-1q=tY*#A>MjcCS)FJMYQHNtxhSrTb%;ct{4teH}I*z0A+`gs^ zCau>t8CW-Z+QdZQc@vv_t|L39qLaK#Q=|2?-Aepyx)Y{-X5SCSJ%v7GW+mw-$Ev%I zk_`-35n!F{ew}#YwJtE}U?S zar4VuuhLc|?$+m-vcy>7sq*TjAp=0L%is_OSU!i4&nnC3Gy?ZNPcH2K&y#o4v9Hs4 zcj$@JJ$aw`3A_LNy6JlJd*XDb?=wGP_n%)kU2lGSr9-?Cw4`!psz>04nJ3}rMh0_r zQ?}36yXKo(8`RIAxteiD`w*h}GZmKN+cg8H1l9#s#uql9!;)P482PHH?^yZ9b{)?4 zPWwc`&1saOeX@a@1)gHya|E7h;By5&MWEYu)B8OygioDxXHmhx)qu@AG;cdt5qIcm zLz3t%ApP-$?K6buLI#}Xml;V#r$Hh`%m{J15X}*Ij;<6K=^g*^buq1vUUIMdi!LT~ zzwfr_y&d+=^p0-HpLr{inYo2W^lTBIxm6%-Ivkl*(8#R9MrMWfeZRW0(4KBvUNz4dZgt?uA3GuTd|C^yc$11ar{V&sqys!TdIS23+3PvqYhYYA10dB z_FCs0>71jTvqp{+WOO?+jILEyBhia-+?ow*V)o<%#! zE$48OD>3(jFZv|2GG7d!M+fe6Yf{wa1hq^-Lj}3VI#$Rn)x5I~t+)KgxbY>8xGG)t5ZqFNP5mqhaLlCVeC*g8?!fR8} z5fnPsphIu@AkU{0!-f?GfKWeyT48^3-pg>$aP~*&VK32`cc3wsCGgvOVBN!#;&mBI z3cnS&N7TCqHdU2HfsEXi%=FQm%maxJRPvBn`j13yY<};f->GW{Ym(dV!&f zpgoEgkj~a2Z4@w>3G5aF8yTDtG@hIe4p`Y(cT81t^@ANMXEdWWB!eD!D#Oc83zB_D zQ9<_~a4fq{MSZ}puqo^oQrU{Z5u3JLNl&h>)scI{B}d%?bMtx#>o2M!w>$J`3M>Zb z={!2Ey4=sMeNRd8J^eSvE=Dn7OA|}evDny zLtg;Yx6=r37dWo&puD+pm=-xAYjyLrheGUbgd1v=cy{vCQu-d4` zpVmgLH68h8yn8jR|J8=OS36A*`_>k9q)8j*M2L*fSGz;8mkM+}S<>a<%pHOyW3OZ+ zrU78ukSVCM34`8i-{Ne-Iezp^vX~5K4ku#GRkihzeY)38XU$49aeJR7#GmI+{db1H zdVaLFxHeW>QganSpUY@E?Q;c^vBrh!jhS(#Ap#SwWk;hKSrcrL@N(BDN#rISxImJq zOp3wC!HCLDVhALL3SXNECWqX3HIt3cLsux5hODU%3TG;w=7t8iF+qibF&@Qk$m}(^ z15Vb~%&Wgc2C>CgJee05ct{6~2CWH5FFuYd%##8*K zlqY(%TE+EB=2w{HC<&L+^5h~co{ber@|PNAsYdI4JmQzhUoj#wdc%iPiFF3k6?*p`_Gfnq2bsci#A@xVZY4nHjhe)1XeJF3syLW~;sFa;} zFvsPK&qCZQW z^OXVEH@vaG5+uy?>T0NW2A6PN@tN?>A2-iCm08&tTUDc15wAxNgJ_4;?zQj|@NwCj z@gQ+E3l8sP;+^34HU8p@qNh1qdkWvh(j;LQG4=UHT{^7s%5&j?S}X;GIjWf~BqP@1 z>U=vVVJw|MaO=wBGnVj^i*GP)dT)A2ZGY7}`Ygwf?#V!xt^7gOW&K~1Ly}!4$*$XR zCEvFyct@Y?@(R}U>-#G9b7IgJdiiv(34@*nVMrD)B*xh$i(E$*oDI!8VfaeKjt$Yd zxi1k+Ss&oCG1wm<8K&`8QN@1EZqt!+Dw~76W6yVEhW+zP#r;?Kt^eQitFgA$Ondw5 z0{$WX)L*Obt`7&J)3u>l=W{}=dWU;jpHe> z#t>(#Od0_g0OFh!VE_o$#a#>oKx|482BeGYUr&}4Gwo**&Oy>=$qCwL$;mW7ft`qM zktxYGzajW-JorwXvpt(A>x#nP9(YW231@$K#rW-n#_!eRCKw&4Pvqm*0Tg|1Ik&Js zB`l0?Aa*5s7jQm)J>ipo*Lz7rdPl=juaVduwJpZH-nnX9K`bH}BNBfMFzDvUy@NT+ zkwuRn{wRU0GgwABm(lm%tbT?4nV40vus<7Lgae(wBposT{hv(!1fKZW&8w-EX3tnF&S7W4^T+;n`+&eWeSt5)bBgC?M#!SV?3%TJJXS*WM}Ro+gSZw*erY zlOhZN@!S+)00>q>T@nL8Y)KIYfKa|h)Bq4Hm^y?3clq|wxAwVUefw})Te&B#!@^u+ zxRY|~Fr`8R`^cA8Ae1bKUxAz$@X6B?S+j&UBV5^_K;I_uo+JIzS^G~xOm}xS-y-4D zhxj@Jp+1#6QQitpAB&_NEp_dPg^~}DB6)=*mkH0T79Uxhw4sN4+fZiY%*xz%NTS1> zj*FXH#m!p3IRn4Wb2#6F0vW__R}i1*biUj0t>PsU^Ipw_bxHFcmH#ZRuz3ez?eit0 zik5ma5Zobev|A*u@U_^SnH)}#e+-ft&YXz1D4X6wXo?PD0Ep+O2m?USW?c*eKwOd{3;=OyiZGze9R4Hlz6IVZ zh4pU*|Mcqb2cZE!bzd?piywI58b;Sp#0v}s|(IoKHMgYHnZ zb#!^F>Oi{uO=4o^Op}=yXne-F&^w>-z&-@WtvT(Eq2Z!s$PCmE;8Sk^R5LGYhrw9% zZhVvTRQsWQsJ64+W8NVrI=x2Fmr2k!aPh1FxBf23Z>ieNJ_qq%kc(>ig^H^V)Bq4y zqzD5*#3{l65Lc!M13+ArA`AerEkzgrqM0HL0C9DSFaX3gDZ&5{*QN*q(r#L<_D>{t zn&y%83wTe&VQ)O-BF^X};8oxl&$~I9Z+7MaWM8!#JBm40I&Wr`ivOInoydd%j6~R@hN0PPJlB@yT1V~G@n*i?+U}@M& zeVV^R;p8JHdXLJ60Wr^eEGHi0{OFb! z@D}}^$4=SYRv}mhGwS0DFY4e`Dv8KwF=zEIlKxtv>C2<{kq;C+?~8`9?}A_AC>J=K z4(0tv8ee!pG0bgsa7pyPJb}~|MKWindp~t!u_i7U;5EA^ zinZo~LFzBRwSVg$E?B2a+bEN()8vgYluw0+!;bQ)npCmEODV-zs<7^Tw4SYTVFlE|D`(3dSlJs7#92vjEJlD27A$T;Y;ZMJ z#U;C#r#r%v{S2%`JXoc+%W{(~Grv}@bkq0lg8vt&y;)!}cd`bdGNecJ{4E1!DZ~DR zS9tn&BJjGzFPK9LmR8~N=f>B%Tcfgg7Vww4x$$Gxtqm4$8r!^Vx=>$d(D*{YC@9nq zVn$!6FAK(ajs}V_99Up++Z!}cxRvqH_OSLrZgizAlS?@Scmf@q9kSqZT5!z|s~Q#R z;-E-+r;)Q)_H!NMGyHzf>0$|Pu19dqt71RC6agaBvAXj<&pubQOdSOilw2p>Wzw2wGCw&HLj`^!g8`@ zQlt}(Zq|$Zic;NVF~jPbf6%+MY+UvY_hsCfi@vNoX~Ap1irQu%%8SFvv5P*|<_5TD z+a0y&TjtJS^d)C7`gUASsohp>HRHbGeA?uxvtS&`XS>~ai>EC-AGUv?%%WMuT>NM zrEL4p4N+--+T3dUFU;l0LvB<1GY-zQ?@oYHxT$>)aH8Ri<1%Hw{>eAJSC$8di?%|@ zWoYa$NUQ-L3;!&!nerD|2^@4Qfr#aEAZhb%Y+UJ^INa?UYMonaO_xb0D;ha%XEGI1 zH4#&&IyxKLI@J8|3d;d52GLmqEmK#QLqilyT;@_-!scvG zkLr09r+VH5#@cg7fV^JybDl)~yv0uaNG0{_krRiWI#wYx)f=D^b1TbP?h{^4T&mc# zBH3}})mW3^aJXmD`zRM5Z%08Z@m~@(m#UDez3|S`J_q_Tl`#GyK6+*OsLLt% z^sj(^Gs{=gxrVl_gdshdoNQa!(HCh~+>f*?KJ7=VaqK&@)4Lu*5!=ex4=w*_HD%>6 z?w29oRz}fZ0mWb85$*{?eVF|LA->9ERp?lG5I8*?V}pb@pkX%RFaSfsG}0jq0Ks(9 zAq?QuiyNP@?C!B`fvi|D+s9d1VfTNQw43febRoTGe_!dePtP)#7b`#8HW|uRt$Xm< zdpS+=V)Nj1bMw&|a-Hc+dbO`n>h?`AG!!mk9y{z+E74`(hH}+IX?#ODXP>=AW}02n z;UH;~+TJO441AEZKV0huf~2tqNgok}?o?fnoW|?77F0}4x$Zx>M;1+t8&&4Ig<*ej z`|G&*=3k4`*TLyN)>ZHF*8R-Q&9xt)^=|!Ac?^a03eTYE)Q`e7YS7Ph7>hcAkK3P1 zKI*mQroFac-_C$2M0}+og6Yo>vkXP^nJznKGj2ZZuAJ7SnzFx@*lj(4-z-=U;I|0Y z1DN&PO#BVXfA#ydG9|Acog?~>q%>`g?q^&}un1X4iHjPH3f;ct;?mig3F8LuO7uoH z_6L$YmQzV@xI|l-7}84no92$S|2Fae9WGm6&J3#S=)8VkV-xGV`E z-qjyKIF+|JM2IC)Sy<+gC8}krQ+Zx1Se6}IHwKMwku;5w$xe?=yI4s`F*`P`FJ3L> zYs1qCo$-bJ)0@CsL|e$pto@$bi+cdxoA6#KWa1H4wCtMG%Av<6zSBWLt3Q4SMo{-$ zbS_ml5abzvZd%wE<~J4k-Il?_-+2Y3y7z^<8yyCy-ngIDN!#==Nwp>kU4)jM~O2kMjc zjcRP$El4-Ykoa)EnRjVhUKT))@lA`voAvE>T};7x{Zbqk{|K(Ymo|ns4>JC|70B<; zn>bdvMLOng0#Za8OD!UgTb&`sM%Gi3B5-JHT9K83h= zZ5EL+mwV$`{>`}Dj{JdYuQy8bess3YQsLZ`c6W*+8-Ge#-J7O2@YDMX{LKCW?|GcS z7gOZ;bNdVY{Nn^N9WTW9&JRq4!vZK~g%i>|`#1ar7ah9*CMKn;EBF!_e{MSkS2 zeQ_~vOD}gRW!L`L4GhY;kdKm1XOeJzN>ie zBi=q%m-P+|#kL=ZA}bY}25Ux>VHuU5J(?R>!_@3%ZzR(k>QBn0iShSk+`dPC+mj`2 zUYGqH$2|4oZm78vU2XGKu-0b&r^f#0IJMXKm6>hK*k+F8y^onuJ@f|1h`l2lU8$1j z9uW4o?8l{hq+PQOi*2i23`XT7*k`Gy!OW^ducjYGnDP+{+txauuGRnx-#9Kl%G3C z$*DS(X4Ep-7&6|a!c%JX-+zO9UB^CaNsMi;8BAWz?05HwxuB<0 z(ep2T;v!E{>CBzn?%q`Iy-=@_`rHZ0&wP|rfdG4FrVHzO5u;csSYbe)Y39!S>iZoy2 zMv+p4F`}qX$ivKB9yG51G(6~+$i_(MBZY68B5yYH#f^S>C(QDi0q>i1WOQ_l zvDDb&SCguMyxU)Z3^U`;E3YJr1%ASdS;hKM{tj8kO4}X4b+C%=@Q(ks3X>wlQd^w( zJIsVydRxr8EYU5u!8Iq?gqf(?=C;bt-K6B}h$g3hmAQ#~(|k%jQM=e}$*ijwI zaZ})wqirHCrum3h!z8)OpEH<=Yd4Ly=J?>e%h1vYV>@=PKzW1bze(hj;o_uTFQ#Ij zLNXk8tKQ|&_o?2?hO(DOKQMrapb4*~jN+H+?6NbP>ykQj-qc_Qe1l=RQ`KaS>P*_v zs5H>*hKloVx7Ow6tStH1&l&4({3L2iQMKP!CYG(O1#IIai*MPeZIm8Ad?pDm*iw7T z>`Nwk5m;_bY~DnHu4j4654c1TE6~k7ItG><3-OJ_(tdA2-?!17lUk2RXrSM@Nc}Vm z$8*T_B}T=}NkYPCFz)r9h!1x%QijN-RNmT7NYh=H@c+910soH19R7RB{XzUc9v}1h zzbn~9I3Q?@xz0>W3)ZO}rvdUvGDzv}y=Oc+lisr_LHi4+pg-YZLYhBBIoqr?rv4wv z&w8W$q37+opDA9OH9XDRF6aJWpm6DQI5z!)w|9KiP57&udN8BHjP_y{?-gfEn8m$u zmZYg{o@e~6-3cEV__zR*-DdSL-9uVKnc8Om#BBUy*sdJPiwfrZ3BCef@VK5zWd^9? zh4J5m47swVCELhF&^&c5T49oJ@>Y2DaEDAMmqH8wGw`+314D87aRGK7_8%g6r1}ZCy$W3Zu*F#qFb}yvME4PwMpKerr^tbLsGS>^-JLrp#AM~Zi z54tZ6>L0N_%vETA{4cN#_rJh7>TsPd9Adq^!oj8V>s|@}NtyqZc z+dMiw^F3AEp<2pkTFuf{M&J6>-XGh1@+SLw=}NZNPO8v%eL{CbCR5QO{aVpMcDe4J zOwbbt83mn9^fFfjlGdjSq%00{O49Krx*NpxJh z5vg@f(c6LOTl1dIUCc_qI#bGzEl3Ca>69`P-Kx6CMsJma{N5}&eq^r~1!MI-_Mx=} z%N_`CT2=Sz0o`9lj;6lrti2D`Ua>YZ_2M| zuapj^&W?5^uzk_QXOs6z^dyC?wRnl=s3c0k~*9_juSPF4d!;Wj<^dn`6#)832NPGKVk##5Yoe0aS==*_&}+HpiCz zx}3J~t}XkBj951MupDgJ$8a;YdlgLOID~$pMx_|DuabktFEVD~gc-BKXu7fI-k8fy z=c;VOIh*!1;xnu;C(?_G_9k7W`52nieo*WtGN?o!CscPwaQiqAf=E!QjiT9lFaN{z zJo+dUWTOrnNo|zY!q`dHOM`xwk!fxOynYdJ%o_4x1~}Tc9a9PZXLf9^VJW7D#R;cl z$JB(1P6g-NF$&N%Wa%-L$2VlXZCmF(3VRu{p=|%UO2?Y<#$Ia9>W5)=>k*fGvnv)c z4lX1Xuat)gL-d>7EAiPpy?##0wO{Kof`#q@lDxG9`Wa^nKj|IxozxZ{(zpGc&K7E2 zQS)B)Y4a=xZ>Q1>!iedfJ5#d!@#9s3h!Yj{B=QAr2HjKLmFP%OInPM$jelNZT=x!< zoxKVDW7F;r>Lcf?nMOow77Q^u=(GWP)t_}VZ(f;s^U^f&(y@V|&{=A3-mwEIveb5( zsFabh&RV6GSeB52=5@@(taX24t@}IHI*pT<>n|WhZjSHtRjGLnv$^SVjzRid>zqri zbDm>J`P4cWl9Ne=#5&_Lhb;_q){E6zb6Fe0O{_C-iDq(%apoLSPmxxZQ^VYYEcLr$ zRrt2#XQ7jvOiC?u=q$9;t3UEiyg${e)BD!$aC$Y@K1)Qh&(@YVF#chlEqGt{c`s{J zbq4ALr&OBIJ7v0HzA|AwP0O&y4?*0nnc*Z!-7wL;Rc(jlQnkr3C&4 zaP($In41Q|{Axd6a9fII3*7qv=Tp8{seBabc`DS7PNDqhIq)8{GgwFiZ&6?l#CAW* z<6J{>-l}9wdXGYw4>4kmzXprN9LR;EAdeR^r%%>M2JYyD1f@BXBqTlp8!x|Fd{`{L zf_x(ONab42rLTfrKvJ&nQLgKSO}0oynL>Rdti5ukU;K_dcqv)f+uYV!%?fKlougFK z)X;ZG$6W0ZIobAi#m$(_>g?m#n#by>D{CO7ZD&!I#k+iQrSl9*xwDUTI5vU(mI&;e zGT*4*5}lpQA_$8LBE{Jvr13)ZE5e9%*nj#DUaX^YN0K|$EVE~8& zQ-lE^4oVRQfLNI#40scY!Wxy2nK@i1Lo$&a5XnYs<)imJ47c{nB$nObmgCh4MY3z$ zQY4EXL}5x+?8K&cnKMAx4@b!yQ_%x7xAy zhx2C%_RXIK!Jl*CL>r9rIN2Y6E}i4g;As?xgVt&YXHvZ=&NEfp8m};{)7Y>SBy#*b zeoVWK7i<0w71gqj7Emdf!xlOe%&?szwvs54)xM&*eOxgykBU&eR4hsll~cLYsS`!` zgc+;POlJBp#`K*EaB=qv5`o&X>a5g6Ds-4!zCmF5N}jH&+lD9nNskk5c*&5#h-A3Q z$#7aSoSHeFRLu+L!^`|x1(=LqgRpKy#&%dw=i&;%k_!j&_I+fZup)mW{2job+Usim zm|c3u^H)EOtKuM3tRK&9k_Pa(u#*i~&7DIAtm29v12`XengJtRs%QX1_R|gEL(REx z3$0WQ)%B;GZPh&rbNS-+Dmq}(0R|i1IDb?8Y5aHwf1CNcl)oB%uK1$Ql_RgX!z)K# z@rYNByy6tE9C^hrUODoLYrJyg74LZE$g2|Il>_TG7Wg>s{&+7DzMMaHHB62ixb)8F z?<)R8(s<`+hGa9rti#{x~+dmZ%#^1nqTXdKEnNomi;`U3Ve7(3`P?`SJJjF*u^Ve+SJnDyUDzSHyR*9|cuUW7cXDW6`E2m7{~z(P#Kv(8Y#is9=nUZgQEPV57WmTSpsG=} z`E2GOv~>BKT(*4C#M%6|oXd9|C)V-X;*VbBfK8zMv5PiMEa10gqL1J7_~=En%Z$A$ z*noGost@q5sD^5qmu{(CI#tYM*|c031mULJY;SpdV(lYYOS2K<_y(2NG$?ujOt^Mw z;3n5JQ&`oR!m860R>h{UYBz;d#SUgJ8qS=6w-$bHR}-^icTuUf8yp#t%fL6fgxuNQ zl@2xdPLJI2i7sABCA{46ja|Ih5?=23)-GNw>f$@OHazbJiDL!Ho!CvCcY{;_1<9Sb zXHJmHqae8x-|Gp=)qdbg;g~+(@rWaqaKr(Qa>Eg298o!6dZ_mwUWTh5GfPQ>?oiIU ztME$<_~ooSAHRx^U(UKS@hcDfa@HM>Uzy>Tv+hv*$`!wyb<6Q9d;D_NmGFxX{Blq~ zH;uhKQO0e-HSFm5to>XiH@HL3NTEbrTd}H~wR#S?Uzy7n>~P)v-WNI%Nk&Qv&vHx#qJdwI z$v{N#%P|><7=Ae>0};h9$7G<)@yqGR;2QW;gG2_`CNhv4+@WWrP-MW+Pu`t|v!Ndy zuh_CFv;iQ*mmv%QA;t`000?nr2m?S^u`v*?{2;`e#W0{yNp2ASb&58Cc)v*z27vf& ziZB4gf20TlKs=fv3`i&G1pKE0aDSJ$zfau%$KIR3$yHVPk^dC(20bgF6G#USD~h%h3G3p%)t3vS5hfICLV zVI0JOsEj%;v+1~m|Mz>&eXm}1cL150|L6DleSV$PyZ4@Z?z!ild+xp+Fy>>%#HwUU zvXlXkrNl>;5}jE}bgqFA9VeF>f)28{xFCi5GRh5Fkkod%*&f=`#=TkVvLi6Igok?_ z_AJ?#@`Dx8;10;&8Of%+s|mrGb-b{Rs*9KyDt{e4ZNed?vh-QjLU&BvSjE=%UQx7PN@{pcJU~MrYef- zBn1SU(47iqS zm%QPPlRhkZk!FKwfSni(Nr%A`_$>PMIR&e}91Z^7O8!Ja5J|T+Lk@)*aS2hfBrfvW zAXhleCrQBwlWph^K?m!8+)We*fITJ!dmNNQEkWXk4#5(+z#(WN5<$Y`2C#xX7-Z!z zO!^=MtBDJ~g{0&?Nm1|}*zqVW^cyn|xn054Krf(sN8w=An1+y8ap8qO*&J|xZ!p7Q z8$G~*kX4}yGng-d$4Dn+F5||q`{kSPbOt8coXc4}aDTOP8!f>nnbD=%f7*MPycg_9oJ%5!1>v!k7Kr0 zW@d@E_k)1m>Q<)i6)4Uh2J&f$R0~s^6psDy)B!^#z+4U|h1nkeCwS+d5*!MhUeSA} zB+BCGSdEMU!YB=dvFLcLLH>-DaX6~7RA+-rMK)0Cw}CPzF>$Pt)Hsy~jaU;RrEZa! zH8~5SHl;}7#`G6rkkW-n7_k&1*cr1ZQrXC0n~H$#Z9*wVo(?xN3Ykx1gxfRH$Y#xZZmp295|kb*}PoA9^!?m9|3-Oj0;cpVA;6)M%sad89uDwOyujAmD+hv z`ia;{At7->Xb4YiNYK930c>ox5SGSB1vVeMIbh$BE4MQcDb>58!$zraIo!h^$qwcm zFB4Yj>Dz-Hjt3GSM=$}&T8ks7TTa2=Kt4ykI_0~{f!FOx^p%kw2QN+!fCl{-Q5kzg zqXSANs(W=E!jZ8A7IN^W1r7)1+}T4Rr`f|Owl5&wp$DOQn6_55`eag~y=iSRJQ5_}Wk z2ahHNMga=A=LLu8C?~NtDbS;ogee85Z=|4%hbs|i70=TUWz_T6Ak0yTx%#RA&Y6DBvYjM$yFo|rCC~!$dV?&cLGDW;(-9$WFvw!|&u%nM zG5cpnjZ;k4A=rk-D|q~RxhxqX`XXf}=LX+H{7nTat$je#fH`qYH`}#MqKtMtsl|H> zuru1a5%fyAX8z(v(>_!sRGU1z3X;PkPO098J}^8)KOWR8N}KwDM-B?*Ik1>2&#l8Z zLC+n1EgEQST_8zrMI}W(TVK}g+-W3=zu(|DdM;5Fr81Jw1os1X69$u3bu9RM*pJ!^ zEVsP*l`v*;JyNP9y=9>}*q4MP>%vmPBO_hrc@}_of!xXcmm34X#bd zMb&G0LMRF;2qgF?kgc!%bEWAHb(f^Xl%&Lz=E!9&evhgHQs(?N%RKG;v++9@znfse zXgY>-|2XEothb{qSG!a~-Ym-@-pG-G5$o!BVAN>^9{|fTHbCn;1iavz92>ONOzCCq zSM35Gl?Vp&x+&UuIm9;EV?AQsg!l(I8y>O13SkiAWJBVrVMZmySWt3QjKWszs3ZcT zQUuXl8MuJ!`@qqIW926E)Qhb&l{TZabJF&b3JKH|wgEclO zYf=Yn?q(FIxD9qIhAZSSf5ijmt9)+|yPJlx0;~><^mYqDOO69p2Sl;!CwPN{g6Iwv z1W^(;Qi*WcAPY#*dozOtpl6n=)2)ap0S7Z;RB%?KrOBbviq9f)#|`?d1)J3h<{dn1 z1!VmW$lBIc1ic9nVY_kbXy4ZA7OH4G)va?y226}U>PK$EhAmQJl#1h+bd-G+uDH6)6Q_Dr@Zo3gYE zN!daBTq|FyysJ#_0qrd}q1(qAMV1?%> z8s)|&8p|6v$SM<0gmU_TV44OVtV7JTTW600I7Ao3?FkOUchHr=bgc;w4+og#llx7t zfq4sbrZjgf!j}QeIaER0XGJZZBaz}gUi!YzQwS#+rp;vQV#gK^`y>KrO`^$@jX_YQa>GBtMXWZPgKmGN|LEGDG6J4A92OMLOK@ zS#V%(Kc-n)dq38P#qES=npB+$R7sUskdS9b0I@W0AmnDJndiVWd^Upa{XEop5eUR0 zIAT8ZCIaGVKNH}&41ne4wN98p<|^0~Is(u> zD~=_TJ}%-IC%#!@iTN15yM-{$08OAu+3wz)T z=QcQHy&tn9l!DgCEZ1Vbw*XkP4qiXY7gbZo;*lu2byk9WWcj zH!6yY;QLT4u{?4%MQY{2w-3Jghg*yXz}pku?<@gvr?4QKJB7F6p%~B`!UnwtEwwA0 zo?s=24dT24>jXQHn&Aq>EferTKda+YWcRV{T#oJlt~drBR&|EbP7jtd@m7QYxLcWx zDVI1`ly*)(pDBwiXaVpac|op%^XLcVdoEc}FVVM2xWgB~bMF_7zRiPxfIwJsNnnBm zAX)+)ExM|292;?c4$0FNKGM24IJHiLN!ftb)tzvNA`q}E)C8~w3P(&R-1&^xC|pcw z_?{L@5sw!TH`2G;sBcGuI`mBfGL@=t7s5t;L$93r_7`wQ`bH@{uD)pkUdWiBZ{ouB zT6D%j+1cV^B|&|Y+L8E1-^k~cklA~{XQ_Sm`S4j8KVF5&BHSmH3U?ter=>^4>4m%D zM#B+6MQl0yKWLY8nQ$fCLwSSqBH(Z?+bga4iaXRLP`Kd&ZSB5T z&-jtA=Yy~JlCOgD#mVzS5H`tFuD(v3t}umXHps+ahnHkdS#m?Ng%%YS%0s61}@=bF>;;G2K898PI$V{T7hjKnw26>CT<9!)noz}uA0N9Vv?xa2g> z5wBwqm9DFdE4imej|ZAx(WIUVo&~z7-V%|Vi3xosOzSFatYyrTc*+NSptOe1q+hu~ zr>wyOW`rt>0M6vpy%C2 z6BSxda146nD5-+y?j<;!0xsXivMqR8w!8ClP_93F+0#uuMFL)F$Zs#8C zFHAiEU}kzb&UjqeKDD&px+JR(SKe=;I0pu-_TNJ7#6DzUVcu%vm}3%<4?O9#IXR~4 zd6d%#IvJGdePtX>k%KYeW#I2}Ivd0=c=;(bZ00CA?!a)u6OooeW_kqbidEchJDUog z4iM+~LhNp==e^6(0kH=Q-eol1@Fbi>HCHB^r`R9NHSf_h*C%72X6}Ipr?GIA5LWQd z5KvbeB1KbN?`ks{SeZH*B66o*h_Ccb@d&)g&URd$T_g)B$Y*dxY7ocQ#2#Lb#9&CtmL zJ$rN==zhfeLFh$-&=bWy?5IL&#)mI~4BPjQSP;atnZWT!Q zHMu-q<3MBZVhI1cawTqiCX0(s=)Nd?3BKr?QvZa3tXu$COg)H75wFC_Ah)OHr=(oi zc#PnXv!ZWfyRN`N}3CMZ5GCJ-vTZ)RW)axe=fxR4;VWHlB~`w{4ZCCxxDMa;Z> z;3y1LE#IqlOce2+n?Q4ZZu+H2YcXH#n*J*mAKaVJo;oAElE4nXqu4q6PDBC73?W^S z#rM0GpXd8KiroVicqkVAE_vf{PZ!ynqzjMjX@nUD)^E)fF_}zm? z`^CYHej#;+-|gr9V)za)x5|f)__zDTaq{VR;vHV*6?{4-{OryxXJQ4|&kO&4Zs+RK z)U}X=GxZUCrHra1{d{Ss32FPLDw2$Ld^~qBeF$_8=a~EL)ENmSNc#C1zA45+?C=?^ z+z|F{s*9zWT|L&t`tH<+Aiz5yc{{`vVQ#pKmF_6i0c*Jd+5}nqycp)?EE%|E5R-h^ z63i9R7#fbDI;o!#fvDsQ5eW^CBjVu^BI+x9ux~y^Lc^^<1Opi8Q>x|hIIh(481l20FW6Y@%k)Ss-<}Ou zB9HJoAvz7b4}TS0i&W=QP|d`IR_&`+Y0d6RGblAXHcLyzj%VA@Wj+A}AGD-zCH3u` zReEbwwlA|*-x}FpWF2>h+WFGXbMCZOvA$({%k_{CQ%2GdYp$-sWm9Zr6EN)G4>8*W zwwo21dF!>u>ODefFTtE9)WZ4*^+z-;oP~nr>pt@CD%hHV0hj||=qI|@`|da=O}MM! zscIR%4A$s=q=L1)ruhq{WuHri+hV~^$TOg^)Mhr(wX>%=#+zejdwLCWWRAUT_y#W* zdYs1r0^gJKo9A3HCUnDNkUfo82o}dXF3&JoAES)Imw{w1g>$(XY>nOtrt{6P&6B=^ zD{wfl;$`+@qYmkWCnB5PO?25^?rwafz8SZ1Z*am-S4MLYjMu~KrgZUbe(T? zR^f@=B@;I`!^=J0?#93Kn2=YJ#pRCNFHHBV=;ppS%BApiY{S^7eYaGF?nZQb|Wr!8ns~CW3Y$C?gL~ zg3z(QXNd{xMqx2JxzTufS@gfI1+wPLmdjAJh-hCA7)5)Xn0D|6nle|m9PGC0OmICs zn~L*BqHX{avvt7)(s= zL&g_@BxW3NF*&@2f$6sqk$rSb*DjG9zftMia!(fe#Zlg97GcCZeJ55JYOhMDLGWz! zViNAg+m(jHyAeeun4~z1I8FmAswloh(44s$HWdC4&McMzV12UyJ_)+6Lg|( zgKMxq6TS!L5H?&fmiFvmCfgIf7a)v7kRK3xuJ(C*=6yuQfhL;v%=__mdcxab)a;oL zG-2Tf38JoJF~Ry2c_`+m{~Ewz!7n%s2J{Q*%LAmoL0WViK?jNW1&wE!v4nR3IM@-n zJ_Hx$$s??1M)149OpW<;)a z*tm7yyHElpPlAsE8@)yXZ*2i`t6X-ln7y1}cILtx*#S${&xzPNAsPK(PtwKLgcB(c zo(2z%Fvy`|bTN$-2;U}VfS#h;gU+B44{CPmRTPfdyRzts+F%#m(%4rhFwdL5ernSz zpd2Qsi6!_O;NV^tcc|ifO~o9+s|W3@JF@ixcHjA#@M+?T*eExtNVY<6L?H~-@Drdq z=wt`i8vqQ&Qzh~9L!Ex%fcr_H@ugdIXZ?H;`}}g@$%rSaGm*L0r@?V*Fq^uKje=ak z$il!wEi_eK#jl>csv!eE4Pno)G!dVsoBv0iMy@fiEZvEKtovTbG6nZ% z=pJ@L)^$3Q3E*c9(($H({G4&W%mn(paeqNfJGjfZk2Fo#7wHDk0PgAY@P-Rxx|=|@ zL0ZpYrw!`4^}s-zNN!lqz1raZts%&^l3~Bp49j(|&q!Fto;w6i{@sP(7j7@O)y?Pk z?c9D5hGf%U79w`=cZS$K#(gi%m=7$)HTfVrg;YeJMUe$5)ROvU7Clmf^biWc6Df_fz{;7PB|`*_*Q1WRa@+YuIhW z3k2E9czd=wyzai)mypsi)sbtz0S4#j!b@q~`@2HC@Uof9=LdwMpT3@l0mm^!#tZDM zYeC|Er`j`;uGaGP4#)$x;d~wU<)4QOq$!f*w~Xrp8*>2i0knMMD%$dm*%)hp6JlQ9 zdE?)1Tpa^Tjh7|tuS(conXtb+VSi1+{@U1Hec`nSmye@_e4D{j*y`bUB zSi}1OD`3UEwh8=qEXye7>zlw$;9oJXYXaYZ{8h|1#K7vwigrC9Qg0cJUGAtD22Ms0eI zhg!TGz8~OX*)Img zWSQ}O1zhFrWz3h!%*v`HKW?AI+hB+|>a4q5xiLIMoM0Lzw_{~-ph1fMK%=Q#GYnrm z#6QGrV?7h{PUF{w%pS$ z2Mv0;Atl8SrH+*b{tE~ZX)0Mvx~beVRDLBr$~j66uf!?7_7yP(;*8k7A_h`w>5D8Ce~I6}{Jb50AGBnLU#V8k+fl^Kf};Jo0gZzE`7vhd zb}w#VVhQq4gf^d(!t#IY#5~*D_9%tNjKQxLT}3~?4mBG(*m=J&fqT|O>MLicQvir= zu}f2)*v@(Oi~YjRaX)?WIz(hLKvZspzrv{8>!4*fV=VMu{6_x~pGX^;wUj7~(EvBN z6%sGD`|YABYbqE_;)Fyowcl@tE*8oY#lq+o&@>1WL|wL>6P3$Gh9cU{dToXoF7-^c zU}$&w9e&q1Lsa-}?|T8J8#^oOj`2JDR~1j zew0=bEZG^BYrh~3esQVeFD>~6T^aG0a+arvng!}spt?0{0M-?_V6wC>gGu&d-~R_r z$Cr+M^mjA|NibDh<}VvUEkd&cioPtJr6v3Z=&3IHDd{a5hnwhW`JVK?j88^7W$IWt z!!Fj!;-Pqpm^S}VS(!L;M!jd)R1aROipJ7&2Yjl{4&o;m+y?&H4!)scLSb zxZH##tXMUXR%5JUTI%!xHb|>ozl!2mO-l{yFW))*a4&YG@GRIVC>?j9&MNaI*fQ@k zKaX9|^7*_%8e_kcu$N;b?OvZ53H($Z5_QM1m%&eOz_D&0&jRMKc!;8&-|ya>MG0;% zt^XyqbbK2xpl;5+l9fE6-z4CecOE;^fJT6vmzfYcu-nRh<9=gp4 z*_oX{>dt4sCdFfUGPjyZO>F!ak=&bG(-tM-RmntDyEcbh!U2~f*h&w^3SbNyHMosM z()??EL)Ep|X}u0f1rF4wUutX9WX-T^?C$sW-Gop%x7xGuLA%aK)>}?Az1jdD2Y@G_3sy}jA9G}-ep08&e7sANxFWm&8Oyq}tJ$fTZWvbmH zD>_n3lrgW`vlwQ5I)hEGXW?dNg9ds}%!A|Zzdkcj$duOjU}wBg$5e!HklANg_!VY& zW2CeoHBsF32|W<9jN=_SuW>%)*a5wej*o*&N>ls7_ae3X-?TE9-Z)aO4xpq`bMs#L z{JdK}53dcS!`p%3Z6A`OS37bZZ*@VW407cC5dZbK?b+KGz7JT~>BzgsI0uNi%m$=x z2ke03`h!wqhR#xB4-Bw`@j%+bjEaTsf?vn$8N}Ak6Xpw>jy%qVGo-itJaFu7sIc zb`oJwPDoXt>BP{VTyai75`_7OWjg;c^8v!Iz$_?Af4+j|I2>?Ho7%53p)n4ON_27cmjf4yjYgg$qpIpBnR=))%2O)89hl2KD^}kVA~iv6qfV!@dn0HhFV_G*gS!4p`2Np?8MUIlcjGnIZnJL%`fC)sZGZ7+7Z z-saaqKIp6${o;u!SUF_w!EYsgr{XvIb$l|#e3pIqV*4nj^sv7JQ_k2tfu4W+=m!C) zWG4Oec;B{t#e4-3xMD3-@WO!aiM?G`=`s~RJ*jBfitnlwWHEcL_V)Vo!Ag(cBdnme zF4?{m<|h2=Cp7t}k0zO@*D{E|!uYd@ofeQq+_bgV(GxL}C>1-L3Z@Xou`vT?cAR@Q zI#O$n^wA!yS&c7P?i#P0SM2U^xfkOm8knIgh@~>_w~M83-0!%_&!J0zJth5H-iXmf zGUK|JA55gW73{oO>MuR93yMLVt>Cu~zZ39#9)6eL_gegJ!tZbJ`zn49q zU_#0rpk_vnhsp$v3HwOvUtl6cgXCZ~zpS zYi1j3W@cCYLO+K>pT`_Pp;)S;jKS3bS0`MjRQ%ke-!8RAPsPtqV!+Rernll3CjCya zm+FW4xr*Pel?W(R{0_B)V#V)Ndx<3<8>#wO@-dL@_xq&e_e;sg8|agMA4~oc6!|57 z56k%yl>A{aHB5ZiW}A{5-pOS>c#^IcuIp! zm1&+>1CL&g2(aaDbi0@xrDA8Ps9WivA$gQ>;0M#rG}=zgccHoKf_7%$%EE>Hfz;0Qq@NKj>|m3ICWYGB$tDfW4DDUe&UD4k zs1|}!1&y#``5v`fv8bKxnBk&!Vv?cP?-A|n747V$cJ@#^OHj)a8Xp?a&Q7sFJG;aJ z?euT*+o6w`D(v6#HnvLzxUh$yf6L3IU1Fabn=It~gaRUZb)q!p9I6nK% zvLJE^QI+Tnp~E zh)YS(vM}0j(;Lz6Gv;@U`FAwI4o!`MwkV2QTB7(aahX}P7?f&Plik0M{Aro*521Yy z;8>n?7WeA!@Ogt;WgFMZwzHk5kbEm zQ}}EGisR>(ginWVG+00)Tt6K_Kc9d;5>xm>0{ZJ1dRGFvGN$mw1axV}&^2k@I?w&_ zh;wJi>8ZPph;({C)U_ePHNh^P7wpaR+z-zu!&*qm&=#fgu6e$r;%-ly+<0BJ)(Adq!91%H1Ev)EN3IlVfKDHml@p}pTuvlh? zWFA^;%E6RZ!Q`qGV%Ry+DusS<1)iA&E>2Wcfl$ZhF2+J<7o3=21g5sx16N_%G)gKf zQ*ZTv?P;}Y2d7aWGX#gvhiV6Bz+J{7z}Bg6aZBMjaL%!A#2NnkY2dm6F~P5cIgS^? z>gartsJr;pw0#W+vzrGaHn}%mqtm1}S`3mhl)@ z8kS%gKB#k3yk|!KqBz3>y(MBN?4Vs@$N6U3g#{K1$U6sF6=mAH|@fb z6ZXJ9eG&n}n-i8|fH3KV{q#I2qi8s>cB~uI#R9DENKr8?}909}vz>gw;Sj;qBt1)Z`Oz>@(C~BKGU)PFg zT*x8rA3F@@JuLG9GbZO&M%ojEcGZmI4W!CBvmXQhUcqMu49?gA&G2dXl-9k-4wzkb zz>LEChOyV=wIskNt}u5RZYZBbUTVcEHZ&Eq>Z0=5kC<*qCHhdC?J|?j}77@Up+= zgy;077>nVCVlj+pFT*ZoI}$DX_nZvDT(O}f0db!82Df~Jya5uSLe439wR>?~w{pYu z>(L>K(PgcI7ENeF^bu{`HS> ztvn$VqzyNZ{xM~xZgI=7VL}MD3T!E{^}&W43jphf4cAw|wgk2|fh~nCEw*K_WyQ7} zHr&JlylNI!TYyzu+Oa4-H^k}b z8{6BO9vsI;5J`_0r^k!av& z!lQ_^{t^{p-$BeFwQS5Noy2wt|xtYJJuSOlIuUZ;JUsd6&)K{a> z|80Gh^oYJndPH9(6{4@A3!<-*3ei{LUG!C07kw37P<<74RbPeO{{ekf-Hc@}`l>1y z%UtwTH8+;I=&R~uEOXUYRqUqBpSr#ZYof0rKG9bZ-#mR4@rk~Q_(WfYizlV8V<^vq zs9&+4;1F%UTxt3o_d2#bm+}*CK-DXI3LLa`|G233w^s357S00guSwm_hR{6D)XfUS z{OVXXjN7!5b4$GkO#@qEX&UPB6X}ceVZ5>JqFUQli2KR!bZdo)Ige9+IO98pR}HSFutB1^L0wh*E7V%Iu5sOq@JqmZ1TuYc>EK~ z4p*xDJ=T~TKSOUdxn8{$e1DyKI^Wv~PXSd7j=T_a;#dW9r#%3IQ}Ho3fc-eRkQ=Wb zSFGwrUB|_o7NZNlhln}VNQV>t16{IKelp_55;m691?_%#6za>c8vc*4;iy};E29v( zeIPfO!h-b@czz$AL*Lh>@^8gUeFH z|4c|p*D{#D-xN8`Lr8^Ziky0J9QOz08^>R#@g}nyJO^+9A0)pI>lxi|$NX}QMAzFZ z){0HaFL+_ZPWVIe!gy`#MBssS$cSFye)tsXyr@>>v@hZtq#U@VkX9OYipSp*Vu{4hgcF!Wn6Dd&mB0>JMgfLH+duLvNP zzcb^|R5(fH+J=vv3dd=mpdD|5oDFmObV8ns54O|jrlOQ0rv-{vI0T<5_&w$HBl3gX zd<15LkfzQ%*71QTj((l|IVDfl<|YNQBWj z;ZMjxGY=s^~%H{IP-%KwPZA2(TgO^>9i1%NdpP zmPRuwWL)-H@(!)!-$9KGoM#j z2Oc{q_&Kx)GO_LnegWG>N+st!jwe=5aYS#2N{)>pB*zvpAvx{?JOM;65I#xXYWYBG zII@noj9DkO2&k-+FscgP81*N}A-*x{F{Bt94=s#Ukuat!he%LlAQwBBfpBH1i)iAn zZ=17^Xlfnj+Aks-8f_qeUL#60ZSL$Qe4%XEdFl-R+y-NhUDdD|$tuNgZmhj0vZZiI zu(79Z#WW-F^sL?v4I}v#fG^WG#rb@RrAK2>7doSlCLS=l|An8M1iA!X8RysresVwm)gUl%Gs8GbW( z36WtmByOm}-d`_f?0pb1eW}!aG^x~L0iZtuhy{Qp5kM>eER6tS0bp4K5DNgyBY;={ zs73&>05A{%!~(z}5kM>etcU<&0pQRGAQk`)ivVH)U}Xdl3jnJkfLH)HJOYRXfFJ^h z1^K~sud874&kl}4>y34tS3<}zUQMGfxSmES_)9h3uEsmmc$*q;QR7`|T&u?G)VNNK z*U}J83~p{(->IH&f}wj{F>hvl4>~gaZh&y>Tu5GEkQaBZ1op)TyMV>VD~XRcSB`uz z3nD%+7$!4UVUk7v9>qM$KZySI0=DVHoK|rH?3F+fKG2KabsJ0FD-cR9?rr=M3P#8q z2zf6)jbBmaf>*&h2%mD}*KpS}-Bw9##C>ZV`Zp%@O@Qp<>v}@#7IFQX(7Ba#&h57L z{JS{!GN?rJAA)SauOaw-_%!}A3BD!<|27GJeGL8`!1Z%t>NnD3A@w)M_$}0Lh`}w? z|0)KPI%xkF3_DmrTfqxxD|i8I1-H^hE023M+?ma&Al&KSBbo*?&D0n#L5*PtZv;2t zAK;aQ&JZp9BcN!L+oZpGKl2!h9iJj02qk?VgUe8i7O4U0I)s+h~+1yY*&KYAvBccJ7`F27JQJ_a`0jG z_-NDPQfsEUs-G{d>=tT zExHGQMaYL@$YTcb0YEO|3y9+XF}NCSaNs!(Sj!`TRvI<{EY^KuL-AIkjs!A}lsH6! zjkMUyisi!5s=Xc{4JOy<=@ryoNq?Au7xdJ&{)7bLJi9;rRj`4jmGCZ@5c8dCd{&Lm z)0o>x2@{V(Cmw1+;=v#u4B~lnqY)l+f_NFF2ZMMph?ki=D#Ak_RPbPs9t`5aAYOKk zy$Xq!9n-R4(j+QP;?g9tpPD;5#^zZg#ZD_>EVL*#Ou!j*9?d0bpwc5DNguM*y*~p9h_^ejs|e0e+h>#gx=b&$JDnM$&?> z;M2%TmgC}!7?LxP&&80ufqa3Gdl{-=AYY`T-8jBXM~666ojRL#0W?3;cn~MY$LFA? zE6}OCif=r^E>9@7XkE88U4&PIsj+AHWgFOLoq>cs$aJDU%)-u%y1h&+eyp>&DwfBO zb(xP}5x;u5`kY#|w^r?`RsCAE3zb_KkS zdtCHN)jJ%<)oTJpA6CMm4@(obrQsX*VGW}W_#j%Nx})-xd6wUEoy zL&(p5+_xp~OWMIcD6@H2vTO(6rR(d+RSa|O;Cpmof(@=dJGj4z8RXbp|D9Z#?Svs( zP5aWX0&g!r0o|){vP)skZ327{p=;oQ{a4PP@DEQMGSL{w(U5nCnE<$H$h*T#0^Bs@ z-C?E-ZW{5s!z9g1xuxCPhxY0rq?0{F#M7qYL+ivs!a~D_A4(>hi_eC6K7KqJaWZ~$ z<~IeiKHF_gJ#D#l312BSIcH!2= zsc*$DJY6^S!`PLd`Z?^{jX}dG65(T$Xo#5jLgqv^v8)YP;<=*C(ldXDrPi&m zcBpkDtSi+z2y44q4}o=sT1&9z)S90HZ9|#I=XP6N_2jP zw2Yr>IcQL4$6)dgI?LeDK^lR)sd)r|qyiv~;P;rX8sr0>BnBW2!9*p@TjYOg6t=Yh zeUk-N?mV*f-EHb;%mYLF9S?^03mBD}(Ljq6a1# z>=_2!yIx!>$-5yD0wEC^!LLC+_*Z;HRtyXu8o^hxNUO@~SBuK(TSy^ie>BgI2Ks0Zr zu|VhE4%sAhjvAnR#L%MH;0kQri4T@FD z@|sBJ9&6P(hH1)`L0cqw2P8riNQ6dHOvD6`Mp8_VEh;8VzS~^FNQ#M0=QaT{5ZIKm z`Df|d!6YI{UoE%V&)onHAq_Fk6vNh&z^<)+jJHi%f*(Q8OFL0j3NQ0u(J9l&1P;&G zpbu?5f^cOtEU$L06owSI@m8!HHI!CAqxr%P?)e1945m|3;Q;F70E=36Jgt@vR=_nh zhAt0D;Emn}=8~|-6jLFoZrqH13h+v~2VacJ77$#!)a@SV#mwRo-&M?B2?#=mvC794 ztn|bsOt`(_8d93!chD(gb7%g+rK|8M7wqZ*jZUJ;1S=8r!JbyA7pwx5^5A( z{@lYR()EndP=Q&TCF-#t5$2(O09Zmt(vb@kE>OWs8u)Asw+4`0XWD1SnZIV z0Wi3HFbxgO)h>o>3@#X4n}@-L`RR4^y9O><4X|W204^?$!{EyJH2Unaevz{N8GPXf znPQZK)AwNx2F_$cm{>8wx)ClQ&8$Ed@C(7W(E1c`Vp?Jm&}4%VcDF46O^+Y~mJ>X` zOAcX>Ll`lKjU#~qgf>NJQv}^xAW3MfR|E`<85F}|HJTJQD1xI1jv_dTC^ia$9ok4m z<9KwEaM3){%YHxRD6F4Jx{;$yH@b^VcRLKE+lTQ~(mje8pCH{wDc1*2_a;R+c)E{P zgoCI17(qbocrz=><@TJIlI|Cxg#VoBb^^yoXMXEHv?Wh_R}BwW ztb3C({}UoAu0e!;xah|s;o3>x18{02IM$gsmW%Ybq2t;|&pjm6SG`yu26G8ql~=N7Fq}(W{yntM@H!V4f%4SL>@7f;eJ4HvUdhC*%Bk=Kq^mqq z2dLgW0lfYTcnvVUiEF&w-IJ`H@i#uUEuU&};%Up0cTwh|=`K_t z4dISu(6%Ok{!7p(<${wy#U6n!?8u?xE;BkL#+et^w)|u5oBU(#OZEjs{rKkH z<@n;%;Mk5_Lb@8?r3e8kzK!L}=R#kmpN3ek$nbsKJTd>%l2{`Op$yVQyIpi;qhx@C{I7tFFHaKjw{RWiXB`S9NVG~M$565T#S zH|p+TZ~pU<3>2pGU`VNYfm(VRVnLoUZI8hGHFam^e0Vz}9rnxxuwb@D&eout=rrhq zemddy49TGfWOU`d)RhqpJoh%Jl?I=?5!UqF+wtY;9EQQO=_M2BlL+JvE>Sr0#DH%D z82fjgi!CAQ#r#S5rTIKwnfvdtnA=BLw?cj>D4YA-Fz4TNbMtp>zo2^Q<1;UwmpPO^KS1Uo>+$)@Q7V@6KC!DQ3!SwObA+s zpAm&n51~ry+Tkb!dle=Gt;5(vsBx%=grHSkux^Py=49hl5ixdH5`3+{Fd{aOuZ^cg zA?ES5{>UiAJiaz!v$iI99$)Kmu~((GIb}PSV(4NAC!+E`3-V+hZG$v_Bjx=HKnvJl zQL;1cb)1pFKDuWB<_%&g47)5cm`Z+x-x1yuHfUFPSy-;#Hy^#c+IUHbhsrvyg!NAg z{bV03ekRJSM7~X6T=`kRkG~!KL^$ʗrofiq7A5zdAS5;BhHQS>pw2?l|YLnh8ewSm#`zv0uiuExNC!*#;_%7cknY(}kc{=~=h2M|1!7Lp zZNf=6@;iux6WlJuP^$CcE!@&G8AU9GCbt?sE^INk^WjNu50cjjZWm%GxAWmG+|o1R zmi9%s)$nmakGY)>CtYNSsIoC8cdtizC~5J-%8?zMY>JS=d{tD z$e(uP6D4JMdjyKJbnU4+zDd?c00TX zEfDU;>_-=UC#>yWHux}*@|kRK2fHFAcHZBJUNE+H;&!G%?yABdJof;4&(miEex;Y0 zJ^^x%-s-7aho7k(%BT(dckt59S!~u&5-sek#oXW%`Udn?0BE>N_ZzK6Q_x_{zZwJ#RMV4!xe*1 zhry?n4bqvlsLRYWm_W2{#BKSpluaPQ4>)?O0Rkd0UbT|iG<>O6fUN)iUw<^}^2}@L zCk_U0=`%4<5)q-Kb^L$*Q7iR-et(qrWyo+)`Y0196=$-&VSk6^{XgUKevXuP&c}_T zzkpG?@9gP7)=T#g(?XWDaTQj3nx$K6qwcmu(HBVlFk(qbrRKy~Qv1dbLz|_3K5fFJ zt%zyIkOb`*Myz=?yYkJ-VLolb%wk2NHW5gIb_wrW#R?zLT}8OX@`Bhz;zK^ z^=Nw2^miBWKQhHWFZ;fmI@`383fe%Wb~*>^e?lD^JP%oL^?uAL)>d^|P9S}_;mF1< zJfE1l9X$Z$+*IJZ(Hl?!BmlvS0L4*|=zi#rp~A;baFEB_lK67=_~U@l{2OC_!kEOx z)zVI5u|S_PNS`$3r)loPwNy*cuncDKayBhBV-9AFPtBeoHAlX|UfwvtjUKze3X=ut zMf%trA6*Pjolm?2{=b7h;+|-G4>`bW1+~>15|Miq%u>*cDL9B1`8|jilW-6(is&F- zl-gomDR+p=u*l_;Oagh;y56O+FpZbSX}k$#?!S;m=!m_C@rn*RGNi@o>ARsQcwC1b zs&qIBBbBgf9d4Dujx&WE=|IQqJxtc3H0bdpX;9XS(xAtaq(MO~N`oFxk_Iz&Q5y7k zk~F9Ri_)OSlcFJW+pS~xX_J4pbt80?`3E(mfP)*M<2g53F=*~B>cM0z>OtNX^OrY4^kB_{g(4|%x+dNaet%DXFURg#j0v^i4rOdtkxD${cqfR3-$jAG>>*Z4pIBsI zVn!+;m%CB}I3;<=0;fawu*@GQVMwhV�VtAa3?EG1VoCyl8-z#3Qf4JbKX>E*bA)c+oJ8 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%0ACY=aBK4r0A2a=TfbZ6uO?xuy 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 F{}*&rBpLt! literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Properties/WMAppManifest.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Properties/WMAppManifest.xml new file mode 100644 index 0000000..09ab198 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/Properties/WMAppManifest.xml @@ -0,0 +1,38 @@ + + + + + Assets\ApplicationIcon.png + + + + + + + + + + + + + + Assets\Tiles\FlipCycleTileSmall.png + 0 + Assets\Tiles\FlipCycleTileMedium.png + Connect4MonoGame + + + + + + + + + + + + + + + + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.DXGI.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.DXGI.dll new file mode 100644 index 0000000000000000000000000000000000000000..9ed5f5d6a790979fcd19682b53b56f62bc9670f7 GIT binary patch literal 101888 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

    PLT8!`1>G`$2GKDwr(?jYE)S76=G} zSEhi1jp?6zYuMSly*pTY(kTTm>nFS%Uk2vuQ^DD> z9jgznfx;_O!LN>AUCG7-UQOZ+*s|(BSZ*wf*mCP~^9>ZOWqjiRKf~q6odMn!_Lkds z(Z{u^;3a+Ixqo+icTm1DdX@J1_wviwDA_o7;rQ*_YJY!kr}I?4=TIN1EIXZLh@LnA z%up^&1?Ss4ZyxtAkKe#e>W*L1y|Mgwzq>o!>2JQVJRVqhxp_GepR64292^eI&kyu{ z>Kn^<4>x!E-7l3-H+J7G2cOTnWfzaIY_sg(H^JxSi&GoZ3+wOp_s|pG2zK4;U3YPV z;D0{-zRY>t)&B~9{`g-`1wa1ARB&&7b^W*g+rRtHpZ~?5wg34K|4HwUU;T^oqO$VK z@5tN4cSaZVoptvPe0+FWF5Ekt{lPnL-OWca)_9VqUi;;}-e$1(uSN!-&)=2L%lL4@ ze@7KLZN{&W8?Nr`+`?=1z&WWbFZXt2vJ?dW_mjc$7u~1-KgCqAfD>UdedM1{?wJ6) zptfG*WHS2TJ5#}TF^L-g_uW%64ZiR8!}Tq~SFEC(Lf`U+_o~~0*4^7J?A^+LuQ{y^w90$heYZm``|a}HRR8+pm^49x`)nyFFuht0nv4 zPZ0upZa-PxE%rudS;jtf-|a8U`{De4Rz>hfk%dz3xyWxR!xw_5m43EEeK7ob1( zgS<+IOmstxD#l+~F0BT2$jZLESTKHLG_m-3 z=eZ1jxHm!QV=wp=`nU=GM;O>)he!r#W|lX&;9 z^U+Ob^PN%u5;=0#vCrg4-e3fXtdqZiP__MY&fogZp@-`r5iuG4^ZP*euv+}=>$112 nzRrUh + + + SharpDX.DXGI + + + +

    +

    The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

    +
    + +

    A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

    To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

    +
    + + bb174523 + IDXGIAdapter + IDXGIAdapter + + + +

    An interface is a base interface for all DXGI objects; supports associating caller-defined (private data) with an object and retrieval of an interface to the parent object.

    +
    + +

    implements base class functionality for several other interfaces: , , ,

    +
    + + bb174541 + IDXGIObject + IDXGIObject +
    + + + Gets the parent of the object. + + Type of the parent object + Returns the parent object based on the GUID of the type of the parent object. + bb174542 + HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) + IDXGIObject::GetParent + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Sets application-defined data to the object and associates that data with a .

    +
    +

    A that identifies the data. Use this in a call to GetPrivateData to get the data.

    +

    The size of the object's data.

    +

    A reference to the object's data.

    +

    Returns one of the DXGI_ERROR values.

    + +

    SetPrivateData makes a copy of the specified data and stores it with the object.

    Private data that SetPrivateData stores in the object occupies the same storage space as private data that is stored by associated Direct3D objects (for example, by a Microsoft Direct3D?11 device through or by a Direct3D?11 child device through ).

    The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the well-known private data () that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

     static const char c_szName[] = "My name";	
    +            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
    +            

    You can use to track down memory leaks and understand performance characteristics of your applications. This information is reflected in the output of the debug layer that is related to memory leaks (ID3D11Debug::ReportLiveDeviceObjects) and with the event tracing for Windows events that we've added to Windows Developer Preview. +

    +
    + + bb174544 + HRESULT IDXGIObject::SetPrivateData([In] const GUID& Name,[In] unsigned int DataSize,[In, Buffer] const void* pData) + IDXGIObject::SetPrivateData +
    + + +

    Set an interface in the object's private data.

    +
    +

    A identifying the interface.

    +

    The interface to set.

    +

    Returns one of the following DXGI_ERROR.

    + +

    This API associates an interface reference with the object.

    When the interface is set its reference count is incremented. When the data are overwritten (by calling SPD or SPDI with the same ) or the object is destroyed, ::Release() is called and the interface's reference count is decremented.

    +
    + + bb174545 + HRESULT IDXGIObject::SetPrivateDataInterface([In] const GUID& Name,[In] const IUnknown* pUnknown) + IDXGIObject::SetPrivateDataInterface +
    + + +

    Get a reference to the object's data.

    +
    +

    A identifying the data.

    +

    The size of the data.

    +

    Pointer to the data.

    +

    Returns one of the following DXGI_ERROR.

    + +

    If the data returned is a reference to an , or one of its derivative classes, previously set by , then ::Release() must be called on the reference before the reference is freed to decrement the reference count.

    +
    + + bb174543 + HRESULT IDXGIObject::GetPrivateData([In] const GUID& Name,[InOut] unsigned int* pDataSize,[Out, Buffer] void* pData) + IDXGIObject::GetPrivateData +
    + + +

    Gets the parent of the object.

    +
    +

    The ID of the requested interface.

    +

    The address of a reference to the parent object.

    +

    Returns one of the DXGI_ERROR values.

    + + bb174542 + HRESULT IDXGIObject::GetParent([In] const GUID& riid,[Out] void** ppParent) + IDXGIObject::GetParent +
    + + + Checks to see if a device interface for a graphics component is supported by the system. + + The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + the interface of the device version for which support is being checked. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + the interface of the device version for which support is being checked. + The user mode driver version of InterfaceName. This is only returned if the interface is supported. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Checks to see if a device interface for a graphics component is supported by the system. + + The GUID of the interface of the device version for which support is being checked. For example, typeof(ID3D10Device).GUID. + The user mode driver version of InterfaceName. This is only returned if the interface is supported. + + true if the interface is supported; otherwise, false. + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport + + + + Gets an adapter (video card) outputs. + + The index of the output. + + An instance of + + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + + When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.EnumOutputs first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumOutputs then returns other outputs. + + if the index is greater than the number of outputs, result code + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + + Return the number of available outputs from this adapter. + + The number of outputs + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Enumerate adapter (video card) outputs.

    +
    +

    The index of the output.

    +

    The address of a reference to an interface at the position specified by the Output parameter.

    +

    A code that indicates success or failure (see DXGI_ERROR). Will return if the index is greater than the number of outputs.

    + +

    When the EnumOutputs method succeeds and fills the ppOutput parameter with the address of the reference to the output interface, EnumOutputs increments the output interface's reference count. To avoid a memory leak, when you finish using the output interface, call the Release method to decrement the reference count.

    EnumOutputs first returns the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumOutputs then returns other outputs.

    +
    + + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs +
    + + +

    Gets a DXGI 1.0 description of an adapter (or video card).

    +
    +

    A reference to a structure that describes the adapter. This parameter must not be null.

    +

    Returns if successful; otherwise returns E_INVALIDARG if the pDesc parameter is null.

    + +

    Graphics applications can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have WDDM drivers. The following are the critical steps involved.

    • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the application must first confirm the driver model by using the following API.
       HasWDDMDriver()	
      +            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create IDirect3D9Ex interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
      +            } 
    • Retrieval of graphics memory values.? After the driver model is determined to be WDDM, the application can use the DirectX 10 or later API and DXGI to get the amount of graphics memory. After creating a Direct3D device the following code can be used to obtain a structure containing the amount of available graphics memory.
        * pDXGIDevice;	
      +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
      +             * pDXGIAdapter;	
      +            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
      +             adapterDesc;	
      +            pDXGIAdapter->GetDesc(&adapterDesc); 
    +
    + + bb174526 + HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) + IDXGIAdapter::GetDesc +
    + + +

    Checks whether the system supports a device interface for a graphics component.

    +
    +

    The of the interface of the device version for which support is being checked. For example, __uuidof(ID3D10Device).

    +

    The user mode driver version of InterfaceName. This is returned only if the interface is supported. This parameter can be null.

    +

    indicates that the interface is supported, otherwise is returned (For more information, see DXGI_ERROR).

    + +

    Note??You can use CheckInterfaceSupport only to check whether a Direct3D 10.x interface is supported, and only on Windows Vista SP1 and later versions of the operating system. If you try to use CheckInterfaceSupport to check whether a Direct3D 11.x and later version interface is supported, CheckInterfaceSupport returns . Therefore, do not use CheckInterfaceSupport. Instead, to verify whether the operating system supports a particular interface, try to create the interface. For example, if you call the method and it fails, the operating system does not support the interface.

    +
    + + Bb174524 + HRESULT IDXGIAdapter::CheckInterfaceSupport([In] const GUID& InterfaceName,[Out] LARGE_INTEGER* pUMDVersion) + IDXGIAdapter::CheckInterfaceSupport +
    + + + Gets all outputs from this adapter. + + bb174525 + HRESULT IDXGIAdapter::EnumOutputs([In] unsigned int Output,[Out] IDXGIOutput** ppOutput) + IDXGIAdapter::EnumOutputs + + + +

    Gets a DXGI 1.0 description of an adapter (or video card).

    +
    + +

    Graphics applications can use the DXGI API to retrieve an accurate set of graphics memory values on systems that have WDDM drivers. The following are the critical steps involved.

    • Graphics driver model determination ? Because DXGI is only available on systems with WDDM drivers, the application must first confirm the driver model by using the following API.
       HasWDDMDriver()	
      +            { LPDIRECT3DCREATE9EX pD3D9Create9Ex = null; HMODULE             hD3D9          = null; hD3D9 = LoadLibrary( L"d3d9.dll" ); if ( null == hD3D9 ) { return false; } // /*  Try to create IDirect3D9Ex interface (also known as a DX9L interface). This interface can only be created if the driver is a WDDM driver. */ // pD3D9Create9Ex = (LPDIRECT3DCREATE9EX) GetProcAddress( hD3D9, "Direct3DCreate9Ex" ); return pD3D9Create9Ex != null;	
      +            } 
    • Retrieval of graphics memory values.? After the driver model is determined to be WDDM, the application can use the DirectX 10 or later API and DXGI to get the amount of graphics memory. After creating a Direct3D device the following code can be used to obtain a structure containing the amount of available graphics memory.
        * pDXGIDevice;	
      +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
      +             * pDXGIAdapter;	
      +            pDXGIDevice->GetAdapter(&pDXGIAdapter);	
      +             adapterDesc;	
      +            pDXGIAdapter->GetDesc(&adapterDesc); 
    +
    + + bb174526 + GetDesc + GetDesc + HRESULT IDXGIAdapter::GetDesc([Out] DXGI_ADAPTER_DESC* pDesc) +
    + + + The assembly provides managed DXGI API. + + hh404534 + DXGI + DXGI + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Creates a desktop duplication interface from the interface that represents an adapter output.

    +
    + +

    If an application wants to duplicate the entire desktop, it must create a desktop duplication interface on each active output on the desktop. This interface does not provide an explicit way to synchronize the timing of each output image. Instead, the application must use the time stamp of each output, and then determine how to combine the images.

    For DuplicateOutput to succeed, you must create pDevice from or a later version of a DXGI factory interface that inherits from .

    If the current mode is a stereo mode, the desktop duplication interface provides the image for the left stereo image only.

    By default, only four processes can use a IDXGIOutputDuplication interface at the same time within a single session. A process can have only one desktop duplication interface on a single desktop output; however, that process can have a desktop duplication interface for each output that is part of the desktop.

    If DuplicateOutput fails with , the application can wait for system notification of desktop switches and mode changes and then call DuplicateOutput again after such a notification occurs. For more information, see information in desktop switch (EVENT_SYSTEM_DESKTOPSWITCH) and mode change notification (WM_DISPLAYCHANGE).

    +
    + + hh404600 + IDXGIOutput1 + IDXGIOutput1 +
    + + +

    An interface represents an adapter output (such as a monitor).

    +
    + +

    To see the outputs available, use . To see the specific output that the swap chain will update, use .

    +
    + + bb174546 + IDXGIOutput + IDXGIOutput +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a description of the output.

    +
    +

    A reference to the output description (see ).

    +

    Returns a code that indicates success or failure. if successful, if pDesc is passed in as null.

    + + bb174548 + HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) + IDXGIOutput::GetDesc +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use GetDisplayModeList anymore to retrieve the matching display mode. Instead, use , which supports stereo display mode.]

    Gets the display modes that match the requested format and other input options.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    Returns one of the following DXGI_ERROR. It is rare, but possible, that the display modes available can change immediately after calling this method, in which case is returned (if there is not enough room for all the display modes). If GetDisplayModeList is called from a Remote Desktop Services session (formerly Terminal Services session), is returned.

    + +

    In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).

    As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes.

     UINT num = 0;	
    +             format = ;	
    +            UINT flags         = ; pOutput->GetDisplayModeList( format, flags, &num, 0); ...  * pDescs = new [num];	
    +            pOutput->GetDisplayModeList( format, flags, &num, pDescs); 
    +
    + + bb174549 + HRESULT IDXGIOutput::GetDisplayModeList([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) + IDXGIOutput::GetDisplayModeList +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use FindClosestMatchingMode anymore to find the display mode that most closely matches the requested display mode. Instead, use , which supports stereo display mode.]

    Finds the display mode that most closely matches the requested display mode.

    +
    + No documentation. + No documentation. + No documentation. +

    Returns one of the following DXGI_ERROR.

    + +

    FindClosestMatchingMode behaves similarly to the except FindClosestMatchingMode considers only the mono display modes. considers only stereo modes if you set the Stereo member in the structure that pModeToMatch points to, and considers only mono modes if Stereo is not set.

    returns a matched display-mode set with only stereo modes or only mono modes. + FindClosestMatchingMode behaves as though you specified the input mode as mono.

    +
    + + bb174547 + HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) + IDXGIOutput::FindClosestMatchingMode +
    + + +

    Halt a thread until the next vertical blank occurs.

    +
    +

    Returns one of the following DXGI_ERROR.

    + +

    A vertical blank occurs when the raster moves from the lower right corner to the upper left corner to begin drawing the next frame.

    +
    + + bb174559 + HRESULT IDXGIOutput::WaitForVBlank() + IDXGIOutput::WaitForVBlank +
    + + +

    Takes ownership of an output.

    +
    +

    A reference to the interface of a device (such as an ID3D10Device).

    +

    Set to TRUE to enable other threads or applications to take ownership of the device; otherwise, set to .

    +

    Returns one of the DXGI_ERROR values.

    + +

    When you are finished with the output, call .

    TakeOwnership should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

    Notes for Metro style apps

    If a Metro style app uses TakeOwnership, it fails with .

    +
    + + Bb174558 + HRESULT IDXGIOutput::TakeOwnership([In] IUnknown* pDevice,[In] BOOL Exclusive) + IDXGIOutput::TakeOwnership +
    + + +

    Releases ownership of the output.

    +
    + +

    If you are not using a swap chain, get access to an output by calling and release it when you are finished by calling . An application that uses a swap chain will typically not call either of these methods.

    +
    + + Bb174554 + void IDXGIOutput::ReleaseOwnership() + IDXGIOutput::ReleaseOwnership +
    + + +

    Gets a description of the gamma-control capabilities.

    +
    +

    A reference to a description of the gamma-control capabilities (see ).

    +

    Returns one of the DXGI_ERROR values.

    + +

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174553 + HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) + IDXGIOutput::GetGammaControlCapabilities +
    + + +

    Sets the gamma controls.

    +
    +

    A reference to an array of gamma controls (see ).

    +

    Returns one of the DXGI_ERROR values.

    + +

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + Bb174557 + HRESULT IDXGIOutput::SetGammaControl([In] const DXGI_GAMMA_CONTROL* pArray) + IDXGIOutput::SetGammaControl +
    + + +

    Gets the gamma control settings.

    +
    +

    An array of gamma control settings (see ).

    +

    Returns one of the DXGI_ERROR values.

    + +

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174552 + HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) + IDXGIOutput::GetGammaControl +
    + + +

    Changes the display mode.

    +
    +

    A reference to a surface (see ) used for rendering an image to the screen. The surface must have been created as a back buffer (DXGI_USAGE_BACKBUFFER).

    +

    Returns one of the DXGI_ERROR values.

    + +

    should not be called directly by applications, since results will be unpredictable. It is called implicitly by the DXGI swap chain object during full-screen transitions, and should not be used as a substitute for swap-chain methods.

    This method should only be called between and calls.

    Notes for Metro style apps

    If a Metro style app uses SetDisplaySurface, it fails with .

    +
    + + bb174556 + HRESULT IDXGIOutput::SetDisplaySurface([In] IDXGISurface* pScanoutSurface) + IDXGIOutput::SetDisplaySurface +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use GetDisplaySurfaceData anymore to retrieve the current display surface. Instead, use , which supports stereo display mode.]

    Gets a copy of the current display surface.

    +
    + No documentation. +

    Returns one of the DXGI_ERROR values.

    + +

    can only be called when an output is in full-screen mode. If the method succeeds, DXGI fills the destination surface.

    Use to determine the size (width and height) of the output when you want to allocate space for the destination surface. This is true regardless of target monitor rotation. A destination surface created by a graphics component (such as Direct3D 10) must be created with CPU-write permission (see D3D10_CPU_ACCESS_WRITE). Other surfaces should be created with CPU read-write permission (see D3D10_CPU_ACCESS_READ_WRITE). This method will modify the surface data to fit the destination surface (stretch, shrink, convert format, rotate). The stretch and shrink is performed with point-sampling.

    +
    + + bb174550 + HRESULT IDXGIOutput::GetDisplaySurfaceData([In] IDXGISurface* pDestination) + IDXGIOutput::GetDisplaySurfaceData +
    + + +

    Gets statistics about recently rendered frames.

    +
    +

    A reference to frame statistics (see ).

    +

    If this function succeeds, it returns . Otherwise, it might return .

    + +

    This API is similar to .

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174551 + HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) + IDXGIOutput::GetFrameStatistics +
    + + + Find the display mode that most closely matches the requested display mode. + + + Direct3D devices require UNORM formats. This method finds the closest matching available display mode to the mode specified in pModeToMatch. Similarly ranked fields (ie. all specified, or all unspecified, etc) are resolved in the following order. ScanlineOrdering Scaling Format Resolution RefreshRate When determining the closest value for a particular field, previously matched fields are used to filter the display mode list choices, and other fields are ignored. For example, when matching Resolution, the display mode list will have already been filtered by a certain ScanlineOrdering, Scaling, and Format, while RefreshRate is ignored. This ordering doesn't define the absolute ordering for every usage scenario of FindClosestMatchingMode, because the application can choose some values initially, effectively changing the order that fields are chosen. Fields of the display mode are matched one at a time, generally in a specified order. If a field is unspecified, FindClosestMatchingMode gravitates toward the values for the desktop related to this output. If this output is not part of the desktop, then the default desktop output is used to find values. If an application uses a fully unspecified display mode, FindClosestMatchingMode will typically return a display mode that matches the desktop settings for this output. Unspecified fields are lower priority than specified fields and will be resolved later than specified fields. + + A reference to the Direct3D device interface. If this parameter is NULL, only modes whose format matches that of pModeToMatch will be returned; otherwise, only those formats that are supported for scan-out by the device are returned. + The desired display mode (see ). Members of DXGI_MODE_DESC can be unspecified indicating no preference for that member. A value of 0 for Width or Height indicates the value is unspecified. If either Width or Height are 0 both must be 0. A numerator and denominator of 0 in RefreshRate indicate it is unspecified. Other members of DXGI_MODE_DESC have enumeration values indicating the member is unspecified. If pConnectedDevice is NULL Format cannot be DXGI_FORMAT_UNKNOWN. + The mode that most closely matches pModeToMatch. + Returns one of the following . + HRESULT IDXGIOutput::FindClosestMatchingMode([In] const DXGI_MODE_DESC* pModeToMatch,[Out] DXGI_MODE_DESC* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) + + + + Gets the display modes that match the requested format and other input options. + + + In general, when switching from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth and refresh rate of the swap chain. To exercise more control over the display mode, use this API to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor). As shown, this API is designed to be called twice. First to get the number of modes available, and second to return a description of the modes. + UINT num = 0; + DXGI_FORMAT format = DXGI_FORMAT_R32G32B32A32_FLOAT; + UINT flags = DXGI_ENUM_MODES_INTERLACED; pOutput->GetDisplayModeList( format, flags, &num, 0); ... DXGI_MODE_DESC * pDescs = new DXGI_MODE_DESC[num]; + pOutput->GetDisplayModeList( format, flags, &num, pDescs); + + + + The color format (see ). + format for modes to include (see {{DXGI_ENUM_MODES}}). DXGI_ENUM_MODES_SCALING needs to be specified to expose the display modes that require scaling. Centered modes, requiring no scaling and corresponding directly to the display output, are enumerated by default. + Returns a list of display modes (see ); + HRESULT IDXGIOutput::GetDisplayModeList([None] DXGI_FORMAT EnumFormat,[None] int Flags,[InOut] int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC* pDesc) + + + +

    Get a description of the output.

    +
    + + bb174548 + GetDesc + GetDesc + HRESULT IDXGIOutput::GetDesc([Out] DXGI_OUTPUT_DESC* pDesc) +
    + + +

    Gets a description of the gamma-control capabilities.

    +
    + +

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174553 + GetGammaControlCapabilities + GetGammaControlCapabilities + HRESULT IDXGIOutput::GetGammaControlCapabilities([Out] DXGI_GAMMA_CONTROL_CAPABILITIES* pGammaCaps) +
    + + +

    Gets or sets the gamma control settings.

    +
    + +

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174552 + GetGammaControl / SetGammaControl + GetGammaControl + HRESULT IDXGIOutput::GetGammaControl([Out] DXGI_GAMMA_CONTROL* pArray) +
    + + +

    Gets statistics about recently rendered frames.

    +
    + +

    This API is similar to .

    Note??Calling this method is only supported while in full-screen mode.

    +
    + + bb174551 + GetFrameStatistics + GetFrameStatistics + HRESULT IDXGIOutput::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the display modes that match the requested format and other input options.

    +
    +

    A -typed value for the color format.

    +

    A combination of DXGI_ENUM_MODES-typed values that are combined by using a bitwise OR operation. The resulting value specifies options for display modes to include. You must specify to expose the display modes that require scaling. Centered modes that require no scaling and correspond directly to the display output are enumerated by default.

    + A list of display modes + +

    GetDisplayModeList1 is updated from GetDisplayModeList to return a list of structures, which are updated mode descriptions. GetDisplayModeList behaves as though it calls GetDisplayModeList1 because GetDisplayModeList can return all of the modes that are specified by DXGI_ENUM_MODES, including stereo mode. However, GetDisplayModeList returns a list of structures, which are the former mode descriptions and do not indicate stereo mode.

    The GetDisplayModeList1 method does not enumerate stereo modes unless you specify the flag in the Flags parameter. If you specify , stereo modes are included in the list of returned modes that the pDesc parameter points to. In other words, the method returns both stereo and mono modes.

    In general, when you switch from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth, and refresh rate of the swap chain. To exercise more control over the display mode, use GetDisplayModeList1 to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).

    The following example code shows that you need to call GetDisplayModeList1 twice. First call GetDisplayModeList1 to get the number of modes available, and second call GetDisplayModeList1 to return a description of the modes.

     UINT num = 0;	
    +             format = ;	
    +            UINT flags         = ; pOutput->GetDisplayModeList1( format, flags, &num, 0); ...  * pDescs = new [num];	
    +            pOutput->GetDisplayModeList1( format, flags, &num, pDescs); 
    +
    + hh404606 + HRESULT IDXGIOutput1::GetDisplayModeList1([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC1* pDesc) + IDXGIOutput1::GetDisplayModeList1 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the display modes that match the requested format and other input options.

    +
    +

    A -typed value for the color format.

    +

    A combination of DXGI_ENUM_MODES-typed values that are combined by using a bitwise OR operation. The resulting value specifies options for display modes to include. You must specify to expose the display modes that require scaling. Centered modes that require no scaling and correspond directly to the display output are enumerated by default.

    +

    A reference to a variable that receives the number of display modes that GetDisplayModeList1 returns in the memory block to which pDesc points. Set pDesc to null so that pNumModes returns the number of display modes that match the format and the options. Otherwise, pNumModes returns the number of display modes returned in pDesc.

    +

    A reference to a list of display modes; set to null to get the number of display modes.

    +

    Returns one of the error codes described in the DXGI_ERROR topic. It is rare, but possible, that the display modes available can change immediately after calling this method, in which case is returned (if there is not enough room for all the display modes).

    + +

    GetDisplayModeList1 is updated from GetDisplayModeList to return a list of structures, which are updated mode descriptions. GetDisplayModeList behaves as though it calls GetDisplayModeList1 because GetDisplayModeList can return all of the modes that are specified by DXGI_ENUM_MODES, including stereo mode. However, GetDisplayModeList returns a list of structures, which are the former mode descriptions and do not indicate stereo mode.

    The GetDisplayModeList1 method does not enumerate stereo modes unless you specify the flag in the Flags parameter. If you specify , stereo modes are included in the list of returned modes that the pDesc parameter points to. In other words, the method returns both stereo and mono modes.

    In general, when you switch from windowed to full-screen mode, a swap chain automatically chooses a display mode that meets (or exceeds) the resolution, color depth, and refresh rate of the swap chain. To exercise more control over the display mode, use GetDisplayModeList1 to poll the set of display modes that are validated against monitor capabilities, or all modes that match the desktop (if the desktop settings are not validated against the monitor).

    The following example code shows that you need to call GetDisplayModeList1 twice. First call GetDisplayModeList1 to get the number of modes available, and second call GetDisplayModeList1 to return a description of the modes.

     UINT num = 0;	
    +             format = ;	
    +            UINT flags         = ; pOutput->GetDisplayModeList1( format, flags, &num, 0); ...  * pDescs = new [num];	
    +            pOutput->GetDisplayModeList1( format, flags, &num, pDescs); 
    +
    + + hh404606 + HRESULT IDXGIOutput1::GetDisplayModeList1([In] DXGI_FORMAT EnumFormat,[In] unsigned int Flags,[InOut] unsigned int* pNumModes,[Out, Buffer, Optional] DXGI_MODE_DESC1* pDesc) + IDXGIOutput1::GetDisplayModeList1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Finds the display mode that most closely matches the requested display mode.

    +
    +

    A reference to the structure that describes the display mode to match. Members of can be unspecified, which indicates no preference for that member. A value of 0 for Width or Height indicates that the value is unspecified. If either Width or Height is 0, both must be 0. A numerator and denominator of 0 in RefreshRate indicate it is unspecified. Other members of have enumeration values that indicate that the member is unspecified. If pConcernedDevice is null, the Format member of cannot be .

    +

    A reference to the structure that receives a description of the display mode that most closely matches the display mode described at pModeToMatch.

    +

    A reference to the Direct3D device interface. If this parameter is null, FindClosestMatchingMode1 returns only modes whose format matches that of pModeToMatch; otherwise, FindClosestMatchingMode1 returns only those formats that are supported for scan-out by the device. For info about the formats that are supported for scan-out by the device at each feature level, see Hardware Support for Direct3D 10 Formats, Hardware Support for Direct3D 10.1 Formats, Hardware Support for Direct3D 10Level9 Formats, Hardware Support for Direct3D 11 Formats, and Hardware Support for Direct3D 11.1 Formats.

    +

    Returns one of the error codes described in the DXGI_ERROR topic.

    + +

    Direct3D devices require UNORM formats.

    FindClosestMatchingMode1 finds the closest matching available display mode to the mode that you specify in pModeToMatch.

    If you set the Stereo member in the structure to which pModeToMatch points to specify a stereo mode as input, FindClosestMatchingMode1 considers only stereo modes. FindClosestMatchingMode1 considers only mono modes if Stereo is not set.

    FindClosestMatchingMode1 resolves similarly ranked members of display modes (that is, all specified, or all unspecified, and so on) in the following order:

    1. ScanlineOrdering
    2. Scaling
    3. Format
    4. Resolution
    5. RefreshRate

    When FindClosestMatchingMode1 determines the closest value for a particular member, it uses previously matched members to filter the display mode list choices, and ignores other members. For example, when FindClosestMatchingMode1 matches Resolution, it already filtered the display mode list by a certain ScanlineOrdering, Scaling, and Format, while it ignores RefreshRate. This ordering doesn't define the absolute ordering for every usage scenario of FindClosestMatchingMode1, because the application can choose some values initially, which effectively changes the order of resolving members.

    FindClosestMatchingMode1 matches members of the display mode one at a time, generally in a specified order.

    If a member is unspecified, FindClosestMatchingMode1 gravitates toward the values for the desktop related to this output. If this output is not part of the desktop, FindClosestMatchingMode1 uses the default desktop output to find values. If an application uses a fully unspecified display mode, FindClosestMatchingMode1 typically returns a display mode that matches the desktop settings for this output. Because unspecified members are lower priority than specified members, FindClosestMatchingMode1 resolves unspecified members later than specified members.

    +
    + + hh404603 + HRESULT IDXGIOutput1::FindClosestMatchingMode1([In] const DXGI_MODE_DESC1* pModeToMatch,[Out] DXGI_MODE_DESC1* pClosestMatch,[In, Optional] IUnknown* pConcernedDevice) + IDXGIOutput1::FindClosestMatchingMode1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Copies the display surface (front buffer) to a user-provided resource.

    +
    +

    A reference to a resource interface that represents the resource to which GetDisplaySurfaceData1 copies the display surface.

    +

    Returns one of the error codes described in the DXGI_ERROR topic.

    + +

    GetDisplaySurfaceData1 is similar to except GetDisplaySurfaceData1 takes an and takes an .

    GetDisplaySurfaceData1 returns an error if the input resource is not a 2D texture (represented by the interface) with an array size (ArraySize member of the structure) that is equal to the swap chain buffers.

    The original and the updated GetDisplaySurfaceData1 behave exactly the same. GetDisplaySurfaceData1 was required because textures with an array size equal to 2 (ArraySize = 2) do not implement .

    You can call GetDisplaySurfaceData1 only when an output is in full-screen mode. If GetDisplaySurfaceData1 succeeds, it fills the destination resource.

    Use to determine the size (width and height) of the output when you want to allocate space for the destination resource. This is true regardless of target monitor rotation. A destination resource created by a graphics component (such as Direct3D 11) must be created with CPU write permission (see ). Other surfaces can be created with CPU read-write permission ( | ). GetDisplaySurfaceData1 modifies the surface data to fit the destination resource (stretch, shrink, convert format, rotate). GetDisplaySurfaceData1 performs the stretch and shrink with point sampling.

    +
    + + hh404609 + HRESULT IDXGIOutput1::GetDisplaySurfaceData1([In] IDXGIResource* pDestination) + IDXGIOutput1::GetDisplaySurfaceData1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Creates a desktop duplication interface from the interface that represents an adapter output.

    +
    + No documentation. + No documentation. +

    DuplicateOutput returns:

    • if DuplicateOutput successfully created the desktop duplication interface.
    • E_INVALIDARG for one of the following reasons:
      • The specified device (pDevice) is invalid, was not created on the correct adapter, or was not created from (or a later version of a DXGI factory interface that inherits from ).
      • The calling application is already duplicating this desktop output.
      For more information about this error, see Remarks.
    • E_ACCESSDENIED if the application does not have access privilege to the current desktop image. For example, only an application that runs at LOCAL_SYSTEM can access the secure desktop.
    • if the created IDXGIOutputDuplication interface does not support the current desktop mode or scenario. For example, 8bpp and non-DWM desktop modes are not supported.
    • if DXGI reached the limit on the maximum number of concurrent duplication applications (default of four). Therefore, the calling application cannot create any desktop duplication interfaces until the other applications close.
    • if DuplicateOutput failed because the session is currently disconnected.
    • Other error codes are described in the DXGI_ERROR topic.
    + +

    If an application wants to duplicate the entire desktop, it must create a desktop duplication interface on each active output on the desktop. This interface does not provide an explicit way to synchronize the timing of each output image. Instead, the application must use the time stamp of each output, and then determine how to combine the images.

    For DuplicateOutput to succeed, you must create pDevice from or a later version of a DXGI factory interface that inherits from .

    If the current mode is a stereo mode, the desktop duplication interface provides the image for the left stereo image only.

    By default, only four processes can use a IDXGIOutputDuplication interface at the same time within a single session. A process can have only one desktop duplication interface on a single desktop output; however, that process can have a desktop duplication interface for each output that is part of the desktop.

    If DuplicateOutput fails with , the application can wait for system notification of desktop switches and mode changes and then call DuplicateOutput again after such a notification occurs. For more information, see information in desktop switch (EVENT_SYSTEM_DESKTOPSWITCH) and mode change notification (WM_DISPLAYCHANGE).

    +
    + + hh404600 + HRESULT IDXGIOutput1::DuplicateOutput([In] IUnknown* pDevice,[Out] void** ppOutputDuplication) + IDXGIOutput1::DuplicateOutput +
    + + + The namespace provides a managed DXGI API. + + hh404534 + DXGI + DXGI + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    The interface extends the interface by adding support for subresource surfaces and getting a handle to a shared resource.

    +
    + +

    An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call . Then, call QueryInterface on the object that returns to retrieve the interface.

    Any object that supports also supports .

    The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

    You can call the method to create an interface that refers to one subresource of a stereo resource.

    +
    + + hh404628 + IDXGISurface2 + IDXGISurface2 +
    + + +

    The interface extends the by adding support for using Windows Graphics Device Interface (GDI) to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface.

    +
    + +

    This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call . Then, call QueryInterface on the object that returns to retrieve the interface.

    Any object that supports also supports .

    The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or ID3D10Device::CreateTexture2D to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

    +
    + + ff471343 + IDXGISurface1 + IDXGISurface1 +
    + + +

    The interface implements methods for image-data objects.

    +
    + +

    An image-data object is a 2D section of memory, commonly called a surface. To get the surface from an output, call .

    The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when you call or ID3D10Device::CreateTexture2D to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to .

    +
    + + bb174565 + IDXGISurface + IDXGISurface +
    + + +

    Inherited from objects that are tied to the device so that they can retrieve a reference to it.

    +
    + + bb174528 + IDXGIDeviceSubObject + IDXGIDeviceSubObject +
    + + + Retrieves the device. + + The interface that is returned can be any interface published by the device. + The associated device. + HRESULT IDXGIDeviceSubObject::GetDevice([In] GUID* riid,[Out] void** ppDevice) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Retrieves the device.

    +
    +

    The reference id for the device.

    +

    The address of a reference to the device.

    +

    A code that indicates success or failure (see DXGI_ERROR).

    + +

    The type of interface that is returned can be any interface published by the device. For example, it could be an * called pDevice, and therefore the REFIID would be obtained by calling __uuidof(pDevice).

    +
    + + bb174529 + HRESULT IDXGIDeviceSubObject::GetDevice([In] const GUID& riid,[Out] void** ppDevice) + IDXGIDeviceSubObject::GetDevice +
    + + + Gets or sets the debug-name for this object. + + + The debug name. + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a description of the surface.

    +
    +

    A reference to the surface description (see ).

    +

    Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

    + + bb174566 + HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) + IDXGISurface::GetDesc +
    + + +

    Get a reference to the data contained in the surface, and deny GPU access to the surface.

    +
    +

    A reference to the surface data (see ).

    +

    CPU read-write flags. These flags can be combined with a logical OR.

    • - Allow CPU read access.
    • - Allow CPU write access.
    • - Discard the previous contents of a resource when it is mapped.
    +

    Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

    + +

    Use to access a surface from the CPU. To release a mapped surface (and allow GPU access) call .

    +
    + + bb174567 + HRESULT IDXGISurface::Map([Out] DXGI_MAPPED_RECT* pLockedRect,[In] unsigned int MapFlags) + IDXGISurface::Map +
    + + +

    Invalidate the reference to the surface retrieved by and re-enable GPU access to the resource.

    +
    +

    Returns if successful; otherwise, returns one of the error codes that are described in the DXGI_ERROR topic.

    + + bb174568 + HRESULT IDXGISurface::Unmap() + IDXGISurface::Unmap +
    + + + Acquires access to the surface data. + + Flags specifying CPU access permissions. + A for accessing the mapped data, or null on failure.. + + + + Acquires access to the surface data. + + Flags specifying CPU access permissions. + A for accessing the mapped data, or null on failure.. + + + + Gets a swap chain back buffer. + + The swap chain to get the buffer from. + The index of the desired buffer. + The buffer interface, or null on failure. + + + +

    Get a description of the surface.

    +
    + + bb174566 + GetDesc + GetDesc + HRESULT IDXGISurface::GetDesc([Out] DXGI_SURFACE_DESC* pDesc) +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Returns a device context (DC) that allows you to render to a Microsoft DirectX Graphics Infrastructure (DXGI) surface using Windows Graphics Device Interface (GDI).

    +
    +

    A Boolean value that specifies whether to preserve Direct3D contents in the GDI DC. TRUE directs the runtime not to preserve Direct3D contents in the GDI DC; that is, the runtime discards the Direct3D contents. guarantees that Direct3D contents are available in the GDI DC.

    +

    A reference to an handle that represents the current device context for GDI rendering.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    After you use the GetDC method to retrieve a DC, you can render to the DXGI surface by using GDI. The GetDC method readies the surface for GDI rendering and allows inter-operation between DXGI and GDI technologies.

    Keep the following in mind when using this method:

    • You must create the surface by using the flag for a surface or by using the flag for swap chains, otherwise this method fails.
    • You must release the device and call the method before you issue any new Direct3D commands.
    • This method fails if an outstanding DC has already been created by this method.
    • The format for the surface or swap chain must be or .
    • On GetDC, the render target in the output merger of the Direct3D pipeline is unbound from the surface. You must call the method on the device prior to Direct3D rendering after GDI rendering.
    • Prior to resizing buffers you must release all outstanding DCs.

    You can also call GetDC on the back buffer at index 0 of a swap chain by obtaining an from the swap chain. The following code illustrates the process.

     * g_pSwapChain = null;	
    +            * g_pSurface1 = null;	
    +            ...	
    +            //Setup the device and and swapchain	
    +            g_pSwapChain->GetBuffer(0, __uuidof(), (void**) &g_pSurface1);	
    +            g_pSurface1->GetDC( , &g_hDC );	
    +            ...      	
    +            //Draw on the DC using GDI	
    +            ...	
    +            //When finish drawing release the DC	
    +            g_pSurface1->ReleaseDC( null ); 
    +
    + + ff471345 + HRESULT IDXGISurface1::GetDC([In] BOOL Discard,[Out] HDC* phdc) + IDXGISurface1::GetDC +
    + + +

    Releases the GDI device context (DC) that is associated with the current surface and allows you to use Direct3D to render.

    +
    +

    A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you used for GDI rendering and that you want to preserve. This area is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. If you pass in null, ReleaseDC considers the whole surface as dirty. Otherwise, ReleaseDC uses the area specified by the as a performance hint to indicate what areas have been manipulated by GDI rendering.

    You can pass a reference to an empty structure (a rectangle with no position or area) if you didn't change any content.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Use the ReleaseDC method to release the DC and indicate that your application finished all GDI rendering to this surface. You must call the ReleaseDC method before you can use Direct3D to perform additional rendering.

    Prior to resizing buffers you must release all outstanding DCs.

    +
    + + ff471346 + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + IDXGISurface1::ReleaseDC +
    + + + Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. The whole surface to be considered dirty. + + + Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. + + If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + + + + Releases the GDI device context (DC) associated with the current surface and allows rendering using Direct3D. + + + Use the ReleaseDC method to release the DC and indicate that your application has finished all GDI rendering to this surface. You must call the ReleaseDC method before you perform addition rendering using Direct3D. Prior to resizing buffers all outstanding DCs must be released. + + A reference to a structure that identifies the dirty region of the surface. A dirty region is any part of the surface that you have used for GDI rendering and that you want to preserve. This is used as a performance hint to graphics subsystem in certain scenarios. Do not use this parameter to restrict rendering to the specified rectangular region. The area specified by the will be used as a performance hint to indicate what areas have been manipulated by GDI rendering. + If the method succeeds, it returns S_OK. Otherwise, it returns an HRESULT error code. + HRESULT IDXGISurface1::ReleaseDC([In, Optional] RECT* pDirtyRect) + + + + Initializes a new sub resource surface instance of class. + + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the parent resource and subresource index that support a subresource surface.

    +
    +

    The globally unique identifier () of the requested interface type.

    +

    A reference to a buffer that receives a reference to the parent resource object for the subresource surface.

    +

    A reference to a variable that receives the index of the subresource surface.

    +

    Returns if successful; otherwise, returns one of the following values:

    • E_NOINTERFACE if the object does not implement the that the riid parameter specifies.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    For subresource surface objects that the method creates, GetResource simply returns the values that were used to create the subresource surface.

    Current objects that implement are either resources or views. GetResource for these objects returns ?this? or the resource that supports the view respectively. In this situation, the subresource index is 0.

    +
    + + hh404629 + HRESULT IDXGISurface2::GetResource([In] const GUID& riid,[Out] void** ppParentResource,[Out] unsigned int* pSubresourceIndex) + IDXGISurface2::GetResource +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a handle to a shared resource. You can then use the returned handle with multiple Direct3D devices.

    +
    + +

    CreateSharedHandle only returns the NT handle when you created the resource as shared and specified that it uses NT handles (that is, you set the and flags). If you created the resource as shared and specified that it uses NT handles, you must use CreateSharedHandle to get a handle for sharing. In this situation, you can't use the method because it will fail.

    You can pass the handle that CreateSharedHandle returns in a call to the method to give a device access to a shared resource that you created on a different device.

    Because the handle that CreateSharedHandle returns is an NT handle, you can use the handle with CloseHandle, DuplicateHandle, and so on. You can call CreateSharedHandle only once for a shared resource; later calls fail. If you need more handles to the same shared resource, call DuplicateHandle. When you no longer need the shared resource handle, call CloseHandle to close the handle, in order to avoid memory leaks.

    If you pass a name for the resource to lpName when you call CreateSharedHandle to share the resource, you can subsequently pass this name in a call to the method to give another device access to the shared resource. If you use a named resource, a malicious user can use this named resource before you do and prevent your app from starting. To prevent this situation, create a randomly named resource and store the name so that it can only be obtained by an authorized user. Alternatively, you can use a file for this purpose. To limit your app to one instance per user, create a locked file in the user's profile directory.

    If you created the resource as shared and did not specify that it uses NT handles, you cannot use CreateSharedHandle to get a handle for sharing because CreateSharedHandle will fail.

    +
    + + hh404626 + IDXGIResource1 + IDXGIResource1 +
    + + +

    An interface allows resource sharing and identifies the memory that a resource resides in.

    +
    + +

    To find out what type of memory a resource is currently located in, use . To share resources between processes, use ID3D10Device::OpenSharedResource. For information about how to share resources between multiple Windows graphics APIs, including Direct3D 11, Direct2D, Direct3D 10, and Direct3D 9Ex, see Surface Sharing Between Windows Graphics APIs.

    You can retrieve the interface from any video memory resource that you create from a Direct3D 10 and later function. Any Direct3D object that supports ID3D10Resource or also supports . For example, the Direct3D 2D texture object that you create from supports . You can call QueryInterface on the 2D texture object () to retrieve the interface. For example, to retrieve the interface from the 2D texture object, use the following code.

     * pDXGIResource;	
    +            hr = g_pd3dTexture2D->QueryInterface(__uuidof(), (void **)&pDXGIResource);	
    +            
    +
    + + bb174560 + IDXGIResource + IDXGIResource +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use to get a handle for sharing. To use , you must create the resource as shared and specify that it uses NT handles (that is, you set the flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

    Gets the handle to a shared resource.

    +
    + No documentation. +

    Returns one of the DXGI_ERROR values.

    + +

    You can pass the handle that GetSharedHandle returns in a call to the method to give a device access to a shared resource that you created on a different device.

    GetSharedHandle doesn't always return a handle. GetSharedHandle only returns the handle when you created the resource as shared (that is, you set the or flag).

    The handle that GetSharedHandle returns is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on. The creator of a shared resource must not destroy the resource until all entities that opened the resource have destroyed the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

    +
    + + bb174562 + HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) + IDXGIResource::GetSharedHandle +
    + + +

    Get the expected resource usage.

    +
    +

    A reference to a usage flag (see DXGI_USAGE). For Direct3D 10, a surface can be used as a shader input or a render-target output.

    +

    Returns one of the following DXGI_ERROR.

    + + bb174563 + HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) + IDXGIResource::GetUsage +
    + + +

    Set the priority for evicting the resource from memory.

    +
    +

    The priority is one of the following values:

    ValueMeaning
    (0x28000000)

    The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

    (0x50000000)

    The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

    (0x78000000)

    The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

    (0xa0000000)

    The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

    (0xc8000000)

    The resource is evicted from memory only if there is no other way of resolving the memory requirement.

    ?

    +

    Returns one of the following DXGI_ERROR.

    + +

    The eviction priority is a memory-management variable that is used by DXGI for determining how to populate overcommitted memory.

    You can set priority levels other than the defined values when appropriate. For example, you can set a resource with a priority level of 0x78000001 to indicate that the resource is slightly above normal.

    +
    + + Bb174564 + HRESULT IDXGIResource::SetEvictionPriority([In] unsigned int EvictionPriority) + IDXGIResource::SetEvictionPriority +
    + + +

    Get the eviction priority.

    +
    +

    A reference to the eviction priority, which determines when a resource can be evicted from memory.

    The following defined values are possible.

    ValueMeaning
    (0x28000000)

    The resource is unused and can be evicted as soon as another resource requires the memory that the resource occupies.

    (0x50000000)

    The eviction priority of the resource is low. The placement of the resource is not critical, and minimal work is performed to find a location for the resource. For example, if a GPU can render with a vertex buffer from either local or non-local memory with little difference in performance, that vertex buffer is low priority. Other more critical resources (for example, a render target or texture) can then occupy the faster memory.

    (0x78000000)

    The eviction priority of the resource is normal. The placement of the resource is important, but not critical, for performance. The resource is placed in its preferred location instead of a low-priority resource.

    (0xa0000000)

    The eviction priority of the resource is high. The resource is placed in its preferred location instead of a low-priority or normal-priority resource.

    (0xc8000000)

    The resource is evicted from memory only if there is no other way of resolving the memory requirement.

    ?

    +

    Returns one of the following DXGI_ERROR.

    + +

    The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

    Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

    +
    + + bb174561 + HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) + IDXGIResource::GetEvictionPriority +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use GetSharedHandle anymore to retrieve the handle to a shared resource. Instead, use to get a handle for sharing. To use , you must create the resource as shared and specify that it uses NT handles (that is, you set the flag). We also recommend that you create shared resources that use NT handles so you can use CloseHandle, DuplicateHandle, and so on on those shared resources.]

    Gets the handle to a shared resource.

    +
    + +

    You can pass the handle that GetSharedHandle returns in a call to the method to give a device access to a shared resource that you created on a different device.

    GetSharedHandle doesn't always return a handle. GetSharedHandle only returns the handle when you created the resource as shared (that is, you set the or flag).

    The handle that GetSharedHandle returns is not an NT handle. Therefore, don't use the handle with CloseHandle, DuplicateHandle, and so on. The creator of a shared resource must not destroy the resource until all entities that opened the resource have destroyed the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device.

    +
    + + bb174562 + GetSharedHandle + GetSharedHandle + HRESULT IDXGIResource::GetSharedHandle([Out] void** pSharedHandle) +
    + + +

    Get the expected resource usage.

    +
    + + bb174563 + GetUsage + GetUsage + HRESULT IDXGIResource::GetUsage([Out] unsigned int* pUsage) +
    + + +

    Get or sets the eviction priority.

    +
    + +

    The eviction priority is a memory-management variable that is used by DXGI to determine how to manage overcommitted memory.

    Priority levels other than the defined values are used when appropriate. For example, a resource with a priority level of 0x78000001 indicates that the resource is slightly above normal.

    +
    + + bb174561 + GetEvictionPriority / SetEvictionPriority + GetEvictionPriority + HRESULT IDXGIResource::GetEvictionPriority([Out] unsigned int* pEvictionPriority) +
    + + + Creates a handle to a shared resource. You can then use the returned handle with multiple Direct3D devices. + + A reference to a structure that contains two separate but related data members: an optional security descriptor, and a Boolean value that determines whether child processes can inherit the returned handle. Set this parameter to null if you want child processes that the application might create to not inherit the handle returned by CreateSharedHandle, and if you want the resource that is associated with the returned handle to get a default security descriptor. The lpSecurityDescriptor member of the structure specifies a SECURITY_DESCRIPTOR for the resource. Set this member to null if you want the runtime to assign a default security descriptor to the resource that is associated with the returned handle. + The requested access rights to the resource. In addition to the generic access rights, DXGI defines the following values: ( 0x80000000L ) - specifies read access to the resource. ( 1 ) - specifies write access to the resource. You can combine these values by using a bitwise OR operation. + The name of the resource to share. You will need the resource name if you call the method to access the shared resource by name. If you instead call the method to access the shared resource by handle, set this parameter to null. + A reference to a variable that receives the NT HANDLE value to the resource to share. You can use this handle in calls to access the resource. + + If you created the resource as shared and specified that it uses NT handles (that is, you set the flag), you must use CreateSharedHandle to get a handle for sharing. In this situation, you cannot use the method because it will fail. Similarly, if you created the resource as shared and did not specify that it uses NT handles, you cannot use CreateSharedHandle to get a handle for sharing because CreateSharedHandle will fail.You can pass the handle that CreateSharedHandle returns in a call to the or method to give a device access to a shared resource that you created on a different device.CreateSharedHandle only returns the NT handle when you created the resource as shared (that is, you set the and flags).Because the handle that CreateSharedHandle returns is an NT handle, you can use the handle with CloseHandle, DuplicateHandle, and so on. You can call CreateSharedHandle only once for a shared resource; later calls fail. If you need more handles to the same shared resource, call DuplicateHandle. When you no longer need the shared resource handle, call CloseHandle to close the handle, in order to avoid memory leaks.The creator of a shared resource must not destroy the resource until all entities that opened the resource have destroyed the resource. The validity of the handle is tied to the lifetime of the underlying video memory. If no resource objects exist on any devices that refer to this resource, the handle is no longer valid. To extend the lifetime of the handle and video memory, you must open the shared resource on a device. + + HRESULT IDXGIResource1::CreateSharedHandle([In, Optional] const SECURITY_ATTRIBUTES* pAttributes,[In] DXGI_SHARED_RESOURCE_FLAGS dwAccess,[In, Optional] const wchar_t* name,[Out] void** pHandle) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a subresource surface object.

    +
    +

    The index of the subresource surface object to enumerate.

    +

    The address of a reference to a interface that represents the created subresource surface object at the position specified by the index parameter.

    +

    Returns if successful; otherwise, returns one of the following values:

    • if the index is out of range or if the subresource is not a valid surface.
    • E_OUTOFMEMORY if insufficient memory is available to create the subresource surface object.

    A subresource is a valid surface if the original resource would have been a valid surface had its array size been equal to 1.

    + +

    Subresource surface objects implement the interface, which inherits from and indirectly . Therefore, the GDI-interoperable methods of work if the original resource interface object was created with the GDI-interoperable flag ().

    CreateSubresourceSurface creates a subresource surface that is based on the resource interface on which CreateSubresourceSurface is called. For example, if the original resource interface object is a 2D texture, the created subresource surface is also a 2D texture.

    You can use CreateSubresourceSurface to create parts of a stereo resource so you can use Direct2D on either the left or right part of the stereo resource.

    +
    + + hh404627 + HRESULT IDXGIResource1::CreateSubresourceSurface([In] unsigned int index,[Out, Fast] IDXGISurface2** ppSurface) + IDXGIResource1::CreateSubresourceSurface +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a handle to a shared resource. You can then use the returned handle with multiple Direct3D devices.

    +
    +

    A reference to a structure that contains two separate but related data members: an optional security descriptor, and a Boolean value that determines whether child processes can inherit the returned handle.

    Set this parameter to null if you want child processes that the application might create to not inherit the handle returned by CreateSharedHandle, and if you want the resource that is associated with the returned handle to get a default security descriptor.

    The lpSecurityDescriptor member of the structure specifies a SECURITY_DESCRIPTOR for the resource. Set this member to null if you want the runtime to assign a default security descriptor to the resource that is associated with the returned handle. The ACLs in the default security descriptor for the resource come from the primary or impersonation token of the creator. For more info, see Synchronization Object Security and Access Rights.

    +

    The requested access rights to the resource. In addition to the generic access rights, DXGI defines the following values:

    • ( 0x80000000L ) - specifies read access to the resource.
    • ( 1 ) - specifies write access to the resource.

    You can combine these values by using a bitwise OR operation.

    +

    The name of the resource to share. The name is limited to MAX_PATH characters. Name comparison is case sensitive. You will need the resource name if you call the method to access the shared resource by name. If you instead call the method to access the shared resource by handle, set this parameter to null.

    If lpName matches the name of an existing resource, CreateSharedHandle fails with . This occurs because these objects share the same namespace.

    The name can have a "Global\" or "Local\" prefix to explicitly create the object in the global or session namespace. The remainder of the name can contain any character except the backslash character (\). For more information, see Kernel Object Namespaces. Fast user switching is implemented using Terminal Services sessions. Kernel object names must follow the guidelines outlined for Terminal Services so that applications can support multiple users.

    The object can be created in a private namespace. For more information, see Object Namespaces.

    +

    A reference to a variable that receives the NT HANDLE value to the resource to share. You can use this handle in calls to access the resource.

    + +

    CreateSharedHandle only returns the NT handle when you created the resource as shared and specified that it uses NT handles (that is, you set the and flags). If you created the resource as shared and specified that it uses NT handles, you must use CreateSharedHandle to get a handle for sharing. In this situation, you can't use the method because it will fail.

    You can pass the handle that CreateSharedHandle returns in a call to the method to give a device access to a shared resource that you created on a different device.

    Because the handle that CreateSharedHandle returns is an NT handle, you can use the handle with CloseHandle, DuplicateHandle, and so on. You can call CreateSharedHandle only once for a shared resource; later calls fail. If you need more handles to the same shared resource, call DuplicateHandle. When you no longer need the shared resource handle, call CloseHandle to close the handle, in order to avoid memory leaks.

    If you pass a name for the resource to lpName when you call CreateSharedHandle to share the resource, you can subsequently pass this name in a call to the method to give another device access to the shared resource. If you use a named resource, a malicious user can use this named resource before you do and prevent your app from starting. To prevent this situation, create a randomly named resource and store the name so that it can only be obtained by an authorized user. Alternatively, you can use a file for this purpose. To limit your app to one instance per user, create a locked file in the user's profile directory.

    If you created the resource as shared and did not specify that it uses NT handles, you cannot use CreateSharedHandle to get a handle for sharing because CreateSharedHandle will fail.

    +
    + + hh404626 + HRESULT IDXGIResource1::CreateSharedHandle([In, Optional] const SECURITY_ATTRIBUTES* pAttributes,[In] DXGI_SHARED_RESOURCE_FLAGS dwAccess,[In, Optional] const wchar_t* lpName,[Out] void** pHandle) + IDXGIResource1::CreateSharedHandle +
    + + +

    An interface implements a derived class for DXGI objects that produce image data.

    +
    + +

    The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

    The object returned by the Direct3D create device functions implements the interface and can be queried for the device's corresponding interface. To retrieve the interface of a Direct3D device the following code can be used.

     * pDXGIDevice;	
    +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);	
    +            
    +
    + + bb174527 + IDXGIDevice + IDXGIDevice +
    + + + Gets the residency status of an array of resources. + + + The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called. Note that the residency status will constantly change. If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the DXGI_RESIDENCY_EVICTED_TO_DISK flag. Note??This method should not be called every frame as it incurs a non-trivial amount of overhead. + + An array of interfaces. + Returns an array of flags. Each element describes the residency status for corresponding element in the ppResources argument array. + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[None] int NumResources) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Returns the adapter for the specified device.

    +
    +

    The address of an interface reference to the adapter. This parameter must not be null.

    +

    Returns if successful; otherwise, returns one of the DXGI_ERROR that indicates failure. If the pAdapter parameter is null this method returns E_INVALIDARG.

    + +

    If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

    +
    + + bb174531 + HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) + IDXGIDevice::GetAdapter +
    + + +

    Returns a surface. This method is used internally and you should not call it directly in your application.

    +
    +

    A reference to a structure that describes the surface.

    +

    The number of surfaces to create.

    +

    A DXGI_USAGE flag that specifies how the surface is expected to be used.

    +

    An optional reference to a structure that contains shared resource information for opening views of such resources.

    +

    The address of an interface reference to the first created surface.

    +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    + +

    The CreateSurface method creates a buffer to exchange data between one or more devices. It is used internally, and you should not directly call it.

    The runtime automatically creates an interface when it creates a Direct3D resource object that represents a surface. For example, the runtime creates an interface when it calls or ID3D10Device::CreateTexture2D to create a 2D texture. To retrieve the interface that represents the 2D texture surface, call ID3D11Texture2D::QueryInterface or ID3D10Texture2D::QueryInterface. In this call, you must pass the identifier of . If the 2D texture has only a single MIP-map level and does not consist of an array of textures, QueryInterface succeeds and returns a reference to the interface reference. Otherwise, QueryInterface fails and does not return the reference to . +

    +
    + + bb174530 + HRESULT IDXGIDevice::CreateSurface([In] const DXGI_SURFACE_DESC* pDesc,[In] unsigned int NumSurfaces,[In] unsigned int Usage,[In, Optional] const DXGI_SHARED_RESOURCE* pSharedResource,[Out] IDXGISurface** ppSurface) + IDXGIDevice::CreateSurface +
    + + +

    Gets the residency status of an array of resources.

    +
    +

    An array of interfaces.

    +

    An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

    +

    The number of resources in the ppResources argument array and pResidencyStatus argument array.

    +

    Returns if successfull; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

    + +

    The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called. Note that the residency status will constantly change.

    If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

    Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

    +
    + + bb174533 + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) + IDXGIDevice::QueryResourceResidency +
    + + +

    Gets the residency status of an array of resources.

    +
    +

    An array of interfaces.

    +

    An array of flags. Each element describes the residency status for corresponding element in the ppResources argument array.

    +

    The number of resources in the ppResources argument array and pResidencyStatus argument array.

    +

    Returns if successfull; otherwise, returns , E_INVALIDARG, or E_POINTER (see WinError.h for more information).

    + +

    The information returned by the pResidencyStatus argument array describes the residency status at the time that the QueryResourceResidency method was called. Note that the residency status will constantly change.

    If you call the QueryResourceResidency method during a device removed state, the pResidencyStatus argument will return the flag.

    Note??This method should not be called every frame as it incurs a non-trivial amount of overhead.

    +
    + + bb174533 + HRESULT IDXGIDevice::QueryResourceResidency([In, Buffer] const IUnknown** ppResources,[Out, Buffer] DXGI_RESIDENCY* pResidencyStatus,[In] unsigned int NumResources) + IDXGIDevice::QueryResourceResidency +
    + + +

    Sets the GPU thread priority.

    +
    +

    A value that specifies the required GPU thread priority. This value must be between -7 and 7, inclusive, where 0 represents normal priority.

    +

    Return if successful; otherwise, returns E_INVALIDARG if the Priority parameter is invalid.

    + +

    The values for the Priority parameter function as follows:

    • Positive values increase the likelihood that the GPU scheduler will grant GPU execution cycles to the device when rendering.
    • Negative values lessen the likelihood that the device will receive GPU execution cycles when devices compete for them.
    • The device is guaranteed to receive some GPU execution cycles at all settings.

    To use the SetGPUThreadPriority method, you should have a comprehensive understanding of GPU scheduling. You should profile your application to ensure that it behaves as intended. If used inappropriately, the SetGPUThreadPriority method can impede rendering speed and result in a poor user experience.

    +
    + + bb174534 + HRESULT IDXGIDevice::SetGPUThreadPriority([In] int Priority) + IDXGIDevice::SetGPUThreadPriority +
    + + +

    Gets the GPU thread priority.

    +
    +

    A reference to a variable that receives a value that indicates the current GPU thread priority. The value will be between -7 and 7, inclusive, where 0 represents normal priority.

    +

    Return if successful; otherwise, returns E_POINTER if the pPriority parameter is null.

    + + Bb174532 + HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) + IDXGIDevice::GetGPUThreadPriority +
    + + +

    Returns the adapter for the specified device.

    +
    + +

    If the GetAdapter method succeeds, the reference count on the adapter interface will be incremented. To avoid a memory leak, be sure to release the interface when you are finished using it.

    +
    + + bb174531 + GetAdapter + GetAdapter + HRESULT IDXGIDevice::GetAdapter([Out] IDXGIAdapter** pAdapter) +
    + + +

    Gets or sets the GPU thread priority.

    +
    + + Bb174532 + GetGPUThreadPriority / SetGPUThreadPriority + GetGPUThreadPriority + HRESULT IDXGIDevice::GetGPUThreadPriority([Out] int* pPriority) +
    + + +

    An interface implements methods for generating DXGI objects (which handle full screen transitions).

    +
    + +

    Create a factory by calling CreateDXGIFactory.

    Because a Direct3D device can be created without creating a swap chain, you might need to retrieve the factory that is used to create the device in order to create a swap chain. + This can be accomplished by requesting the interface from the Direct3D device and then using to locate + the factory. The following code illustrates the process.

     * pDXGIDevice;	
    +            hr = g_pd3dDevice->QueryInterface(__uuidof(), (void **)&pDXGIDevice);  * pDXGIAdapter;	
    +            hr = pDXGIDevice->GetParent(__uuidof(), (void **)&pDXGIAdapter);  * pIDXGIFactory;	
    +            pDXGIAdapter->GetParent(__uuidof(), (void **)&pIDXGIFactory);	
    +            

    See for a diagram of the relationship between DXGI objects.

    +
    + + bb174535 + IDXGIFactory + IDXGIFactory +
    + + + Gets both adapters (video cards) with or without outputs. + + The index of the adapter to enumerate. + a reference to an interface at the position specified by the Adapter parameter + + When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters then returns other adapters with outputs. + + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + + Return the number of available adapters from this factory. + + The number of adapters + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Enumerates the adapters (video cards).

    +
    +

    The index of the adapter to enumerate.

    +

    The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

    +

    Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

    + +

    When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

    When the EnumAdapters method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

    EnumAdapters first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters then returns other adapters with outputs.

    +
    + + bb174538 + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + IDXGIFactory::EnumAdapters +
    + + +

    Allows DXGI to monitor an application's message queue for the alt-enter key sequence (which causes the application to switch from windowed to full screen or vice versa).

    +
    +

    The handle of the window that is to be monitored. This parameter can be null; but only if the flags are also 0.

    +

    One or more of the following values:

    • - Prevent DXGI from monitoring an applications message queue; this makes DXGI unable to respond to mode changes.
    • - Prevent DXGI from responding to an alt-enter sequence.
    • - Prevent DXGI from responding to a print-screen key.
    +

    if WindowHandle is invalid, or E_OUTOFMEMORY.

    + +

    The combination of WindowHandle and Flags informs DXGI to stop monitoring window messages for the previously-associated window.

    If the application switches to full-screen mode, DXGI will choose a full-screen resolution to be the smallest supported resolution that is larger or the same size as the current back buffer size.

    Applications can make some changes to make the transition from windowed to full screen more efficient. For example, on a WM_SIZE message, the application should release any outstanding swap-chain back buffers, call , then re-acquire the back buffers from the swap chain(s). This gives the swap chain(s) an opportunity to resize the back buffers, and/or recreate them to enable full-screen flipping operation. If the application does not perform this sequence, DXGI will still make the full-screen/windowed transition, but may be forced to use a stretch operation (since the back buffers may not be the correct size), which may be less efficient. Even if a stretch is not required, presentation may not be optimal because the back buffers might not be directly interchangeable with the front buffer. Thus, a call to ResizeBuffers on WM_SIZE is always recommended, since WM_SIZE is always sent during a fullscreen transition.

    While windowed, the application can, if it chooses, restrict the size of its window's client area to sizes to which it is comfortable rendering. A fully flexible application would make no such restriction, but UI elements or other design considerations can, of course, make this flexibility untenable. If the application further chooses to restrict its window's client area to just those that match supported full-screen resolutions, the application can field WM_SIZING, then check against . If a matching mode is found, allow the resize. (The can be retrieved from . Absent subsequent changes to desktop topology, this will be the same output that will be chosen when alt-enter is fielded and fullscreen mode is begun for that swap chain.)

    Applications that want to handle mode changes or Alt+Enter themselves should call MakeWindowAssociation with the flag after swap chain creation. The WindowHandle argument, if non-null, specifies that the application message queues will not be handled by the DXGI runtime for all swap chains of a particular target . Calling MakeWindowAssociation with the flag after swapchain creation ensures that DXGI will not interfere with application's handling of window mode changes or Alt+Enter.

    Notes for Metro style apps

    If a Metro style app calls MakeWindowAssociation, it fails with .

    A Microsoft Win32 application can use MakeWindowAssociation to control full-screen transitions through the Alt+Enter key combination and print screen behavior for full screen. For Metro style apps, because DXGI cannot perform full-screen transitions, Metro style app have no way to control full-screen transitions.

    +
    + + bb174540 + HRESULT IDXGIFactory::MakeWindowAssociation([In] HWND WindowHandle,[In] DXGI_MWA_FLAGS Flags) + IDXGIFactory::MakeWindowAssociation +
    + + +

    Get the window through which the user controls the transition to and from full screen.

    +
    +

    A reference to a window handle.

    + + Notes for Metro style apps

    If a Metro style app calls GetWindowAssociation, it fails with .

    +
    + + Bb174539 + HRESULT IDXGIFactory::GetWindowAssociation([Out] HWND* pWindowHandle) + IDXGIFactory::GetWindowAssociation +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use CreateSwapChain anymore to create a swap chain. Instead, use CreateSwapChainForHwnd, CreateSwapChainForImmersiveWindow, or CreateSwapChainForCompositionSurface depending on how you want to create the swap chain.]

    Creates a swap chain.

    +
    + No documentation. + No documentation. + No documentation. +

    if pDesc or ppSwapChain is null, if you request full-screen mode and it is unavailable, or E_OUTOFMEMORY. Other error codes defined by the type of device passed in may also be returned.

    + +

    If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and will be returned.

    If the buffer width or the buffer height is zero, the sizes will be inferred from the output window size in the swap-chain description.

    Because the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure that the sizes match:

    • Create a windowed swap chain and then set it full-screen using .
    • Save a reference to the swap chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen.

    If the swap chain is in full-screen mode, before you release it you must use SetFullscreenState to switch it to windowed mode. For more information about releasing a swap chain, see the "Destroying a Swap Chain" section of DXGI Overview.

    You can specify and values in the swap-chain description that pDesc points to. These values allow you to use features like flip-model presentation and content protection by using pre-Windows Developer Preview APIs.

    However, to use stereo presentation and to change resize behavior for the flip model, applications must use the method. Otherwise, the back-buffer contents implicitly scale to fit the presentation target size; that is, you can't turn off scaling.

    Notes for Metro style apps

    If a Metro style app calls CreateSwapChain with full screen specified, CreateSwapChain fails.

    Metro style apps call the IDXGIFactory2::CreateSwapChainForImmersiveWindow method to create a swap chain.

    +
    + + bb174537 + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) + IDXGIFactory::CreateSwapChain +
    + + +

    Create an adapter interface that represents a software adapter.

    +
    +

    Handle to the software adapter's dll. HMODULE can be obtained with GetModuleHandle or LoadLibrary.

    +

    Address of a reference to an adapter (see ).

    + +

    A software adapter is a DLL that implements the entirety of a device driver interface, plus emulation, if necessary, of kernel-mode graphics components for Windows. Details on implementing a software adapter can be found in the Windows Vista Driver Development Kit. This is a very complex development task, and is not recommended for general readers.

    Calling this method will increment the module's reference count by one. The reference count can be decremented by calling FreeLibrary.

    The typical calling scenario is to call LoadLibrary, pass the handle to CreateSoftwareAdapter, then immediately call FreeLibrary on the DLL and forget the DLL's HMODULE. Since the software adapter calls FreeLibrary when it is destroyed, the lifetime of the DLL will now be owned by the adapter, and the application is free of any further consideration of its lifetime.

    +
    + + bb174536 + HRESULT IDXGIFactory::CreateSoftwareAdapter([In] HINSTANCE Module,[Out] IDXGIAdapter** ppAdapter) + IDXGIFactory::CreateSoftwareAdapter +
    + + + Return an array of available from this factory. + + HRESULT IDXGIFactory::EnumAdapters([In] unsigned int Adapter,[Out] IDXGIAdapter** ppAdapter) + + + +

    The interface implements methods for generating DXGI objects.

    +
    + +

    This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    To create a factory, call the CreateDXGIFactory1 function.

    +
    + + ff471335 + IDXGIFactory1 + IDXGIFactory1 +
    + + + Default Constructor for Factory1. + + + + + Gets both adapters (video cards) with or without outputs. + + The index of the adapter to enumerate. + a reference to an interface at the position specified by the Adapter parameter + + This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.EnumAdapters1 first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs. + + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + + Return the number of available adapters from this factory. + + The number of adapters + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Enumerates both adapters (video cards) with or without outputs.

    +
    +

    The index of the adapter to enumerate.

    +

    The address of a reference to an interface at the position specified by the Adapter parameter. This parameter must not be null.

    +

    Returns if successful; otherwise, returns if the index is greater than or equal to the number of adapters in the local system, or if ppAdapter parameter is null.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    When you create a factory, the factory enumerates the set of adapters that are available in the system. Therefore, if you change the adapters in a system, you must destroy and recreate the object. The number of adapters in a system changes when you add or remove a display card, or dock or undock a laptop.

    When the EnumAdapters1 method succeeds and fills the ppAdapter parameter with the address of the reference to the adapter interface, EnumAdapters1 increments the adapter interface's reference count. When you finish using the adapter interface, call the Release method to decrement the reference count before you destroy the reference.

    EnumAdapters1 first returns the local adapter with the output on which the desktop primary is displayed. This adapter corresponds with an index of zero. EnumAdapters1 next returns other adapters with outputs. EnumAdapters1 finally returns adapters without outputs.

    +
    + + ff471336 + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + IDXGIFactory1::EnumAdapters1 +
    + + +

    Informs an application of the possible need to re-enumerate adapters.

    +
    +

    , if a new adapter is becoming available or the current adapter is going away. TRUE, no adapter changes.

    IsCurrent returns to inform the calling application to re-enumerate adapters.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    +
    + + ff471337 + BOOL IDXGIFactory1::IsCurrent() + IDXGIFactory1::IsCurrent +
    + + + Return an array of available from this factory. + + HRESULT IDXGIFactory1::EnumAdapters1([In] unsigned int Adapter,[Out] IDXGIAdapter1** ppAdapter) + + + +

    Informs an application of the possible need to re-enumerate adapters.

    +
    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    +
    + + ff471337 + IsCurrent + IsCurrent + BOOL IDXGIFactory1::IsCurrent() +
    + + + Helper to use with . + + + + + Calculates the size of a in bytes. + + The dxgi format. + size of in bytes + + + + Calculates the size of a in bits. + + The dxgi format. + size of in bits + + + + Returns true if the is valid. + + A format to validate + True if the is valid. + + + + Returns true if the is a compressed format. + + The format to check for compressed. + True if the is a compressed format + + + + Determines whether the specified is packed. + + The DXGI Format. + true if the specified is packed; otherwise, false. + + + + Determines whether the specified is video. + + The . + true if the specified is video; otherwise, false. + + + + Determines whether the specified is a SRGB format. + + The . + true if the specified is a SRGB format; otherwise, false. + + + + Determines whether the specified is typeless. + + The . + true if the specified is typeless; otherwise, false. + + + + Computes the scanline count (number of scanlines). + + The . + The height. + The scanline count. + + + + Static initializer to speed up size calculation (not sure the JIT is enough "smart" for this kind of thing). + + + + +

    Identifies the type of DXGI adapter.

    +
    + +

    The enumerated type is used by the Flags member of the or structure to identify the type of DXGI adapter.

    +
    + + ff471327 + DXGI_ADAPTER_FLAG + DXGI_ADAPTER_FLAG +
    + + +

    Specifies no flags.

    +
    + + ff471327 + DXGI_ADAPTER_FLAG_NONE + DXGI_ADAPTER_FLAG_NONE +
    + + +

    Value always set to 0. This flag is reserved.

    +
    + + ff471327 + DXGI_ADAPTER_FLAG_REMOTE + DXGI_ADAPTER_FLAG_REMOTE +
    + + +

    Specifies a software adapter.

    Direct3D 11:??This enumeration value is supported starting with Windows Developer Preview.
    +
    + + ff471327 + DXGI_ADAPTER_FLAG_SOFTWARE + DXGI_ADAPTER_FLAG_SOFTWARE +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the alpha value, transparency behavior, of a surface.

    +
    + +

    For more information about alpha mode, see D2D1_ALPHA_MODE.

    +
    + + hh404496 + DXGI_ALPHA_MODE + DXGI_ALPHA_MODE +
    + + +

    Indicates that the transparency behavior is not specified.

    +
    + + hh404496 + DXGI_ALPHA_MODE_UNSPECIFIED + DXGI_ALPHA_MODE_UNSPECIFIED +
    + + +

    Indicates that the transparency behavior is premultiplied. Each color is first scaled by the alpha value. The alpha value itself is the same in both straight and premultiplied alpha. Typically, no color channel value is greater than the alpha channel value. If a color channel value in a premultiplied format is greater than the alpha channel, the standard source-over blending math results in an additive blend.

    +
    + + hh404496 + DXGI_ALPHA_MODE_PREMULTIPLIED + DXGI_ALPHA_MODE_PREMULTIPLIED +
    + + +

    Indicates that the transparency behavior is not premultiplied. The alpha channel indicates the transparency of the color.

    +
    + + hh404496 + DXGI_ALPHA_MODE_STRAIGHT + DXGI_ALPHA_MODE_STRAIGHT +
    + + +

    Indicates to ignore the transparency behavior.

    +
    + + hh404496 + DXGI_ALPHA_MODE_IGNORE + DXGI_ALPHA_MODE_IGNORE +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the granularity at which the graphics processing unit (GPU) can be preempted from performing its current compute task.

    +
    + +

    You call the method to retrieve the granularity level at which the GPU can be preempted from performing its current compute task. The operating system specifies the compute granularity level in the ComputePreemptionGranularity member of the structure.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_GRANULARITY + DXGI_COMPUTE_PREEMPTION_GRANULARITY +
    + + +

    Indicates the preemption granularity as a compute packet.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY + DXGI_COMPUTE_PREEMPTION_DMA_BUFFER_BOUNDARY +
    + + +

    Indicates the preemption granularity as a dispatch (for example, a call to the method). A dispatch is a part of a compute packet.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY + DXGI_COMPUTE_PREEMPTION_DISPATCH_BOUNDARY +
    + + +

    Indicates the preemption granularity as a thread group. A thread group is a part of a dispatch.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY + DXGI_COMPUTE_PREEMPTION_THREAD_GROUP_BOUNDARY +
    + + +

    Indicates the preemption granularity as a thread in a thread group. A thread is a part of a thread group.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY + DXGI_COMPUTE_PREEMPTION_THREAD_BOUNDARY +
    + + +

    Indicates the preemption granularity as a compute instruction in a thread.

    +
    + + hh404499 + DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY + DXGI_COMPUTE_PREEMPTION_INSTRUCTION_BOUNDARY +
    + + + No documentation. + + + DXGI_ENUM_MODES_FLAGS + DXGI_ENUM_MODES_FLAGS + + + + No documentation. + + + DXGI_ENUM_MODES_INTERLACED + DXGI_ENUM_MODES_INTERLACED + + + + No documentation. + + + DXGI_ENUM_MODES_SCALING + DXGI_ENUM_MODES_SCALING + + + + No documentation. + + + DXGI_ENUM_MODES_STEREO + DXGI_ENUM_MODES_STEREO + + + + No documentation. + + + DXGI_ENUM_MODES_DISABLED_STEREO + DXGI_ENUM_MODES_DISABLED_STEREO + + + +

    Flags that indicate how the back buffers should be rotated to fit the physical rotation of a monitor.

    +
    + + bb173065 + DXGI_MODE_ROTATION + DXGI_MODE_ROTATION +
    + + +

    Unspecified rotation.

    +
    + + bb173065 + DXGI_MODE_ROTATION_UNSPECIFIED + DXGI_MODE_ROTATION_UNSPECIFIED +
    + + +

    Specifies no rotation.

    +
    + + bb173065 + DXGI_MODE_ROTATION_IDENTITY + DXGI_MODE_ROTATION_IDENTITY +
    + + +

    Specifies 90 degrees of rotation.

    +
    + + bb173065 + DXGI_MODE_ROTATION_ROTATE90 + DXGI_MODE_ROTATION_ROTATE90 +
    + + +

    Specifies 180 degrees of rotation.

    +
    + + bb173065 + DXGI_MODE_ROTATION_ROTATE180 + DXGI_MODE_ROTATION_ROTATE180 +
    + + +

    Specifies 270 degrees of rotation.

    +
    + + bb173065 + DXGI_MODE_ROTATION_ROTATE270 + DXGI_MODE_ROTATION_ROTATE270 +
    + + +

    Flags indicating how an image is stretched to fit a given monitor's resolution.

    +
    + + bb173066 + DXGI_MODE_SCALING + DXGI_MODE_SCALING +
    + + +

    Unspecified scaling.

    +
    + + bb173066 + DXGI_MODE_SCALING_UNSPECIFIED + DXGI_MODE_SCALING_UNSPECIFIED +
    + + +

    Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).

    +
    + + bb173066 + DXGI_MODE_SCALING_CENTERED + DXGI_MODE_SCALING_CENTERED +
    + + +

    Specifies stretched scaling.

    +
    + + bb173066 + DXGI_MODE_SCALING_STRETCHED + DXGI_MODE_SCALING_STRETCHED +
    + + +

    Flags indicating the method the raster uses to create an image on a surface.

    +
    + + bb173067 + DXGI_MODE_SCANLINE_ORDER + DXGI_MODE_SCANLINE_ORDER +
    + + +

    Scanline order is unspecified.

    +
    + + bb173067 + DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED + DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED +
    + + +

    The image is created from the first scanline to the last without skipping any.

    +
    + + bb173067 + DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE + DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE +
    + + +

    The image is created beginning with the upper field.

    +
    + + bb173067 + DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST + DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST +
    + + +

    The image is created beginning with the lower field.

    +
    + + bb173067 + DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST + DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST +
    + + +

    Status codes that can be returned by DXGI functions.

    +
    + + cc308061 + DXGI_STATUS + DXGI_STATUS +
    + + + No documentation. + + + DXGI_STATUS_OCCLUDED + DXGI_STATUS_OCCLUDED + + + + No documentation. + + + DXGI_STATUS_CLIPPED + DXGI_STATUS_CLIPPED + + + + No documentation. + + + DXGI_STATUS_NO_REDIRECTION + DXGI_STATUS_NO_REDIRECTION + + + + No documentation. + + + DXGI_STATUS_NO_DESKTOP_ACCESS + DXGI_STATUS_NO_DESKTOP_ACCESS + + + + No documentation. + + + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE + DXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE + + + + No documentation. + + + DXGI_STATUS_MODE_CHANGED + DXGI_STATUS_MODE_CHANGED + + + + No documentation. + + + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS + DXGI_STATUS_MODE_CHANGE_IN_PROGRESS + + + + No documentation. + + + DXGI_STATUS_UNOCCLUDED + DXGI_STATUS_UNOCCLUDED + + + + No documentation. + + + DXGI_STATUS_DDA_WAS_STILL_DRAWING + DXGI_STATUS_DDA_WAS_STILL_DRAWING + + + +

    Resource data formats which includes fully-typed and typeless formats. There is a list of format modifiers at the bottom of the page, that more fully describes each format type.

    +
    + +

    A few formats have additional restrictions.

    1. A resource declared with the DXGI_FORMAT_R32G32B32 family of formats cannot be used simultaneously for vertex and texture data. That is, you may not create a buffer resource with the DXGI_FORMAT_R32G32B32 family of formats that uses any of the following bind flags: D3D10_BIND_VERTEX_BUFFER, D3D10_BIND_INDEX_BUFFER, D3D10_BIND_CONSTANT_BUFFER, or D3D10_BIND_STREAM_OUTPUT (see D3D10_BIND_FLAG).
    2. is designed specifically for text filtering, and must be used with a format-specific, configurable 8x8 filter mode. When calling an HLSL sampling function using this format, the address offset parameter must be set to (0,0).
    3. A resource using a sub-sampled format (such as DXGI_FORMAT_R8G8_B8G8) must have a size that is a multiple of 2 in the x dimension.
    4. Format is not available in Direct3D 10 and Direct3D 10.1

    The following topics provide lists of the formats that particular hardware feature levels support:

    • Hardware Support for Direct3D 11.1 Formats
    • Hardware Support for Direct3D 11 Formats
    • Hardware Support for Direct3D 10.1 Formats
    • Hardware Support for Direct3D 10 Formats
    • Hardware Support for Direct3D 10Level9 Formats

    For a list of the DirectXMath types that map to values, see DirectXMath Library Internals.

    Format Modifiers

    Each enumeration value contains a format modifier which describes the data type.

    Format ModifiersDescription
    _FLOATA floating-point value; 32-bit floating-point formats use IEEE 754 single-precision (s23e8 format): sign bit, 8-bit biased (127) exponent, and 23-bit mantissa. 16-bit floating-point formats use half-precision (s10e5 format): sign bit, 5-bit biased (15) exponent, and 10-bit mantissa.
    _SINTTwo's complement signed integer. For example, a 3-bit SINT represents the values -4, -3, -2, -1, 0, 1, 2, 3.
    _SNORMSigned normalized integer; which is interpreted in a resource as a signed integer, and is interpreted in a shader as a signed normalized floating-point value in the range [-1, 1]. For an 2's complement number, the maximum value is 1.0f (a 5-bit value 01111 maps to 1.0f), and the minimum value is -1.0f (a 5-bit value 10000 maps to -1.0f). In addition, the second-minimum number maps to -1.0f (a 5-bit value 10001 maps to -1.0f). The resulting integer representations are evenly spaced floating-point values in the range (-1.0f...0.0f), and also a complementary set of representations for numbers in the range (0.0f...1.0f).
    _SRGBStandard RGB data, which roughly displays colors in a linear ramp of luminosity levels such that an average observer, under average viewing conditions, can view them on an average display.

    All 0's maps to 0.0f, and all 1's maps to 1.0f. The sequence of unsigned integer encodings between all 0's and all 1's represent a nonlinear progression in the floating-point interpretation of the numbers between 0.0f to 1.0f. For more detail, see the SRGB color standard, IEC 61996-2-1, at IEC (International Electrotechnical Commission).

    Conversion to or from sRGB space is automatically done by D3DX10 or D3DX9 texture-load functions. If the format has an alpha channel, the alpha data is also stored in sRGB color space.
    _TYPELESSTypeless data, with a defined number of bits. Typeless formats are designed for creating typeless resources; that is, a resource whose size is known, but whose data type is not yet fully defined. When a typeless resource is bound to a shader, the application or shader must resolve the format type (which must match the number of bits per component in the typeless format).

    A typeless format contains one or more subformats; each subformat resolves the data type. For example, in the R32G32B32 group, which defines types for three-component 96-bit data, there is one typeless format and three fully typed subformats.

     , , , ,	
    +            
    _UINTUnsigned integer. For instance, a 3-bit UINT represents the values 0, 1, 2, 3, 4, 5, 6, 7.
    _UNORMUnsigned normalized integer; which is interpreted in a resource as an unsigned integer, and is interpreted in a shader as an unsigned normalized floating-point value in the range [0, 1]. All 0's maps to 0.0f, and all 1's maps to 1.0f. A sequence of evenly spaced floating-point values from 0.0f to 1.0f are represented. For instance, a 2-bit UNORM represents 0.0f, 1/3, 2/3, and 1.0f.

    ?

    New Resource Formats

    Direct3D 10 offers new data compression formats for compressing high-dynamic range (HDR) lighting data, normal maps and heightfields to a fraction of their original size. These compression types include:

    • Shared-Exponent high-dynamic range (HDR) format (RGBE)
    • New Block-Compressed 1-2 channel UNORM/SNORM formats

    The block compression formats can be used for any of the 2D or 3D texture types ( Texture2D, Texture2DArray, Texture3D, or TextureCube) including mipmap surfaces. The block compression techniques require texture dimensions to be a multiple of 4 (since the implementation compresses on blocks of 4x4 texels). In the texture sampler, compressed formats are always decompressed before texture filtering.

    +
    + + bb173059 + DXGI_FORMAT + DXGI_FORMAT +
    + + +

    The format is not known.

    +
    + + bb173059 + DXGI_FORMAT_UNKNOWN + DXGI_FORMAT_UNKNOWN +
    + + +

    A four-component, 128-bit typeless format that supports 32 bits per channel including alpha. 1

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32A32_TYPELESS + DXGI_FORMAT_R32G32B32A32_TYPELESS +
    + + +

    A four-component, 128-bit floating-point format that supports 32 bits per channel including alpha. 1

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32A32_FLOAT + DXGI_FORMAT_R32G32B32A32_FLOAT +
    + + +

    A four-component, 128-bit unsigned-integer format that supports 32 bits per channel including alpha. 1

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32A32_UINT + DXGI_FORMAT_R32G32B32A32_UINT +
    + + +

    A four-component, 128-bit signed-integer format that supports 32 bits per channel including alpha. 1

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32A32_SINT + DXGI_FORMAT_R32G32B32A32_SINT +
    + + +

    A three-component, 96-bit typeless format that supports 32 bits per color channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32_TYPELESS + DXGI_FORMAT_R32G32B32_TYPELESS +
    + + +

    A three-component, 96-bit floating-point format that supports 32 bits per color channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32_FLOAT + DXGI_FORMAT_R32G32B32_FLOAT +
    + + +

    A three-component, 96-bit unsigned-integer format that supports 32 bits per color channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32_UINT + DXGI_FORMAT_R32G32B32_UINT +
    + + +

    A three-component, 96-bit signed-integer format that supports 32 bits per color channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32B32_SINT + DXGI_FORMAT_R32G32B32_SINT +
    + + +

    A four-component, 64-bit typeless format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_TYPELESS + DXGI_FORMAT_R16G16B16A16_TYPELESS +
    + + +

    A four-component, 64-bit floating-point format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_FLOAT + DXGI_FORMAT_R16G16B16A16_FLOAT +
    + + +

    A four-component, 64-bit unsigned-normalized-integer format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_UNORM + DXGI_FORMAT_R16G16B16A16_UNORM +
    + + +

    A four-component, 64-bit unsigned-integer format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_UINT + DXGI_FORMAT_R16G16B16A16_UINT +
    + + +

    A four-component, 64-bit signed-normalized-integer format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_SNORM + DXGI_FORMAT_R16G16B16A16_SNORM +
    + + +

    A four-component, 64-bit signed-integer format that supports 16 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R16G16B16A16_SINT + DXGI_FORMAT_R16G16B16A16_SINT +
    + + +

    A two-component, 64-bit typeless format that supports 32 bits for the red channel and 32 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32_TYPELESS + DXGI_FORMAT_R32G32_TYPELESS +
    + + +

    A two-component, 64-bit floating-point format that supports 32 bits for the red channel and 32 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32_FLOAT + DXGI_FORMAT_R32G32_FLOAT +
    + + +

    A two-component, 64-bit unsigned-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32_UINT + DXGI_FORMAT_R32G32_UINT +
    + + +

    A two-component, 64-bit signed-integer format that supports 32 bits for the red channel and 32 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R32G32_SINT + DXGI_FORMAT_R32G32_SINT +
    + + +

    A two-component, 64-bit typeless format that supports 32 bits for the red channel, 8 bits for the green channel, and 24 bits are unused.

    +
    + + bb173059 + DXGI_FORMAT_R32G8X24_TYPELESS + DXGI_FORMAT_R32G8X24_TYPELESS +
    + + +

    A 32-bit floating-point component, and two unsigned-integer components (with an additional 32 bits). This format supports 32-bit depth, 8-bit stencil, and 24 bits are unused.

    +
    + + bb173059 + DXGI_FORMAT_D32_FLOAT_S8X24_UINT + DXGI_FORMAT_D32_FLOAT_S8X24_UINT +
    + + +

    A 32-bit floating-point component, and two typeless components (with an additional 32 bits). This format supports 32-bit red channel, 8 bits are unused, and 24 bits are unused.

    +
    + + bb173059 + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS + DXGI_FORMAT_R32_FLOAT_X8X24_TYPELESS +
    + + +

    A 32-bit typeless component, and two unsigned-integer components (with an additional 32 bits). This format has 32 bits unused, 8 bits for green channel, and 24 bits are unused.

    +
    + + bb173059 + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT + DXGI_FORMAT_X32_TYPELESS_G8X24_UINT +
    + + +

    A four-component, 32-bit typeless format that supports 10 bits for each color and 2 bits for alpha.

    +
    + + bb173059 + DXGI_FORMAT_R10G10B10A2_TYPELESS + DXGI_FORMAT_R10G10B10A2_TYPELESS +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format that supports 10 bits for each color and 2 bits for alpha.

    +
    + + bb173059 + DXGI_FORMAT_R10G10B10A2_UNORM + DXGI_FORMAT_R10G10B10A2_UNORM +
    + + +

    A four-component, 32-bit unsigned-integer format that supports 10 bits for each color and 2 bits for alpha.

    +
    + + bb173059 + DXGI_FORMAT_R10G10B10A2_UINT + DXGI_FORMAT_R10G10B10A2_UINT +
    + + +

    Three partial-precision floating-point numbers encoded into a single 32-bit value (a variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There are no sign bits, and there is a 5-bit biased (15) exponent for each channel, 6-bit mantissa for R and G, and a 5-bit mantissa for B, as shown in the following illustration.

    +
    + + bb173059 + DXGI_FORMAT_R11G11B10_FLOAT + DXGI_FORMAT_R11G11B10_FLOAT +
    + + +

    A four-component, 32-bit typeless format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_TYPELESS + DXGI_FORMAT_R8G8B8A8_TYPELESS +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_UNORM + DXGI_FORMAT_R8G8B8A8_UNORM +
    + + +

    A four-component, 32-bit unsigned-normalized integer sRGB format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB + DXGI_FORMAT_R8G8B8A8_UNORM_SRGB +
    + + +

    A four-component, 32-bit unsigned-integer format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_UINT + DXGI_FORMAT_R8G8B8A8_UINT +
    + + +

    A four-component, 32-bit signed-normalized-integer format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_SNORM + DXGI_FORMAT_R8G8B8A8_SNORM +
    + + +

    A four-component, 32-bit signed-integer format that supports 8 bits per channel including alpha.

    +
    + + bb173059 + DXGI_FORMAT_R8G8B8A8_SINT + DXGI_FORMAT_R8G8B8A8_SINT +
    + + +

    A two-component, 32-bit typeless format that supports 16 bits for the red channel and 16 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_TYPELESS + DXGI_FORMAT_R16G16_TYPELESS +
    + + +

    A two-component, 32-bit floating-point format that supports 16 bits for the red channel and 16 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_FLOAT + DXGI_FORMAT_R16G16_FLOAT +
    + + +

    A two-component, 32-bit unsigned-normalized-integer format that supports 16 bits each for the green and red channels.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_UNORM + DXGI_FORMAT_R16G16_UNORM +
    + + +

    A two-component, 32-bit unsigned-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_UINT + DXGI_FORMAT_R16G16_UINT +
    + + +

    A two-component, 32-bit signed-normalized-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_SNORM + DXGI_FORMAT_R16G16_SNORM +
    + + +

    A two-component, 32-bit signed-integer format that supports 16 bits for the red channel and 16 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R16G16_SINT + DXGI_FORMAT_R16G16_SINT +
    + + +

    A single-component, 32-bit typeless format that supports 32 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R32_TYPELESS + DXGI_FORMAT_R32_TYPELESS +
    + + +

    A single-component, 32-bit floating-point format that supports 32 bits for depth.

    +
    + + bb173059 + DXGI_FORMAT_D32_FLOAT + DXGI_FORMAT_D32_FLOAT +
    + + +

    A single-component, 32-bit floating-point format that supports 32 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R32_FLOAT + DXGI_FORMAT_R32_FLOAT +
    + + +

    A single-component, 32-bit unsigned-integer format that supports 32 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R32_UINT + DXGI_FORMAT_R32_UINT +
    + + +

    A single-component, 32-bit signed-integer format that supports 32 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R32_SINT + DXGI_FORMAT_R32_SINT +
    + + +

    A two-component, 32-bit typeless format that supports 24 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R24G8_TYPELESS + DXGI_FORMAT_R24G8_TYPELESS +
    + + +

    A 32-bit z-buffer format that supports 24 bits for depth and 8 bits for stencil.

    +
    + + bb173059 + DXGI_FORMAT_D24_UNORM_S8_UINT + DXGI_FORMAT_D24_UNORM_S8_UINT +
    + + +

    A 32-bit format, that contains a 24 bit, single-component, unsigned-normalized integer, with an additional typeless 8 bits. This format has 24 bits red channel and 8 bits unused.

    +
    + + bb173059 + DXGI_FORMAT_R24_UNORM_X8_TYPELESS + DXGI_FORMAT_R24_UNORM_X8_TYPELESS +
    + + +

    A 32-bit format, that contains a 24 bit, single-component, typeless format, with an additional 8 bit unsigned integer component. This format has 24 bits unused and 8 bits green channel.

    +
    + + bb173059 + DXGI_FORMAT_X24_TYPELESS_G8_UINT + DXGI_FORMAT_X24_TYPELESS_G8_UINT +
    + + +

    A two-component, 16-bit typeless format that supports 8 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R8G8_TYPELESS + DXGI_FORMAT_R8G8_TYPELESS +
    + + +

    A two-component, 16-bit unsigned-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R8G8_UNORM + DXGI_FORMAT_R8G8_UNORM +
    + + +

    A two-component, 16-bit unsigned-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R8G8_UINT + DXGI_FORMAT_R8G8_UINT +
    + + +

    A two-component, 16-bit signed-normalized-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R8G8_SNORM + DXGI_FORMAT_R8G8_SNORM +
    + + +

    A two-component, 16-bit signed-integer format that supports 8 bits for the red channel and 8 bits for the green channel.

    +
    + + bb173059 + DXGI_FORMAT_R8G8_SINT + DXGI_FORMAT_R8G8_SINT +
    + + +

    A single-component, 16-bit typeless format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_TYPELESS + DXGI_FORMAT_R16_TYPELESS +
    + + +

    A single-component, 16-bit floating-point format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_FLOAT + DXGI_FORMAT_R16_FLOAT +
    + + +

    A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for depth.

    +
    + + bb173059 + DXGI_FORMAT_D16_UNORM + DXGI_FORMAT_D16_UNORM +
    + + +

    A single-component, 16-bit unsigned-normalized-integer format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_UNORM + DXGI_FORMAT_R16_UNORM +
    + + +

    A single-component, 16-bit unsigned-integer format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_UINT + DXGI_FORMAT_R16_UINT +
    + + +

    A single-component, 16-bit signed-normalized-integer format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_SNORM + DXGI_FORMAT_R16_SNORM +
    + + +

    A single-component, 16-bit signed-integer format that supports 16 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R16_SINT + DXGI_FORMAT_R16_SINT +
    + + +

    A single-component, 8-bit typeless format that supports 8 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R8_TYPELESS + DXGI_FORMAT_R8_TYPELESS +
    + + +

    A single-component, 8-bit unsigned-normalized-integer format that supports 8 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R8_UNORM + DXGI_FORMAT_R8_UNORM +
    + + +

    A single-component, 8-bit unsigned-integer format that supports 8 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R8_UINT + DXGI_FORMAT_R8_UINT +
    + + +

    A single-component, 8-bit signed-normalized-integer format that supports 8 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R8_SNORM + DXGI_FORMAT_R8_SNORM +
    + + +

    A single-component, 8-bit signed-integer format that supports 8 bits for the red channel.

    +
    + + bb173059 + DXGI_FORMAT_R8_SINT + DXGI_FORMAT_R8_SINT +
    + + +

    A single-component, 8-bit unsigned-normalized-integer format for alpha only.

    +
    + + bb173059 + DXGI_FORMAT_A8_UNORM + DXGI_FORMAT_A8_UNORM +
    + + +

    A single-component, 1-bit unsigned-normalized integer format that supports 1 bit for the red channel. 2.

    +
    + + bb173059 + DXGI_FORMAT_R1_UNORM + DXGI_FORMAT_R1_UNORM +
    + + +

    Three partial-precision floating-point numbers encoded into a single 32-bit value all sharing the same 5-bit exponent (variant of s10e5, which is sign bit, 10-bit mantissa, and 5-bit biased (15) exponent). There is no sign bit, and there is a shared 5-bit biased (15) exponent and a 9-bit mantissa for each channel, as shown in the following illustration. 2.

    +
    + + bb173059 + DXGI_FORMAT_R9G9B9E5_SHAREDEXP + DXGI_FORMAT_R9G9B9E5_SHAREDEXP +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the UYVY format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

    +
    + + bb173059 + DXGI_FORMAT_R8G8_B8G8_UNORM + DXGI_FORMAT_R8G8_B8G8_UNORM +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format. This packed RGB format is analogous to the YUY2 format. Each 32-bit block describes a pair of pixels: (R8, G8, B8) and (R8, G8, B8) where the R8/B8 values are repeated, and the G8 values are unique to each pixel. 3

    +
    + + bb173059 + DXGI_FORMAT_G8R8_G8B8_UNORM + DXGI_FORMAT_G8R8_G8B8_UNORM +
    + + +

    Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC1_TYPELESS + DXGI_FORMAT_BC1_TYPELESS +
    + + +

    Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC1_UNORM + DXGI_FORMAT_BC1_UNORM +
    + + +

    Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC1_UNORM_SRGB + DXGI_FORMAT_BC1_UNORM_SRGB +
    + + +

    Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC2_TYPELESS + DXGI_FORMAT_BC2_TYPELESS +
    + + +

    Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC2_UNORM + DXGI_FORMAT_BC2_UNORM +
    + + +

    Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC2_UNORM_SRGB + DXGI_FORMAT_BC2_UNORM_SRGB +
    + + +

    Four-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC3_TYPELESS + DXGI_FORMAT_BC3_TYPELESS +
    + + +

    Four-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC3_UNORM + DXGI_FORMAT_BC3_UNORM +
    + + +

    Four-component block-compression format for sRGB data. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC3_UNORM_SRGB + DXGI_FORMAT_BC3_UNORM_SRGB +
    + + +

    One-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC4_TYPELESS + DXGI_FORMAT_BC4_TYPELESS +
    + + +

    One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC4_UNORM + DXGI_FORMAT_BC4_UNORM +
    + + +

    One-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC4_SNORM + DXGI_FORMAT_BC4_SNORM +
    + + +

    Two-component typeless block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC5_TYPELESS + DXGI_FORMAT_BC5_TYPELESS +
    + + +

    Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC5_UNORM + DXGI_FORMAT_BC5_UNORM +
    + + +

    Two-component block-compression format. For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC5_SNORM + DXGI_FORMAT_BC5_SNORM +
    + + +

    A three-component, 16-bit unsigned-normalized-integer format that supports 5 bits for blue, 6 bits for green, and 5 bits for red.

    +
    + + bb173059 + DXGI_FORMAT_B5G6R5_UNORM + DXGI_FORMAT_B5G6R5_UNORM +
    + + +

    A four-component, 16-bit unsigned-normalized-integer format that supports 5 bits for each color channel and 1-bit alpha.

    +
    + + bb173059 + DXGI_FORMAT_B5G5R5A1_UNORM + DXGI_FORMAT_B5G5R5A1_UNORM +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8-bit alpha.

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8A8_UNORM + DXGI_FORMAT_B8G8R8A8_UNORM +
    + + +

    A four-component, 32-bit unsigned-normalized-integer format that supports 8 bits for each color channel and 8 bits unused.

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8X8_UNORM + DXGI_FORMAT_B8G8R8X8_UNORM +
    + + +

    A four-component, 32-bit 2.8-biased fixed-point format that supports 10 bits for each color channel and 2-bit alpha.

    +
    + + bb173059 + DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM + DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM +
    + + +

    A four-component, 32-bit typeless format that supports 8 bits for each channel including alpha. 4

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8A8_TYPELESS + DXGI_FORMAT_B8G8R8A8_TYPELESS +
    + + +

    A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each channel including alpha. 4

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB + DXGI_FORMAT_B8G8R8A8_UNORM_SRGB +
    + + +

    A four-component, 32-bit typeless format that supports 8 bits for each color channel, and 8 bits are unused. 4

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8X8_TYPELESS + DXGI_FORMAT_B8G8R8X8_TYPELESS +
    + + +

    A four-component, 32-bit unsigned-normalized standard RGB format that supports 8 bits for each color channel, and 8 bits are unused. 4

    +
    + + bb173059 + DXGI_FORMAT_B8G8R8X8_UNORM_SRGB + DXGI_FORMAT_B8G8R8X8_UNORM_SRGB +
    + + +

    A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC6H_TYPELESS + DXGI_FORMAT_BC6H_TYPELESS +
    + + +

    A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC6H_UF16 + DXGI_FORMAT_BC6H_UF16 +
    + + +

    A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC6H_SF16 + DXGI_FORMAT_BC6H_SF16 +
    + + +

    A typeless block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC7_TYPELESS + DXGI_FORMAT_BC7_TYPELESS +
    + + +

    A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC7_UNORM + DXGI_FORMAT_BC7_UNORM +
    + + +

    A block-compression format. 4 For information about block-compression formats, see Texture Block Compression in Direct3D 11.

    +
    + + bb173059 + DXGI_FORMAT_BC7_UNORM_SRGB + DXGI_FORMAT_BC7_UNORM_SRGB +
    + + +

    Most common YUV 4:4:4 video resource format. Valid view formats for this video resource format are and . For UAVs, an additional valid view format is . By using for UAVs, you can both read and write as opposed to just write for and . Supported view types are SRV, RTV, and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is V->R8, + U->G8, + Y->B8, + and A->A8.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_AYUV + DXGI_FORMAT_AYUV +
    + + +

    10-bit per channel packed YUV 4:4:4 video resource format. Valid view formats for this video resource format are and . For UAVs, an additional valid view format is . By using for UAVs, you can both read and write as opposed to just write for and . Supported view types are SRV and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is U->R10, + Y->G10, + V->B10, + and A->A2.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_Y410 + DXGI_FORMAT_Y410 +
    + + +

    16-bit per channel packed YUV 4:4:4 video resource format. Valid view formats for this video resource format are and . Supported view types are SRV and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is U->R16, + Y->G16, + V->B16, + and A->A16.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_Y416 + DXGI_FORMAT_Y416 +
    + + +

    Most common YUV 4:2:0 video resource format. Valid luminance data view formats for this video resource format are and . Valid chrominance data view formats (width and height are each 1/2 of luminance view) for this video resource format are and . Supported view types are SRV, RTV, and UAV. For luminance data view, the mapping to the view channel is Y->R8. For chrominance data view, the mapping to the view channel is U->R8 and + V->G8.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_NV12 + DXGI_FORMAT_NV12 +
    + + +

    10-bit per channel planar YUV 4:2:0 video resource format. Valid luminance data view formats for this video resource format are and . The runtime does not enforce whether the lowest 6 bits are 0 (given that this video resource format is a 10-bit format that uses 16 bits). If required, application shader code would have to enforce this manually. From the runtime's point of view, is no different than . Valid chrominance data view formats (width and height are each 1/2 of luminance view) for this video resource format are and . For UAVs, an additional valid chrominance data view format is . By using for UAVs, you can both read and write as opposed to just write for and . Supported view types are SRV, RTV, and UAV. For luminance data view, the mapping to the view channel is Y->R16. For chrominance data view, the mapping to the view channel is U->R16 and + V->G16.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_P010 + DXGI_FORMAT_P010 +
    + + +

    16-bit per channel planar YUV 4:2:0 video resource format. Valid luminance data view formats for this video resource format are and . Valid chrominance data view formats (width and height are each 1/2 of luminance view) for this video resource format are and . For UAVs, an additional valid chrominance data view format is . By using for UAVs, you can both read and write as opposed to just write for and . Supported view types are SRV, RTV, and UAV. For luminance data view, the mapping to the view channel is Y->R16. For chrominance data view, the mapping to the view channel is U->R16 and + V->G16.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_P016 + DXGI_FORMAT_P016 +
    + + +

    8-bit per channel planar YUV 4:2:0 video resource format. This format is subsampled where each pixel has its own Y value, but each 2x2 pixel block shares a single U and V value. The runtime requires that the width and height of all resources that are created with this format are multiples of 2. The runtime also requires that the left, right, top, and bottom members of any that are used for this format are multiples of 2. This format differs from in that the layout of the data within the resource is completely opaque to applications. Applications cannot use the CPU to map the resource and then access the data within the resource. You cannot use shaders with this format. Because of this behavior, legacy hardware that supports a non-NV12 4:2:0 layout (for example, YV12, and so on) can be used. Also, new hardware that has a 4:2:0 implementation better than NV12 can be used when the application does not need the data to be in a standard layout.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_420_OPAQUE + DXGI_FORMAT_420_OPAQUE +
    + + +

    Most common YUV 4:2:2 video resource format. Valid view formats for this video resource format are and . For UAVs, an additional valid view format is . By using for UAVs, you can both read and write as opposed to just write for and . Supported view types are SRV and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is Y0->R8, + U0->G8, + Y1->B8, + and V0->A8.

    A unique valid view format for this video resource format is . With this view format, the width of the view appears to be twice what the or view would be when hardware reconstructs RGBA automatically on read and before filtering. This Direct3D hardware behavior is legacy and is likely not useful any more. With this view format, the mapping to the view channel is Y0->R8, + U0-> + G8[0], + Y1->B8, + and V0-> + G8[1].

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_YUY2 + DXGI_FORMAT_YUY2 +
    + + +

    10-bit per channel packed YUV 4:2:2 video resource format. Valid view formats for this video resource format are and . The runtime does not enforce whether the lowest 6 bits are 0 (given that this video resource format is a 10-bit format that uses 16 bits). If required, application shader code would have to enforce this manually. From the runtime's point of view, is no different than . Supported view types are SRV and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is Y0->R16, + U->G16, + Y1->B16, + and V->A16.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_Y210 + DXGI_FORMAT_Y210 +
    + + +

    16-bit per channel packed YUV 4:2:2 video resource format. Valid view formats for this video resource format are and . Supported view types are SRV and UAV. One view provides a straightforward mapping of the entire surface. The mapping to the view channel is Y0->R16, + U->G16, + Y1->B16, + and V->A16.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_Y216 + DXGI_FORMAT_Y216 +
    + + +

    Most common planar YUV 4:1:1 video resource format. Valid luminance data view formats for this video resource format are and . Valid chrominance data view formats (width and height are each 1/4 of luminance view) for this video resource format are and . Supported view types are SRV, RTV, and UAV. For luminance data view, the mapping to the view channel is Y->R8. For chrominance data view, the mapping to the view channel is U->R8 and + V->G8.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_NV11 + DXGI_FORMAT_NV11 +
    + + +

    4-bit palletized YUV format that is commonly used for DVD subpicture.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_AI44 + DXGI_FORMAT_AI44 +
    + + +

    4-bit palletized YUV format that is commonly used for DVD subpicture.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_IA44 + DXGI_FORMAT_IA44 +
    + + +

    8-bit palletized format that is used for palletized RGB data when the processor processes ISDB-T data and for palletized YUV data when the processor processes BluRay data.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_P8 + DXGI_FORMAT_P8 +
    + + +

    8-bit palletized format with 8 bits of alpha that is used for palletized YUV data when the processor processes BluRay data.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_A8P8 + DXGI_FORMAT_A8P8 +
    + + +

    A four-component, 16-bit unsigned-normalized integer format that supports 4 bits for each channel including alpha.

    Direct3D 11:??This value is not supported until Windows Developer Preview.
    +
    + + bb173059 + DXGI_FORMAT_B4G4R4A4_UNORM + DXGI_FORMAT_B4G4R4A4_UNORM +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the granularity at which the graphics processing unit (GPU) can be preempted from performing its current graphics rendering task.

    +
    + +

    You call the method to retrieve the granularity level at which the GPU can be preempted from performing its current graphics rendering task. The operating system specifies the graphics granularity level in the GraphicsPreemptionGranularity member of the structure.

    The following figure shows granularity of graphics rendering tasks.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_GRANULARITY + DXGI_GRAPHICS_PREEMPTION_GRANULARITY +
    + + +

    Indicates the preemption granularity as a DMA buffer.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY + DXGI_GRAPHICS_PREEMPTION_DMA_BUFFER_BOUNDARY +
    + + +

    Indicates the preemption granularity as a graphics primitive. A primitive is a section in a DMA buffer and can be a group of triangles.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY + DXGI_GRAPHICS_PREEMPTION_PRIMITIVE_BOUNDARY +
    + + +

    Indicates the preemption granularity as a triangle. A triangle is a part of a primitive.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY + DXGI_GRAPHICS_PREEMPTION_TRIANGLE_BOUNDARY +
    + + +

    Indicates the preemption granularity as a pixel. A pixel is a part of a triangle.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY + DXGI_GRAPHICS_PREEMPTION_PIXEL_BOUNDARY +
    + + +

    Indicates the preemption granularity as a graphics instruction. A graphics instruction operates on a pixel.

    +
    + + hh404504 + DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY + DXGI_GRAPHICS_PREEMPTION_INSTRUCTION_BOUNDARY +
    + + + No documentation. + + + DXGI_MAP_FLAGS + DXGI_MAP_FLAGS + + + + No documentation. + + + DXGI_MAP_READ + DXGI_MAP_READ + + + + No documentation. + + + DXGI_MAP_WRITE + DXGI_MAP_WRITE + + + + No documentation. + + + DXGI_MAP_DISCARD + DXGI_MAP_DISCARD + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the importance of a resource?s content when you call the method to offer the resource.

    +
    + +

    Priority determines how likely the operating system is to discard an offered resource. Resources offered with lower priority are discarded first.

    +
    + + hh404509 + DXGI_OFFER_RESOURCE_PRIORITY + DXGI_OFFER_RESOURCE_PRIORITY +
    + + + No documentation. + + + DXGI_OFFER_RESOURCE_PRIORITY_LOW + DXGI_OFFER_RESOURCE_PRIORITY_LOW + + + + No documentation. + + + DXGI_OFFER_RESOURCE_PRIORITY_NORMAL + DXGI_OFFER_RESOURCE_PRIORITY_NORMAL + + + + No documentation. + + + DXGI_OFFER_RESOURCE_PRIORITY_HIGH + DXGI_OFFER_RESOURCE_PRIORITY_HIGH + + + + No documentation. + + + DXGI_PRESENT_FLAGS + DXGI_PRESENT_FLAGS + + + + No documentation. + + + DXGI_PRESENT_TEST + DXGI_PRESENT_TEST + + + + No documentation. + + + DXGI_PRESENT_DO_NOT_SEQUENCE + DXGI_PRESENT_DO_NOT_SEQUENCE + + + + No documentation. + + + DXGI_PRESENT_RESTART + DXGI_PRESENT_RESTART + + + + No documentation. + + + DXGI_PRESENT_DO_NOT_WAIT + DXGI_PRESENT_DO_NOT_WAIT + + + + No documentation. + + + DXGI_PRESENT_STEREO_PREFER_RIGHT + DXGI_PRESENT_STEREO_PREFER_RIGHT + + + + No documentation. + + + DXGI_PRESENT_STEREO_TEMPORARY_MONO + DXGI_PRESENT_STEREO_TEMPORARY_MONO + + + + No documentation. + + + DXGI_PRESENT_RESTRICT_TO_OUTPUT + DXGI_PRESENT_RESTRICT_TO_OUTPUT + + + + None. + + + None + None + + + +

    Flags indicating the memory location of a resource.

    +
    + + bb173070 + DXGI_RESIDENCY + DXGI_RESIDENCY +
    + + +

    The resource is located in video memory.

    +
    + + bb173070 + DXGI_RESIDENCY_FULLY_RESIDENT + DXGI_RESIDENCY_FULLY_RESIDENT +
    + + +

    At least some of the resource is located in CPU memory.

    +
    + + bb173070 + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY + DXGI_RESIDENCY_RESIDENT_IN_SHARED_MEMORY +
    + + +

    At least some of the resource has been paged out to the hard drive.

    +
    + + bb173070 + DXGI_RESIDENCY_EVICTED_TO_DISK + DXGI_RESIDENCY_EVICTED_TO_DISK +
    + + + No documentation. + + + DXGI_RESOURCE_PRIORITY + DXGI_RESOURCE_PRIORITY + + + + No documentation. + + + DXGI_RESOURCE_PRIORITY_MINIMUM + DXGI_RESOURCE_PRIORITY_MINIMUM + + + + No documentation. + + + DXGI_RESOURCE_PRIORITY_LOW + DXGI_RESOURCE_PRIORITY_LOW + + + + No documentation. + + + DXGI_RESOURCE_PRIORITY_NORMAL + DXGI_RESOURCE_PRIORITY_NORMAL + + + + No documentation. + + + DXGI_RESOURCE_PRIORITY_HIGH + DXGI_RESOURCE_PRIORITY_HIGH + + + + No documentation. + + + DXGI_RESOURCE_PRIORITY_MAXIMUM + DXGI_RESOURCE_PRIORITY_MAXIMUM + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies resize behavior when the back-buffer size does not match the size of the target output.

    +
    + +

    The value is supported only for flip presentation model swap chains that you create with the value. You pass these values in a call to , , or .

    +
    + + hh404526 + DXGI_SCALING + DXGI_SCALING +
    + + +

    Directs DXGI to make the back-buffer contents scale to fit the presentation target size. This is the implicit behavior of DXGI when you call the method.

    +
    + + hh404526 + DXGI_SCALING_STRETCH + DXGI_SCALING_STRETCH +
    + + +

    Directs DXGI to make the back-buffer contents appear without any scaling when the presentation target size is not equal to the back-buffer size. The top edges of the back buffer and presentation target are aligned together. If the WS_EX_LAYOUTRTL style is associated with the handle to the target output window, the right edges of the back buffer and presentation target are aligned together; otherwise, the left edges are aligned together. All target area outside the back buffer is filled with window background color.

    This value specifies that all target areas outside the back buffer of a swap chain are filled with the background color that you specify in a call to .

    +
    + + hh404526 + DXGI_SCALING_NONE + DXGI_SCALING_NONE +
    + + + No documentation. + + + DXGI_SCALING_ASPECT_RATIO_STRETCH + DXGI_SCALING_ASPECT_RATIO_STRETCH + + + + No documentation. + + + DXGI_SHARED_RESOURCE_FLAGS + DXGI_SHARED_RESOURCE_FLAGS + + + + No documentation. + + + DXGI_SHARED_RESOURCE_READ + DXGI_SHARED_RESOURCE_READ + + + + No documentation. + + + DXGI_SHARED_RESOURCE_WRITE + DXGI_SHARED_RESOURCE_WRITE + + + + None. + + + None + None + + + +

    Options for swap-chain behavior.

    +
    + +

    This enumeration is used by the structure and the method.

    This enumeration is also used by the structure.

    Swap chains that you create in full-screen mode with the method behave as if is set even though the flag is not set. That is, presented content is not accessible by remote access or through the desktop duplication APIs.

    Swap chains that you create with the , IDXGIFactory2::CreateSwapChainForImmersiveWindow, and IDXGIFactory2::CreateSwapChainForCompositionSurface methods are not protected if is not set and are protected if is set. When swap chains are protected, screen scraping is prevented and, in full-screen mode, presented content is not accessible through the desktop duplication APIs.

    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG + DXGI_SWAP_CHAIN_FLAG +
    + + +

    Set this flag to turn off automatic image rotation; that is, do not perform a rotation when transferring the contents of the front buffer to the monitor. Use this flag to avoid a bandwidth penalty when an application expects to handle rotation. This option is valid only during full-screen mode.

    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED + DXGI_SWAP_CHAIN_FLAG_NONPREROTATED +
    + + +

    Set this flag to enable an application to switch modes by calling . When switching from windowed to full-screen mode, the display mode (or monitor resolution) will be changed to match the dimensions of the application window.

    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH + DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH +
    + + +

    Set this flag to enable an application to render using GDI on a swap chain or a surface. This will allow the application to call on the 0th back buffer or a surface.

    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE + DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE +
    + + +

    Set this flag to indicate that the swap chain might contain protected content; therefore, the operating system supports the creation of the swap chain only when driver and hardware protection is used. If the driver and hardware do not support content protection, the call to create a resource for the swap chain fails.

    Direct3D 11:??This enumeration value is supported starting with Windows Developer Preview.
    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT + DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT +
    + + +

    Set this flag to indicate that shared resources that are created within the swap chain must be protected by using the driver?s mechanism for restricting access to shared surfaces.

    Direct3D 11:??This enumeration value is supported starting with Windows Developer Preview.
    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER + DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER +
    + + +

    Set this flag to restrict presented content to the local displays. Therefore, the presented content is not accessible via remote accessing or through the desktop duplication APIs.

    This flag supports the window content protection features of Windows. Applications can use this flag to protect their own onscreen window content from being captured or copied through a specific set of public operating system features and APIs.

    If you use this flag with windowed ( or IWindow) swap chains where another process created the , the owner of the must use the SetWindowDisplayAffinity function appropriately in order to allow calls to or to succeed. +

    Direct3D 11:??This enumeration value is supported starting with Windows Developer Preview.
    +
    + + bb173076 + DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY + DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY +
    + + + None. + + + None + None + + + +

    Options for handling pixels in a display surface after calling .

    +
    + +

    This enumeration is used by the structure.

    This enumeration is also used by the structure.

    The primary difference between presentation models is how back-buffer contents get to the Desktop Window Manager (DWM) for composition. In the bitblt model, which is used with the and values, contents of the back buffer get copied into the redirection surface on each call to . In the flip model, which is used with the value, all back buffers are shared with the DWM. Therefore, the DWM can compose straight from those back buffers without any additional copy operations. + In general, the flip model is the more efficient model. The flip model also provides more features, such as enhanced present statistics. +

    Regardless of whether the flip model is more efficient, an application still might choose the bitblt model for the following reasons:

    • The bitblt model is the only way to mix GDI and DirectX presentation.

      In the flip model, the application must create the swap chain with , and then must use GetDC on the back buffer explicitly. After the first successful call to on a flip-model swap chain, GDI no longer works with the that is associated with that swap chain, even after the destruction of the swap chain. This restriction even extends to methods like ScrollWindowEx.

    • The flip model requires at least three window-sized buffers if the application uses child windows. For the bitblt model, this minimum is two buffers.

    +
    + + bb173077 + DXGI_SWAP_EFFECT + DXGI_SWAP_EFFECT +
    + + + No documentation. + + + DXGI_SWAP_EFFECT_DISCARD + DXGI_SWAP_EFFECT_DISCARD + + + + No documentation. + + + DXGI_SWAP_EFFECT_SEQUENTIAL + DXGI_SWAP_EFFECT_SEQUENTIAL + + + + No documentation. + + + DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL + DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL + + + + No documentation. + + + DXGI_USAGE_ENUM + DXGI_USAGE_ENUM + + + + No documentation. + + + DXGI_USAGE_SHADER_INPUT + DXGI_USAGE_SHADER_INPUT + + + + No documentation. + + + DXGI_USAGE_RENDER_TARGET_OUTPUT + DXGI_USAGE_RENDER_TARGET_OUTPUT + + + + No documentation. + + + DXGI_USAGE_BACK_BUFFER + DXGI_USAGE_BACK_BUFFER + + + + No documentation. + + + DXGI_USAGE_SHARED + DXGI_USAGE_SHARED + + + + No documentation. + + + DXGI_USAGE_READ_ONLY + DXGI_USAGE_READ_ONLY + + + + No documentation. + + + DXGI_USAGE_DISCARD_ON_PRESENT + DXGI_USAGE_DISCARD_ON_PRESENT + + + + No documentation. + + + DXGI_USAGE_UNORDERED_ACCESS + DXGI_USAGE_UNORDERED_ACCESS + + + + No documentation. + + + DXGI_MWA_FLAGS + DXGI_MWA_FLAGS + + + + No documentation. + + + DXGI_MWA_NO_WINDOW_CHANGES + DXGI_MWA_NO_WINDOW_CHANGES + + + + No documentation. + + + DXGI_MWA_NO_ALT_ENTER + DXGI_MWA_NO_ALT_ENTER + + + + No documentation. + + + DXGI_MWA_NO_PRINT_SCREEN + DXGI_MWA_NO_PRINT_SCREEN + + + + No documentation. + + + DXGI_MWA_VALID + DXGI_MWA_VALID + + + + None. + + + None + None + + + + Functions + + + + + +

    Creates a DXGI 1.1 factory that generates objects used to enumerate and specify video graphics settings.

    +
    +

    The globally unique identifier () of the object referenced by the ppFactory parameter.

    +

    Address of a reference to an object.

    +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    + +

    Use a DXGI 1.1 factory to generate objects that enumerate adapters, create swap chains, and associate a window with the alt+enter key sequence for toggling to and from the full-screen display mode.

    If the CreateDXGIFactory1 function succeeds, the reference count on the interface is incremented. To avoid a memory leak, when you finish using the interface, call the IDXGIFactory1::Release method to release the interface.

    This entry point is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

    +
    + + ff471318 + HRESULT CreateDXGIFactory1([In] const GUID& riid,[Out] void** ppFactory) + CreateDXGIFactory1 +
    + + + Functions + + + + + Constant CannotProtectContent. + DXGI_ERROR_CANNOT_PROTECT_CONTENT + + + Constant SessionDisconnected. + DXGI_ERROR_SESSION_DISCONNECTED + + + Constant AccessLost. + DXGI_ERROR_ACCESS_LOST + + + Constant WaitTimeout. + DXGI_ERROR_WAIT_TIMEOUT + + + Constant RemoteClientDisconnected. + DXGI_ERROR_REMOTE_CLIENT_DISCONNECTED + + + Constant DeviceRemoved. + DXGI_ERROR_DEVICE_REMOVED + + + Constant Nonexclusive. + DXGI_ERROR_NONEXCLUSIVE + + + Constant FrameStatisticsDisjoint. + DXGI_ERROR_FRAME_STATISTICS_DISJOINT + + + Constant DeviceHung. + DXGI_ERROR_DEVICE_HUNG + + + Constant RemoteOufOfMemory. + DXGI_ERROR_REMOTE_OUTOFMEMORY + + + Constant Unsupported. + DXGI_ERROR_UNSUPPORTED + + + Constant RestrictToOutputStale. + DXGI_ERROR_RESTRICT_TO_OUTPUT_STALE + + + Constant DeviceReset. + DXGI_ERROR_DEVICE_RESET + + + Constant MoreData. + DXGI_ERROR_MORE_DATA + + + Constant NotFound. + DXGI_ERROR_NOT_FOUND + + + Constant DriverInternalError. + DXGI_ERROR_DRIVER_INTERNAL_ERROR + + + Constant InvalidCall. + DXGI_ERROR_INVALID_CALL + + + Constant GraphicsVidpnSourceInUse. + DXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + + + Constant WasStillDrawing. + DXGI_ERROR_WAS_STILL_DRAWING + + + Constant AccessDenied. + DXGI_ERROR_ACCESS_DENIED + + + Constant NotCurrentlyAvailable. + DXGI_ERROR_NOT_CURRENTLY_AVAILABLE + + + Constant NameAlreadyExists. + DXGI_ERROR_NAME_ALREADY_EXISTS + + + Constant ModeChangeInProgress. + DXGI_ERROR_MODE_CHANGE_IN_PROGRESS + + + +

    The interface represents a display sub-system (including one or more GPU's, DACs and video memory).

    +
    + +

    This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    A display sub-system is often referred to as a video card, however, on some machines the display sub-system is part of the mother board.

    To enumerate the display sub-systems, use . To get an interface to the adapter for a particular device, use . To create a software adapter, use .

    +
    + + ff471329 + IDXGIAdapter1 + IDXGIAdapter1 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets a DXGI 1.1 description of an adapter (or video card).

    +
    +

    A reference to a structure that describes the adapter. This parameter must not be null.

    +

    Returns if successful; otherwise, returns E_INVALIDARG if the pDesc parameter is null.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

    +
    + + ff471330 + HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) + IDXGIAdapter1::GetDesc1 +
    + + +

    Gets a DXGI 1.1 description of an adapter (or video card).

    +
    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Use the GetDesc1 method to get a DXGI 1.1 description of an adapter. To get a DXGI 1.0 description, use the method.

    +
    + + ff471330 + GetDesc1 + GetDesc1 + HRESULT IDXGIAdapter1::GetDesc1([Out] DXGI_ADAPTER_DESC1* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 description of an adapter or video card. This description includes information about the granularity at which the graphics processing unit (GPU) can be preempted from performing its current task.

    +
    + +

    Use the GetDesc2 method to get a DXGI 1.2 description of an adapter. To get a DXGI 1.1 description, use the method. To get a DXGI 1.0 description, use the method.

    The Windows Display Driver Model (WDDM) scheduler can preempt the GPU's execution of application tasks. The granularity at which the GPU can be preempted from performing its current task in the WDDM 1.1 or earlier driver model is a direct memory access (DMA) buffer for graphics tasks or a compute packet for compute tasks. The GPU can switch between tasks only after it completes the currently executing unit of work, a DMA buffer or a compute packet.

    A DMA buffer is the largest independent unit of graphics work that the WDDM scheduler can submit to the GPU. This buffer contains a set of GPU instructions that the WDDM driver and GPU use. A compute packet is the largest independent unit of compute work that the WDDM scheduler can submit to the GPU. A compute packet contains dispatches (for example, calls to the method), which contain thread groups. The WDDM 1.2 or later driver model allows the GPU to be preempted at finer granularity levels than a DMA buffer or compute packet. You can use the GetDesc2 method to retrieve the granularity levels for graphics and compute tasks.

    +
    + + hh404540 + IDXGIAdapter2 + IDXGIAdapter2 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 description of an adapter or video card. This description includes information about the granularity at which the graphics processing unit (GPU) can be preempted from performing its current task.

    +
    +

    A reference to a structure that describes the adapter. This parameter must not be null.

    +

    Returns if successful; otherwise, returns E_INVALIDARG if the pDesc parameter is null.

    + +

    Use the GetDesc2 method to get a DXGI 1.2 description of an adapter. To get a DXGI 1.1 description, use the method. To get a DXGI 1.0 description, use the method.

    The Windows Display Driver Model (WDDM) scheduler can preempt the GPU's execution of application tasks. The granularity at which the GPU can be preempted from performing its current task in the WDDM 1.1 or earlier driver model is a direct memory access (DMA) buffer for graphics tasks or a compute packet for compute tasks. The GPU can switch between tasks only after it completes the currently executing unit of work, a DMA buffer or a compute packet.

    A DMA buffer is the largest independent unit of graphics work that the WDDM scheduler can submit to the GPU. This buffer contains a set of GPU instructions that the WDDM driver and GPU use. A compute packet is the largest independent unit of compute work that the WDDM scheduler can submit to the GPU. A compute packet contains dispatches (for example, calls to the method), which contain thread groups. The WDDM 1.2 or later driver model allows the GPU to be preempted at finer granularity levels than a DMA buffer or compute packet. You can use the GetDesc2 method to retrieve the granularity levels for graphics and compute tasks.

    +
    + + hh404540 + HRESULT IDXGIAdapter2::GetDesc2([Out] DXGI_ADAPTER_DESC2* pDesc) + IDXGIAdapter2::GetDesc2 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a Microsoft DirectX Graphics Infrastructure (DXGI) 1.2 description of an adapter or video card. This description includes information about the granularity at which the graphics processing unit (GPU) can be preempted from performing its current task.

    +
    + +

    Use the GetDesc2 method to get a DXGI 1.2 description of an adapter. To get a DXGI 1.1 description, use the method. To get a DXGI 1.0 description, use the method.

    The Windows Display Driver Model (WDDM) scheduler can preempt the GPU's execution of application tasks. The granularity at which the GPU can be preempted from performing its current task in the WDDM 1.1 or earlier driver model is a direct memory access (DMA) buffer for graphics tasks or a compute packet for compute tasks. The GPU can switch between tasks only after it completes the currently executing unit of work, a DMA buffer or a compute packet.

    A DMA buffer is the largest independent unit of graphics work that the WDDM scheduler can submit to the GPU. This buffer contains a set of GPU instructions that the WDDM driver and GPU use. A compute packet is the largest independent unit of compute work that the WDDM scheduler can submit to the GPU. A compute packet contains dispatches (for example, calls to the method), which contain thread groups. The WDDM 1.2 or later driver model allows the GPU to be preempted at finer granularity levels than a DMA buffer or compute packet. You can use the GetDesc2 method to retrieve the granularity levels for graphics and compute tasks.

    +
    + + hh404540 + GetDesc2 + GetDesc2 + HRESULT IDXGIAdapter2::GetDesc2([Out] DXGI_ADAPTER_DESC2* pDesc) +
    + + +

    An interface implements a derived class for DXGI objects that produce image data.

    +
    + +

    This interface is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    The interface is designed for use by DXGI objects that need access to other DXGI objects. This interface is useful to applications that do not use Direct3D to communicate with DXGI.

    +
    + + ff471331 + IDXGIDevice1 + IDXGIDevice1 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Sets the number of frames that the system is allowed to queue for rendering.

    +
    +

    The maximum number of back buffer frames that a driver can queue. The value defaults to 3, but can range from 1 to 16. A value of 0 will reset latency to the default. For multi-head devices, this value is specified per-head.

    +

    Returns if successful; otherwise, if the device was removed.

    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

    +
    + + ff471334 + HRESULT IDXGIDevice1::SetMaximumFrameLatency([In] unsigned int MaxLatency) + IDXGIDevice1::SetMaximumFrameLatency +
    + + +

    Gets the number of frames that the system is allowed to queue for rendering.

    +
    +

    This value is set to the number of frames that can be queued for render. This value defaults to 3, but can range from 1 to 16.

    +

    Returns if successful; otherwise, returns one of the following members of the D3DERR enumerated type:

    • D3DERR_DEVICELOST
    • D3DERR_DEVICEREMOVED
    • D3DERR_DRIVERINTERNALERROR
    • D3DERR_INVALIDCALL
    • D3DERR_OUTOFVIDEOMEMORY
    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

    +
    + + ff471332 + HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) + IDXGIDevice1::GetMaximumFrameLatency +
    + + +

    Gets or sets the number of frames that the system is allowed to queue for rendering.

    +
    + +

    This method is not supported by DXGI 1.0, which shipped in Windows?Vista and Windows Server?2008. DXGI 1.1 support is required, which is available on Windows?7, Windows Server?2008?R2, and as an update to Windows?Vista with Service Pack?2 (SP2) (KB 971644) and Windows Server?2008 (KB 971512).

    Frame latency is the number of frames that are allowed to be stored in a queue before submission for rendering. Latency is often used to control how the CPU chooses between responding to user input and frames that are in the render queue. It is often beneficial for applications that have no user input (for example, video playback) to queue more than 3 frames of data.

    +
    + + ff471332 + GetMaximumFrameLatency / SetMaximumFrameLatency + GetMaximumFrameLatency + HRESULT IDXGIDevice1::GetMaximumFrameLatency([Out] unsigned int* pMaxLatency) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Flushes any outstanding rendering commands and sets the specified event object to the signaled state after all previously submitted rendering commands complete.

    +
    + +

    EnqueueSetEvent calls the SetEvent function on the event object after all previously submitted rendering commands complete or the device is removed.

    After an application calls EnqueueSetEvent, it can immediately call the WaitForSingleObject function to put itself to sleep until rendering commands complete.

    You cannot use EnqueueSetEvent to determine work completion that is associated with presentation (); instead, we recommend that you use .

    +
    + + hh404546 + IDXGIDevice2 + IDXGIDevice2 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Allows the operating system to free the video memory of resources by discarding their content.

    +
    +

    The number of resources in the ppResources argument array.

    +

    An array of references to interfaces for the resources to offer.

    +

    A -typed value that indicates how valuable data is.

    +

    OfferResources returns:

    • if resources were successfully offered
    • E_INVALIDARG if a resource in the array or the priority is invalid
    + +

    The priority value that the Priority parameter specifies describes how valuable the caller considers the content to be. The operating system uses the priority value to discard resources in order of priority. The operating system discards a resource that is offered with low priority before it discards a resource that is offered with a higher priority.

    If you call OfferResources to offer a resource while the resource is bound to the pipeline, the resource is unbound. You cannot call OfferResources on a resource that is mapped. After you offer a resource, the resource cannot be mapped or bound to the pipeline until you call the IDXGIDevice2::ReclaimResource method to reclaim the resource. You cannot call OfferResources to offer immutable resources.

    To offer shared resources, call OfferResources on only one of the sharing devices. To ensure exclusive access to the resources, you must use an object and then call OfferResources only while you hold the mutex.

    +
    + + hh404549 + HRESULT IDXGIDevice2::OfferResources([In] unsigned int NumResources,[In, Buffer] const IDXGIResource** ppResources,[In] DXGI_OFFER_RESOURCE_PRIORITY Priority) + IDXGIDevice2::OfferResources +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Allows the operating system to free the video memory of resources by discarding their content.

    +
    +

    The number of resources in the ppResources argument array.

    +

    An array of references to interfaces for the resources to offer.

    +

    A -typed value that indicates how valuable data is.

    +

    OfferResources returns:

    • if resources were successfully offered
    • E_INVALIDARG if a resource in the array or the priority is invalid
    + +

    The priority value that the Priority parameter specifies describes how valuable the caller considers the content to be. The operating system uses the priority value to discard resources in order of priority. The operating system discards a resource that is offered with low priority before it discards a resource that is offered with a higher priority.

    If you call OfferResources to offer a resource while the resource is bound to the pipeline, the resource is unbound. You cannot call OfferResources on a resource that is mapped. After you offer a resource, the resource cannot be mapped or bound to the pipeline until you call the IDXGIDevice2::ReclaimResource method to reclaim the resource. You cannot call OfferResources to offer immutable resources.

    To offer shared resources, call OfferResources on only one of the sharing devices. To ensure exclusive access to the resources, you must use an object and then call OfferResources only while you hold the mutex.

    +
    + + hh404549 + HRESULT IDXGIDevice2::OfferResources([In] unsigned int NumResources,[In, Buffer] const IDXGIResource** ppResources,[In] DXGI_OFFER_RESOURCE_PRIORITY Priority) + IDXGIDevice2::OfferResources +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Restores access to resources that were previously offered by calling .

    +
    + No documentation. + No documentation. + No documentation. +

    ReclaimResources returns:

    • if resources were successfully reclaimed
    • E_INVALIDARG if the resources are invalid
    + +

    After you call to offer one or more resources, you must call ReclaimResources before you can use those resources again. You must check the values in the array at pDiscarded to determine whether each resource?s content was discarded. If a resource?s content was discarded while it was offered, its current content is undefined. Therefore, you must overwrite the resource?s content before you use the resource.

    To reclaim shared resources, call ReclaimResources only on one of the sharing devices. To ensure exclusive access to the resources, you must use an object and then call ReclaimResources only while you hold the mutex.

    +
    + + hh404551 + HRESULT IDXGIDevice2::ReclaimResources([In] unsigned int NumResources,[In, Buffer] const IDXGIResource** ppResources,[Out, Buffer, Optional] BOOL* pDiscarded) + IDXGIDevice2::ReclaimResources +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Restores access to resources that were previously offered by calling .

    +
    + No documentation. + No documentation. + No documentation. +

    ReclaimResources returns:

    • if resources were successfully reclaimed
    • E_INVALIDARG if the resources are invalid
    + +

    After you call to offer one or more resources, you must call ReclaimResources before you can use those resources again. You must check the values in the array at pDiscarded to determine whether each resource?s content was discarded. If a resource?s content was discarded while it was offered, its current content is undefined. Therefore, you must overwrite the resource?s content before you use the resource.

    To reclaim shared resources, call ReclaimResources only on one of the sharing devices. To ensure exclusive access to the resources, you must use an object and then call ReclaimResources only while you hold the mutex.

    +
    + + hh404551 + HRESULT IDXGIDevice2::ReclaimResources([In] unsigned int NumResources,[In, Buffer] const IDXGIResource** ppResources,[Out, Buffer, Optional] BOOL* pDiscarded) + IDXGIDevice2::ReclaimResources +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Flushes any outstanding rendering commands and sets the specified event object to the signaled state after all previously submitted rendering commands complete.

    +
    +

    A handle to the event object. The CreateEvent or OpenEvent function returns this handle. All types of event objects (manual-reset, auto-reset, and so on) are supported.

    The handle must have the EVENT_MODIFY_STATE access right. For more information about access rights, see Synchronization Object Security and Access Rights.

    +

    Returns if successful; otherwise, returns one of the following values:

    • E_OUTOFMEMORY if insufficient memory is available to complete the operation.
    • E_INVALIDARG if the parameter was validated and determined to be incorrect.
    + +

    EnqueueSetEvent calls the SetEvent function on the event object after all previously submitted rendering commands complete or the device is removed.

    After an application calls EnqueueSetEvent, it can immediately call the WaitForSingleObject function to put itself to sleep until rendering commands complete.

    You cannot use EnqueueSetEvent to determine work completion that is associated with presentation (); instead, we recommend that you use .

    +
    + + hh404546 + HRESULT IDXGIDevice2::EnqueueSetEvent([In] void* hEvent) + IDXGIDevice2::EnqueueSetEvent +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a swap chain that is associated with an IWindow object for the output window for the swap chain.

    +
    + +

    Note??Use this method in Metro style apps rather than .

    If you specify the width, height, or both (Width and Height members of that pDesc points to) of the swap chain as zero, the runtime obtains the size from the output window that the pWindow parameter specifies. You can subsequently call the method to retrieve the assigned width or height value.

    Because you can associate only one flip presentation model swap chain at a time with an IWindow, the Microsoft Direct3D?11 policy of deferring the destruction of objects can cause problems if you attempt to destroy a flip presentation model swap chain and replace it with another swap chain. For more info about this situation, see Deferred Destruction Issues with Flip Presentation Swap Chains.

    +
    + + hh404559 + IDXGIFactory2 + IDXGIFactory2 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether to use stereo mode.

    +
    +

    Indicates whether to use stereo mode. TRUE indicates that you can use stereo mode; otherwise, .

    + +

    We recommend that windowed applications call IsWindowedStereoEnabled before they attempt to use stereo. IsWindowedStereoEnabled returns TRUE if both of the following items are true:

    • All adapters in the computer have drivers that are capable of stereo. This only means that the driver is implemented to the Windows Display Driver Model (WDDM) for Windows?8 Consumer Preview (WDDM 1.2). However, the adapter does not necessarily have to be able to scan out stereo.
    • The current desktop mode (desktop modes are mono) and system policy and hardware are configured so that the Desktop Window Manager (DWM) performs stereo composition on at least one adapter output.

    The creation of a windowed stereo swap chain succeeds if the first requirement is met. However, if the adapter can't scan out stereo, the output on that adapter is reduced to mono.

    The Direct3D 11.1 Simple Stereo 3D Sample shows how to add a stereoscopic 3D effect and how to respond to system stereo changes.

    +
    + + hh404561 + BOOL IDXGIFactory2::IsWindowedStereoEnabled() + IDXGIFactory2::IsWindowedStereoEnabled +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Creates a swap chain that is associated with an handle to the output window for the swap chain.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

    Note??Do not use this method in Metro style apps. Instead, use .

    If you specify the width, height, or both (Width and Height members of that pDesc points to) of the swap chain as zero, the runtime obtains the size from the output window that the hWnd parameter specifies. You can subsequently call the method to retrieve the assigned width or height value.

    Because you can associate only one flip presentation model swap chain at a time with an , the Microsoft Direct3D?11 policy of deferring the destruction of objects can cause problems if you attempt to destroy a flip presentation model swap chain and replace it with another swap chain. For more info about this situation, see Deferred Destruction Issues with Flip Presentation Swap Chains.

    +
    + + hh404557 + HRESULT IDXGIFactory2::CreateSwapChainForHwnd([In] IUnknown* pDevice,[In] HWND hWnd,[In] const DXGI_SWAP_CHAIN_DESC1* pDesc,[In, Optional] const DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pFullscreenDesc,[In, Optional] IDXGIOutput* pRestrictToOutput,[Out] IDXGISwapChain1** ppSwapChain) + IDXGIFactory2::CreateSwapChainForHwnd +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a swap chain that is associated with an IWindow object for the output window for the swap chain.

    +
    +

    A reference to the Direct3D device for the swap chain. This parameter cannot be null.

    +

    A reference to the IWindow object that is associated with the swap chain that CreateSwapChainForCoreWindow creates.

    +

    A reference to a structure for the swap-chain description. This parameter cannot be null.

    +

    A reference to the interface that the swap chain is restricted to. If the swap chain is moved to a different output, the content is black. You can optionally set this parameter to an output target that uses to restrict the content on this output. If you do not set this parameter to restrict content on an output target, you can set it to null.

    +

    A reference to a variable that receives a reference to the interface for the swap chain that CreateSwapChainForCoreWindow creates.

    + +

    Note??Use this method in Metro style apps rather than .

    If you specify the width, height, or both (Width and Height members of that pDesc points to) of the swap chain as zero, the runtime obtains the size from the output window that the pWindow parameter specifies. You can subsequently call the method to retrieve the assigned width or height value.

    Because you can associate only one flip presentation model swap chain at a time with an IWindow, the Microsoft Direct3D?11 policy of deferring the destruction of objects can cause problems if you attempt to destroy a flip presentation model swap chain and replace it with another swap chain. For more info about this situation, see Deferred Destruction Issues with Flip Presentation Swap Chains.

    +
    + + hh404559 + HRESULT IDXGIFactory2::CreateSwapChainForCoreWindow([In] IUnknown* pDevice,[In] IUnknown* pWindow,[In] const DXGI_SWAP_CHAIN_DESC1* pDesc,[In, Optional] IDXGIOutput* pRestrictToOutput,[Out] IDXGISwapChain1** ppSwapChain) + IDXGIFactory2::CreateSwapChainForCoreWindow +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the adapter on which a shared resource object was created.

    +
    +

    A handle to a shared resource object. The method returns this handle.

    +

    A reference to a variable that receives a locally unique identifier () value that identifies the adapter. is defined in Dxgi.h. An is a 64-bit value that is guaranteed to be unique only on the operating system on which it was generated. The uniqueness of an is guaranteed only until the operating system is restarted.

    +

    GetSharedResourceAdapterLuid returns:

    • if it identified the adapter.
    • if hResource is invalid.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    You cannot share resources across adapters. Therefore, you cannot open a shared resource on an adapter other than the adapter on which the resource was created. Call GetSharedResourceAdapterLuid before you open a shared resource to ensure that the resource was created on the appropriate adapter. To open a shared resource, call the or method.

    +
    + + hh404560 + HRESULT IDXGIFactory2::GetSharedResourceAdapterLuid([In] void* hResource,[Out] LUID* pLuid) + IDXGIFactory2::GetSharedResourceAdapterLuid +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Registers an application window to receive notification messages of changes of stereo status.

    +
    +

    The handle of the window to send a notification message to when stereo status change occurs.

    +

    Identifies the notification message to send.

    +

    A reference to a key value that an application can pass to the method to unregister the notification message that wMsg specifies.

    +

    RegisterStereoStatusWindow returns:

    • if it successfully registered the window.
    • E_OUTOFMEMORY if memory is unavailable to complete the operation.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + + hh404587 + HRESULT IDXGIFactory2::RegisterStereoStatusWindow([In] HWND WindowHandle,[In] unsigned int wMsg,[Out] unsigned int* pdwCookie) + IDXGIFactory2::RegisterStereoStatusWindow +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Registers to receive notification of changes in stereo status by using event signaling.

    +
    +

    A handle to the event object that the operating system sets when notification of stereo status change occurs. The CreateEvent or OpenEvent function returns this handle.

    +

    A reference to a key value that an application can pass to the method to unregister the notification event that hEvent specifies.

    +

    RegisterStereoStatusEvent returns:

    • if it successfully registered the event.
    • E_OUTOFMEMORY if memory is unavailable to complete the operation.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + + hh404584 + HRESULT IDXGIFactory2::RegisterStereoStatusEvent([In] void* hEvent,[Out] unsigned int* pdwCookie) + IDXGIFactory2::RegisterStereoStatusEvent +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unregisters a window or an event to stop it from receiving notification when stereo status changes.

    +
    +

    A key value for the window or event to unregister. The or method returns this value.

    + + hh404593 + void IDXGIFactory2::UnregisterStereoStatus([In] unsigned int dwCookie) + IDXGIFactory2::UnregisterStereoStatus +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Registers an application window to receive notification messages of changes of occlusion status.

    +
    +

    The handle of the window to send a notification message to when occlusion status change occurs.

    +

    Identifies the notification message to send.

    +

    A reference to a key value that an application can pass to the method to unregister the notification message that wMsg specifies.

    +

    RegisterOcclusionStatusWindow returns:

    • if it successfully registered the window.
    • E_OUTOFMEMORY if memory is unavailable to complete the operation.
    • if WindowHandle is not a valid window handle or not the window handle that the current process owns.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    Apps choose the Windows message that Windows sends when occlusion status changes.

    +
    + + hh404581 + HRESULT IDXGIFactory2::RegisterOcclusionStatusWindow([In] HWND WindowHandle,[In] unsigned int wMsg,[Out] unsigned int* pdwCookie) + IDXGIFactory2::RegisterOcclusionStatusWindow +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Registers to receive notification of changes in occlusion status by using event signaling.

    +
    +

    A handle to the event object that the operating system sets when notification of occlusion status change occurs. The CreateEvent or OpenEvent function returns this handle.

    +

    A reference to a key value that an application can pass to the method to unregister the notification event that hEvent specifies.

    +

    RegisterOcclusionStatusEvent returns:

    • if the method successfully registered the event.
    • E_OUTOFMEMORY if memory is unavailable to complete the operation.
    • if hEvent is not a valid handle or not an event handle.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    If you call RegisterOcclusionStatusEvent multiple times with the same event handle, RegisterOcclusionStatusEvent fails with .

    If you call RegisterOcclusionStatusEvent multiple times with the different event handles, RegisterOcclusionStatusEvent properly registers the events.

    +
    + + hh404578 + HRESULT IDXGIFactory2::RegisterOcclusionStatusEvent([In] void* hEvent,[Out] unsigned int* pdwCookie) + IDXGIFactory2::RegisterOcclusionStatusEvent +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unregisters a window or an event to stop it from receiving notification when occlusion status changes.

    +
    +

    A key value for the window or event to unregister. The or method returns this value.

    + + hh404590 + void IDXGIFactory2::UnregisterOcclusionStatus([In] unsigned int dwCookie) + IDXGIFactory2::UnregisterOcclusionStatus +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a swap chain that you can use to send Direct3D content into the DirectComposition API or the Windows.UI.Xaml framework to compose in a window.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. + +

    You can use composition swap chains with either DirectComposition?s IDCompositionVisual interface or XAML?s SwapChainBackgroundPanel class. For DirectComposition, you can call the IDCompositionVisual::SetContent method to set the swap chain as the content of a visual object, which then allows you to bind the swap chain to the visual tree. For XAML, the SwapChainBackgroundPanel class exposes a classic COM interface ISwapChainBackgroundPanelNative. You can use the ISwapChainBackgroundPanelNative::SetSwapChain method to bind to the XAML UI graph.

    The , , , , and IDXGISwapChain::GetCoreWindow methods aren't valid on this type of swap chain. If you call any of these methods on this type of swap chain, they fail.

    +
    + + hh404558 + HRESULT IDXGIFactory2::CreateSwapChainForComposition([In] IUnknown* pDevice,[In] const DXGI_SWAP_CHAIN_DESC1* pDesc,[In, Optional] IDXGIOutput* pRestrictToOutput,[Out] IDXGISwapChain1** ppSwapChain) + IDXGIFactory2::CreateSwapChainForComposition +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether to use stereo mode.

    +
    + +

    We recommend that windowed applications call IsWindowedStereoEnabled before they attempt to use stereo. IsWindowedStereoEnabled returns TRUE if both of the following items are true:

    • All adapters in the computer have drivers that are capable of stereo. This only means that the driver is implemented to the Windows Display Driver Model (WDDM) for Windows?8 Consumer Preview (WDDM 1.2). However, the adapter does not necessarily have to be able to scan out stereo.
    • The current desktop mode (desktop modes are mono) and system policy and hardware are configured so that the Desktop Window Manager (DWM) performs stereo composition on at least one adapter output.

    The creation of a windowed stereo swap chain succeeds if the first requirement is met. However, if the adapter can't scan out stereo, the output on that adapter is reduced to mono.

    The Direct3D 11.1 Simple Stereo 3D Sample shows how to add a stereoscopic 3D effect and how to respond to system stereo changes.

    +
    + + hh404561 + IsWindowedStereoEnabled + IsWindowedStereoEnabled + BOOL IDXGIFactory2::IsWindowedStereoEnabled() +
    + + +

    Using a key, acquires exclusive rendering access to a shared resource.

    +
    + +

    The AcquireSync method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time. This method uses a key to determine which device currently has exclusive access to the surface.

    When a surface is created using the D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX value of the D3D10_RESOURCE_MISC_FLAG enumeration, you must call the AcquireSync method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

    To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

    The AcquireSync method uses the key as follows, depending on the state of the surface:

    • On initial creation, the surface is unowned and any device can call the AcquireSync method to gain access. For an unowned device, only a key of 0 will succeed. Calling the AcquireSync method for any other key will stall the calling CPU thread.
    • If the surface is owned by a device when you call the AcquireSync method, the CPU thread that called the AcquireSync method will stall until the owning device calls the ReleaseSync method using the same Key.
    • If the surface is unowned when you call the AcquireSync method (for example, the last owning device has already called the ReleaseSync method), the AcquireSync method will succeed if you specify the same key that was specified when the ReleaseSync method was last called. Calling the AcquireSync method using any other key will cause a stall.
    • When the owning device calls the ReleaseSync method with a particular key, and more than one device is waiting after calling the AcquireSync method using the same key, any one of the waiting devices could be woken up first. The order in which devices are woken up is undefined.
    • A keyed mutex does not support recursive calls to the AcquireSync method.
    +
    + + ff471339 + IDXGIKeyedMutex + IDXGIKeyedMutex +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Using a key, acquires exclusive rendering access to a shared resource.

    +
    +

    A value that indicates which device to give access to. This method will succeed when the device that currently owns the surface calls the method using the same value. This value can be any UINT64 value.

    +

    The time-out interval, in milliseconds. This method will return if the interval elapses, and the keyed mutex has not been released using the specified Key. If this value is set to zero, the AcquireSync method will test to see if the keyed mutex has been released and returns immediately. If this value is set to INFINITE, the time-out interval will never elapse.

    +

    Return if successful.

    If the owning device attempted to create another keyed mutex on the same shared resource, AcquireSync returns E_FAIL.

    AcquireSync can also return the following DWORD constants. Therefore, you should explicitly check for these constants. If you only use the SUCCEEDED macro on the return value to determine if AcquireSync succeeded, you will not catch these constants.

    • WAIT_ABANDONED - The shared surface and keyed mutex are no longer in a consistent state. If AcquireSync returns this value, you should release and recreate both the keyed mutex and the shared surface.
    • WAIT_TIMEOUT - The time-out interval elapsed before the specified key was released.
    + +

    The AcquireSync method creates a lock to a surface that is shared between multiple devices, allowing only one device to render to a surface at a time. This method uses a key to determine which device currently has exclusive access to the surface.

    When a surface is created using the D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX value of the D3D10_RESOURCE_MISC_FLAG enumeration, you must call the AcquireSync method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

    To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

    The AcquireSync method uses the key as follows, depending on the state of the surface:

    • On initial creation, the surface is unowned and any device can call the AcquireSync method to gain access. For an unowned device, only a key of 0 will succeed. Calling the AcquireSync method for any other key will stall the calling CPU thread.
    • If the surface is owned by a device when you call the AcquireSync method, the CPU thread that called the AcquireSync method will stall until the owning device calls the ReleaseSync method using the same Key.
    • If the surface is unowned when you call the AcquireSync method (for example, the last owning device has already called the ReleaseSync method), the AcquireSync method will succeed if you specify the same key that was specified when the ReleaseSync method was last called. Calling the AcquireSync method using any other key will cause a stall.
    • When the owning device calls the ReleaseSync method with a particular key, and more than one device is waiting after calling the AcquireSync method using the same key, any one of the waiting devices could be woken up first. The order in which devices are woken up is undefined.
    • A keyed mutex does not support recursive calls to the AcquireSync method.
    +
    + + ff471339 + HRESULT IDXGIKeyedMutex::AcquireSync([In] unsigned longlong Key,[In] unsigned int dwMilliseconds) + IDXGIKeyedMutex::AcquireSync +
    + + +

    Using a key, releases exclusive rendering access to a shared resource.

    +
    +

    A value that indicates which device to give access to. This method succeeds when the device that currently owns the surface calls the ReleaseSync method using the same value. This value can be any UINT64 value.

    +

    Returns if successful.

    If the device attempted to release a keyed mutex that is not valid or owned by the device, ReleaseSync returns E_FAIL.

    + +

    The ReleaseSync method releases a lock to a surface that is shared between multiple devices. This method uses a key to determine which device currently has exclusive access to the surface.

    When a surface is created using the D3D10_RESOURCE_MISC_SHARED_KEYEDMUTEX value of the D3D10_RESOURCE_MISC_FLAG enumeration, you must call the method before rendering to the surface. You must call the ReleaseSync method when you are done rendering to a surface.

    After you call the ReleaseSync method, the shared resource is unset from the rendering pipeline.

    To acquire a reference to the keyed mutex object of a shared resource, call the QueryInterface method of the resource and pass in the UUID of the interface. For more information about acquiring this reference, see the following code example.

    +
    + + ff471340 + HRESULT IDXGIKeyedMutex::ReleaseSync([In] unsigned longlong Key) + IDXGIKeyedMutex::ReleaseSync +
    + + +

    An interface implements one or more surfaces for storing rendered data before presenting it to an output.

    +
    + +

    You can create a swap chain in several ways. If your application uses Direct3D, create a swap chain when you create a device by + calling D3D10CreateDeviceAndSwapChain or D3D11CreateDeviceAndSwapChain. If your application does not need Direct3D, create a swap chain for use directly with DXGI by + calling , , IDXGIFactory2::CreateSwapChainForImmersiveWindow, or IDXGIFactory2::CreateSwapChainForCompositionSurface.

    +
    + + bb174569 + IDXGISwapChain + IDXGISwapChain +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [Starting with Direct3D 11.1, we recommend not to use Present anymore to present a rendered image. Instead, use .]

    Presents a rendered image to the user.

    +
    + No documentation. + No documentation. +

    Possible return values include: , or (see DXGI_ERROR), (see ), or D3DDDIERR_DEVICEREMOVED.

    Note??The Present method can return either or D3DDDIERR_DEVICEREMOVED if a video card has been physically removed from the computer, or a driver upgrade for the video card has occurred.

    + +

    For the best performance when flipping swap-chain buffers in a full-screen application, see Full-Screen Application Performance Hints.

    Because calling Present might cause the render thread to wait on the message-pump thread, be careful when calling this method in an application that uses multiple threads. For more details, see Multithreading Considerations.

    Differences between Direct3D 9 and Direct3D 10:

    Specifying in the Flags parameter is analogous to IDirect3DDevice9::TestCooperativeLevel in Direct3D 9.

    ?

    For flip presentation model swap chains that you create with the value set, a successful presentation unbinds back buffer 0 from the graphics pipeline, except for when you pass the flag in the Flags parameter.

    Flip presentation model queue

    Suppose the following frames with sync-interval values are queued from oldest (A) to newest (E) before you call Present.

    A: 3, B: 0, C: 0, D: 1, E: 0

    When you call Present, the runtime shows frame A for 3 vertical blank intervals, then frame D for 1 vertical blank interval, and then frame E until you submit a new presentation. The runtime discards frames C and D.

    +
    + + bb174576 + HRESULT IDXGISwapChain::Present([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS Flags) + IDXGISwapChain::Present +
    + + +

    Accesses one of the swap-chain's back buffers.

    +
    +

    A zero-based buffer index.

    If the swap chain's swap effect is , this method can only access the first buffer; for this situation, set the index to zero.

    If the swap chain's swap effect is either or , this method can only access read-only buffers with indexes greater than zero. Read-only back buffers have the BufferUsage member of the or structure set to .

    +

    The type of interface used to manipulate the buffer. See remarks.

    +

    A reference to a back-buffer interface.

    +

    Returns one of the following DXGI_ERROR.

    + + bb174570 + HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) + IDXGISwapChain::GetBuffer +
    + + +

    Sets the display state to windowed or full screen.

    +
    +

    A Boolean value that specifies whether to set the display state to windowed or full screen. TRUE for full screen, and for windowed.

    +

    If you pass TRUE to the Fullscreen parameter to set the display state to full screen, you can optionally set this parameter to a reference to an interface for the output target that contains the swap chain. If you set this parameter to null, DXGI will choose the output based on the swap-chain's device and the output window's placement. If you pass to Fullscreen, you must set this parameter to null.

    +

    This methods returns:

    • if the action succeeded and the swap chain was placed in the requested state.
    • if the action failed. There are many reasons why a windowed-mode swap chain cannot switch to full-screen mode. For instance:
      • The application is running over Terminal Server.
      • The output window is occluded.
      • The output window does not have keyboard focus.
      • Another application is already in full-screen mode.

      When this error is returned, an application can continue to run in windowed mode and try to switch to full-screen mode later.

    • is returned if a fullscreen/windowed mode transition is occurring when this API is called.
    • Other error codes if you run out of memory or encounter another unexpected fault; these codes may be treated as hard, non-continuable errors.
    + +

    DXGI may change the display state of a swap chain in response to end user or system requests.

    We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through SetFullscreenState; that is, do not set the Windowed member of to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything. Also, we recommend that you have a time-out confirmation screen or other fallback mechanism when you allow the end user to change display modes.

    Notes for Metro style apps

    If a Metro style app calls SetFullscreenState to set the display state to full screen, SetFullscreenState fails with .

    You cannot call SetFullscreenState on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForCompositionSurface.

    For the flip presentation model, after you transition the display state to full screen, you must call ResizeBuffers to ensure that your call to succeeds.

    +
    + + bb174579 + HRESULT IDXGISwapChain::SetFullscreenState([In] BOOL Fullscreen,[In, Optional] IDXGIOutput* pTarget) + IDXGISwapChain::SetFullscreenState +
    + + +

    Get the state associated with full-screen mode.

    +
    +

    A reference to a boolean whose value is either:

    • TRUE if the swap chain is in full-screen mode
    • if the swap chain is in windowed mode
    +

    A reference to the output target (see ) when the mode is full screen; otherwise null.

    +

    Returns one of the following DXGI_ERROR.

    + +

    When the swap chain is in full-screen mode, a reference to the target output will be returned and its reference count will be incremented.

    +
    + + bb174574 + HRESULT IDXGISwapChain::GetFullscreenState([Out, Optional] BOOL* pFullscreen,[Out, Optional] IDXGIOutput** ppTarget) + IDXGISwapChain::GetFullscreenState +
    + + +

    [Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use .]

    Get a description of the swap chain.

    +
    + No documentation. +

    Returns one of the following DXGI_ERROR.

    + + bb174572 + HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) + IDXGISwapChain::GetDesc +
    + + +

    Changes the swap chain's back buffer size, format, and number of buffers. This should be called when the application window is resized.

    +
    +

    The number of buffers in the swap chain (including all back and front buffers). This number can be different from the number of buffers with which you created the swap chain. This number can't be greater than DXGI_MAX_SWAP_CHAIN_BUFFERS. Set this number to zero to preserve the existing number of buffers in the swap chain. You can't specify greater than two buffers for the flip presentation model.

    +

    New width of the back buffer. If you specify zero, DXGI will use the width of the client area of the target window. You can't specify the width as zero if you called the IDXGIFactory2::CreateSwapChainForCompositionSurface method to create the swap chain for a composition surface.

    +

    New height of the back buffer. If you specify zero, DXGI will use the height of the client area of the target window. You can't specify the height as zero if you called the IDXGIFactory2::CreateSwapChainForCompositionSurface method to create the swap chain for a composition surface.

    +

    A -typed value for the new format of the back buffer. Set this value to to preserve the existing format of the back buffer. The flip presentation model supports a more restricted set of formats than the bit-block transfer (bitblt) model.

    +

    A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies options for swap-chain behavior.

    +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    + +

    You can't resize a swap chain unless you release all outstanding references to its back buffers. You must release all of its direct and indirect references on the back buffers in order for ResizeBuffers to succeed.

    Direct references are held by the application after it calls AddRef on a resource.

    Indirect references are held by views to a resource, binding a view of the resource to a device context, a command list that used the resource, a command list that used a view to that resource, a command list that executed another command list that used the resource, and so on.

    Before you call ResizeBuffers, ensure that the application releases all references (by calling the appropriate number of Release invocations) on the resources, any views to the resource, and any command lists that use either the resources or views, and ensure that neither the resource nor a view is still bound to a device context. You can use to ensure that all references are released. If a view is bound to a deferred context, you must discard the partially built command list as well (by calling ClearState, , then Release on the command list). After you call ResizeBuffers, you can re-query interfaces via .

    For swap chains that you created with , before you call ResizeBuffers, also call on the swap chain's back-buffer surface to ensure that you have no outstanding GDI device contexts (DCs) open.

    We recommend that you call ResizeBuffers when a client window is resized (that is, when an application receives a WM_SIZE message).

    The only difference between ResizeBuffers in Windows Developer Preview and ResizeBuffers in Windows?7 is with flip presentation model swap chains that you create with the value set. In Windows Developer Preview, you must call ResizeBuffers to realize a transition between full-screen mode and windowed mode; otherwise, your next call to the Present method fails.

    +
    + + bb174577 + HRESULT IDXGISwapChain::ResizeBuffers([In] unsigned int BufferCount,[In] unsigned int Width,[In] unsigned int Height,[In] DXGI_FORMAT NewFormat,[In] DXGI_SWAP_CHAIN_FLAG SwapChainFlags) + IDXGISwapChain::ResizeBuffers +
    + + +

    Resizes the output target.

    +
    +

    A reference to a structure that describes the mode, which specifies the new width, height, format, and refresh rate of the target. If the format is , ResizeTarget uses the existing format. We only recommend that you use when the swap chain is in full-screen mode as this method is not thread safe.

    +

    Returns a code that indicates success or failure. is returned if a fullscreen/windowed mode transition is occurring when this API is called. See DXGI_ERROR for additional DXGI error codes.

    + +

    ResizeTarget resizes the target window when the swap chain is in windowed mode, and changes the display mode on the target output when the swap chain is in full-screen mode. Therefore, applications can call ResizeTarget to resize the target window (rather than a Microsoft Win32API such as SetWindowPos) without knowledge of the swap chain display mode.

    If a Metro style app calls ResizeTarget, it fails with .

    You cannot call ResizeTarget on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForCompositionSurface.

    +
    + + bb174578 + HRESULT IDXGISwapChain::ResizeTarget([In] const DXGI_MODE_DESC* pNewTargetParameters) + IDXGISwapChain::ResizeTarget +
    + + +

    Get the output (the display monitor) that contains the majority of the client area of the target window.

    +
    +

    A reference to the output interface (see ).

    +

    Returns one of the following DXGI_ERROR.

    + +

    If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

    The output is also owned by the adapter on which the swap chain's device was created.

    You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForCompositionSurface.

    +
    + + bb174571 + HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) + IDXGISwapChain::GetContainingOutput +
    + + +

    Gets performance statistics about the last render frame.

    +
    +

    A reference to a structure for the frame statistics.

    +

    Returns one of the DXGI_ERROR values.

    + +

    You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

    You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the value in the SwapEffect member of the structure to specify that the swap chain uses the flip presentation model.

    +
    + + bb174573 + HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) + IDXGISwapChain::GetFrameStatistics +
    + + +

    Gets the number of times that or has been called.

    +
    + No documentation. +

    Returns one of the DXGI_ERROR values.

    + +

    For info about presentation statistics for a frame, see .

    +
    + + bb174575 + HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) + IDXGISwapChain::GetLastPresentCount +
    + + + Creates a swap chain. + + + If you attempt to create a swap chain in full-screen mode, and full-screen mode is unavailable, the swap chain will be created in windowed mode and DXGI_STATUS_OCCLUDED will be returned. If the buffer width or the buffer height are zero, the sizes will be inferred from the output window size in the swap-chain description. Since the target output cannot be chosen explicitly when the swap-chain is created, you should not create a full-screen swap chain. This can reduce presentation performance if the swap chain size and the output window size do not match. Here are two ways to ensure the sizes match: Create a windowed swap chain and then set it full-screen using . Save a reference to the swap-chain immediately after creation, and use it to get the output window size during a WM_SIZE event. Then resize the swap chain buffers (with ) during the transition from windowed to full-screen. If the swap chain is in full-screen mode, before you release it, you must use {{SetFullscreenState}} to switch it to windowed mode. For more information about releasing a swap chain, see the Destroying a Swap Chain section of {{DXGI Overview}}. + + a reference to a . + A reference to the device that will write 2D images to the swap chain. + A reference to the swap-chain description (see ). + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out] IDXGISwapChain** ppSwapChain) + bb174537 + HRESULT IDXGIFactory::CreateSwapChain([In] IUnknown* pDevice,[In] DXGI_SWAP_CHAIN_DESC* pDesc,[Out, Fast] IDXGISwapChain** ppSwapChain) + IDXGIFactory::CreateSwapChain + + + + Access one of the swap-chain back buffers. + + The interface of the surface to resolve from the back buffer + A zero-based buffer index. If the swap effect is not DXGI_SWAP_EFFECT_SEQUENTIAL, this method only has access to the first buffer; for this case, set the index to zero. + + Returns a reference to a back-buffer interface. + + bb174570 + HRESULT IDXGISwapChain::GetBuffer([In] unsigned int Buffer,[In] const GUID& riid,[Out] void** ppSurface) + IDXGISwapChain::GetBuffer + + + +

    [Starting with Direct3D 11.1, we recommend not to use GetDesc anymore to get a description of the swap chain. Instead, use .]

    Get a description of the swap chain.

    +
    + + bb174572 + GetDesc + GetDesc + HRESULT IDXGISwapChain::GetDesc([Out] DXGI_SWAP_CHAIN_DESC* pDesc) +
    + + +

    Get the output (the display monitor) that contains the majority of the client area of the target window.

    +
    + +

    If the method succeeds, the output interface will be filled and its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

    The output is also owned by the adapter on which the swap chain's device was created.

    You cannot call GetContainingOutput on a windowless swap chain that you created with IDXGIFactory2::CreateSwapChainForCompositionSurface.

    +
    + + bb174571 + GetContainingOutput + GetContainingOutput + HRESULT IDXGISwapChain::GetContainingOutput([Out] IDXGIOutput** ppOutput) +
    + + +

    Gets performance statistics about the last render frame.

    +
    + +

    You cannot use GetFrameStatistics for swap chains that both use the bit-block transfer (bitblt) presentation model and draw in windowed mode.

    You can only use GetFrameStatistics for swap chains that either use the flip presentation model or draw in full-screen mode. You set the value in the SwapEffect member of the structure to specify that the swap chain uses the flip presentation model.

    +
    + + bb174573 + GetFrameStatistics + GetFrameStatistics + HRESULT IDXGISwapChain::GetFrameStatistics([Out] DXGI_FRAME_STATISTICS* pStats) +
    + + +

    Gets the number of times that or has been called.

    +
    + +

    For info about presentation statistics for a frame, see .

    +
    + + bb174575 + GetLastPresentCount + GetLastPresentCount + HRESULT IDXGISwapChain::GetLastPresentCount([Out] unsigned int* pLastPresentCount) +
    + + + Gets or sets a value indicating whether the swapchain is in fullscreen. + + + true if this swapchain is in fullscreen; otherwise, false. + + bb174574 + HRESULT IDXGISwapChain::GetFullscreenState([Out] BOOL* pFullscreen,[Out] IDXGIOutput** ppTarget) + IDXGISwapChain::GetFullscreenState + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Provides presentation capabilities that are enhanced from . These presentation capabilities consist of specifying dirty rectangles and scroll rectangle to optimize the presentation.

    +
    + +

    You can create a swap chain by + calling , , or . You can also create a swap chain when you call D3D11CreateDeviceAndSwapChain; however, you can then only access the sub-set of swap-chain functionality that the interface provides.

    provides the IsTemporaryMonoSupported method that you can use to determine whether the swap chain supports "temporary mono? presentation. This type of swap chain is a stereo swap chain that can be used to present mono content. +

    Note??Some stereo features like the advanced presentation flags are not represented by an explicit interface change. Furthermore, the original () and new () swap chain interfaces generally have the same behavior. For information about how methods are translated into methods, see the descriptions of the methods.

    +
    + + hh404631 + IDXGISwapChain1 + IDXGISwapChain1 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a description of the swap chain.

    +
    +

    A reference to a structure that describes the swap chain.

    +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    + + hh404640 + HRESULT IDXGISwapChain1::GetDesc1([Out] DXGI_SWAP_CHAIN_DESC1* pDesc) + IDXGISwapChain1::GetDesc1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Gets a description of a full-screen swap chain.

    +
    +

    A reference to a structure that describes the full-screen swap chain.

    +

    GetFullscreenDesc returns:

    • if it successfully retrieved the description of the full-screen swap chain.
    • for non- swap chains or if pDesc is null.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    The semantics of GetFullscreenDesc are identical to that of the IDXGISwapchain::GetDesc method for -based swap chains.

    +
    + + hh404644 + HRESULT IDXGISwapChain1::GetFullscreenDesc([Out] DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc) + IDXGISwapChain1::GetFullscreenDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Retrieves the underlying for this swap-chain object.

    +
    + No documentation. +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    If pHwnd receives null (that is, the swap chain is not -based), GetHwnd returns .

    + +

    Applications call the method to create a swap chain that is associated with an .

    +
    + + hh404647 + HRESULT IDXGISwapChain1::GetHwnd([Out] HWND* pHwnd) + IDXGISwapChain1::GetHwnd +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Retrieves the underlying IWindow object for this swap-chain object.

    +
    +

    A reference to the globally unique identifier () of the IWindow object that is referenced by the ppUnk parameter.

    +

    A reference to a variable that receives a reference to the IWindow object.

    +

    GetCoreWindow returns:

    • if it successfully retrieved the underlying IWindow object.
    • if ppUnk is null; that is, the swap chain is not associated with a IWindow object.
    • Any that a call to QueryInterface to query for an IWindow object might typically return.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    Applications call the method to create a swap chain that is associated with an IWindow object.

    +
    + + hh404650 + HRESULT IDXGISwapChain1::GetCoreWindow([In] const GUID& refiid,[Out] void** ppUnk) + IDXGISwapChain1::GetCoreWindow +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Presents a frame on the display screen.

    +
    +

    An integer that specifies how to synchronize presentation of a frame with the vertical blank.

    For the bit-block transfer (bitblt) model, values are:

    • 0 - The presentation occurs immediately, there is no synchronization.
    • 1,2,3,4 - Synchronize presentation after the nth vertical blank.

    For the flip model, values are:

    • 0 - Discard this frame if you submitted a more recent presentation.
    • n > 0 - Synchronize presentation for at least n vertical blanks.

    For an example that shows how sync-interval values affect a flip presentation queue, see Remarks.

    If the update region straddles more than one output (each represented by ), Present1 performs the synchronization to the output that contains the largest subrectangle of the target window's client area.

    +

    An integer value that contains swap-chain presentation options. These options are defined by the DXGI_PRESENT constants.

    +

    A reference to a structure that describes updated rectangles and scroll information of the frame to present.

    +

    Possible return values include: , , , , or E_OUTOFMEMORY.

    + +

    An application can use Present1 to optimize presentation by specifying scroll and dirty rectangles. When the runtime has information about these rectangles, the runtime can then perform necessary bitblts during presentation more efficiently and pass this metadata to the Desktop Window Manager (DWM). The DWM can then use the metadata to optimize presentation and pass the metadata to indirect displays and terminal servers to optimize traffic over the wire. An application must confine its modifications to only the dirty regions that it passes to Present1, as well as modify the entire dirty region to avoid undefined resource contents from being exposed.

    For flip presentation model swap chains that you create with the value set, a successful presentation results in an unbind of back buffer 0 from the graphics pipeline, except for when you pass the flag in the Flags parameter.

    Flip presentation model queue

    Suppose the following frames with sync-interval values are queued from oldest (A) to newest (E) before you call Present1.

    A: 3, B: 0, C: 0, D: 1, E: 0

    When you call Present1, the runtime shows frame A for 3 vertical blank intervals, then frame D for 1 vertical blank interval, and then frame E until you submit a new presentation. The runtime discards frames B and C.

    +
    + + hh446797 + HRESULT IDXGISwapChain1::Present1([In] unsigned int SyncInterval,[In] DXGI_PRESENT_FLAGS PresentFlags,[In] const void* pPresentParameters) + IDXGISwapChain1::Present1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether a swap chain supports ?temporary mono.?

    +
    +

    Indicates whether to use the swap chain in temporary mono mode. TRUE indicates that you can use temporary-mono mode; otherwise, .

    + +

    Temporary mono is a feature where a stereo swap chain can be presented using only the content in the left buffer. To present using the left buffer as a mono buffer, an application calls the method with the flag. All windowed swap chains support temporary mono. However, full-screen swap chains optionally support temporary mono because not all hardware supports temporary mono on full-screen swap chains efficiently.

    +
    + + hh446794 + BOOL IDXGISwapChain1::IsTemporaryMonoSupported() + IDXGISwapChain1::IsTemporaryMonoSupported +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the output (the display monitor) to which you can restrict the contents of a present operation.

    +
    +

    A reference to a buffer that receives a reference to the interface for the restrict-to output. An application passes this reference to in a call to the , , or method to create the swap chain.

    +

    Returns if the restrict-to output was successfully retrieved; otherwise, returns E_INVALIDARG if the reference is invalid.

    + +

    If the method succeeds, the runtime fills the buffer at ppRestrictToOutput with a reference to the restrict-to output interface. This restrict-to output interface has its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

    The output is also owned by the adapter on which the swap chain's device was created.

    +
    + + hh446788 + HRESULT IDXGISwapChain1::GetRestrictToOutput([Out] IDXGIOutput** ppRestrictToOutput) + IDXGISwapChain1::GetRestrictToOutput +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Changes the background color of the swap chain.

    +
    +

    A reference to a DXGI_RGBA structure that specifies the background color to set.

    +

    SetBackgroundColor returns:

    • if it successfully set the background color.
    • E_INVALIDARG if the pColor parameter is incorrect, for example, pColor is null or any of the floating-point values of the members of DXGI_RGBA to which pColor points are outside the range from 0.0 through 1.0.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    The background color affects only swap chains that you create with in windowed mode. You pass this value in a call to , , or . Typically, the background color is not visible unless the swap-chain contents are smaller than the destination window.

    When you set the background color, it is not immediately realized. It takes effect in conjunction with your next call to the method. The DXGI_PRESENT flags that you pass to can help achieve the effect that you require. For example, if you call SetBackgroundColor and then call with the Flags parameter set to , you change only the background color without changing the displayed contents of the swap chain.

    When you call the method to display contents of the swap chain, uses the value that is specified in the AlphaMode member of the structure to determine how to handle the a member of the DXGI_RGBA structure, the alpha value of the background color, that achieves window transparency. For example, if AlphaMode is , ignores the a member of DXGI_RGBA.

    +
    + + hh446799 + HRESULT IDXGISwapChain1::SetBackgroundColor([In] const D3DCOLORVALUE* pColor) + IDXGISwapChain1::SetBackgroundColor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Retrieves the background color of the swap chain.

    +
    +

    A reference to a DXGI_RGBA structure that receives the background color of the swap chain.

    +

    GetBackgroundColor returns:

    • if it successfully retrieves the background color.
    • if the pColor parameter is invalid, for example, pColor is null.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    Note??The background color that GetBackgroundColor retrieves does not indicate what the screen currently displays. The background color indicates what the screen will display with your next call to the method. The default value of the background color is black with full opacity: 0,0,0,1.

    +
    + + hh404634 + HRESULT IDXGISwapChain1::GetBackgroundColor([Out] D3DCOLORVALUE* pColor) + IDXGISwapChain1::GetBackgroundColor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the rotation of the back buffers for the swap chain.

    +
    +

    A -typed value that specifies how to set the rotation of the back buffers for the swap chain.

    +

    SetRotation returns:

    • if it successfully set the rotation.
    • if the swap chain is bit-block transfer (bitblt) model. The swap chain must be flip model to successfully call SetRotation.
    • Possibly other error codes that are described in the DXGI_ERROR topic.
    + +

    You can only use SetRotation to rotate the back buffers for flip-model swap chains that you present in windowed mode.

    SetRotation isn't supported for rotating the back buffers for flip-model swap chains that you present in full-screen mode. In this situation, SetRotation doesn't fail, but you must ensure that you specify no rotation () for the swap chain. Otherwise, when you call or to present a frame, the presentation fails.

    +
    + + hh446801 + HRESULT IDXGISwapChain1::SetRotation([In] DXGI_MODE_ROTATION Rotation) + IDXGISwapChain1::SetRotation +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the rotation of the back buffers for the swap chain.

    +
    +

    A reference to a variable that receives a -typed value that specifies the rotation of the back buffers for the swap chain.

    +

    Returns if successful; an error code otherwise. For a list of error codes, see DXGI_ERROR.

    + + hh446791 + HRESULT IDXGISwapChain1::GetRotation([Out] DXGI_MODE_ROTATION* pRotation) + IDXGISwapChain1::GetRotation +
    + + + [This documentation is preliminary and is subject to change.] + + An integer that specifies how to synchronize presentation of a frame with the vertical blank. For the bit-block transfer (bitblt) model, values are: 0 - The presentation occurs immediately, there is no synchronization. 1,2,3,4 - Synchronize presentation after the nth vertical blank. For the flip model, values are: 0 - Discard this frame if you submitted a more recent presentation. n > 0 - Synchronize presentation for at least n vertical blanks. For an example that shows how sync-interval values affect a flip presentation queue, see Remarks. If the update region straddles more than one output (each represented by ), Present1 performs the synchronization to the output that contains the largest subrectangle of the target window's client area. + An integer value that contains swap-chain presentation options. These options are defined by the DXGI_PRESENT constants. + A reference to a structure that describes updated rectangles and scroll information of the frame to present. + Possible return values include: , , , , or E_OUTOFMEMORY. + + An application can use Present1 to optimize presentation by specifying scroll and dirty rectangles. When the runtime has information about these rectangles, the runtime can then perform necessary bitblts during presentation more efficiently and pass this metadata to the Desktop Window Manager (DWM). The DWM can then use the metadata to optimize presentation and pass the metadata to indirect displays and terminal servers to optimize traffic over the wire. An application must confine its modifications to only the dirty regions that it passes to Present1, as well as modify the entire dirty region to avoid undefined resource contents from being exposed.For flip presentation model swap chains that you create with the value set, a successful presentation results in an unbind of back buffer 0 from the graphics pipeline, except for when you pass the flag in the Flags parameter.Flip presentation model queueSuppose the following frames with sync-interval values are queued from oldest (A) to newest (E) before you call Present1.A: 3, B: 0, C: 0, D: 1, E: 0When you call Present1, the runtime shows frame A for 3 vertical blank intervals, then frame D for 1 vertical blank interval, and then frame E until you submit a new presentation. The runtime discards frames C and D. + + + HRESULT IDXGISwapChain1::Present1([In] unsigned int SyncInterval,[In] unsigned int PresentFlags,[In] const void* pPresentParameters) + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a description of the swap chain.

    +
    + + hh404640 + GetDesc1 + GetDesc1 + HRESULT IDXGISwapChain1::GetDesc1([Out] DXGI_SWAP_CHAIN_DESC1* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Gets a description of a full-screen swap chain.

    +
    + +

    The semantics of GetFullscreenDesc are identical to that of the IDXGISwapchain::GetDesc method for -based swap chains.

    +
    + + hh404644 + GetFullscreenDesc + GetFullscreenDesc + HRESULT IDXGISwapChain1::GetFullscreenDesc([Out] DXGI_SWAP_CHAIN_FULLSCREEN_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Retrieves the underlying for this swap-chain object.

    +
    + +

    Applications call the method to create a swap chain that is associated with an .

    +
    + + hh404647 + GetHwnd + GetHwnd + HRESULT IDXGISwapChain1::GetHwnd([Out] HWND* pHwnd) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether a swap chain supports ?temporary mono.?

    +
    + +

    Temporary mono is a feature where a stereo swap chain can be presented using only the content in the left buffer. To present using the left buffer as a mono buffer, an application calls the method with the flag. All windowed swap chains support temporary mono. However, full-screen swap chains optionally support temporary mono because not all hardware supports temporary mono on full-screen swap chains efficiently.

    +
    + + hh446794 + IsTemporaryMonoSupported + IsTemporaryMonoSupported + BOOL IDXGISwapChain1::IsTemporaryMonoSupported() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the output (the display monitor) to which you can restrict the contents of a present operation.

    +
    + +

    If the method succeeds, the runtime fills the buffer at ppRestrictToOutput with a reference to the restrict-to output interface. This restrict-to output interface has its reference count incremented. When you are finished with it, be sure to release the interface to avoid a memory leak.

    The output is also owned by the adapter on which the swap chain's device was created.

    +
    + + hh446788 + GetRestrictToOutput + GetRestrictToOutput + HRESULT IDXGISwapChain1::GetRestrictToOutput([Out] IDXGIOutput** ppRestrictToOutput) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Retrieves the background color of the swap chain.

    +
    + +

    Note??The background color that GetBackgroundColor retrieves does not indicate what the screen currently displays. The background color indicates what the screen will display with your next call to the method. The default value of the background color is black with full opacity: 0,0,0,1.

    +
    + + hh404634 + GetBackgroundColor / SetBackgroundColor + GetBackgroundColor + HRESULT IDXGISwapChain1::GetBackgroundColor([Out] D3DCOLORVALUE* pColor) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the rotation of the back buffers for the swap chain.

    +
    + + hh446791 + GetRotation / SetRotation + GetRotation + HRESULT IDXGISwapChain1::GetRotation([Out] DXGI_MODE_ROTATION* pRotation) +
    + + +

    Describes an adapter (or video card) by using DXGI 1.0.

    +
    + +

    The structure provides a description of an adapter. This structure is initialized by using the method.

    +
    + + bb173058 + DXGI_ADAPTER_DESC + DXGI_ADAPTER_DESC +
    + + +

    A string that contains the adapter description.

    +
    + + bb173058 + wchar_t Description[128] + wchar_t Description +
    + + +

    The PCI ID of the hardware vendor.

    +
    + + bb173058 + unsigned int VendorId + unsigned int VendorId +
    + + +

    The PCI ID of the hardware device.

    +
    + + bb173058 + unsigned int DeviceId + unsigned int DeviceId +
    + + +

    The PCI ID of the sub system.

    +
    + + bb173058 + unsigned int SubSysId + unsigned int SubSysId +
    + + +

    The PCI ID of the revision number of the adapter.

    +
    + + bb173058 + unsigned int Revision + unsigned int Revision +
    + + +

    The number of bytes of dedicated video memory that are not shared with the CPU.

    +
    + + bb173058 + SIZE_T DedicatedVideoMemory + SIZE_T DedicatedVideoMemory +
    + + +

    The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

    +
    + + bb173058 + SIZE_T DedicatedSystemMemory + SIZE_T DedicatedSystemMemory +
    + + +

    The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

    +
    + + bb173058 + SIZE_T SharedSystemMemory + SIZE_T SharedSystemMemory +
    + + +

    A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

    +
    + + bb173058 + LUID AdapterLuid + LUID AdapterLuid +
    + + +

    Describes an adapter (or video card) using DXGI 1.1.

    +
    + +

    The structure provides a DXGI 1.1 description of an adapter. This structure is initialized by using the method.

    +
    + + ff471326 + DXGI_ADAPTER_DESC1 + DXGI_ADAPTER_DESC1 +
    + + +

    A string that contains the adapter description.

    +
    + + ff471326 + wchar_t Description[128] + wchar_t Description +
    + + +

    The PCI ID of the hardware vendor.

    +
    + + ff471326 + unsigned int VendorId + unsigned int VendorId +
    + + +

    The PCI ID of the hardware device.

    +
    + + ff471326 + unsigned int DeviceId + unsigned int DeviceId +
    + + +

    The PCI ID of the sub system.

    +
    + + ff471326 + unsigned int SubSysId + unsigned int SubSysId +
    + + +

    The PCI ID of the revision number of the adapter.

    +
    + + ff471326 + unsigned int Revision + unsigned int Revision +
    + + +

    The number of bytes of dedicated video memory that are not shared with the CPU.

    +
    + + ff471326 + SIZE_T DedicatedVideoMemory + SIZE_T DedicatedVideoMemory +
    + + +

    The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

    +
    + + ff471326 + SIZE_T DedicatedSystemMemory + SIZE_T DedicatedSystemMemory +
    + + +

    The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

    +
    + + ff471326 + SIZE_T SharedSystemMemory + SIZE_T SharedSystemMemory +
    + + +

    A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

    +
    + + ff471326 + LUID AdapterLuid + LUID AdapterLuid +
    + + +

    A value of the enumerated type that describes the adapter type. The flag is reserved.

    +
    + + ff471326 + DXGI_ADAPTER_FLAG Flags + DXGI_ADAPTER_FLAG Flags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes an adapter (or video card) that uses Microsoft DirectX Graphics Infrastructure (DXGI) 1.2.

    +
    + +

    The structure provides a DXGI 1.2 description of an adapter. This structure is initialized by using the method.

    +
    + + hh404493 + DXGI_ADAPTER_DESC2 + DXGI_ADAPTER_DESC2 +
    + + +

    A string that contains the adapter description.

    +
    + + hh404493 + wchar_t Description[128] + wchar_t Description +
    + + +

    The PCI ID of the hardware vendor.

    +
    + + hh404493 + unsigned int VendorId + unsigned int VendorId +
    + + +

    The PCI ID of the hardware device.

    +
    + + hh404493 + unsigned int DeviceId + unsigned int DeviceId +
    + + +

    The PCI ID of the sub system.

    +
    + + hh404493 + unsigned int SubSysId + unsigned int SubSysId +
    + + +

    The PCI ID of the revision number of the adapter.

    +
    + + hh404493 + unsigned int Revision + unsigned int Revision +
    + + +

    The number of bytes of dedicated video memory that are not shared with the CPU.

    +
    + + hh404493 + SIZE_T DedicatedVideoMemory + SIZE_T DedicatedVideoMemory +
    + + +

    The number of bytes of dedicated system memory that are not shared with the CPU. This memory is allocated from available system memory at boot time.

    +
    + + hh404493 + SIZE_T DedicatedSystemMemory + SIZE_T DedicatedSystemMemory +
    + + +

    The number of bytes of shared system memory. This is the maximum value of system memory that may be consumed by the adapter during operation. Any incidental memory consumed by the driver as it manages and uses video memory is additional.

    +
    + + hh404493 + SIZE_T SharedSystemMemory + SIZE_T SharedSystemMemory +
    + + +

    A unique value that identifies the adapter. See for a definition of the structure. is defined in dxgi.h.

    +
    + + hh404493 + LUID AdapterLuid + LUID AdapterLuid +
    + + +

    A value of the enumerated type that describes the adapter type. The flag is reserved.

    +
    + + hh404493 + unsigned int Flags + unsigned int Flags +
    + + +

    A value of the enumerated type that describes the granularity level at which the GPU can be preempted from performing its current graphics rendering task.

    +
    + + hh404493 + DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity + DXGI_GRAPHICS_PREEMPTION_GRANULARITY GraphicsPreemptionGranularity +
    + + +

    A value of the enumerated type that describes the granularity level at which the GPU can be preempted from performing its current compute task.

    +
    + + hh404493 + DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity + DXGI_COMPUTE_PREEMPTION_GRANULARITY ComputePreemptionGranularity +
    + + +

    Describes timing and presentation statistics for a frame.

    +
    + +

    You initialize the structure with the or method.

    You can only use for swap chains that either use the flip presentation model or draw in full-screen mode. You set the value in the SwapEffect member of the structure to specify that the swap chain uses the flip presentation model.

    The values in the PresentCount and PresentRefreshCount members indicate information about when a frame was presented on the display screen. You can use these values to determine whether a glitch occurred. The values in the SyncRefreshCount and SyncQPCTime members indicate timing information that you can use for audio and video synchronization or very precise animation. If the swap chain draws in full-screen mode, these values are based on when the computer booted. + If the swap chain draws in windowed mode, these values are based on when the swap chain is created.

    +
    + + bb173060 + DXGI_FRAME_STATISTICS + DXGI_FRAME_STATISTICS +
    + + +

    A value that represents the running total count of times that an image was presented to the monitor since the computer booted.

    Note??The number of times that an image was presented to the monitor is not necessarily the same as the number of times that you called or .

    +
    + + bb173060 + unsigned int PresentCount + unsigned int PresentCount +
    + + +

    A value that represents the running total count of v-blanks at which the last image was presented to the monitor and that have happened since the computer booted (for windowed mode, since the swap chain was created).

    +
    + + bb173060 + unsigned int PresentRefreshCount + unsigned int PresentRefreshCount +
    + + +

    A value that represents the running total count of v-blanks when the scheduler last sampled the machine time by calling QueryPerformanceCounter and that have happened since the computer booted (for windowed mode, since the swap chain was created).

    +
    + + bb173060 + unsigned int SyncRefreshCount + unsigned int SyncRefreshCount +
    + + +

    A value that represents the high-resolution performance counter timer. This value is the same as the value returned by the QueryPerformanceCounter function.

    +
    + + bb173060 + LARGE_INTEGER SyncQPCTime + LARGE_INTEGER SyncQPCTime +
    + + +

    Reserved. Always returns 0.

    +
    + + bb173060 + LARGE_INTEGER SyncGPUTime + LARGE_INTEGER SyncGPUTime +
    + + +

    Controls the settings of a gamma curve.

    +
    + +

    The structure is used by the method.

    +
    + + bb173061 + DXGI_GAMMA_CONTROL + DXGI_GAMMA_CONTROL +
    + + +

    A structure with scalar values that are applied to rgb values before being sent to the gamma look up table.

    +
    + + bb173061 + DXGI_RGB Scale + DXGI_RGB Scale +
    + + +

    A structure with offset values that are applied to the rgb values before being sent to the gamma look up table.

    +
    + + bb173061 + DXGI_RGB Offset + DXGI_RGB Offset +
    + + +

    An array of structures that control the points of a gamma curve.

    +
    + + bb173061 + DXGI_RGB GammaCurve[1025] + DXGI_RGB GammaCurve +
    + + +

    Controls the gamma capabilities of an adapter.

    +
    + +

    To get a list of the capabilities for controlling gamma correction, call .

    +
    + + bb173062 + DXGI_GAMMA_CONTROL_CAPABILITIES + DXGI_GAMMA_CONTROL_CAPABILITIES +
    + + +

    True if scaling and offset operations are supported during gamma correction; otherwise, false.

    +
    + + bb173062 + BOOL ScaleAndOffsetSupported + BOOL ScaleAndOffsetSupported +
    + + +

    A value describing the maximum range of the control-point positions.

    +
    + + bb173062 + float MaxConvertedValue + float MaxConvertedValue +
    + + +

    A value describing the minimum range of the control-point positions.

    +
    + + bb173062 + float MinConvertedValue + float MinConvertedValue +
    + + +

    A value describing the number of control points in the array.

    +
    + + bb173062 + unsigned int NumGammaControlPoints + unsigned int NumGammaControlPoints +
    + + +

    An array of values describing control points; the maximum length of control points is 1025.

    +
    + + bb173062 + float ControlPointPositions[1025] + float ControlPointPositions +
    + + +

    Describes a mapped rectangle that is used to access a surface.

    +
    + +

    The structure is initialized by the method.

    +
    + + bb173063 + DXGI_MAPPED_RECT + DXGI_MAPPED_RECT +
    + + +

    A value that describes the width, in bytes, of the surface.

    +
    + + bb173063 + int Pitch + int Pitch +
    + + +

    A reference to the image buffer of the surface.

    +
    + + bb173063 + unsigned char* pBits + unsigned char pBits +
    + + +

    Describes a display mode.

    +
    + +

    The following format values are valid for display modes and when you create a bit-block transfer (bitblt) model swap chain. The valid values depend on the feature level that you are working with.

    • Feature level >= 9.1

      • (except 10.x on Windows?Vista)
      • (except 10.x on Windows?Vista)
    • Feature level >= 10.0

    • Feature level >= 11.0

    You can pass one of these format values to to determine if it is a valid format for displaying on screen. If returns in the bit field to which the pFormatSupport parameter points, the format is valid for displaying on screen.

    Starting with Windows Developer Preview for a flip model swap chain (that is, a swap chain that has the value set in the SwapEffect member of ), you must set the Format member of to , , or .

    Because of the relaxed render target creation rules that Direct3D 11 has for back buffers, applications can create a render target view from a swap chain so they can use automatic color space conversion when they render the swap chain.

    +
    + + bb173064 + DXGI_MODE_DESC + DXGI_MODE_DESC +
    + + +

    A value that describes the resolution width. If you specify the width as zero when you call the method to create a swap chain, the runtime obtains the width from the output window and assigns this width value to the swap-chain description. You can subsequently call the method to retrieve the assigned width value.

    +
    + + bb173064 + unsigned int Width + unsigned int Width +
    + + +

    A value describing the resolution height. If you specify the height as zero when you call the method to create a swap chain, the runtime obtains the height from the output window and assigns this height value to the swap-chain description. You can subsequently call the method to retrieve the assigned height value.

    +
    + + bb173064 + unsigned int Height + unsigned int Height +
    + + +

    A structure describing the refresh rate in hertz

    +
    + + bb173064 + DXGI_RATIONAL RefreshRate + DXGI_RATIONAL RefreshRate +
    + + +

    A structure describing the display format.

    +
    + + bb173064 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    A member of the enumerated type describing the scanline drawing mode.

    +
    + + bb173064 + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering +
    + + +

    A member of the enumerated type describing the scaling mode.

    +
    + + bb173064 + DXGI_MODE_SCALING Scaling + DXGI_MODE_SCALING Scaling +
    + + + Initializes a new instance of the structure. + + The width. + The height. + The refresh rate. + The format. + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a display mode and whether the display mode supports stereo.

    +
    + +

    is identical to except that includes the Stereo member.

    +
    + + hh404507 + DXGI_MODE_DESC1 + DXGI_MODE_DESC1 +
    + + +

    A value that describes the resolution width.

    +
    + + hh404507 + unsigned int Width + unsigned int Width +
    + + +

    A value that describes the resolution height.

    +
    + + hh404507 + unsigned int Height + unsigned int Height +
    + + +

    A structure that describes the refresh rate in hertz.

    +
    + + hh404507 + DXGI_RATIONAL RefreshRate + DXGI_RATIONAL RefreshRate +
    + + +

    A -typed value that describes the display format.

    +
    + + hh404507 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    A -typed value that describes the scan-line drawing mode.

    +
    + + hh404507 + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering +
    + + +

    A -typed value that describes the scaling mode.

    +
    + + hh404507 + DXGI_MODE_SCALING Scaling + DXGI_MODE_SCALING Scaling +
    + + +

    Specifies whether the full-screen display mode is stereo. TRUE if stereo; otherwise, .

    +
    + + hh404507 + BOOL Stereo + BOOL Stereo +
    + + +

    Describes an output or physical connection between the adapter (video card) and a device.

    +
    + +

    The structure is initialized by the method.

    +
    + + bb173068 + DXGI_OUTPUT_DESC + DXGI_OUTPUT_DESC +
    + + +

    A string that contains the name of the output device.

    +
    + + bb173068 + wchar_t DeviceName[32] + wchar_t DeviceName +
    + + +

    A structure containing the bounds of the output in desktop coordinates.

    +
    + + bb173068 + RECT DesktopCoordinates + RECT DesktopCoordinates +
    + + +

    True if the output is attached to the desktop; otherwise, false.

    +
    + + bb173068 + BOOL AttachedToDesktop + BOOL AttachedToDesktop +
    + + +

    A member of the enumerated type describing on how an image is rotated by the output.

    +
    + + bb173068 + DXGI_MODE_ROTATION Rotation + DXGI_MODE_ROTATION Rotation +
    + + +

    An handle that represents the display monitor. For more information, see and the Device Context.

    +
    + + bb173068 + HMONITOR Monitor + HMONITOR Monitor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes information about present that helps the operating system optimize presentation.

    +
    + +

    The scroll rectangle and the list of dirty rectangles could overlap. In this situation, the dirty rectangles take priority. Applications can then have pieces of dynamic content on top of a scrolled area. For example, an application could scroll a page and play video at the same time.

    The following diagram and coordinates illustrate this example.

    DirtyRectsCount = 2 + pDirtyRects[ 0 ] = { 10, 30, 40, 50 } // Video + pDirtyRects[ 1 ] = { 0, 70, 50, 80 } // New line + *pScrollRect = { 0, 0, 50, 70 } + *pScrollOffset = { 0, -10 } +

    Parts of the previous frame and content that the application renders are combined to produce the final frame that the operating system presents on the display screen. Most of the window is scrolled from the previous frame. The application must update the video frame with the new chunk of content that appears due to scrolling.

    The dashed rectangle shows the scroll rectangle in the current frame. The scroll rectangle is specified by the pScrollRect member. + The arrow shows the scroll offset. The scroll offset is specified by the pScrollOffset member. + Filled rectangles show dirty rectangles that the application updated with new content. The filled rectangles are specified by the DirtyRectsCount and pDirtyRects members.

    The scroll rectangle and offset are not supported for the or present option. Dirty rectangles and scroll rectangle are not supported for multisampled swap chains.

    The actual implementation of composition and necessary bitblts is different for the bitblt model and the flip model.

    +
    + + hh404522 + DXGI_PRESENT_PARAMETERS + DXGI_PRESENT_PARAMETERS +
    + + +

    The number of updated rectangles that you update in the back buffer for the presented frame. The operating system uses this information to optimize presentation. You can set this member to 0 to indicate that you update the whole frame.

    +
    + + hh404522 + unsigned int DirtyRectsCount + unsigned int DirtyRectsCount +
    + + +

    A list of updated rectangles that you update in the back buffer for the presented frame. An application must update every single pixel in each rectangle that it reports to the runtime; the application cannot assume that the pixels are saved from the previous frame. For more information about updating dirty rectangles, see Remarks. You can set this member to null if DirtyRectsCount is 0. An application must not update any pixel outside of the dirty rectangles.

    +
    + + hh404522 + RECT* pDirtyRects + RECT pDirtyRects +
    + + +

    A reference to the scrolled rectangle. The scrolled rectangle is the rectangle of the previous frame from which the runtime bit-block transfers (bitblts) content. The runtime also uses the scrolled rectangle to optimize presentation in terminal server and indirect display scenarios.

    The scrolled rectangle also describes the destination rectangle, that is, the region on the current frame that is filled with scrolled content. You can set this member to null to indicate that no content is scrolled from the previous frame.

    +
    + + hh404522 + RECT* pScrollRect + RECT pScrollRect +
    + + +

    A reference to the offset of the scrolled area that goes from the source rectangle (of previous frame) to the destination rectangle (of current frame). You can set this member to null to indicate no offset.

    +
    + + hh404522 + POINT* pScrollOffset + POINT pScrollOffset +
    + + + A list of updated rectangles that you update in the back buffer for the presented frame. An application must update every single pixel in each rectangle that it reports to the runtime; the application cannot assume that the pixels are saved from the previous frame. For more information about updating dirty rectangles, see Remarks. You can set this member to null if DirtyRectsCount is 0. An application must not update any pixel outside of the dirty rectangles. + + RECT* pDirtyRects + + + + A reference to the scrolled rectangle. The scrolled rectangle is the rectangle of the previous frame from which the runtime bit-block transfers (bitblts) content. The runtime also uses the scrolled rectangle to optimize presentation in terminal server and indirect display scenarios. + The scrolled rectangle also describes the destination rectangle, that is, the region on the current frame that is filled with scrolled content. You can set this member to null to indicate that no content is scrolled from the previous frame. + + RECT* pScrollRect + + + + A reference to the offset of the scrolled area that goes from the source rectangle (of previous frame) to the destination rectangle (of current frame). You can set this member to null to indicate no offset. + + POINT* pScrollOffset + + + +

    Represents a rational number.

    +
    + +

    The structure operates under the following rules:

    • 0/0 is legal and will be interpreted as 0/1.
    • 0/anything is interpreted as zero.
    • If you are representing a whole number, the denominator should be 1.
    +
    + + bb173069 + DXGI_RATIONAL + DXGI_RATIONAL +
    + + +

    An unsigned integer value representing the top of the rational number.

    +
    + + bb173069 + unsigned int Numerator + unsigned int Numerator +
    + + +

    An unsigned integer value representing the bottom of the rational number.

    +
    + + bb173069 + unsigned int Denominator + unsigned int Denominator +
    + + + An empty rational that can be used for comparisons. + + + + + Initializes a new instance of the structure. + + The numerator of the rational pair. + The denominator of the rational pair. + + + +

    Describes multi-sampling parameters for a resource.

    +
    + +

    The default sampler mode, with no anti-aliasing, has a count of 1 and a quality level of 0.

    If multi-sample antialiasing is being used, all bound render targets and depth buffers must have the same sample counts and quality levels.

    Differences between Direct3D 10.0 and Direct3D 10.1 and between Direct3D 10.0 and Direct3D 11:

    Direct3D 10.1 has defined two standard quality levels: D3D10_STANDARD_MULTISAMPLE_PATTERN and D3D10_CENTER_MULTISAMPLE_PATTERN in the D3D10_STANDARD_MULTISAMPLE_QUALITY_LEVELS enumeration in D3D10_1.h.

    Direct3D 11 has defined two standard quality levels: and in the enumeration in D3D11.h.

    ?

    +
    + + bb173072 + DXGI_SAMPLE_DESC + DXGI_SAMPLE_DESC +
    + + +

    The number of multisamples per pixel.

    +
    + + bb173072 + unsigned int Count + unsigned int Count +
    + + +

    The image quality level. The higher the quality, the lower the performance. The valid range is between zero and one less than the level returned by ID3D10Device::CheckMultisampleQualityLevels for Direct3D 10 or for Direct3D 11.

    For Direct3D 10.1 and Direct3D 11, you can use two special quality level values. For more information about these quality level values, see Remarks.

    +
    + + bb173072 + unsigned int Quality + unsigned int Quality +
    + + + Initializes a new instance of the structure. + + The sample count. + The sample quality. + + + +

    Represents a handle to a shared resource.

    +
    + +

    To create a shared surface, pass a shared-resource handle into the method.

    +
    + + bb173073 + DXGI_SHARED_RESOURCE + DXGI_SHARED_RESOURCE +
    + + +

    A handle to a shared resource.

    +
    + + bb173073 + void* Handle + void Handle +
    + + +

    Describes a surface.

    +
    + + bb173074 + DXGI_SURFACE_DESC + DXGI_SURFACE_DESC +
    + + +

    A value describing the surface width.

    +
    + + bb173074 + unsigned int Width + unsigned int Width +
    + + +

    A value describing the surface height.

    +
    + + bb173074 + unsigned int Height + unsigned int Height +
    + + +

    A member of the enumerated type that describes the surface format.

    +
    + + bb173074 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    A member of the structure that describes multi-sampling parameters for the surface.

    +
    + + bb173074 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
    + + +

    Describes a swap chain.

    +
    + +

    In full-screen mode, there is a dedicated front buffer; in windowed mode, the desktop is the front buffer.

    If you create a swap chain with one buffer, specifying does not cause the contents of the single buffer to be swapped with the front buffer.

    For performance information about flipping swap-chain buffers in full-screen application, see Full-Screen Application Performance Hints.

    +
    + + bb173075 + DXGI_SWAP_CHAIN_DESC + DXGI_SWAP_CHAIN_DESC +
    + + +

    A structure that describes the backbuffer display mode.

    +
    + + bb173075 + DXGI_MODE_DESC BufferDesc + DXGI_MODE_DESC BufferDesc +
    + + +

    A structure that describes multi-sampling parameters.

    +
    + + bb173075 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
    + + +

    A member of the DXGI_USAGE enumerated type that describes the surface usage and CPU access options for the back buffer. The back buffer can be used for shader input or render-target output.

    +
    + + bb173075 + DXGI_USAGE_ENUM BufferUsage + DXGI_USAGE_ENUM BufferUsage +
    + + +

    A value that describes the number of buffers in the swap chain. When you call to create a full-screen swap chain, you typically include the front buffer in this value. For more information about swap-chain buffers, see Remarks.

    +
    + + bb173075 + unsigned int BufferCount + unsigned int BufferCount +
    + + +

    An handle to the output window. This member must not be null.

    +
    + + bb173075 + HWND OutputWindow + HWND OutputWindow +
    + + +

    A Boolean value that specifies whether the output is in windowed mode. TRUE if the output is in windowed mode; otherwise, .

    We recommend that you create a windowed swap chain and allow the end user to change the swap chain to full screen through ; that is, do not set this member to to force the swap chain to be full screen. However, if you create the swap chain as full screen, also provide the end user with a list of supported display modes through the BufferDesc member because a swap chain that is created with an unsupported display mode might cause the display to go black and prevent the end user from seeing anything.

    For more information about choosing windowed verses full screen, see .

    +
    + + bb173075 + BOOL Windowed + BOOL Windowed +
    + + +

    A member of the enumerated type that describes options for handling the contents of the presentation buffer after presenting a surface.

    +
    + + bb173075 + DXGI_SWAP_EFFECT SwapEffect + DXGI_SWAP_EFFECT SwapEffect +
    + + +

    A member of the enumerated type that describes options for swap-chain behavior.

    +
    + + bb173075 + DXGI_SWAP_CHAIN_FLAG Flags + DXGI_SWAP_CHAIN_FLAG Flags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a swap chain.

    +
    + +

    Note??You cannot cast a to a and vice versa. An application must explicitly use the method to retrieve the newer version of the swap-chain description structure.

    In full-screen mode, there is a dedicated front buffer; in windowed mode, the desktop is the front buffer.

    For a flip-model swap chain (that is, a swap chain that has the value set in the SwapEffect member), you must set the Format member to , , or ; you must set the Count member of the structure that the SampleDesc member specifies to one and the Quality member of to zero because multiple sample antialiasing (MSAA) is not supported; you must set the BufferCount member to from two to sixteen. For more info about flip-model swap chain, see DXGI Flip Model.

    +
    + + hh404528 + DXGI_SWAP_CHAIN_DESC1 + DXGI_SWAP_CHAIN_DESC1 +
    + + +

    A value that describes the resolution width. If you specify the width as zero when you call the method to create a swap chain, the runtime obtains the width from the output window and assigns this width value to the swap-chain description. You can subsequently call the method to retrieve the assigned width value. You cannot specify the width as zero when you call the method.

    +
    + + hh404528 + unsigned int Width + unsigned int Width +
    + + +

    A value that describes the resolution height. If you specify the height as zero when you call the method to create a swap chain, the runtime obtains the height from the output window and assigns this height value to the swap-chain description. You can subsequently call the method to retrieve the assigned height value. You cannot specify the height as zero when you call the method.

    +
    + + hh404528 + unsigned int Height + unsigned int Height +
    + + +

    A structure that describes the display format.

    +
    + + hh404528 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    Specifies whether the full-screen display mode or the swap-chain back buffer is stereo. TRUE if stereo; otherwise, . If you specify stereo, you must also specify a flip-model swap chain (that is, a swap chain that has the value set in the SwapEffect member).

    +
    + + hh404528 + BOOL Stereo + BOOL Stereo +
    + + +

    A structure that describes multi-sampling parameters. This member is valid only with bit-block transfer (bitblt) model swap chains.

    +
    + + hh404528 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
    + + +

    A DXGI_USAGE-typed value that describes the surface usage and CPU access options for the back buffer. The back buffer can be used for shader input or render-target output.

    +
    + + hh404528 + DXGI_USAGE_ENUM BufferUsage + DXGI_USAGE_ENUM BufferUsage +
    + + +

    A value that describes the number of buffers in the swap chain. When you create a full-screen swap chain, you typically include the front buffer in this value.

    +
    + + hh404528 + unsigned int BufferCount + unsigned int BufferCount +
    + + +

    A -typed value that identifies resize behavior if the size of the back buffer is not equal to the target output.

    +
    + + hh404528 + DXGI_SCALING Scaling + DXGI_SCALING Scaling +
    + + +

    A -typed value that describes the presentation model that is used by the swap chain and options for handling the contents of the presentation buffer after presenting a surface. You must specify the value when you call the method because this method supports only flip presentation model.

    +
    + + hh404528 + DXGI_SWAP_EFFECT SwapEffect + DXGI_SWAP_EFFECT SwapEffect +
    + + +

    A -typed value that identifies the transparency behavior of the swap-chain back buffer.

    +
    + + hh404528 + DXGI_ALPHA_MODE AlphaMode + DXGI_ALPHA_MODE AlphaMode +
    + + +

    A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies options for swap-chain behavior.

    +
    + + hh404528 + DXGI_SWAP_CHAIN_FLAG Flags + DXGI_SWAP_CHAIN_FLAG Flags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Describes full-screen mode for a swap chain.

    +
    + + hh404531 + DXGI_SWAP_CHAIN_FULLSCREEN_DESC + DXGI_SWAP_CHAIN_FULLSCREEN_DESC +
    + + +

    A structure that describes the refresh rate in hertz.

    +
    + + hh404531 + DXGI_RATIONAL RefreshRate + DXGI_RATIONAL RefreshRate +
    + + +

    A member of the enumerated type that describes the scan-line drawing mode.

    +
    + + hh404531 + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering + DXGI_MODE_SCANLINE_ORDER ScanlineOrdering +
    + + +

    A member of the enumerated type that describes the scaling mode.

    +
    + + hh404531 + DXGI_MODE_SCALING Scaling + DXGI_MODE_SCALING Scaling +
    + + + No documentation. + + + BOOL Windowed + BOOL Windowed + + + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + + + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.dll new file mode 100644 index 0000000000000000000000000000000000000000..0b9038d019523d956676d55858bab5e29af732de GIT binary patch literal 148992 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�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%0A1( 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 literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.xml new file mode 100644 index 0000000..21dddc0 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.Direct3D11.xml @@ -0,0 +1,20143 @@ + + + + SharpDX.Direct3D11 + + + + + The assembly provides managed Direct3D11 API. + + ff476080 + Direct3D11 + Direct3D11 + + + +

    The blend-state interface holds a description for blending state that you can bind to the output-merger stage.

    +
    + +

    Blending applies a simple function to combine output values from a pixel shader with data in a render target. You have control over how the pixels are blended by using a predefined set of blending operations and preblending operations.

    To create a blend-state object, call . To bind the blend-state object to the output-merger stage, call .

    +
    + + ff476349 + ID3D11BlendState + ID3D11BlendState +
    + + +

    A device-child interface accesses data used by a device.

    +
    + +

    There are several types of device child interfaces, all of which inherit this interface. They include shaders, state objects, and input layouts.

    +
    + + ff476380 + ID3D11DeviceChild + ID3D11DeviceChild +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a reference to the device that created this interface.

    +
    +

    Address of a reference to a device (see ).

    + +

    Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

    +
    + + ff476381 + void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) + ID3D11DeviceChild::GetDevice +
    + + +

    Get application-defined data from a device child.

    +
    +

    Guid associated with the data.

    +

    A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

    +

    A reference to a buffer that GetPrivateData fills with data from the device child if pDataSize points to a value that specifies a buffer large enough to hold the data.

    +

    This method returns one of the codes described in the topic Direct3D 11 Return Codes.

    + +

    The data stored in the device child is set by calling .

    +
    + + ff476382 + HRESULT ID3D11DeviceChild::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D11DeviceChild::GetPrivateData +
    + + +

    Set application-defined data to a device child and associate that data with an application-defined guid.

    +
    +

    Guid associated with the data.

    +

    Size of the data.

    +

    Pointer to the data to be stored with this device child. If pData is null, DataSize must also be 0, and any data previously associated with the specified guid will be destroyed.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    The data stored in the device child with this method can be retrieved with .

    The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

     static const char c_szName[] = "My name";	
    +            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
    +            
    +
    + + ff476383 + HRESULT ID3D11DeviceChild::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D11DeviceChild::SetPrivateData +
    + + +

    Associate an -derived interface with this device child and associate that interface with an application-defined guid.

    +
    +

    Guid associated with the interface.

    +

    Pointer to an -derived interface to be associated with the device child.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    When this method is called ::addref() will be called on the -derived interface, and when the device child is detroyed ::release() will be called on the -derived interface.

    +
    + + ff476384 + HRESULT ID3D11DeviceChild::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D11DeviceChild::SetPrivateDataInterface +
    + + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

    Get a reference to the device that created this interface.

    +
    + +

    Any returned interfaces will have their reference count incremented by one, so be sure to call ::release() on the returned reference(s) before they are freed or else you will have a memory leak.

    +
    + + ff476381 + GetDevice + GetDevice + void ID3D11DeviceChild::GetDevice([Out] ID3D11Device** ppDevice) +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the description for blending state that you used to create the blend-state object.

    +
    +

    A reference to a structure that receives a description of the blend state.

    + +

    You use the description for blending state in a call to the method to create the blend-state object.

    +
    + + ff476350 + void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) + ID3D11BlendState::GetDesc +
    + + +

    Gets the description for blending state that you used to create the blend-state object.

    +
    + +

    You use the description for blending state in a call to the method to create the blend-state object.

    +
    + + ff476350 + GetDesc + GetDesc + void ID3D11BlendState::GetDesc([Out] D3D11_BLEND_DESC* pDesc) +
    + + +

    Describes the blend state that you use in a call to to create a blend-state object.

    +
    + +

    Here are the default values for blend state.

    StateDefault Value
    AlphaToCoverageEnable
    IndependentBlendEnable
    RenderTarget[0].BlendEnable
    RenderTarget[0].SrcBlend
    RenderTarget[0].DestBlend
    RenderTarget[0].BlendOp
    RenderTarget[0].SrcBlendAlpha
    RenderTarget[0].DestBlendAlpha
    RenderTarget[0].BlendOpAlpha
    RenderTarget[0].RenderTargetWriteMask

    ?

    Note?? is identical to D3D10_BLEND_DESC1.

    If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

    +
    + + ff476087 + D3D11_BLEND_DESC + D3D11_BLEND_DESC +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + + Clones this instance. + + A copy of this instance. + + Because this structure contains an array, it is not possible to modify it without making an explicit clone method. + + + + + No documentation. + + + BOOL AlphaToCoverageEnable + BOOL AlphaToCoverageEnable + + + + No documentation. + + + BOOL IndependentBlendEnable + BOOL IndependentBlendEnable + + + + No documentation. + + + D3D11_RENDER_TARGET_BLEND_DESC RenderTarget[8] + D3D11_RENDER_TARGET_BLEND_DESC RenderTarget + + + +

    A buffer interface accesses a buffer resource, which is unstructured memory. Buffers typically store vertex or index data.

    +
    + +

    There are three types of buffers: vertex, index, or a shader-constant buffer. Create a buffer resource by calling .

    A buffer must be bound to the pipeline before it can be accessed. Buffers can be bound to the input-assembler stage by calls to and , to the stream-output stage by a call to , and to a shader stage by calling the appropriate shader method (such as for example).

    Buffers can be bound to multiple pipeline stages simultaneously for reading. A buffer can also be bound to a single pipeline stage for writing; however, the same buffer cannot be bound for reading and writing simultaneously.

    +
    + + ff476351 + ID3D11Buffer + ID3D11Buffer +
    + + +

    A resource interface provides common actions on all resources.

    +
    + +

    A resource interface cannot be created directly; instead, buffers and textures are created that inherit from a resource interface (see Creating Buffer Resources or Creating Texture Resources).

    +
    + + ff476584 + ID3D11Resource + ID3D11Resource +
    + + Constant MaximumMipLevels. + D3D11_REQ_MIP_LEVELS + + + Constant ResourceSizeInMegabytes. + D3D11_REQ_RESOURCE_SIZE_IN_MEGABYTES_EXPRESSION_A_TERM + + + Constant MaximumTexture1DArraySize. + D3D11_REQ_TEXTURE1D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture2DArraySize. + D3D11_REQ_TEXTURE2D_ARRAY_AXIS_DIMENSION + + + Constant MaximumTexture1DSize. + D3D11_REQ_TEXTURE1D_U_DIMENSION + + + Constant MaximumTexture2DSize. + D3D11_REQ_TEXTURE2D_U_OR_V_DIMENSION + + + Constant MaximumTexture3DSize. + D3D11_REQ_TEXTURE3D_U_V_OR_W_DIMENSION + + + Constant MaximumTextureCubeSize. + D3D11_REQ_TEXTURECUBE_DIMENSION + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the type of the resource.

    +
    +

    Pointer to the resource type (see ).

    + + ff476586 + void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) + ID3D11Resource::GetType +
    + + +

    Set the eviction priority of a resource.

    +
    +

    Eviction priority for the resource, which is one of the following values:

    + +

    Resource priorities determine which resource to evict from video memory when the system has run out of video memory. The resource will not be lost; it will be removed from video memory and placed into system memory, or possibly placed onto the hard drive. The resource will be loaded back into video memory when it is required.

    A resource that is set to the maximum priority, , is only evicted if there is no other way of resolving the incoming memory request. The Windows Display Driver Model (WDDM) tries to split an incoming memory request to its minimum size and evict lower-priority resources before evicting a resource with maximum priority.

    Changing the priorities of resources should be done carefully. The wrong eviction priorities could be a detriment to performance rather than an improvement.

    +
    + + ff476587 + void ID3D11Resource::SetEvictionPriority([In] unsigned int EvictionPriority) + ID3D11Resource::SetEvictionPriority +
    + + +

    Get the eviction priority of a resource.

    +
    +

    One of the following values, which specifies the eviction priority for the resource:

    + + ff476585 + unsigned int ID3D11Resource::GetEvictionPriority() + ID3D11Resource::GetEvictionPriority +
    + + + Gets a swap chain back buffer. + + The type of the buffer. + The swap chain to get the buffer from. + The index of the desired buffer. + The buffer interface, or null on failure. + + + + Calculates the sub resource index from a miplevel. + + A zero-based index for the mipmap level to address; 0 indicates the first, most detailed mipmap level. + The zero-based index for the array level to address; always use 0 for volume (3D) textures. + Number of mipmap levels in the resource. + + The index which equals MipSlice + (ArraySlice * MipLevels). + + D3D11CalcSubresource + + + + Calculates the resulting size at a single level for an original size. + + The mip level to get the size. + Size of the base. + + Size of the mipLevel + + + + + Calculates the sub resource index for a particular mipSlice and arraySlice. + + The mip slice. + The array slice. + The size of slice. This values is resource dependent. Texture1D -> mipSize of the Width. Texture2D -> mipSize of the Height. Texture3D -> mipsize of the Depth + The resulting miplevel calulated for this instance with this mipSlice and arraySlice. + + + +

    Get the type of the resource.

    +
    + + ff476586 + GetType + GetType + void ID3D11Resource::GetType([Out] D3D11_RESOURCE_DIMENSION* pResourceDimension) +
    + + +

    Get or sets the eviction priority of a resource.

    +
    + + ff476585 + GetEvictionPriority / SetEvictionPriority + GetEvictionPriority + unsigned int ID3D11Resource::GetEvictionPriority() +
    + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The data pointer. + The description of the buffer. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. + The usage pattern for the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Flags specifying how the buffer will be bound to the pipeline. + Initial data used to initialize the buffer. + The size, in bytes, of the buffer. If 0 is specified, sizeof(T) * data.Length is used. + The usage pattern for the buffer. + Flags specifying how the buffer will be accessible from the CPU. + Miscellaneous resource options. + The size (in bytes) of the structure element for structured buffers. + An initialized buffer + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + If the is at 0, sizeof(T) is used. + + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Creates a new instance of the class. + + Type of the data to upload + The device with which to associate the buffer. + Initial data used to initialize the buffer. + The description. + + An initialized buffer + + + If the is at 0, sizeof(T) * data.Length is used. + + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the properties of a buffer resource.

    +
    +

    Pointer to a resource description (see ) filled in by the method.

    + + ff476352 + void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) + ID3D11Buffer::GetDesc +
    + + +

    Get the properties of a buffer resource.

    +
    + + ff476352 + GetDesc + GetDesc + void ID3D11Buffer::GetDesc([Out] D3D11_BUFFER_DESC* pDesc) +
    + + +

    Describes a buffer resource.

    +
    + +

    This structure is used by to create buffer resources.

    In addition to this structure, there is also a derived structure in D3D11.h (CD3D11_BUFFER_DESC) which behaves like an inherited class to help create a buffer description.

    If the bind flag is then the ByteWidth value must be in multiples of 16, and less than or equal to D3D11_REQ_CONSTANT_BUFFER_ELEMENT_COUNT.

    +
    + + ff476092 + D3D11_BUFFER_DESC + D3D11_BUFFER_DESC +
    + + + Initializes a new instance of the struct. + + The size in bytes. + The usage. + The bind flags. + The cpu access flags. + The option flags. + The structure byte stride. + + + +

    Size of the buffer in bytes.

    +
    + + ff476092 + unsigned int ByteWidth + unsigned int ByteWidth +
    + + +

    Identify how the buffer is expected to be read from and written to. Frequency of update is a key factor. The most common value is typically ; see for all possible values.

    +
    + + ff476092 + D3D11_USAGE Usage + D3D11_USAGE Usage +
    + + +

    Identify how the buffer will be bound to the pipeline. Flags (see ) can be combined with a logical OR.

    +
    + + ff476092 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
    + + +

    CPU access flags (see ) or 0 if no CPU access is necessary. Flags can be combined with a logical OR.

    +
    + + ff476092 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
    + + +

    Miscellaneous flags (see ) or 0 if unused. Flags can be combined with a logical OR.

    +
    + + ff476092 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
    + + +

    The size of the structure (in bytes) when it represents a structured buffer.

    +
    + + ff476092 + unsigned int StructureByteStride + unsigned int StructureByteStride +
    + + +

    This interface encapsulates an HLSL class.

    +
    + +

    This interface is created by calling . The interface is used when binding shader resources to the pipeline using APIs such as .

    +
    + + ff476353 + ID3D11ClassInstance + ID3D11ClassInstance +
    + + + Initializes a class-instance object that represents an HLSL class instance. + + + Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in. For more information about using the interface, see {{Dynamic Linking}}. + + An instance of . + The type name of a class to initialize. + Identifies the constant buffer that contains the class data. + The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset. + The texture slot for the first texture; there may be multiple textures following the offset. + The sampler slot for the first sampler; there may be multiple samplers following the offset. + Returns S_OK if successful; otherwise, returns one of the following {{Direct3D 11 Return Codes}}. + HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] int ConstantBufferOffset,[In] int ConstantVectorOffset,[In] int TextureOffset,[In] int SamplerOffset,[Out] ID3D11ClassInstance** ppInstance) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the object associated with the current HLSL class.

    +
    + No documentation. + +

    For more information about using the interface, see Dynamic Linking.

    +
    + + ff476354 + void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) + ID3D11ClassInstance::GetClassLinkage +
    + + +

    Gets a description of the current HLSL class.

    +
    +

    A reference to a structure that describes the current HLSL class.

    + +

    For more information about using the interface, see Dynamic Linking.

    An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

    • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
    • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

    An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

    +
    + + ff476355 + void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) + ID3D11ClassInstance::GetDesc +
    + + +

    Gets the instance name of the current HLSL class.

    +
    +

    The instance name of the current HLSL class.

    +

    The length of the pInstanceName parameter.

    + +

    GetInstanceName will return a valid name only for instances acquired using .

    For more information about using the interface, see Dynamic Linking.

    +
    + + ff476356 + void ID3D11ClassInstance::GetInstanceName([Out, Buffer, Optional] char* pInstanceName,[InOut] SIZE_T* pBufferLength) + ID3D11ClassInstance::GetInstanceName +
    + + +

    Gets the type of the current HLSL class.

    +
    +

    Type of the current HLSL class.

    +

    The length of the pTypeName parameter.

    + +

    GetTypeName will return a valid name only for instances acquired using .

    For more information about using the interface, see Dynamic Linking.

    +
    + + ff476357 + void ID3D11ClassInstance::GetTypeName([Out, Buffer, Optional] char* pTypeName,[InOut] SIZE_T* pBufferLength) + ID3D11ClassInstance::GetTypeName +
    + + + Gets the instance name of the current HLSL class. + + + GetInstanceName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. + + The instance name of the current HLSL class. + void GetInstanceName([Out, Buffer, Optional] LPSTR pInstanceName,[InOut] SIZE_T* pBufferLength) + + + + Gets the type of the current HLSL class. + + + GetTypeName will return a valid name only for instances acquired using .For more information about using the interface, see {{Dynamic Linking}}. + + Type of the current HLSL class. + void GetTypeName([Out, Buffer, Optional] LPSTR pTypeName,[InOut] SIZE_T* pBufferLength) + + + +

    Gets the object associated with the current HLSL class.

    +
    + +

    For more information about using the interface, see Dynamic Linking.

    +
    + + ff476354 + GetClassLinkage + GetClassLinkage + void ID3D11ClassInstance::GetClassLinkage([Out] ID3D11ClassLinkage** ppLinkage) +
    + + +

    Gets a description of the current HLSL class.

    +
    + +

    For more information about using the interface, see Dynamic Linking.

    An instance is not restricted to being used for a single type in a single shader. An instance is flexible and can be used for any shader that used the same type name or instance name when the instance was generated.

    • A created instance will work for any shader that contains a type of the same type name. For instance, a class instance created with the type name DefaultShader would work in any shader that contained a type DefaultShader even though several shaders could describe a different type.
    • A gotten instance maps directly to an instance name/index in a shader. A class instance aquired using GetClassInstance will work for any shader that contains a class instance of the name used to generate the runtime instance, the instance does not have to be the same type in all of the shaders it's used in.

    An instance does not replace the importance of reflection for a particular shader since a gotten instance will not know its slot location and a created instance only specifies a type name.

    +
    + + ff476355 + GetDesc + GetDesc + void ID3D11ClassInstance::GetDesc([Out] D3D11_CLASS_INSTANCE_DESC* pDesc) +
    + + +

    This interface encapsulates an HLSL dynamic linkage.

    +
    + +

    A class linkage object can hold up to 64K gotten instances. A gotten instance is a handle that references a variable name in any shader that is created with that linkage object. When you create a shader with a class linkage object, the runtime gathers these instances and stores them in the class linkage object. For more information about how a class linkage object is used, see Storing Variables and Types for Shaders to Share.

    An object is created using the method.

    +
    + + ff476358 + ID3D11ClassLinkage + ID3D11ClassLinkage +
    + + + Create a new instance of . + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the class-instance object that represents the specified HLSL class.

    +
    +

    The name of a class for which to get the class instance.

    +

    The index of the class instance.

    +

    The address of a reference to an interface to initialize.

    + +

    For more information about using the interface, see Dynamic Linking.

    A class instance must have at least 1 data member in order to be available for the runtime to use with . Any instance with no members will be optimized out of a compiled shader blob as a zero-sized object. If you have a class with no data members, use instead.

    +
    + + ff476360 + HRESULT ID3D11ClassLinkage::GetClassInstance([In] const char* pClassInstanceName,[In] unsigned int InstanceIndex,[Out] ID3D11ClassInstance** ppInstance) + ID3D11ClassLinkage::GetClassInstance +
    + + +

    Initializes a class-instance object that represents an HLSL class instance.

    +
    +

    The type name of a class to initialize.

    +

    Identifies the constant buffer that contains the class data.

    +

    The four-component vector offset from the start of the constant buffer where the class data will begin. Consequently, this is not a byte offset.

    +

    The texture slot for the first texture; there may be multiple textures following the offset.

    +

    The sampler slot for the first sampler; there may be multiple samplers following the offset.

    +

    The address of a reference to an interface to initialize.

    +

    Returns if successful; otherwise, returns one of the following Direct3D 11 Return Codes.

    + +

    Instances can be created (or gotten) before or after a shader is created. Use the same shader linkage object to acquire a class instance and create the shader the instance is going to be used in.

    For more information about using the interface, see Dynamic Linking.

    +
    + + ff476359 + HRESULT ID3D11ClassLinkage::CreateClassInstance([In] const char* pClassTypeName,[In] unsigned int ConstantBufferOffset,[In] unsigned int ConstantVectorOffset,[In] unsigned int TextureOffset,[In] unsigned int SamplerOffset,[Out, Fast] ID3D11ClassInstance** ppInstance) + ID3D11ClassLinkage::CreateClassInstance +
    + + +

    A compute-shader interface manages an executable program (a compute shader) that controls the compute-shader stage.

    +
    + +

    The compute-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

    To create a compute-shader interface, call . Before using a compute shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476363 + ID3D11ComputeShader + ID3D11ComputeShader +
    + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the description for blending state that you used to create the blend-state object.

    +
    + +

    You use the description for blending state in a call to the method to create the blend-state object.

    +
    + + hh404573 + ID3D11BlendState1 + ID3D11BlendState1 +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the description for blending state that you used to create the blend-state object.

    +
    +

    A reference to a structure that receives a description of the blend state. This blend state can specify logical operations as well as blending operations.

    + +

    You use the description for blending state in a call to the method to create the blend-state object.

    +
    + + hh404573 + void ID3D11BlendState1::GetDesc1([Out] D3D11_BLEND_DESC1* pDesc) + ID3D11BlendState1::GetDesc1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the description for blending state that you used to create the blend-state object.

    +
    + +

    You use the description for blending state in a call to the method to create the blend-state object.

    +
    + + hh404573 + GetDesc1 + GetDesc1 + void ID3D11BlendState1::GetDesc1([Out] D3D11_BLEND_DESC1* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes the blend state that you use in a call to to create a blend-state object.

    +
    + +

    Here are the default values for blend state.

    StateDefault Value
    AlphaToCoverageEnable
    IndependentBlendEnable
    RenderTarget[0].BlendEnable
    RenderTarget[0].LogicOpEnable
    RenderTarget[0].SrcBlend
    RenderTarget[0].DestBlend
    RenderTarget[0].BlendOp
    RenderTarget[0].SrcBlendAlpha
    RenderTarget[0].DestBlendAlpha
    RenderTarget[0].BlendOpAlpha
    RenderTarget[0].LogicOp
    RenderTarget[0].RenderTargetWriteMask

    ?

    If the driver type is set to , the feature level is set to less than or equal to , and the pixel format of the render target is set to , , or , the display device performs the blend in standard RGB (sRGB) space and not in linear space. However, if the feature level is set to greater than , the display device performs the blend in linear space, which is ideal.

    When you set the LogicOpEnable member of the first element of the RenderTarget array (RenderTarget[0]) to TRUE, you must also set the BlendEnable member of RenderTarget[0] to , and the IndependentBlendEnable member of this to . This reflects the limitation in hardware that you can't mix logic operations with blending across multiple render targets, and that when you use a logic operation, you must apply the same logic operation to all render targets.

    +
    + + hh404435 + D3D11_BLEND_DESC1 + D3D11_BLEND_DESC1 +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + + Clones this instance. + + A copy of this instance. + + Because this structure contains an array, it is not possible to modify it without making an explicit clone method. + + + + + No documentation. + + + BOOL AlphaToCoverageEnable + BOOL AlphaToCoverageEnable + + + + No documentation. + + + BOOL IndependentBlendEnable + BOOL IndependentBlendEnable + + + + No documentation. + + + D3D11_RENDER_TARGET_BLEND_DESC1 RenderTarget[8] + D3D11_RENDER_TARGET_BLEND_DESC1 RenderTarget + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes rasterizer state.

    +
    + +

    Rasterizer state defines the behavior of the rasterizer stage. To create a rasterizer-state object, call . To set rasterizer state, call .

    If you do not specify some rasterizer state, the Direct3D runtime uses the following default values for rasterizer state.

    StateDefault Value
    FillModeSolid
    CullModeBack
    FrontCounterClockwise
    DepthBias0
    SlopeScaledDepthBias0.0f
    DepthBiasClamp0.0f
    DepthClipEnableTRUE
    ScissorEnable
    MultisampleEnable
    AntialiasedLineEnable
    ForcedSampleCount0

    ?

    Note??For feature levels 9.1, 9.2, 9.3, and 10.0, if you set MultisampleEnable to , the runtime renders all points, lines, and triangles without anti-aliasing even for render targets with a sample count greater than 1. For feature levels 10.1 and higher, the setting of MultisampleEnable has no effect on points and triangles with regard to MSAA and impacts only the selection of the line-rendering algorithm as shown in this table:

    Line-rendering algorithmMultisampleEnableAntialiasedLineEnable
    Aliased
    Alpha antialiasedTRUE
    QuadrilateralTRUE
    QuadrilateralTRUETRUE

    ?

    The settings of the MultisampleEnable and AntialiasedLineEnable members apply only to multisample antialiasing (MSAA) render targets (that is, render targets with sample counts greater than 1). Because of the differences in feature-level behavior and as long as you aren?t performing any line drawing or don?t mind that lines render as quadrilaterals, we recommend that you always set MultisampleEnable to TRUE whenever you render on MSAA render targets.

    +
    + + hh404489 + D3D11_RASTERIZER_DESC1 + D3D11_RASTERIZER_DESC1 +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

    Determines the fill mode to use when rendering.

    +
    + + hh404489 + D3D11_FILL_MODE FillMode + D3D11_FILL_MODE FillMode +
    + + +

    Indicates that triangles facing the specified direction are not drawn.

    +
    + + hh404489 + D3D11_CULL_MODE CullMode + D3D11_CULL_MODE CullMode +
    + + +

    Specifies whether a triangle is front- or back-facing. If TRUE, a triangle will be considered front-facing if its vertices are counter-clockwise on the render target and considered back-facing if they are clockwise. If , the opposite is true.

    +
    + + hh404489 + BOOL FrontCounterClockwise + BOOL FrontCounterClockwise +
    + + +

    Depth value added to a given pixel. For info about depth bias, see Depth Bias.

    +
    + + hh404489 + int DepthBias + int DepthBias +
    + + +

    Maximum depth bias of a pixel. For info about depth bias, see Depth Bias.

    +
    + + hh404489 + float DepthBiasClamp + float DepthBiasClamp +
    + + +

    Scalar on a given pixel's slope. For info about depth bias, see Depth Bias.

    +
    + + hh404489 + float SlopeScaledDepthBias + float SlopeScaledDepthBias +
    + + +

    Specifies whether to enable clipping based on distance.

    The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default?TRUE, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). +

    0 < w + -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + 0 <= z <= w +

    When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. +

    +
    + + hh404489 + BOOL DepthClipEnable + BOOL DepthClipEnable +
    + + +

    Specifies whether to enable scissor-rectangle culling. All pixels outside an active scissor rectangle are culled.

    +
    + + hh404489 + BOOL ScissorEnable + BOOL ScissorEnable +
    + + +

    Specifies whether to use the quadrilateral or alpha line anti-aliasing algorithm on multisample antialiasing (MSAA) render targets. Set to TRUE to use the quadrilateral line anti-aliasing algorithm and to to use the alpha line anti-aliasing algorithm. For more info about this member, see Remarks.

    +
    + + hh404489 + BOOL MultisampleEnable + BOOL MultisampleEnable +
    + + +

    Specifies whether to enable line antialiasing; only applies if doing line drawing and MultisampleEnable is . For more info about this member, see Remarks.

    +
    + + hh404489 + BOOL AntialiasedLineEnable + BOOL AntialiasedLineEnable +
    + + +

    The sample count that is forced while UAV rendering or rasterizing. Valid values are 0, 1, 2, 4, 8, and optionally 16. 0 indicates that the sample count is not forced.

    +
    + + hh404489 + unsigned int ForcedSampleCount + unsigned int ForcedSampleCount +
    + + +

    Describes depth-stencil state.

    +
    + +

    Depth-stencil state controls how depth-stencil testing is performed by the output-merger stage.

    The following table shows the default values of depth-stencil states.

    StateDefault Value
    DepthEnableTRUE
    DepthWriteMask
    DepthFunc
    StencilEnable
    StencilReadMaskD3D11_DEFAULT_STENCIL_READ_MASK
    StencilWriteMaskD3D11_DEFAULT_STENCIL_WRITE_MASK

    FrontFace.StencilFunc

    and

    BackFace.StencilFunc

    FrontFace.StencilDepthFailOp

    and

    BackFace.StencilDepthFailOp

    FrontFace.StencilPassOp

    and

    BackFace.StencilPassOp

    FrontFace.StencilFailOp

    and

    BackFace.StencilFailOp

    ?

    The formats that support stenciling are and .

    +
    + + ff476110 + D3D11_DEPTH_STENCIL_DESC + D3D11_DEPTH_STENCIL_DESC +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

    Enable depth testing.

    +
    + + ff476110 + BOOL DepthEnable + BOOL DepthEnable +
    + + +

    Identify a portion of the depth-stencil buffer that can be modified by depth data (see ).

    +
    + + ff476110 + D3D11_DEPTH_WRITE_MASK DepthWriteMask + D3D11_DEPTH_WRITE_MASK DepthWriteMask +
    + + +

    A function that compares depth data against existing depth data. The function options are listed in .

    +
    + + ff476110 + D3D11_COMPARISON_FUNC DepthFunc + D3D11_COMPARISON_FUNC DepthFunc +
    + + +

    Enable stencil testing.

    +
    + + ff476110 + BOOL StencilEnable + BOOL StencilEnable +
    + + +

    Identify a portion of the depth-stencil buffer for reading stencil data.

    +
    + + ff476110 + unsigned char StencilReadMask + unsigned char StencilReadMask +
    + + +

    Identify a portion of the depth-stencil buffer for writing stencil data.

    +
    + + ff476110 + unsigned char StencilWriteMask + unsigned char StencilWriteMask +
    + + +

    Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing towards the camera (see ).

    +
    + + ff476110 + D3D11_DEPTH_STENCILOP_DESC FrontFace + D3D11_DEPTH_STENCILOP_DESC FrontFace +
    + + +

    Identify how to use the results of the depth test and the stencil test for pixels whose surface normal is facing away from the camera (see ).

    +
    + + ff476110 + D3D11_DEPTH_STENCILOP_DESC BackFace + D3D11_DEPTH_STENCILOP_DESC BackFace +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives a device access to a shared resource that is referenced by name and that was created on a different device. You must have previously created the resource as shared and specified that it uses NT handles (that is, you set the flag).

    +
    + +

    The behavior of OpenSharedResourceByName is similar to the behavior of the method; each call to OpenSharedResourceByName to access a resource creates a new resource object. In other words, if you call OpenSharedResourceByName twice and pass the same resource name to lpName, you receive two resource objects with different references.

    To share a resource between two devices

    1. Create the resource as shared and specify that it uses NT handles, by setting the flag.
    2. Obtain the REFIID, or , of the interface to the resource by using the __uuidof() macro. For example, __uuidof() retrieves the of the interface to a 2D texture.
    3. Query the resource for the interface.
    4. Call the method to obtain the unique handle to the resource. In this call, you must pass a name for the resource if you want to subsequently call OpenSharedResourceByName to access the resource by name.
    +
    + + hh404595 + ID3D11Device1 + ID3D11Device1 +
    + + +

    The device interface represents a virtual adapter; it is used to create resources.

    +
    + +

    A device is created using .

    +
    + + ff476379 + ID3D11Device + ID3D11Device +
    + + Constant MultisampleCountMaximum. + D3D11_MAX_MULTISAMPLE_SAMPLE_COUNT + + + + Initializes a new instance of the class. + + + Type of the driver. + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Initializes a new instance of the class. + + + The adapter. + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + Type of the driver. + The flags. + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Constructor for a D3D11 Device. See for more information. + + + + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice + + + + Get the type, name, units of measure, and a description of an existing counter. + + The counter description. + Description of the counter + + + + Give a device access to a shared resource created on a different Direct3d device. + + The type of the resource we are gaining access to. + A resource handle. See remarks. + + This method returns a reference to the resource we are gaining access to. + + + To share a resource between two Direct3D 10 devices the resource must have been created with the flag, if it was created using the ID3D10Device interface. If it was created using the IDXGIDevice interface, then the resource is always shared. The REFIID, or GUID, of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof(ID3D10Buffer) will get the GUID of the interface to a buffer resource. When sharing a resource between two Direct3D 10 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling {{GetSharedHandle}}. + IDXGIResource* pOtherResource(NULL); + hr = pOtherDeviceResource->QueryInterface( __uuidof(IDXGIResource), (void**)&pOtherResource ); + HANDLE sharedHandle; + pOtherResource->GetSharedHandle(&sharedHandle); + The only resources that can be shared are 2D non-mipmapped textures. To share a resource between a Direct3D 9 device and a Direct3D 10 device the texture must have been created using the pSharedHandle argument of {{CreateTexture}}. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument. The following code illustrates the method calls involved. + sharedHandle = NULL; // must be set to NULL to create, can use a valid handle here to open in D3D9 + pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); + ... + pDevice10->OpenSharedResource(sharedHandle, __uuidof(ID3D10Resource), (void**)(&tempResource10)); + tempResource10->QueryInterface(__uuidof(ID3D10Texture2D), (void**)(&pTex2D_10)); + tempResource10->Release(); + // now use pTex2D_10 with pDevice10 + Textures being shared from D3D9 to D3D10 have the following restrictions. Textures must be 2D Only 1 mip level is allowed Texture must have default usage Texture must be write only MSAA textures are not allowed Bind flags must have SHADER_RESOURCE and RENDER_TARGET set Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed If a shared texture is updated on one device must be called on that device. + + HRESULT ID3D10Device::OpenSharedResource([In] void* hResource,[In] GUID* ReturnedInterface,[Out, Optional] void** ppResource) + + + + Check if this device is supporting compute shaders for the specified format. + + The format for which to check support. + Flags indicating usage contexts in which the specified format is supported. + + + +

    Gets information about the features that are supported by the current graphics driver.

    +
    + Returns a structure + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
    + + +

    Gets information about the features that are supported by the current graphics driver.

    +
    + Returns a structure + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
    + + +

    Gets information about whether the driver supports the nonpowers-of-2-unconditionally feature. TRUE for hardware at Direct3D 10 and higher feature levels.

    +
    + Returns true if this hardware supports non-powers-of-2 texture. This returns always true Direct3D 10 and higher feature levels. + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
    + + +

    Gets information about whether a rendering device batches rendering commands and performs multipass rendering into tiles or bins over a render area. Certain API usage patterns that are fine TileBasedDefferredRenderers (TBDRs) can perform worse on non-TBDRs and vice versa. Applications that are careful about rendering can be friendly to both TBDR and non-TBDR architectures.

    +
    + Returns TRUE if the rendering device batches rendering commands and otherwise. + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
    + + + Check if this device is supporting a feature. + + The feature to check. + + Returns true if this device supports this feature, otherwise false. + + + + + Check if this device is supporting threading. + + Support concurrent resources. + Support command lists. + + A object describing the result of the operation. + + + + + Gets the highest supported hardware feature level of the primary adapter. + + The highest supported hardware feature level. + + + + Gets the highest supported hardware feature level of the primary adapter. + + The adapter. + + The highest supported hardware feature level. + + + + + Internal CreateDevice + + + + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Creates a buffer (vertex buffer, index buffer, or shader-constant buffer).

    +
    +

    A reference to a structure that describes the buffer.

    +

    A reference to a structure that describes the initialization data; use null to allocate space only (with the exception that it cannot be null if the usage flag is ).

    +

    Address of a reference to the interface for the buffer object created. Set this parameter to null to validate the other input parameters (S_FALSE indicates a pass).

    +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the buffer. See Direct3D 11 Return Codes for other possible return values.

    + +

    For example code, see How to: Create a Vertex Buffer, How to: Create an Index Buffer or How to: Create a Constant Buffer.

    The Direct3D 11.1 runtime, which is available on Windows Developer Preview and later operating systems, provides the following new functionality for CreateBuffer.

    You can create a constant buffer that is larger than the maximum constant buffer size that a shader can access (4096 32-bit*4-component constants ? 64KB). When you bind the constant buffer to the pipeline (for example, via PSSetConstantBuffers or PSSetConstantBuffers1), you can define a range of the buffer that the shader can access that fits within the 4096 constant limit.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher. On existing drivers that are implemented to feature level 10 and higher, a call to CreateBuffer to request a constant buffer that is larger than 4096 fails.

    +
    + + ff476501 + HRESULT ID3D11Device::CreateBuffer([In] const D3D11_BUFFER_DESC* pDesc,[In, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Buffer** ppBuffer) + ID3D11Device::CreateBuffer +
    + + +

    Creates an array of 1D textures.

    +
    + No documentation. + No documentation. + No documentation. +

    If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

    + +

    CreateTexture1D creates a 1D texture resource, which can contain a number of 1D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

    All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or they can use one of the D3DX texture functions such as D3DX11CreateTextureFromFile.

    For a 32 width texture with a full mipmap chain, the pInitialData array has the following 6 elements: +

    • pInitialData[0] = 32x1
    • pInitialData[1] = 16x1
    • pInitialData[2] = 8x1
    • pInitialData[3] = 4x1 +
    • pInitialData[4] = 2x1 +
    • pInitialData[5] = 1x1 +
    +
    + + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D +
    + + +

    Create an array of 2D textures.

    +
    + No documentation. + No documentation. + No documentation. +

    If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

    + +

    CreateTexture2D creates a 2D texture resource, which can contain a number of 2D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

    All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or it may use one of the D3DX texture functions such as D3DX11CreateTextureFromFile.

    For a 32 x 32 texture with a full mipmap chain, the pInitialData array has the following 6 elements: +

    • pInitialData[0] = 32x32
    • pInitialData[1] = 16x16
    • pInitialData[2] = 8x8
    • pInitialData[3] = 4x4 +
    • pInitialData[4] = 2x2 +
    • pInitialData[5] = 1x1 +
    +
    + + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D +
    + + +

    Create a single 3D texture.

    +
    + No documentation. + No documentation. + No documentation. +

    If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

    + +

    CreateTexture3D creates a 3D texture resource, which can contain a number of 3D subresources. The number of textures is specified in the texture description. All textures in a resource must have the same format, size, and number of mipmap levels.

    All resources are made up of one or more subresources. To load data into the texture, applications can supply the data initially as an array of structures pointed to by pInitialData, or they can use one of the D3DX texture functions such as D3DX11CreateTextureFromFile.

    Each element of pInitialData provides all of the slices that are defined for a given miplevel. For example, for a 32 x 32 x 4 volume texture with a full mipmap chain, the array has the following 6 elements:

    • pInitialData[0] = 32x32 with 4 slices
    • pInitialData[1] = 16x16 with 2 slices
    • pInitialData[2] = 8x8 with 1 slice
    • pInitialData[3] = 4x4 + with 1 slice
    • pInitialData[4] = 2x2 + with 1 slice
    • pInitialData[5] = 1x1 + with 1 slice
    +
    + + ff476522 + HRESULT ID3D11Device::CreateTexture3D([In] const D3D11_TEXTURE3D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture3D** ppTexture3D) + ID3D11Device::CreateTexture3D +
    + + +

    Create a shader-resource view for accessing data in a resource.

    +
    +

    Pointer to the resource that will serve as input to a shader. This resource must have been created with the flag.

    +

    Pointer to a shader-resource view description (see ). Set this parameter to null to create a view that accesses the entire resource (using the format the resource was created with).

    +

    Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    A resource is made up of one or more subresources; a view identifies which subresources to allow the pipeline to access. In addition, each resource is bound to the pipeline using a view. A shader-resource view is designed to bind any buffer or texture resource to the shader stages using the following API methods: , and .

    Because a view is fully typed, this means that typeless resources become fully typed when bound to the pipeline.

    Note??To successfully create a shader-resource view from a typeless buffer (for example, ), you must set the flag when you create the buffer.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use CreateShaderResourceView for the following new purpose.

    You can create shader-resource views of video resources so that Direct3D shaders can process those shader-resource views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created shader-resource view must match the type of video resource, D3D11_SRV_DIMENSION_TEXTURE2D for Texture2D and D3D11_SRV_DIMENSION_TEXTURE2DARRAY for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

    The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

    +
    + + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView +
    + + +

    Creates a view for accessing an unordered access resource.

    +
    + No documentation. + No documentation. + No documentation. +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use CreateUnorderedAccessView for the following new purpose.

    You can create unordered-access views of video resources so that Direct3D shaders can process those unordered-access views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created unordered-access view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

    The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

    +
    + + ff476523 + HRESULT ID3D11Device::CreateUnorderedAccessView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc,[Out, Fast] ID3D11UnorderedAccessView** ppUAView) + ID3D11Device::CreateUnorderedAccessView +
    + + +

    Creates a render-target view for accessing resource data.

    +
    +

    Pointer to a that represents a render target. This resource must have been created with the flag.

    +

    Pointer to a that represents a render-target view description. Set this parameter to null to create a view that accesses all of the subresources in mipmap level 0.

    +

    Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

    +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    A render-target view can be bound to the output-merger stage by calling .

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, allows you to use CreateRenderTargetView for the following new purpose.

    You can create render-target views of video resources so that Direct3D shaders can process those render-target views. These video resources are either Texture2D or Texture2DArray. The value in the ViewDimension member of the structure for a created render-target view must match the type of video resource, for Texture2D and for Texture2DArray. Additionally, the format of the underlying video resource restricts the formats that the view can use. The video resource format values on the reference page specify the format values that views are restricted to.

    The runtime read+write conflict prevention logic (which stops a resource from being bound as an SRV and RTV or UAV at the same time) treats views of different parts of the same video surface as conflicting for simplicity. Therefore, the runtime does not allow an application to read from luma while the application simultaneously renders to chroma in the same surface even though the hardware might allow these simultaneous operations.

    +
    + + ff476517 + HRESULT ID3D11Device::CreateRenderTargetView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_RENDER_TARGET_VIEW_DESC* pDesc,[Out, Fast] ID3D11RenderTargetView** ppRTView) + ID3D11Device::CreateRenderTargetView +
    + + +

    Create a depth-stencil view for accessing resource data.

    +
    +

    Pointer to the resource that will serve as the depth-stencil surface. This resource must have been created with the flag.

    +

    Pointer to a depth-stencil-view description (see ). Set this parameter to null to create a view that accesses mipmap level 0 of the entire resource (using the format the resource was created with).

    +

    Address of a reference to an . Set this parameter to null to validate the other input parameters (the method will return S_FALSE if the other input parameters pass validation).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    A depth-stencil view can be bound to the output-merger stage by calling .

    +
    + + ff476507 + HRESULT ID3D11Device::CreateDepthStencilView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc,[Out, Fast] ID3D11DepthStencilView** ppDepthStencilView) + ID3D11Device::CreateDepthStencilView +
    + + +

    Create an input-layout object to describe the input-buffer data for the input-assembler stage.

    +
    +

    An array of the input-assembler stage input data types; each type is described by an element description (see ).

    +

    The number of input-data types in the array of input-elements.

    +

    A reference to the compiled shader. The compiled shader code contains a input signature which is validated against the array of elements. See remarks.

    +

    Size of the compiled shader.

    +

    A reference to the input-layout object created (see ). To validate the other input parameters, set this reference to be null and verify that the method returns S_FALSE.

    +

    If the method succeeds, the return code is . See Direct3D 11 Return Codes for failing error codes.

    + +

    After creating an input layout object, it must be bound to the input-assembler stage before calling a draw API.

    Once an input-layout object is created from a shader signature, the input-layout object can be reused with any other shader that has an identical input signature (semantics included). This can simplify the creation of input-layout objects when you are working with many shaders with identical inputs.

    If a data type in the input-layout declaration does not match the data type in a shader-input signature, CreateInputLayout will generate a warning during compilation. The warning is simply to call attention to the fact that the data may be reinterpreted when read from a register. You may either disregard this warning (if reinterpretation is intentional) or make the data types match in both declarations to eliminate the warning.

    +
    + + ff476512 + HRESULT ID3D11Device::CreateInputLayout([In, Buffer] const D3D11_INPUT_ELEMENT_DESC* pInputElementDescs,[In] unsigned int NumElements,[In] const void* pShaderBytecodeWithInputSignature,[In] SIZE_T BytecodeLength,[Out, Fast] ID3D11InputLayout** ppInputLayout) + ID3D11Device::CreateInputLayout +
    + + +

    Create a vertex-shader object from a compiled shader.

    +
    +

    A reference to the compiled shader.

    +

    Size of the compiled vertex shader.

    +

    A reference to a class linkage interface (see ); the value can be null.

    +

    Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

    +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for CreateVertexShader.

    The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

    Therefore, if you use the following shader model 5.0 instructions in a vertex shader, you can successfully pass the compiled vertex shader to pShaderBytecode. That is, the call to CreateVertexShader succeeds.

    If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateVertexShader fails. CreateVertexShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

    • dcl_uav_typed
    • dcl_uav_raw
    • dcl_uav_structured
    • ld_raw
    • ld_structured
    • ld_uav_typed
    • store_raw
    • store_structured
    • store_uav_typed
    • sync_uglobal
    • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)
    +
    + + ff476524 + HRESULT ID3D11Device::CreateVertexShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11VertexShader** ppVertexShader) + ID3D11Device::CreateVertexShader +
    + + +

    Create a geometry shader.

    +
    +

    A reference to the compiled shader.

    +

    Size of the compiled geometry shader.

    +

    A reference to a class linkage interface (see ); the value can be null.

    +

    Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    After it is created, the shader can be set to the device by calling .

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for CreateGeometryShader.

    The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

    Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShader succeeds.

    If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShader fails. CreateGeometryShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

    • dcl_uav_typed
    • dcl_uav_raw
    • dcl_uav_structured
    • ld_raw
    • ld_structured
    • ld_uav_typed
    • store_raw
    • store_structured
    • store_uav_typed
    • sync_uglobal
    • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)
    +
    + + ff476509 + HRESULT ID3D11Device::CreateGeometryShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) + ID3D11Device::CreateGeometryShader +
    + + +

    Creates a geometry shader that can write to streaming output buffers.

    +
    +

    A reference to the compiled geometry shader for a standard geometry shader plus stream output. For info on how to get this reference, see Getting a Pointer to a Compiled Shader.

    To create the stream output without using a geometry shader, pass a reference to the output signature for the prior stage. To obtain this output signature, call the D3DGetOutputSignatureBlob compiler function. You can also pass a reference to the compiled shader for the prior stage (for example, the vertex-shader stage or domain-shader stage). This compiled shader provides the output signature for the data.

    +

    Size of the compiled geometry shader.

    +

    Pointer to a array. Cannot be null if NumEntries > 0.

    +

    The number of entries in the stream output declaration ( ranges from 0 to D3D11_SO_STREAM_COUNT * D3D11_SO_OUTPUT_COMPONENT_COUNT ).

    +

    An array of buffer strides; each stride is the size of an element for that buffer.

    +

    The number of strides (or buffers) in pBufferStrides (ranges from 0 to D3D11_SO_BUFFER_SLOT_COUNT).

    +

    The index number of the stream to be sent to the rasterizer stage (ranges from 0 to D3D11_SO_STREAM_COUNT - 1). Set to D3D11_SO_NO_RASTERIZED_STREAM if no stream is to be rasterized.

    +

    A reference to a class linkage interface (see ); the value can be null.

    +

    Address of a reference to an interface, representing the geometry shader that was created. Set this to null to validate the other parameters; if validation passes, the method will return S_FALSE instead of .

    +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    For more info about using CreateGeometryShaderWithStreamOutput, see Create a Geometry-Shader Object with Stream Output.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for CreateGeometryShaderWithStreamOutput.

    The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

    Therefore, if you use the following shader model 5.0 instructions in a geometry shader, you can successfully pass the compiled geometry shader to pShaderBytecode. That is, the call to CreateGeometryShaderWithStreamOutput succeeds.

    If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateGeometryShaderWithStreamOutput fails. CreateGeometryShaderWithStreamOutput also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

    • dcl_uav_typed
    • dcl_uav_raw
    • dcl_uav_structured
    • ld_raw
    • ld_structured
    • ld_uav_typed
    • store_raw
    • store_structured
    • store_uav_typed
    • sync_uglobal
    • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)
    +
    + + ff476510 + HRESULT ID3D11Device::CreateGeometryShaderWithStreamOutput([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Buffer, Optional] const D3D11_SO_DECLARATION_ENTRY* pSODeclaration,[In] unsigned int NumEntries,[In, Buffer, Optional] const unsigned int* pBufferStrides,[In] unsigned int NumStrides,[In] unsigned int RasterizedStream,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11GeometryShader** ppGeometryShader) + ID3D11Device::CreateGeometryShaderWithStreamOutput +
    + + +

    Create a pixel shader.

    +
    +

    A reference to the compiled shader.

    +

    Size of the compiled pixel shader.

    +

    A reference to a class linkage interface (see ); the value can be null.

    +

    Address of a reference to a interface. If this is null, all other parameters will be validated, and if all parameters pass validation this API will return S_FALSE instead of .

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    After creating the pixel shader, you can set it to the device using .

    +
    + + ff476513 + HRESULT ID3D11Device::CreatePixelShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11PixelShader** ppPixelShader) + ID3D11Device::CreatePixelShader +
    + + +

    Create a hull shader.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for CreateHullShader.

    The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

    Therefore, if you use the following shader model 5.0 instructions in a hull shader, you can successfully pass the compiled hull shader to pShaderBytecode. That is, the call to CreateHullShader succeeds.

    If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateHullShader fails. CreateHullShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

    • dcl_uav_typed
    • dcl_uav_raw
    • dcl_uav_structured
    • ld_raw
    • ld_structured
    • ld_uav_typed
    • store_raw
    • store_structured
    • store_uav_typed
    • sync_uglobal
    • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)
    +
    + + ff476511 + HRESULT ID3D11Device::CreateHullShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11HullShader** ppHullShader) + ID3D11Device::CreateHullShader +
    + + +

    Create a domain shader .

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, provides the following new functionality for CreateDomainShader.

    The following shader model 5.0 instructions are available to just pixel shaders and compute shaders in the Direct3D 11.0 runtime. For the Direct3D 11.1 runtime, because unordered access views (UAV) are available at all shader stages, you can use these instructions in all shader stages.

    Therefore, if you use the following shader model 5.0 instructions in a domain shader, you can successfully pass the compiled domain shader to pShaderBytecode. That is, the call to CreateDomainShader succeeds.

    If you pass a compiled shader to pShaderBytecode that uses any of the following instructions on a device that doesn?t support UAVs at every shader stage (including existing drivers that are not implemented to support UAVs at every shader stage), CreateDomainShader fails. CreateDomainShader also fails if the shader tries to use a UAV slot beyond the set of UAV slots that the hardware supports.

    • dcl_uav_typed
    • dcl_uav_raw
    • dcl_uav_structured
    • ld_raw
    • ld_structured
    • ld_uav_typed
    • store_raw
    • store_structured
    • store_uav_typed
    • sync_uglobal
    • All atomics and immediate atomics (for example, atomic_and and imm_atomic_and)
    +
    + + ff476508 + HRESULT ID3D11Device::CreateDomainShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11DomainShader** ppDomainShader) + ID3D11Device::CreateDomainShader +
    + + +

    Create a compute shader.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

    + +

    For an example, see How To: Create a Compute Shader and HDRToneMappingCS11 Sample.

    +
    + + ff476503 + HRESULT ID3D11Device::CreateComputeShader([In] const void* pShaderBytecode,[In] SIZE_T BytecodeLength,[In, Optional] ID3D11ClassLinkage* pClassLinkage,[Out, Fast] ID3D11ComputeShader** ppComputeShader) + ID3D11Device::CreateComputeShader +
    + + +

    Creates class linkage libraries to enable dynamic shader linkage.

    +
    +

    A reference to a class-linkage interface reference (see ).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    The interface returned in ppLinkage is associated with a shader by passing it as a parameter to one of the create shader methods such as .

    +
    + + ff476502 + HRESULT ID3D11Device::CreateClassLinkage([Out, Fast] ID3D11ClassLinkage** ppLinkage) + ID3D11Device::CreateClassLinkage +
    + + +

    Create a blend-state object that encapsules blend state for the output-merger stage.

    +
    +

    Pointer to a blend-state description (see ).

    +

    Address of a reference to the blend-state object created (see ).

    +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the blend-state object. See Direct3D 11 Return Codes for other possible return values.

    + +

    An application can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

    +
    + + ff476500 + HRESULT ID3D11Device::CreateBlendState([In] const D3D11_BLEND_DESC* pBlendStateDesc,[Out, Fast] ID3D11BlendState** ppBlendState) + ID3D11Device::CreateBlendState +
    + + +

    Create a depth-stencil state object that encapsulates depth-stencil test information for the output-merger stage.

    +
    +

    Pointer to a depth-stencil state description (see ).

    +

    Address of a reference to the depth-stencil state object created (see ).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    4096 unique depth-stencil state objects can be created on a device at a time.

    If an application attempts to create a depth-stencil-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique depth-stencil state objects will stay the same.

    +
    + + ff476506 + HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) + ID3D11Device::CreateDepthStencilState +
    + + +

    Create a rasterizer state object that tells the rasterizer stage how to behave.

    +
    +

    Pointer to a rasterizer state description (see ).

    +

    Address of a reference to the rasterizer state object created (see ).

    +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the compute shader. See Direct3D 11 Return Codes for other possible return values.

    + +

    4096 unique rasterizer state objects can be created on a device at a time.

    If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

    +
    + + ff476516 + HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) + ID3D11Device::CreateRasterizerState +
    + + +

    Create a sampler-state object that encapsulates sampling information for a texture.

    +
    +

    Pointer to a sampler state description (see ).

    +

    Address of a reference to the sampler state object created (see ).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    4096 unique sampler state objects can be created on a device at a time.

    If an application attempts to create a sampler-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique sampler state objects will stay the same.

    +
    + + ff476518 + HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) + ID3D11Device::CreateSamplerState +
    + + +

    This interface encapsulates methods for querying information from the GPU.

    +
    +

    Pointer to a query description (see ).

    +

    Address of a reference to the query object created (see ).

    +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the query object. See Direct3D 11 Return Codes for other possible return values.

    + + ff476515 + HRESULT ID3D11Device::CreateQuery([In] const D3D11_QUERY_DESC* pQueryDesc,[Out, Fast] ID3D11Query** ppQuery) + ID3D11Device::CreateQuery +
    + + +

    Creates a predicate.

    +
    +

    Pointer to a query description where the type of query must be a or (see ).

    +

    Address of a reference to a predicate (see ).

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + + ff476514 + HRESULT ID3D11Device::CreatePredicate([In] const D3D11_QUERY_DESC* pPredicateDesc,[Out, Fast] ID3D11Predicate** ppPredicate) + ID3D11Device::CreatePredicate +
    + + +

    Create a counter object for measuring GPU performance.

    +
    +

    Pointer to a counter description (see ).

    +

    Address of a reference to a counter (see ).

    +

    If this function succeeds, it will return . If it fails, possible return values are: S_FALSE, E_OUTOFMEMORY, , , or E_INVALIDARG.

    is returned whenever the application requests to create a well-known counter, but the current device does not support it.

    indicates that another device object is currently using the counters, so they cannot be used by this device at the moment.

    E_INVALIDARG is returned whenever an out-of-range well-known or device-dependent counter is requested, or when the simulataneously active counters have been exhausted.

    + + ff476504 + HRESULT ID3D11Device::CreateCounter([In] const D3D11_COUNTER_DESC* pCounterDesc,[Out, Fast] ID3D11Counter** ppCounter) + ID3D11Device::CreateCounter +
    + + +

    Creates a deferred context for play back of command lists.

    +
    +

    Reserved for future use. Pass 0.

    +

    Upon completion of the method, the passed reference to an interface reference is initialized.

    +

    Returns if successful; otherwise, returns one of the following:

    • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
    • Returns if the CreateDeferredContext method cannot be called from the current context. For example, if the device was created with the value, CreateDeferredContext returns .
    • Returns E_INVALIDARG if the ContextFlags parameter is invalid.
    • Returns E_OUTOFMEMORY if the application has exhausted available memory.
    + +

    A deferred context is a thread-safe context that you can use to record graphics commands on a thread other than the main rendering thread. Using a deferred context, you can record graphics commands into a command list that is encapsulated by the interface. After all scene items are recorded, you can then submit them to the main render thread for final rendering. In this manner, you can perform rendering tasks concurrently across multiple threads and potentially improve performance in multi-core CPU scenarios.

    You can create multiple deferred contexts.

    Note??If you use the value to create the device that is represented by , the CreateDeferredContext method will fail, and you will not be able to create a deferred context.

    For more information about deferred contexts, see Immediate and Deferred Rendering.

    +
    + + ff476505 + HRESULT ID3D11Device::CreateDeferredContext([In] unsigned int ContextFlags,[Out, Fast] ID3D11DeviceContext** ppDeferredContext) + ID3D11Device::CreateDeferredContext +
    + + +

    Give a device access to a shared resource created on a different device.

    +
    +

    A resource handle. See remarks.

    +

    The globally unique identifier () for the resource interface. See remarks.

    +

    Address of a reference to the resource we are gaining access to.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

    The unique handle of the resource is obtained differently depending on the type of device that originally created the resource.

    To share a resource between two Direct3D 11 devices the resource must have been created with the flag, if it was created using the interface. If it was created using a DXGI device interface, then the resource is always shared.

    The REFIID, or , of the interface to the resource can be obtained by using the __uuidof() macro. For example, __uuidof() will get the of the interface to a buffer resource.

    When sharing a resource between two Direct3D 10/11 devices the unique handle of the resource can be obtained by querying the resource for the interface and then calling GetSharedHandle.

     * pOtherResource(null);	
    +            hr = pOtherDeviceResource->QueryInterface( __uuidof(), (void**)&pOtherResource );	
    +            HANDLE sharedHandle;	
    +            pOtherResource->GetSharedHandle(&sharedHandle); 

    The only resources that can be shared are 2D non-mipmapped textures.

    To share a resource between a Direct3D 9 device and a Direct3D 11 device the texture must have been created using the pSharedHandle argument of CreateTexture. The shared Direct3D 9 handle is then passed to OpenSharedResource in the hResource argument.

    The following code illustrates the method calls involved.

     sharedHandle = null; // must be set to null to create, can use a valid handle here to open in D3D9 	
    +            pDevice9->CreateTexture(..., pTex2D_9, &sharedHandle); 	
    +            ... 	
    +            pDevice11->OpenSharedResource(sharedHandle, __uuidof(), (void**)(&tempResource11)); 	
    +            tempResource11->QueryInterface(__uuidof(), (void**)(&pTex2D_11)); 	
    +            tempResource11->Release(); 	
    +            // now use pTex2D_11 with pDevice11    

    Textures being shared from D3D9 to D3D11 have the following restrictions.

    • Textures must be 2D
    • Only 1 mip level is allowed
    • Texture must have default usage
    • Texture must be write only
    • MSAA textures are not allowed
    • Bind flags must have SHADER_RESOURCE and RENDER_TARGET set
    • Only R10G10B10A2_UNORM, R16G16B16A16_FLOAT and R8G8B8A8_UNORM formats are allowed

    If a shared texture is updated on one device must be called on that device.

    +
    + + ff476531 + HRESULT ID3D11Device::OpenSharedResource([In] void* hResource,[In] const GUID& ReturnedInterface,[Out, Optional] void** ppResource) + ID3D11Device::OpenSharedResource +
    + + +

    Get the support of a given format on the installed video device.

    +
    +

    A enumeration that describes a format for which to check for support.

    +

    A bitfield of enumeration values describing how the specified format is supported on the installed device. The values are ORed together.

    + + ff476498 + HRESULT ID3D11Device::CheckFormatSupport([In] DXGI_FORMAT Format,[Out] D3D11_FORMAT_SUPPORT* pFormatSupport) + ID3D11Device::CheckFormatSupport +
    + + +

    Get the number of quality levels available during multisampling.

    +
    +

    The texture format. See .

    +

    The number of samples during multisampling.

    +

    Number of quality levels supported by the adapter. See remarks.

    + +

    When multisampling a texture, the number of quality levels available for an adapter is dependent on the texture format used and the number of samples requested. The maximum number of quality levels is defined by in D3D11.h. If this method returns 0, the format and sample count combination is not supported for the installed adapter.

    Furthermore, the definition of a quality level is up to each hardware vendor to define, however no facility is provided by Direct3D to help discover this information.

    Note that FEATURE_LEVEL_10_1 devices are required to support 4x MSAA for all render targets except R32G32B32A32 and R32G32B32. FEATURE_LEVEL_11_0 devices are required to support 4x MSAA for all render target formats, and 8x MSAA for all render target formats except R32G32B32A32 formats.

    +
    + + ff476499 + HRESULT ID3D11Device::CheckMultisampleQualityLevels([In] DXGI_FORMAT Format,[In] unsigned int SampleCount,[Out] unsigned int* pNumQualityLevels) + ID3D11Device::CheckMultisampleQualityLevels +
    + + +

    Get a counter's information.

    +
    + + ff476496 + void ID3D11Device::CheckCounterInfo([Out] D3D11_COUNTER_INFO* pCounterInfo) + ID3D11Device::CheckCounterInfo +
    + + +

    Get the type, name, units of measure, and a description of an existing counter.

    +
    +

    Pointer to a counter description (see ). Specifies which counter information is to be retrieved about.

    +

    Pointer to the data type of a counter (see ). Specifies the data type of the counter being retrieved.

    +

    Pointer to the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters.

    +

    String to be filled with a brief name for the counter. May be null if the application is not interested in the name of the counter.

    +

    Length of the string returned to szName. Can be null.

    +

    Name of the units a counter measures, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

    +

    Length of the string returned to szUnits. Can be null.

    +

    A description of the counter, provided the memory the reference points to has enough room to hold the string. Can be null. The returned string will always be in English.

    +

    Length of the string returned to szDescription. Can be null.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    Length parameters can be null, which indicates the application is not interested in the length nor the corresponding string value. When a length parameter is non-null and the corresponding string is null, the input value of the length parameter is ignored, and the length of the corresponding string (including terminating null) will be returned through the length parameter. When length and the corresponding parameter are both non-null, the input value of length is checked to ensure there is enough room, and then the length of the string (including terminating null character) is passed out through the length parameter.

    +
    + + ff476495 + HRESULT ID3D11Device::CheckCounter([In] const D3D11_COUNTER_DESC* pDesc,[Out] D3D11_COUNTER_TYPE* pType,[Out] unsigned int* pActiveCounters,[Out, Buffer, Optional] char* szName,[InOut, Optional] unsigned int* pNameLength,[Out, Buffer, Optional] char* szUnits,[InOut, Optional] unsigned int* pUnitsLength,[Out, Buffer, Optional] char* szDescription,[InOut, Optional] unsigned int* pDescriptionLength) + ID3D11Device::CheckCounter +
    + + +

    Gets information about the features that are supported by the current graphics driver.

    +
    +

    A member of the enumerated type that describes which feature to query for support.

    +

    Upon completion of the method, the passed structure is filled with data that describes the feature support.

    +

    The size of the structure passed to the pFeatureSupportData parameter.

    +

    Returns if successful; otherwise, returns E_INVALIDARG if an unsupported data type is passed to the pFeatureSupportData parameter or a size mismatch is detected for the FeatureSupportDataSize parameter.

    + +

    To query for multi-threading support, pass the value to the Feature parameter, pass the structure to the pFeatureSupportData parameter, and pass the size of the structure to the FeatureSupportDataSize parameter.

    Calling CheckFeatureSupport with Feature set to causes the method to return the same information that would be returned by .

    +
    + + ff476497 + HRESULT ID3D11Device::CheckFeatureSupport([In] D3D11_FEATURE Feature,[Out, Buffer] void* pFeatureSupportData,[In] unsigned int FeatureSupportDataSize) + ID3D11Device::CheckFeatureSupport +
    + + +

    Get application-defined data from a device.

    +
    +

    Guid associated with the data.

    +

    A reference to a variable that on input contains the size, in bytes, of the buffer that pData points to, and on output contains the size, in bytes, of the amount of data that GetPrivateData retrieved.

    +

    A reference to a buffer that GetPrivateData fills with data from the device if pDataSize points to a value that specifies a buffer large enough to hold the data.

    +

    This method returns one of the codes described in the topic Direct3D 11 Return Codes.

    + + ff476530 + HRESULT ID3D11Device::GetPrivateData([In] const GUID& guid,[InOut] unsigned int* pDataSize,[Out, Buffer, Optional] void* pData) + ID3D11Device::GetPrivateData +
    + + +

    Set data to a device and associate that data with a guid.

    +
    +

    Guid associated with the data.

    +

    Size of the data.

    +

    Pointer to the data to be stored with this device. If pData is null, DataSize must also be 0, and any data previously associated with the guid will be destroyed.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    The data stored in the device with this method can be retrieved with .

    The data and guid set with this method will typically be application-defined.

    If an application uses this method to change the device type using GUID_DeviceType, results are undefined. However, GUID_DeviceType can be used to retrieve the device type using .

    The debug layer reports memory leaks by outputting a list of object interface references along with their friendly names. The default friendly name is "<unnamed>". You can set the friendly name so that you can determine if the corresponding object interface reference caused the leak. To set the friendly name, use the SetPrivateData method and the that is in D3Dcommon.h. For example, to give pContext a friendly name of My name, use the following code:

     static const char c_szName[] = "My name";	
    +            hr = pContext->SetPrivateData( , sizeof( c_szName ) - 1, c_szName );	
    +            
    +
    + + ff476533 + HRESULT ID3D11Device::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D11Device::SetPrivateData +
    + + +

    Associate an -derived interface with this device child and associate that interface with an application-defined guid.

    +
    +

    Guid associated with the interface.

    +

    Pointer to an -derived interface to be associated with the device child.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + + ff476534 + HRESULT ID3D11Device::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D11Device::SetPrivateDataInterface +
    + + +

    Gets the feature level of the hardware device.

    +
    +

    A member of the enumerated type that describes the feature level of the hardware device.

    + +

    Feature levels determine the capabilities of your device.

    +
    + + ff476528 + D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() + ID3D11Device::GetFeatureLevel +
    + + +

    Get the flags used during the call to create the device with .

    +
    +

    A bitfield containing the flags used to create the device. See .

    + + ff476525 + unsigned int ID3D11Device::GetCreationFlags() + ID3D11Device::GetCreationFlags +
    + + +

    Get the reason why the device was removed.

    +
    +

    Possible return values include:

    For more detail on these return codes, see DXGI_ERROR.

    + + ff476526 + HRESULT ID3D11Device::GetDeviceRemovedReason() + ID3D11Device::GetDeviceRemovedReason +
    + + +

    Gets an immediate context which can record command lists.

    +
    +

    Upon completion of the method, the passed reference to an interface reference is initialized.

    + +

    The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

    The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

    +
    + + ff476529 + void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) + ID3D11Device::GetImmediateContext +
    + + +

    Get the exception-mode flags.

    +
    +

    A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    Set an exception-mode flag to elevate an error condition to a non-continuable exception.

    Whenever an error occurs, a Direct3D device enters the DEVICEREMOVED state and if the appropriate exception flag has been set, an exception is raised. A raised exception is designed to terminate an application. Before termination, the last chance an application has to persist data is by using an UnhandledExceptionFilter (see Structured Exception Handling). In general, UnhandledExceptionFilters are leveraged to try to persist data when an application is crashing (to disk, for example). Any code that executes during an UnhandledExceptionFilter is not guaranteed to reliably execute (due to possible process corruption). Any data that the UnhandledExceptionFilter manages to persist, before the UnhandledExceptionFilter crashes again, should be treated as suspect, and therefore inspected by a new, non-corrupted process to see if it is usable.

    +
    + + ff476532 + HRESULT ID3D11Device::SetExceptionMode([In] unsigned int RaiseFlags) + ID3D11Device::SetExceptionMode +
    + + +

    Get the exception-mode flags.

    +
    +

    A value that contains one or more exception flags; each flag specifies a condition which will cause an exception to be raised. The flags are listed in D3D11_RAISE_FLAG. A default value of 0 means there are no flags.

    + +

    An exception-mode flag is used to elevate an error condition to a non-continuable exception.

    +
    + + ff476527 + unsigned int ID3D11Device::GetExceptionMode() + ID3D11Device::GetExceptionMode +
    + + + Gets or sets the debug-name for this object. + + + The debug name. + + + + +

    Gets the feature level of the hardware device.

    +
    + +

    Feature levels determine the capabilities of your device.

    +
    + + ff476528 + GetFeatureLevel + GetFeatureLevel + D3D_FEATURE_LEVEL ID3D11Device::GetFeatureLevel() +
    + + +

    Get the flags used during the call to create the device with .

    +
    + + ff476525 + GetCreationFlags + GetCreationFlags + unsigned int ID3D11Device::GetCreationFlags() +
    + + +

    Get the reason why the device was removed.

    +
    + + ff476526 + GetDeviceRemovedReason + GetDeviceRemovedReason + HRESULT ID3D11Device::GetDeviceRemovedReason() +
    + + +

    Gets an immediate context which can record command lists.

    +
    + +

    The GetImmediateContext method returns an object that represents an immediate context which is used to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

    The GetImmediateContext method increments the reference count of the immediate context by one. Therefore, you must call Release on the returned interface reference when you are done with it to avoid a memory leak.

    +
    + + ff476529 + GetImmediateContext + GetImmediateContext + void ID3D11Device::GetImmediateContext([Out] ID3D11DeviceContext** ppImmediateContext) +
    + + +

    Get or sets the exception-mode flags.

    +
    + +

    An exception-mode flag is used to elevate an error condition to a non-continuable exception.

    +
    + + ff476527 + GetExceptionMode / SetExceptionMode + GetExceptionMode + unsigned int ID3D11Device::GetExceptionMode() +
    + + + Creates a context state object that holds all Microsoft Direct3D state and some Direct3D behavior. + + The type of the emulated interface. This value specifies the behavior of the device when the context state object is active. Valid values are , , , and . See Remarks. + A combination of values that are combined by using a bitwise OR operation. The resulting value specifies how to create the context state object. The flag is currently the only defined flag. If the original device was created with , you must create all context state objects from that device with the flag. The context state object that CreateDeviceContextState creates inherits the threading model of its associated device context. By default the context state object is rent-threaded, so that an application synchronizes access to the device context, typically by use of critical sections. In contrast, the context state object is free-threaded if you used the ID3D10Multithread interface to turn on thread protection for the device context. If you set the single-threaded flag for both the context state object and the device, you guarantee that you will call the whole set of context methods and device methods only from one thread. You therefore do not need to use critical sections to synchronize access to the device context, and the runtime can avoid working with those processor-intensive critical sections. + A reference to an array of values. The array determines the order of feature levels for which creation is attempted. To get the greatest feature level available, set pFeatureLevels to null, so that CreateDeviceContextState uses the following array of feature level values: { , , , , , , ,}; + A reference to a variable that receives a value from the pFeatureLevels array. This is the first array value with which CreateDeviceContextState succeeded in creating the context state object. If the call to CreateDeviceContextState fails, the variable pointed to by pChosenFeatureLevel is set to zero. + A object that represents the state of a Direct3D device. + + The REFIID value of the emulated interface is a obtained by use of the __uuidof operator. For example, __uuidof() gets the of the interface to a Microsoft Direct3D?11 device.Call the method to activate the context state object. When the context state object is active, the device behaviors that are associated with both the context state object's feature level and its compatible interface are activated on the Direct3D device until the next call to SwapDeviceContextState.When a context state object is active, the runtime disables certain methods on the device and context interfaces. For example, a context state object that is created with __uuidof() will cause the runtime to turn off most of the Microsoft Direct3D?10 device interfaces, and a context state object that is created with __uuidof() or __uuidof() will cause the runtime to turn off most of the methods. + This behavior ensures that a user of either emulated interface cannot set device state that the other emulated interface is unable to express. This restriction helps guarantee that the emulated interface accurately reflects the full state of the pipeline and that the emulated interface will not operate contrary to its original interface definition.For example, suppose the tessellation stage is made active through the interface + when you create the device through or D3D11CreateDeviceAndSwapChain, instead of through the Direct3D?10 equivalents. Because the Direct3D?11 context is active, a Direct3D?10 interface is inactive when you first retrieve it via QueryInterface. This means that you cannot immediately pass a Direct3D?10 interface that you retrieved from a Direct3D?11 device to a function. You must first call SwapDeviceContextState to activate a Direct3D?10-compatible context state object.The following table shows the methods that are active and inactive for each emulated interface.Emulated interface Active device or immediate context interfaces Inactive device or immediate context interfaces or + + + + + + + + ID3D10Multithread + or + + + + + + + ID3D10Multithread + + (As published by the immediate context. The Direct3D?10 or Microsoft Direct3D?10.1 emulated interface has no effect on deferred contexts.)?The following table shows the immediate context methods that the runtime disables when the indicated context state objects are active.Methods of when __uuidof() or __uuidof() is active Methods of when __uuidof() is active Begin + ClearDepthStencilView + ClearDepthStencilView + ClearRenderTargetView + ClearRenderTargetView + ClearState + ClearState + ClearUnorderedAccessViewUint + ClearUnorderedAccessViewFloat + CopyResource + CopyResource + CopyStructureCount + CopySubresourceRegion + CopySubresourceRegion + CSGetConstantBuffers + CSGetSamplers + CSGetShader + CSGetShaderResources + CSGetUnorderedAccessViews + CSSetConstantBuffers + CSSetSamplers + CSSetShader + CSSetShaderResources + CSSetUnorderedAccessViews + Dispatch + DispatchIndirect + CreateBlendState + Draw + Draw + DrawAuto + DrawAuto + DrawIndexed + DrawIndexed + DrawIndexedInstanced + DrawIndexedInstanced + DrawIndexedInstancedIndirect + DrawInstanced + DrawInstanced + DrawInstancedIndirect + DSGetConstantBuffers + DSGetSamplers + DSGetShader + DSGetShaderResources + DSSetConstantBuffers + DSSetSamplers + DSSetShader + DSSetShaderResources + End + ExecuteCommandList + FinishCommandList + Flush + Flush + GenerateMips + GenerateMips + GetData + GetPredication + GetPredication + GetResourceMinLOD + GetType + GetTextFilterSize + GSGetConstantBuffers + GSGetConstantBuffers + GSGetSamplers + GSGetSamplers + GSGetShader + GSGetShader + GSGetShaderResources + GSGetShaderResources + GSSetConstantBuffers + GSSetConstantBuffers + GSSetSamplers + GSSetSamplers + GSSetShader + GSSetShader + GSSetShaderResources + GSSetShaderResources + HSGetConstantBuffers + HSGetSamplers + HSGetShader + HSGetShaderResources + HSSetConstantBuffers + HSSetSamplers + HSSetShader + HSSetShaderResources + IAGetIndexBuffer + IAGetIndexBuffer + IAGetInputLayout + IAGetInputLayout + IAGetPrimitiveTopology + IAGetPrimitiveTopology + IAGetVertexBuffers + IASetIndexBuffer + IASetInputLayout + IASetPrimitiveTopology + IASetVertexBuffers + OMGetBlendState + OMGetBlendState + OMGetDepthStencilState + OMGetDepthStencilState + OMGetRenderTargets + OMGetRenderTargets + OMGetRenderTargetsAndUnorderedAccessViews + OMSetBlendState + OMSetBlendState + OMSetDepthStencilState + OMSetDepthStencilState + OMSetRenderTargets + OMSetRenderTargets + OMSetRenderTargetsAndUnorderedAccessViews + PSGetConstantBuffers + PSGetConstantBuffers + PSGetSamplers + PSGetSamplers + PSGetShader + PSGetShader + PSGetShaderResources + PSGetShaderResources + PSSetConstantBuffers + PSSetConstantBuffers + PSSetSamplers + PSSetSamplers + PSSetShader + PSSetShader + PSSetShaderResources + PSSetShaderResources + ResolveSubresource + ResolveSubresource + RSGetScissorRects + RSGetScissorRects + RSGetState + RSGetState + RSGetViewports + RSGetViewports + RSSetScissorRects + RSSetScissorRects + RSSetState + RSSetState + RSSetViewports + RSSetViewports + SetPredication + SetPredication + SetResourceMinLOD + SetTextFilterSize + SOGetTargets + SOGetTargets + SOSetTargets + SOSetTargets + UpdateSubresource + UpdateSubresource + VSGetConstantBuffers + VSGetConstantBuffers + VSGetSamplers + VSGetSamplers + VSGetShader + VSGetShader + VSGetShaderResources + VSGetShaderResources + VSSetConstantBuffers + VSSetConstantBuffers + VSSetSamplers + VSSetSamplers + VSSetShader + VSSetShader + VSSetShaderResources + VSSetShaderResources ?The following table shows the immediate context methods that the runtime does not disable when the indicated context state objects are active.Methods of when __uuidof() or __uuidof() is active Methods of when __uuidof() is active GetCreationFlags + GetPrivateData + GetContextFlags + Map + Unmap ?The following table shows the interface methods that the runtime does not disable because they are not immediate context methods.Methods of CheckCounter + CheckCounterInfo + Create*, like CreateQuery + GetDeviceRemovedReason + GetExceptionMode + OpenSharedResource + SetExceptionMode + SetPrivateData + SetPrivateDataInterface ? + + HRESULT ID3D11Device1::CreateDeviceContextState([In] D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG Flags,[In, Buffer] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[In] const GUID& EmulatedInterface,[Out, Optional] D3D_FEATURE_LEVEL* pChosenFeatureLevel,[Out, Fast] ID3DDeviceContextState** ppContextState) + + + + Gives a device access to a shared resource that is referenced by name and that was created on a different device. You must have previously created the resource as shared and specified that it uses NT handles (that is, you set the flag). + + Type of the resource + The resource handle. + An instance of T + + The behavior of OpenSharedResource1 is similar to the behavior of the method; each call to OpenSharedResource1 to access a resource creates a new resource object. In other words, if you call OpenSharedResource1 twice and pass the same resource handle to hResource, you receive two resource objects with different references.To share a resource between two devicesCreate the resource as shared and specify that it uses NT handles, by setting the flag. Obtain the REFIID, or , of the interface to the resource by using the __uuidof() macro. For example, __uuidof() retrieves the of the interface to a 2D texture. Query the resource for the interface. Call the method to obtain the unique handle to the resource. + + HRESULT ID3D11Device1::OpenSharedResource1([In] void* hResource,[In] const GUID& returnedInterface,[Out] void** ppResource) + + + + Gives a device access to a shared resource that is referenced by name and that was created on a different device. You must have previously created the resource as shared and specified that it uses NT handles (that is, you set the flag). + + Type of the resource + Name of the resource to open for sharing. + The requested access rights to the resource. + An instance of T. + + The behavior of OpenSharedResourceByName is similar to the behavior of the method; each call to OpenSharedResourceByName to access a resource creates a new resource object. In other words, if you call OpenSharedResourceByName twice and pass the same resource name to lpName, you receive two resource objects with different references.To share a resource between two devicesCreate the resource as shared and specify that it uses NT handles, by setting the flag. Obtain the REFIID, or , of the interface to the resource by using the __uuidof() macro. For example, __uuidof() retrieves the of the interface to a 2D texture. Query the resource for the interface. Call the method to obtain the unique handle to the resource. In this call, you must pass a name for the resource if you want to subsequently call OpenSharedResourceByName to access the resource by name. + + HRESULT ID3D11Device1::OpenSharedResourceByName([In] const wchar_t* lpName,[In] unsigned int dwDesiredAccess,[In] const GUID& returnedInterface,[Out] void** ppResource) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets an immediate context, which can play back command lists.

    +
    +

    Upon completion of the method, the passed reference to an interface reference is initialized.

    + +

    GetImmediateContext1 returns an object that represents an immediate context. You can use this immediate context to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

    GetImmediateContext1 increments the reference count of the immediate context by one. So, call Release on the returned interface reference when you are done with it to avoid a memory leak.

    +
    + + hh404589 + void ID3D11Device1::GetImmediateContext1([Out] ID3D11DeviceContext1** ppImmediateContext) + ID3D11Device1::GetImmediateContext1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a deferred context, which can record command lists.

    +
    +

    Reserved for future use. Pass 0.

    +

    Upon completion of the method, the passed reference to an interface reference is initialized.

    +

    Returns if successful; otherwise, returns one of the following:

    • Returns if the graphics adapter has been physically removed from the computer or a driver upgrade for the graphics adapter has occurred. If this error occurs, you should destroy and re-create the device.
    • Returns if the CreateDeferredContext1 method cannot be called from the current context. For example, if the device was created with the value, CreateDeferredContext1 returns .
    • Returns E_INVALIDARG if the ContextFlags parameter is invalid.
    • Returns E_OUTOFMEMORY if the application has exhausted available memory.
    + +

    A deferred context is a thread-safe context that you can use to record graphics commands on a thread other than the main rendering thread. By using a deferred context, you can record graphics commands into a command list that is encapsulated by the interface. After you record all scene items, you can then submit them to the main render thread for final rendering. In this manner, you can perform rendering tasks concurrently across multiple threads and potentially improve performance in multi-core CPU scenarios.

    You can create multiple deferred contexts.

    Note??If you use the value to create the device that is represented by , the CreateDeferredContext1 method will fail, and you will not be able to create a deferred context.

    For more information about deferred contexts, see Immediate and Deferred Rendering.

    +
    + + hh404580 + HRESULT ID3D11Device1::CreateDeferredContext1([In] unsigned int ContextFlags,[Out, Fast] ID3D11DeviceContext1** ppDeferredContext) + ID3D11Device1::CreateDeferredContext1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a blend-state object that encapsulates blend state for the output-merger stage and allows the configuration of logic operations.

    +
    + No documentation. + No documentation. +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the blend-state object. See Direct3D 11 Return Codes for other possible return values.

    + +

    An app can create up to 4096 unique blend-state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

    +
    + + hh404577 + HRESULT ID3D11Device1::CreateBlendState1([In] const D3D11_BLEND_DESC1* pBlendStateDesc,[Out, Fast] ID3D11BlendState1** ppBlendState) + ID3D11Device1::CreateBlendState1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a rasterizer state object that informs the rasterizer stage how to behave and forces the sample count while UAV rendering or rasterizing.

    +
    + No documentation. + No documentation. +

    This method returns E_OUTOFMEMORY if there is insufficient memory to create the rasterizer state object. See Direct3D 11 Return Codes for other possible return values.

    + +

    An app can create up to 4096 unique rasterizer state objects. For each object created, the runtime checks to see if a previous object has the same state. If such a previous object exists, the runtime will return a reference to previous instance instead of creating a duplicate object.

    +
    + + hh404586 + HRESULT ID3D11Device1::CreateRasterizerState1([In] const D3D11_RASTERIZER_DESC1* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState1** ppRasterizerState) + ID3D11Device1::CreateRasterizerState1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a context state object that holds all Microsoft Direct3D state and some Direct3D behavior.

    +
    +

    A combination of values that are combined by using a bitwise OR operation. The resulting value specifies how to create the context state object. The flag is currently the only defined flag. If the original device was created with , you must create all context state objects from that device with the flag.

    If you set the single-threaded flag for both the context state object and the device, you guarantee that you will call the whole set of context methods and device methods only from one thread. You therefore do not need to use critical sections to synchronize access to the device context, and the runtime can avoid working with those processor-intensive critical sections.

    +

    A reference to an array of values. The array can contain elements from the following list and determines the order of feature levels for which creation is attempted. Unlike , you can't set pFeatureLevels to null because there is no default feature level array.

     { , , , , , , ,}; 
    +

    The number of elements in pFeatureLevels. Unlike , you must set FeatureLevels to greater than 0 because you can't set pFeatureLevels to null.

    +

    The SDK version. You must set this parameter to .

    +

    The globally unique identifier () for the emulated interface. This value specifies the behavior of the device when the context state object is active. Valid values are obtained by using the __uuidof operator on the ID3D10Device, ID3D10Device1, , and interfaces. See Remarks.

    +

    A reference to a variable that receives a value from the pFeatureLevels array. This is the first array value with which CreateDeviceContextState succeeded in creating the context state object. If the call to CreateDeviceContextState fails, the variable pointed to by pChosenFeatureLevel is set to zero.

    +

    The address of a reference to an object that represents the state of a Direct3D device.

    +

    This method returns one of the Direct3D 11 Return Codes.

    + +

    The REFIID value of the emulated interface is a obtained by use of the __uuidof operator. For example, __uuidof() gets the of the interface to a Microsoft Direct3D?11 device.

    Call the method to activate the context state object. When the context state object is active, the device behaviors that are associated with both the context state object's feature level and its compatible interface are activated on the Direct3D device until the next call to SwapDeviceContextState.

    When a context state object is active, the runtime disables certain methods on the device and context interfaces. For example, a context state object that is created with __uuidof() will cause the runtime to turn off most of the Microsoft Direct3D?10 device interfaces, and a context state object that is created with __uuidof(ID3D10Device1) or __uuidof(ID3D10Device) will cause the runtime to turn off most of the methods. + This behavior ensures that a user of either emulated interface cannot set device state that the other emulated interface is unable to express. This restriction helps guarantee that the ID3D10Device1 emulated interface accurately reflects the full state of the pipeline and that the emulated interface will not operate contrary to its original interface definition.

    For example, suppose the tessellation stage is made active through the interface + when you create the device through or D3D11CreateDeviceAndSwapChain, instead of through the Direct3D?10 equivalents. Because the Direct3D?11 context is active, a Direct3D?10 interface is inactive when you first retrieve it via QueryInterface. This means that you cannot immediately pass a Direct3D?10 interface that you retrieved from a Direct3D?11 device to a function. You must first call SwapDeviceContextState to activate a Direct3D?10-compatible context state object. +

    The following table shows the methods that are active and inactive for each emulated interface.

    Emulated interface Active device or immediate context interfaces Inactive device or immediate context interfaces

    or

    +

    +

    ID3D10Multithread

    ID3D10Device

    ID3D10Device1 or

    ID3D10Device

    ID3D10Device

    ID3D10Device1

    +

    ID3D10Multithread

    (As published by the immediate context. The Direct3D?10 or Microsoft Direct3D?10.1 emulated interface has no effect on deferred contexts.)

    ?

    The following table shows the immediate context methods that the runtime disables when the indicated context state objects are active.

    Methods of when __uuidof(ID3D10Device1) or __uuidof(ID3D10Device) is active Methods of ID3D10Device when __uuidof() is active

    ClearDepthStencilView

    ClearDepthStencilView

    ClearRenderTargetView

    ClearRenderTargetView

    ClearState

    ClearState

    ClearUnorderedAccessViewUint

    ClearUnorderedAccessViewFloat

    CopyResource

    CopyResource

    CopyStructureCount

    CopySubresourceRegion

    CopySubresourceRegion

    CSGetConstantBuffers

    CSGetSamplers

    CSGetShader

    CSGetShaderResources

    CSGetUnorderedAccessViews

    CSSetConstantBuffers

    CSSetSamplers

    CSSetShader

    CSSetShaderResources

    CSSetUnorderedAccessViews

    Dispatch

    DispatchIndirect

    CreateBlendState

    Draw

    Draw

    DrawAuto

    DrawAuto

    DrawIndexed

    DrawIndexed

    DrawIndexedInstanced

    DrawIndexedInstanced

    DrawIndexedInstancedIndirect

    DrawInstanced

    DrawInstanced

    DrawInstancedIndirect

    DSGetConstantBuffers

    DSGetSamplers

    DSGetShader

    DSGetShaderResources

    DSSetConstantBuffers

    DSSetSamplers

    DSSetShader

    DSSetShaderResources

    ExecuteCommandList

    FinishCommandList

    Flush

    Flush

    GenerateMips

    GenerateMips

    GetPredication

    GetPredication

    GetResourceMinLOD

    GetType

    GetTextFilterSize

    GSGetConstantBuffers

    GSGetConstantBuffers

    GSGetSamplers

    GSGetSamplers

    GSGetShader

    GSGetShader

    GSGetShaderResources

    GSGetShaderResources

    GSSetConstantBuffers

    GSSetConstantBuffers

    GSSetSamplers

    GSSetSamplers

    GSSetShader

    GSSetShader

    GSSetShaderResources

    GSSetShaderResources

    HSGetConstantBuffers

    HSGetSamplers

    HSGetShader

    HSGetShaderResources

    HSSetConstantBuffers

    HSSetSamplers

    HSSetShader

    HSSetShaderResources

    IAGetIndexBuffer

    IAGetIndexBuffer

    IAGetInputLayout

    IAGetInputLayout

    IAGetPrimitiveTopology

    IAGetPrimitiveTopology

    IAGetVertexBuffers

    IAGetVertexBuffers

    IASetIndexBuffer

    IASetIndexBuffer

    IASetInputLayout

    IASetInputLayout

    IASetPrimitiveTopology

    IASetPrimitiveTopology

    IASetVertexBuffers

    IASetVertexBuffers

    OMGetBlendState

    OMGetBlendState

    OMGetDepthStencilState

    OMGetDepthStencilState

    OMGetRenderTargets

    OMGetRenderTargets

    OMGetRenderTargetsAndUnorderedAccessViews

    OMSetBlendState

    OMSetBlendState

    OMSetDepthStencilState

    OMSetDepthStencilState

    OMSetRenderTargets

    OMSetRenderTargets

    OMSetRenderTargetsAndUnorderedAccessViews

    PSGetConstantBuffers

    PSGetConstantBuffers

    PSGetSamplers

    PSGetSamplers

    PSGetShader

    PSGetShader

    PSGetShaderResources

    PSGetShaderResources

    PSSetConstantBuffers

    PSSetConstantBuffers

    PSSetSamplers

    PSSetSamplers

    PSSetShader

    PSSetShader

    PSSetShaderResources

    PSSetShaderResources

    ResolveSubresource

    ResolveSubresource

    RSGetScissorRects

    RSGetScissorRects

    RSGetState

    RSGetState

    RSGetViewports

    RSGetViewports

    RSSetScissorRects

    RSSetScissorRects

    RSSetState

    RSSetState

    RSSetViewports

    RSSetViewports

    SetPredication

    SetPredication

    SetResourceMinLOD

    SetTextFilterSize

    SOGetTargets

    SOGetTargets

    SOSetTargets

    SOSetTargets

    UpdateSubresource

    UpdateSubresource

    VSGetConstantBuffers

    VSGetConstantBuffers

    VSGetSamplers

    VSGetSamplers

    VSGetShader

    VSGetShader

    VSGetShaderResources

    VSGetShaderResources

    VSSetConstantBuffers

    VSSetConstantBuffers

    VSSetSamplers

    VSSetSamplers

    VSSetShader

    VSSetShader

    VSSetShaderResources

    VSSetShaderResources

    ?

    The following table shows the immediate context methods that the runtime does not disable when the indicated context state objects are active.

    Methods of when __uuidof(ID3D10Device1) or __uuidof(ID3D10Device) is active Methods of ID3D10Device when __uuidof() is active

    Begin

    End

    GetCreationFlags

    GetPrivateData

    GetContextFlags

    GetData

    Map

    Unmap

    ?

    The following table shows the ID3D10Device interface methods that the runtime does not disable because they are not immediate context methods.

    Methods of ID3D10Device

    CheckCounter

    CheckCounterInfo

    Create*, like CreateQuery

    GetDeviceRemovedReason

    GetExceptionMode

    OpenSharedResource

    SetExceptionMode

    SetPrivateData

    SetPrivateDataInterface

    ?

    +
    + + hh404583 + HRESULT ID3D11Device1::CreateDeviceContextState([In] D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG Flags,[In, Buffer] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[In] const GUID& EmulatedInterface,[Out, Optional] D3D_FEATURE_LEVEL* pChosenFeatureLevel,[Out, Fast] ID3DDeviceContextState** ppContextState) + ID3D11Device1::CreateDeviceContextState +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives a device access to a shared resource that is referenced by a handle and that was created on a different device. You must have previously created the resource as shared and specified that it uses NT handles (that is, you set the flag).

    +
    + No documentation. + No documentation. + No documentation. +

    This method returns one of the Direct3D 11 return codes. This method also returns E_ACCESSDENIED if the permissions to access the resource aren't valid.

    + +

    The behavior of OpenSharedResource1 is similar to the behavior of the method; each call to OpenSharedResource1 to access a resource creates a new resource object. In other words, if you call OpenSharedResource1 twice and pass the same resource handle to hResource, you receive two resource objects with different references.

    To share a resource between two devices

    1. Create the resource as shared and specify that it uses NT handles, by setting the flag.
    2. Obtain the REFIID, or , of the interface to the resource by using the __uuidof() macro. For example, __uuidof() retrieves the of the interface to a 2D texture.
    3. Query the resource for the interface.
    4. Call the method to obtain the unique handle to the resource.
    +
    + + hh404592 + HRESULT ID3D11Device1::OpenSharedResource1([In] void* hResource,[In] const GUID& returnedInterface,[Out] void** ppResource) + ID3D11Device1::OpenSharedResource1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives a device access to a shared resource that is referenced by name and that was created on a different device. You must have previously created the resource as shared and specified that it uses NT handles (that is, you set the flag).

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    This method returns one of the Direct3D 11 return codes. This method also returns E_ACCESSDENIED if the permissions to access the resource aren't valid.

    + +

    The behavior of OpenSharedResourceByName is similar to the behavior of the method; each call to OpenSharedResourceByName to access a resource creates a new resource object. In other words, if you call OpenSharedResourceByName twice and pass the same resource name to lpName, you receive two resource objects with different references.

    To share a resource between two devices

    1. Create the resource as shared and specify that it uses NT handles, by setting the flag.
    2. Obtain the REFIID, or , of the interface to the resource by using the __uuidof() macro. For example, __uuidof() retrieves the of the interface to a 2D texture.
    3. Query the resource for the interface.
    4. Call the method to obtain the unique handle to the resource. In this call, you must pass a name for the resource if you want to subsequently call OpenSharedResourceByName to access the resource by name.
    +
    + + hh404595 + HRESULT ID3D11Device1::OpenSharedResourceByName([In] const wchar_t* lpName,[In] DXGI_SHARED_RESOURCE_FLAGS dwDesiredAccess,[In] const GUID& returnedInterface,[Out] void** ppResource) + ID3D11Device1::OpenSharedResourceByName +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets an immediate context, which can play back command lists.

    +
    + +

    GetImmediateContext1 returns an object that represents an immediate context. You can use this immediate context to perform rendering that you want immediately submitted to a device. For most applications, an immediate context is the primary object that is used to draw your scene.

    GetImmediateContext1 increments the reference count of the immediate context by one. So, call Release on the returned interface reference when you are done with it to avoid a memory leak.

    +
    + + hh404589 + GetImmediateContext1 + GetImmediateContext1 + void ID3D11Device1::GetImmediateContext1([Out] ID3D11DeviceContext1** ppImmediateContext) +
    + + + No documentation. + + + IDrawingSurfaceBackgroundContentProviderNative + IDrawingSurfaceBackgroundContentProviderNative + + + + Internal DrawingSurfaceBackgroundContentProvider Callback + + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + HRESULT ID2D1DrawingSurfaceBackgroundContentProvider::SetComputeInfo([In] ID2D1ComputeInfo* computeInfo) + + + + The namespace provides a managed Direct3D11 API. + + ff476080 + Direct3D11 + Direct3D11 + + + +

    Describes rasterizer state.

    +
    + +

    Rasterizer state defines the behavior of the rasterizer stage; to set rasterizer state, call .

    These are the default values for rasterizer state.

    StateDefault Value
    FillModeSolid
    CullModeBack
    FrontCounterClockwise
    DepthBias0
    SlopeScaledDepthBias0.0f
    DepthBiasClamp0.0f
    DepthClipEnableTRUE
    ScissorEnable
    MultisampleEnable
    AntialiasedLineEnable

    ?

    +
    + + ff476198 + D3D11_RASTERIZER_DESC + D3D11_RASTERIZER_DESC +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

    Determines the fill mode to use when rendering (see ).

    +
    + + ff476198 + D3D11_FILL_MODE FillMode + D3D11_FILL_MODE FillMode +
    + + +

    Indicates triangles facing the specified direction are not drawn (see ).

    +
    + + ff476198 + D3D11_CULL_MODE CullMode + D3D11_CULL_MODE CullMode +
    + + +

    Determines if a triangle is front- or back-facing. If this parameter is true, then a triangle will be considered front-facing if its vertices are counter-clockwise on the render target and considered back-facing if they are clockwise. If this parameter is false then the opposite is true.

    +
    + + ff476198 + BOOL FrontCounterClockwise + BOOL FrontCounterClockwise +
    + + +

    Depth value added to a given pixel.

    +
    + + ff476198 + int DepthBias + int DepthBias +
    + + +

    Maximum depth bias of a pixel.

    +
    + + ff476198 + float DepthBiasClamp + float DepthBiasClamp +
    + + +

    Scalar on a given pixel's slope.

    +
    + + ff476198 + float SlopeScaledDepthBias + float SlopeScaledDepthBias +
    + + +

    Enable clipping based on distance.

    The hardware always performs x and y clipping of rasterized coordinates. When DepthClipEnable is set to the default?TRUE, the hardware also clips the z value (that is, the hardware performs the last step of the following algorithm). +

    0 < w + -w <= x <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + -w <= y <= w (or arbitrarily wider range if implementation uses a guard band to reduce clipping burden) + 0 <= z <= w +

    When you set DepthClipEnable to , the hardware skips the z clipping (that is, the last step in the preceding algorithm). However, the hardware still performs the "0 < w" clipping. When z clipping is disabled, improper depth ordering at the pixel level might result. However, when z clipping is disabled, stencil shadow implementations are simplified. In other words, you can avoid complex special-case handling for geometry that goes beyond the back clipping plane. +

    +
    + + ff476198 + BOOL DepthClipEnable + BOOL DepthClipEnable +
    + + +

    Enable scissor-rectangle culling. All pixels ouside an active scissor rectangle are culled.

    +
    + + ff476198 + BOOL ScissorEnable + BOOL ScissorEnable +
    + + +

    Enable multisample antialiasing.

    +
    + + ff476198 + BOOL MultisampleEnable + BOOL MultisampleEnable +
    + + +

    Enable line antialiasing; only applies if doing line drawing and MultisampleEnable is false.

    +
    + + ff476198 + BOOL AntialiasedLineEnable + BOOL AntialiasedLineEnable +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    The rasterizer-state interface holds a description for rasterizer state that you can bind to the rasterizer stage. This rasterizer-state interface supports forced sample count.

    +
    + +

    To create a rasterizer-state object, call . To bind the rasterizer-state object to the rasterizer stage, call .

    +
    + + hh446828 + ID3D11RasterizerState1 + ID3D11RasterizerState1 +
    + + +

    The rasterizer-state interface holds a description for rasterizer state that you can bind to the rasterizer stage.

    +
    + +

    To create a rasterizer-state object, call . To bind the rasterizer-state object to the rasterizer stage, call .

    +
    + + ff476580 + ID3D11RasterizerState + ID3D11RasterizerState +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the description for rasterizer state that you used to create the rasterizer-state object.

    +
    +

    A reference to a structure that receives a description of the rasterizer state.

    + +

    You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

    +
    + + ff476581 + void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) + ID3D11RasterizerState::GetDesc +
    + + +

    Create a rasterizer state object that tells the rasterizer stage how to behave.

    +
    + The device with which to associate the state object. + A rasterizer state description + +

    4096 unique rasterizer state objects can be created on a device at a time.

    If an application attempts to create a rasterizer-state interface with the same state as an existing interface, the same interface will be returned and the total number of unique rasterizer state objects will stay the same.

    +
    + ff476516 + HRESULT ID3D11Device::CreateRasterizerState([In] const D3D11_RASTERIZER_DESC* pRasterizerDesc,[Out, Fast] ID3D11RasterizerState** ppRasterizerState) + ID3D11Device::CreateRasterizerState +
    + + +

    Gets the description for rasterizer state that you used to create the rasterizer-state object.

    +
    + +

    You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

    +
    + + ff476581 + GetDesc + GetDesc + void ID3D11RasterizerState::GetDesc([Out] D3D11_RASTERIZER_DESC* pDesc) +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the description for rasterizer state that you used to create the rasterizer-state object.

    +
    +

    A reference to a structure that receives a description of the rasterizer state. This rasterizer state can specify forced sample count.

    + +

    You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

    +
    + + hh446830 + void ID3D11RasterizerState1::GetDesc1([Out] D3D11_RASTERIZER_DESC1* pDesc) + ID3D11RasterizerState1::GetDesc1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the description for rasterizer state that you used to create the rasterizer-state object.

    +
    + +

    You use the description for rasterizer state in a call to the method to create the rasterizer-state object.

    +
    + + hh446830 + GetDesc1 + GetDesc1 + void ID3D11RasterizerState1::GetDesc1([Out] D3D11_RASTERIZER_DESC1* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the vertex shader pipeline stage uses.

    +
    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh446793 + ID3D11DeviceContext1 + ID3D11DeviceContext1 +
    + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Constructs a new deferred context . + + The device with which to associate the state object. + The newly created object. + + + + Create a command list and record graphics commands into it. + + A flag indicating whether the immediate context state is saved (prior) and restored (after) the execution of a command list. + The created command list containing the queued rendering commands. + + + + Determines whether asynhronous query data is available. + + The data. + + true if asynhronous query data is available; otherwise, false. + + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + + + + Determines whether asynhronous query data is available. + + The data. + + true if asynhronous query data is available; otherwise, false. + + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + + The asynchronous data provider. + The data retrieved from the GPU. + + True if result contains valid data, false otherwise. + + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + + + Gets data from the GPU asynchronously. + + + The asynchronous data provider. + Flags specifying how the command should operate. + The data retrieved from the GPU. + + True if result contains valid data, false otherwise. + + + + + Copy the entire contents of the source resource to the destination resource using the GPU. + + + This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources: Must be different resources. Must be the same type. Must have identical dimensions (including width, height, depth, and size as appropriate). Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions. Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. Might not be currently mapped. You cannot use an {{Immutable}} resource as a destination. You can use a {{depth-stencil}} resource as either a source or a destination. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to ID3D11DeviceContext::CopyResource fails. The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data. An application that only needs to copy a portion of the data in a resource should use instead. + + A reference to the source resource (see ). + A reference to the destination resource (see ). + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ff476392 + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ID3D11DeviceContext::CopyResource + + + + Copy a region from a source resource to a destination resource. + + + The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource. If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. {{D3D11CalcSubresource}} is a helper function for calculating subresource indexes. CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources: Must be different subresources (although they can be from the same resource). Must be the same type. Must have compatible DXGI formats (identical or from the same type group). For example, a DXGI_FORMAT_R32G32B32_FLOAT texture can be copied to an DXGI_FORMAT_R32G32B32_UINT texture since both of these formats are in the DXGI_FORMAT_R32G32B32_TYPELESS group. May not be currently mapped. CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead. CopySubresourceRegion is an asynchronous call which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. See performance considerations for more details. Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and NULL to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values. Example The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture. + D3D11_BOX sourceRegion; + sourceRegion.left = 120; + sourceRegion.right = 200; + sourceRegion.top = 100; + sourceRegion.bottom = 220; + sourceRegion.front = 0; + sourceRegion.back = 1; pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion ); + + Notice, that for a 2D texture, front and back are set to 0 and 1 respectively. + + A reference to the source resource (see ). + Source subresource index. + A reference to a 3D box (see ) that defines the source subresources that can be copied. If NULL, the entire source subresource is copied. The box must fit within the source resource. + A reference to the destination resource (see ). + Destination subresource index. + The x-coordinate of the upper left corner of the destination region. + The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero. + The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero. + ff476394 + void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) + ID3D11DeviceContext::CopySubresourceRegion + + + + Copy a multisampled resource into a non-multisampled resource. + + + This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass. The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this: ScenarioRequirements Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter. One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is DXGI_FORMAT_R32_FLOAT and the typeless resource is DXGI_FORMAT_R32_TYPELESS). The format of the typed resource must be specified in the Format parameter. Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have DXGI_FORMAT_R32_TYPELESS), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are DXGI_FORMAT_R32_TYPELESS then DXGI_FORMAT_R32_FLOAT could be specified in the Format parameter). For example, given the DXGI_FORMAT_R16G16B16A16_TYPELESS format: The source (or dest) format could be DXGI_FORMAT_R16G16B16A16_UNORM The dest (or source) format could be DXGI_FORMAT_R16G16B16A16_FLOAT ? + + Source resource. Must be multisampled. + >The source subresource of the source resource. + Destination resource. Must be a created with the flag and be single-sampled. See . + A zero-based index, that identifies the destination subresource. Use {{D3D11CalcSubresource}} to calculate the index. + A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks. + void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] int SrcSubresource,[In] DXGI_FORMAT Format) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mode. + The flags. + The output stream containing the pointer. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The mip slice. + The array slice. + The mode. + The flags. + Size of the selected miplevel. + + The locked + + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Maps the data contained in a subresource to a memory pointer, and denies the GPU access to that subresource. + + The resource. + The subresource. + The mode. + The flags. + The output stream containing the pointer. + The locked + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + + This method is implementing the
    workaround for defered context. + + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The destination subresource. + The row pitch. + The depth pitch. + A region that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource + This method is implementing the workaround for defered context. + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + + This method is implementing the workaround for defered context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The destination subresource. + The destination region within the resource. + + This method is implementing the workaround for defered context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The row pitch. + The depth pitch. + if set to true the resource is a block/compressed resource + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + This method is implementing the workaround for defered context. + + + + + Copies data from the CPU to to a non-mappable subresource region. + + Type of the data to upload + A reference to the data to upload. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The row pitch. + The depth pitch. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for defered context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for defered context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Copies data from the CPU to to a non-mappable subresource region. + + The source data. + The destination resource. + The size in bytes per pixel/block element. + The destination subresource. + The destination region within the resource. + if set to true the resource is a block/compressed resource + + This method is implementing the workaround for defered context. + + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + + + + Updates the subresource safe method. + + The DST resource ref. + The DST subresource. + The DST box ref. + The p SRC data. + The SRC row pitch. + The SRC depth pitch. + The size in bytes per pixel/block element. + if set to true the resource is a block/compressed resource + + + This method is implementing the workaround for defered context. + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + Update nested inner interfaces pointer + + + +

    Draw indexed, non-instanced primitives.

    +
    +

    Number of indices to draw.

    +

    The location of the first index read by the GPU from the index buffer.

    +

    A value added to each index before reading a vertex from the vertex buffer.

    + +

    A draw API submits work to the rendering pipeline.

    If the sum of both indices is negative, the result of the function call is undefined.

    +
    + + ff476409 + void ID3D11DeviceContext::DrawIndexed([In] unsigned int IndexCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation) + ID3D11DeviceContext::DrawIndexed +
    + + +

    Draw non-indexed, non-instanced primitives.

    +
    +

    Number of vertices to draw.

    +

    Index of the first vertex, which is usually an offset in a vertex buffer; it could also be used as the first vertex id generated for a shader parameter marked with the SV_TargetId system-value semantic.

    + +

    A draw API submits work to the rendering pipeline.

    The vertex data for a draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has vertex data marked with the SV_VertexId system-value semantic.

    +
    + + ff476407 + void ID3D11DeviceContext::Draw([In] unsigned int VertexCount,[In] unsigned int StartVertexLocation) + ID3D11DeviceContext::Draw +
    + + +

    Gets a reference to the data contained in a subresource, and denies the GPU access to that subresource.

    +
    +

    A reference to a interface.

    +

    Index number of the subresource.

    +

    Specifies the CPU's read and write permissions for a resource. For possible values, see .

    +

    Flag that specifies what the CPU should do when the GPU is busy. This flag is optional.

    +

    A reference to the mapped subresource (see ).

    + +

    If you call Map on a deferred context, you can only pass , , or both to the MapType parameter. Other -typed values are not supported for a deferred context.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can map shader resource views (SRVs) of dynamic buffers with . The Direct3D 11 and earlier runtimes limited mapping to vertex or index buffers.

    +
    + + ff476457 + HRESULT ID3D11DeviceContext::Map([In] ID3D11Resource* pResource,[In] unsigned int Subresource,[In] D3D11_MAP MapType,[In] D3D11_MAP_FLAG MapFlags,[Out] D3D11_MAPPED_SUBRESOURCE* pMappedResource) + ID3D11DeviceContext::Map +
    + + +

    Invalidate the reference to a resource and re-enable the GPU's access to that resource.

    +
    +

    A reference to a interface.

    +

    A subresource to be unmapped.

    + + ff476485 + void ID3D11DeviceContext::Unmap([In] ID3D11Resource* pResource,[In] unsigned int Subresource) + ID3D11DeviceContext::Unmap +
    + + +

    Draw indexed, instanced primitives.

    +
    +

    Number of indices read from the index buffer for each instance.

    +

    Number of instances to draw.

    +

    The location of the first index read by the GPU from the index buffer.

    +

    A value added to each index before reading a vertex from the vertex buffer.

    +

    A value added to each index before reading per-instance data from a vertex buffer.

    + +

    A draw API submits work to the rendering pipeline.

    Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors. Indexing requires multiple vertex buffers: at least one for per-vertex data and a second buffer for per-instance data.

    +
    + + ff476410 + void ID3D11DeviceContext::DrawIndexedInstanced([In] unsigned int IndexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartIndexLocation,[In] int BaseVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D11DeviceContext::DrawIndexedInstanced +
    + + +

    Draw non-indexed, instanced primitives.

    +
    +

    Number of vertices to draw.

    +

    Number of instances to draw.

    +

    Index of the first vertex.

    +

    A value added to each index before reading per-instance data from a vertex buffer.

    + +

    A draw API submits work to the rendering pipeline.

    Instancing may extend performance by reusing the same geometry to draw multiple objects in a scene. One example of instancing could be to draw the same object with different positions and colors.

    The vertex data for an instanced draw call normally comes from a vertex buffer that is bound to the pipeline. However, you could also provide the vertex data from a shader that has instanced data identified with a system-value semantic (SV_InstanceID).

    +
    + + ff476412 + void ID3D11DeviceContext::DrawInstanced([In] unsigned int VertexCountPerInstance,[In] unsigned int InstanceCount,[In] unsigned int StartVertexLocation,[In] unsigned int StartInstanceLocation) + ID3D11DeviceContext::DrawInstanced +
    + + +

    Mark the beginning of a series of commands.

    +
    +

    A reference to an interface.

    + +

    Use to mark the ending of the series of commands.

    +
    + + ff476386 + void ID3D11DeviceContext::Begin([In] ID3D11Asynchronous* pAsync) + ID3D11DeviceContext::Begin +
    + + +

    Mark the end of a series of commands.

    +
    +

    A reference to an interface.

    + +

    Use to mark the beginning of the series of commands.

    +
    + + ff476422 + void ID3D11DeviceContext::End([In] ID3D11Asynchronous* pAsync) + ID3D11DeviceContext::End +
    + + +

    Get data from the graphics processing unit (GPU) asynchronously.

    +
    +

    A reference to an interface for the object about which GetData retrieves data.

    +

    Address of memory that will receive the data. If null, GetData will be used only to check status. The type of data output depends on the type of asynchronous interface.

    +

    Size of the data to retrieve or 0. Must be 0 when pData is null.

    +

    Optional flags. Can be 0 or any combination of the flags enumerated by .

    +

    This method returns one of the Direct3D 11 Return Codes. A return value of indicates that the data at pData is available for the calling application to access. A return value of S_FALSE indicates that the data is not yet available. If the data is not yet available, the application must call GetData until the data is available.

    + +

    Queries in a deferred context are limited to predicated drawing. That is, you cannot call on a deferred context to get data about a query; you can only call GetData on the immediate context to get data about a query. For predicated drawing, the results of a predication-type query are used by the GPU and not returned to an application. For more information about predication and predicated drawing, see D3D11DeviceContext::SetPredication.

    GetData retrieves the data that the runtime collected between calls to and . Certain queries only require a call to in which case the data returned by GetData is accurate up to the last call to . For information about the queries that only require a call to and about the type of data that GetData retrieves for each query, see .

    If DataSize is 0, GetData is only used to check status.

    An application gathers counter data by calling , issuing some graphics commands, calling , and then calling to get data about what happened in between the Begin and End calls. For information about performance counter types, see . The counter data is of type FLOAT32.

    +
    + + ff476428 + HRESULT ID3D11DeviceContext::GetData([In] ID3D11Asynchronous* pAsync,[Out, Buffer, Optional] void* pData,[In] unsigned int DataSize,[In] D3D11_ASYNC_GETDATA_FLAG GetDataFlags) + ID3D11DeviceContext::GetData +
    + + +

    Set a rendering predicate.

    +
    +

    Pointer to a predicate (see ). A null value indicates "no" predication; in this case, the value of PredicateValue is irrelevent but will be preserved for .

    +

    If TRUE, rendering will be affected by when the predicate's conditions are met. If , rendering will be affected when the conditions are not met.

    + +

    The predicate must be in the "issued" or "signaled" state to be used for predication. While the predicate is set for predication, calls to and are invalid.

    This method is used to denote that subsequent rendering and resource manipulation commands are not actually performed if the resulting Predicate data of the Predicate is equal to the PredicateValue. However, some Predicates are only hints, so they may not actually prevent operations from being performed.

    The primary usefulness of Predication is to allow an application to issue graphics commands without taking the performance hit of spinning, waiting for to return. So, Predication can occur while returns S_FALSE. Another way to think of it: an application can also use Predication as a fallback, if it is possible that returns S_FALSE. If returns , the application can skip calling the graphics commands manually with it's own application logic.

    +
    + + ff476481 + void ID3D11DeviceContext::SetPredication([In, Optional] ID3D11Predicate* pPredicate,[In] BOOL PredicateValue) + ID3D11DeviceContext::SetPredication +
    + + +

    Draw geometry of an unknown size.

    +
    + +

    A draw API submits work to the rendering pipeline. This API submits work of an unknown size that was processed by the input assembler, vertex shader, and stream-output stages; the work may or may not have gone through the geometry-shader stage.

    After data has been streamed out to stream-output stage buffers, those buffers can be again bound to the Input Assembler stage at input slot 0 and DrawAuto will draw them without the application needing to know the amount of data that was written to the buffers. A measurement of the amount of data written to the SO stage buffers is maintained internally when the data is streamed out. This means that the CPU does not need to fetch the measurement before re-binding the data that was streamed as input data. Although this amount is tracked internally, it is still the responsibility of applications to use input layouts to describe the format of the data in the SO stage buffers so that the layouts are available when the buffers are again bound to the input assembler.

    The following diagram shows the DrawAuto process.

    Calling DrawAuto does not change the state of the streaming-output buffers that were bound again as inputs.

    DrawAuto only works when drawing with one input buffer bound as an input to the IA stage at slot 0. Applications must create the SO buffer resource with both binding flags, and .

    This API does not support indexing or instancing.

    If an application needs to retrieve the size of the streaming-output buffer, it can query for statistics on streaming output by using .

    +
    + + ff476408 + void ID3D11DeviceContext::DrawAuto() + ID3D11DeviceContext::DrawAuto +
    + + +

    Draw indexed, instanced, GPU-generated primitives.

    +
    +

    A reference to an , which is a buffer containing the GPU generated primitives.

    +

    Offset in pBufferForArgs to the start of the GPU generated primitives.

    + +

    When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

    +
    + + ff476411 + void ID3D11DeviceContext::DrawIndexedInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DrawIndexedInstancedIndirect +
    + + +

    Draw instanced, GPU-generated primitives.

    +
    +

    A reference to an , which is a buffer containing the GPU generated primitives.

    +

    Offset in pBufferForArgs to the start of the GPU generated primitives.

    + +

    When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

    +
    + + ff476413 + void ID3D11DeviceContext::DrawInstancedIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DrawInstancedIndirect +
    + + +

    Execute a command list from a thread group.

    +
    +

    The number of groups dispatched in the x direction. ThreadGroupCountX must be less than (65535).

    +

    The number of groups dispatched in the y direction. ThreadGroupCountY must be less than (65535).

    +

    The number of groups dispatched in the z direction. ThreadGroupCountZ must be less than (65535). In feature level 10 the value for ThreadGroupCountZ must be 1.

    + +

    You call the Dispatch method to execute commands in a compute shader. A compute shader can be run on many threads in parallel, within a thread group. Index a particular thread, within a thread group using a 3D vector given by (x,y,z).

    In the following illustration, assume a thread group with 50 threads where the size of the group is given by (5,5,2). A single thread is identified from a thread group with 50 threads in it, using the vector (4,1,1).

    The following illustration shows the relationship between the parameters passed to , Dispatch(5,3,2), the values specified in the numthreads attribute, numthreads(10,8,3), and values that will passed to the compute shader for the thread-related system values + (SV_GroupIndex,SV_DispatchThreadID,SV_GroupThreadID,SV_GroupID).

    +
    + + ff476405 + void ID3D11DeviceContext::Dispatch([In] unsigned int ThreadGroupCountX,[In] unsigned int ThreadGroupCountY,[In] unsigned int ThreadGroupCountZ) + ID3D11DeviceContext::Dispatch +
    + + +

    Execute a command list over one or more thread groups.

    +
    +

    A reference to an , which must be loaded with data that matches the argument list for .

    +

    A byte-aligned offset between the start of the buffer and the arguments.

    + +

    You call the DispatchIndirect method to execute commands in a compute shader.

    When an application creates a buffer that is associated with the interface that pBufferForArgs points to, the application must set the flag in the MiscFlags member of the structure that describes the buffer. To create the buffer, the application calls the method and in this call passes a reference to in the pDesc parameter.

    +
    + + ff476406 + void ID3D11DeviceContext::DispatchIndirect([In] ID3D11Buffer* pBufferForArgs,[In] unsigned int AlignedByteOffsetForArgs) + ID3D11DeviceContext::DispatchIndirect +
    + + +

    Copy a region from a source resource to a destination resource.

    +
    +

    A reference to the destination resource (see ).

    +

    Destination subresource index.

    +

    The x-coordinate of the upper left corner of the destination region.

    +

    The y-coordinate of the upper left corner of the destination region. For a 1D subresource, this must be zero.

    +

    The z-coordinate of the upper left corner of the destination region. For a 1D or 2D subresource, this must be zero.

    +

    A reference to the source resource (see ).

    +

    Source subresource index.

    +

    A reference to a 3D box (see ) that defines the source subresources that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

    + +

    The source box must be within the size of the source resource. The destination offsets, (x, y, and z) allow the source box to be offset when writing into the destination resource; however, the dimensions of the source box and the offsets must be within the size of the resource.

    If the resources are buffers, all coordinates are in bytes; if the resources are textures, all coordinates are in texels. D3D11CalcSubresource is a helper function for calculating subresource indexes.

    CopySubresourceRegion performs the copy on the GPU (similar to a memcpy by the CPU). As a consequence, the source and destination resources:

    • Must be different subresources (although they can be from the same resource).
    • Must be the same type.
    • Must have compatible DXGI formats (identical or from the same type group). For example, a texture can be copied to an texture since both of these formats are in the group.
    • May not be currently mapped.

    CopySubresourceRegion only supports copy; it does not support any stretch, color key, blend, or format conversions. An application that needs to copy an entire resource should use instead.

    CopySubresourceRegion is an asynchronous call, which may be added to the command-buffer queue, this attempts to remove pipeline stalls that may occur when copying data. For more information about pipeline stalls, see performance considerations.

    Note??If you use CopySubresourceRegion with a depth-stencil buffer or a multisampled resource, you must copy the whole subresource. In this situation, you must pass 0 to the DstX, DstY, and DstZ parameters and null to the pSrcBox parameter. In addition, source and destination resources, which are represented by the pSrcResource and pDstResource parameters, should have identical sample count values.

    Example

    The following code snippet copies a box (located at (120,100),(200,220)) from a source texture into a reqion (10,20),(90,140) in a destination texture.

      sourceRegion;	
    +            sourceRegion.left = 120;	
    +            sourceRegion.right = 200;	
    +            sourceRegion.top = 100;	
    +            sourceRegion.bottom = 220;	
    +            sourceRegion.front = 0;	
    +            sourceRegion.back = 1; pd3dDeviceContext->CopySubresourceRegion( pDestTexture, 0, 10, 20, 0, pSourceTexture, 0, &sourceRegion );	
    +            

    Notice, that for a 2D texture, front and back are set to 0 and 1 respectively.

    +
    + + ff476394 + void ID3D11DeviceContext::CopySubresourceRegion([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox) + ID3D11DeviceContext::CopySubresourceRegion +
    + + +

    Copy the entire contents of the source resource to the destination resource using the GPU.

    +
    +

    A reference to the destination resource (see ).

    +

    A reference to the source resource (see ).

    + +

    This method is unusual in that it causes the GPU to perform the copy operation (similar to a memcpy by the CPU). As a result, it has a few restrictions designed for improving performance. For instance, the source and destination resources:

    • Must be different resources.
    • Must be the same type.
    • Must have identical dimensions (including width, height, depth, and size as appropriate).
    • Will only be copied. CopyResource does not support any stretch, color key, blend, or format conversions.
    • Must have compatible DXGI formats, which means the formats must be identical or at least from the same type group. For example, a texture can be copied to an texture since both of these formats are in the group.
    • Might not be currently mapped.

    You cannot use an Immutable resource as a destination. You can use a depth-stencil resource as either a source or a destination. Resources created with multisampling capability (see ) can be used as source and destination only if both source and destination have identical multisampled count and quality. If source and destination differ in multisampled count and quality or if one is multisampled and the other is not multisampled the call to fails.

    The method is an asynchronous call which may be added to the command-buffer queue. This attempts to remove pipeline stalls that may occur when copying data.

    An application that only needs to copy a portion of the data in a resource should use instead.

    +
    + + ff476392 + void ID3D11DeviceContext::CopyResource([In] ID3D11Resource* pDstResource,[In] ID3D11Resource* pSrcResource) + ID3D11DeviceContext::CopyResource +
    + + +

    The CPU copies data from memory to a subresource created in non-mappable memory.

    +
    +

    A reference to the destination resource (see ).

    +

    A zero-based index, that identifies the destination subresource. See D3D11CalcSubresource for more details.

    +

    A reference to a box that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. If null, the data is written to the destination subresource with no offset. The dimensions of the source must fit the destination (see ).

    +

    A reference to the source data in memory.

    +

    The size of one row of the source data.

    +

    The size of one depth slice of source data.

    + +

    For a shader-constant buffer; set pDstBox to null. It is not possible to use this method to partially update a shader-constant buffer.

    A resource cannot be used as a destination if:

    • the resource is created with immutable or dynamic usage.
    • the resource is created as a depth-stencil resource.
    • the resource is created with multisampling capability (see ).

    When UpdateSubresource returns, the application is free to change or even free the data pointed to by pSrcData because the method has already copied/snapped away the original contents.

    The performance of UpdateSubresource depends on whether or not there is contention for the destination resource. For example, contention for a vertex buffer resource occurs when the application executes a Draw call and later calls UpdateSubresource on the same vertex buffer before the Draw call is actually executed by the GPU.

    • When there is contention for the resource, UpdateSubresource will perform 2 copies of the source data. First, the data is copied by the CPU to a temporary storage space accessible by the command buffer. This copy happens before the method returns. A second copy is then performed by the GPU to copy the source data into non-mappable memory. This second copy happens asynchronously because it is executed by GPU when the command buffer is flushed.
    • When there is no resource contention, the behavior of UpdateSubresource is dependent on which is faster (from the CPU's perspective): copying the data to the command buffer and then having a second copy execute when the command buffer is flushed, or having the CPU copy the data to the final resource location. This is dependent on the architecture of the underlying system.

    To better understand the source row pitch and source depth pitch parameters, the following illustration shows a 3D volume texture.

    Each block in this visual represents an element of data, and the size of each element is dependent on the resource's format. For example, if the resource format is , the size of each element would be 128 bits, or 16 bytes. This 3D volume texture has a width of two, a height of three, and a depth of four.

    To calculate the source row pitch and source depth pitch for a given resource, use the following formulas:

    • Source Row Pitch = [size of one element in bytes] * [number of elements in one row]
    • Source Depth Pitch = [Source Row Pitch] * [number of rows (height)]

    In the case of this example 3D volume texture where the size of each element is 16 bytes, the formulas are as follows:

    • Source Row Pitch = 16 * 2 = 32
    • Source Depth Pitch = 16 * 2 * 3 = 96

    The following illustration shows the resource as it is laid out in memory.

    For example, the following code snippet shows how to specify a destination region in a 2D texture. Assume the destination texture is 512x512 and the operation will copy the data pointed to by pData to [(120,100)..(200,220)] in the destination texture. Also assume that rowPitch has been initialized with the proper value (as explained above). front and back are set to 0 and 1 respectively, because by having front equal to back, the box is technically empty.

      destRegion;	
    +            destRegion.left = 120;	
    +            destRegion.right = 200;	
    +            destRegion.top = 100;	
    +            destRegion.bottom = 220;	
    +            destRegion.front = 0;	
    +            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
    +            

    The 1D case is similar. The following snippet shows how to specify a destination region in a 1D texture. Use the same assumptions as above, except that the texture is 512 in length.

      destRegion;	
    +            destRegion.left = 120	
    +            destRegion.right = 200;	
    +            destRegion.top = 0;	
    +            destRegion.bottom = 1;	
    +            destRegion.front = 0;	
    +            destRegion.back = 1; pd3dDeviceContext->UpdateSubresource( pDestTexture, 0, &destRegion, pData, rowPitch, 0 );	
    +            
    Calling UpdateSubresource on a Deferred Context

    If your application calls UpdateSubresource on a deferred context with a destination box?to which pDstBox points?that has a non-(0,0,0) offset, and if the driver does not support command lists, UpdateSubresource inappropriately applies that destination-box offset to the pSrcData parameter. To work around this behavior, use the following code:

      UpdateSubresource_Workaround(  *pDevice,  *pDeviceContext,  *pDstResource, UINT dstSubresource, const  *pDstBox, const void *pSrcData, UINT srcBytesPerElement, UINT srcRowPitch, UINT srcDepthPitch, bool* pDidWorkAround )	
    +            {  hr = ; bool needWorkaround = false;  contextType = pDeviceContext->GetType(); if( pDstBox && ( == contextType) ) {  threadingCaps = { ,  }; hr = pDevice->CheckFeatureSupport( , &threadingCaps, sizeof(threadingCaps) ); if( SUCCEEDED(hr) ) { if( !threadingCaps.DriverCommandLists ) { needWorkaround = true; } } } const void* pAdjustedSrcData = pSrcData; if( needWorkaround ) {  alignedBox = *pDstBox; // convert from pixels to blocks if( m_bBC ) { alignedBox.left     /= 4; alignedBox.right    /= 4; alignedBox.top      /= 4; alignedBox.bottom   /= 4; } pAdjustedSrcData = ((const BYTE*)pSrcData) - (alignedBox.front * srcDepthPitch) - (alignedBox.top * srcRowPitch) - (alignedBox.left * srcBytesPerElement); } pDeviceContext->UpdateSubresource( pDstResource, dstSubresource, pDstBox, pAdjustedSrcData, srcRowPitch, srcDepthPitch ); if( pDidWorkAround ) { *pDidWorkAround = needWorkaround; } return hr;	
    +            }	
    +            
    +
    + + ff476486 + void ID3D11DeviceContext::UpdateSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch) + ID3D11DeviceContext::UpdateSubresource +
    + + +

    Copies data from a buffer holding variable length data.

    +
    +

    Pointer to . This can be any buffer resource that other copy commands, such as or , are able to write to.

    +

    Offset from the start of pDstBuffer to write 32-bit UINT structure (vertex) count from pSrcView.

    +

    Pointer to an of a Structured Buffer resource created with either or specified when the UAV was created. These types of resources have hidden counters tracking "how many" records have been written.

    + + ff476393 + void ID3D11DeviceContext::CopyStructureCount([In] ID3D11Buffer* pDstBuffer,[In] unsigned int DstAlignedByteOffset,[In] ID3D11UnorderedAccessView* pSrcView) + ID3D11DeviceContext::CopyStructureCount +
    + + +

    Set all the elements in a render target to one value.

    +
    +

    Pointer to the rendertarget.

    +

    A 4-component array that represents the color to fill the render target with.

    + +

    Applications that wish to clear a render target to a specific integer value bit pattern should render a screen-aligned quad instead of using this method. The reason for this is because this method accepts as input a floating point value, which may not have the same bit pattern as the original integer.

    Differences between Direct3D 9 and Direct3D 11/10:

    Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

    ?

    +
    + + ff476388 + void ID3D11DeviceContext::ClearRenderTargetView([In] ID3D11RenderTargetView* pRenderTargetView,[In] const SHARPDX_COLOR4* ColorRGBA) + ID3D11DeviceContext::ClearRenderTargetView +
    + + +

    Clears an unordered access resource with bit-precise values.

    +
    + No documentation. + No documentation. + +

    This API copies the lower ni bits from each array element i to the corresponding channel, where ni is the number of bits in the ith channel of the resource format (for example, R8G8B8_FLOAT has 8 bits for the first 3 channels). This works on any UAV with no format conversion. For a raw or structured buffer view, only the first array element value is used.

    +
    + + ff476391 + void ID3D11DeviceContext::ClearUnorderedAccessViewUint([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_INT4* Values) + ID3D11DeviceContext::ClearUnorderedAccessViewUint +
    + + +

    Clears an unordered access resource with a float value.

    +
    + No documentation. + No documentation. + +

    This API works on FLOAT, UNORM, and SNORM unordered access views (UAVs), with format conversion from FLOAT to *NORM where appropriate. On other UAVs, the operation is invalid and the call will not reach the driver.

    +
    + + ff476390 + void ID3D11DeviceContext::ClearUnorderedAccessViewFloat([In] ID3D11UnorderedAccessView* pUnorderedAccessView,[In] const SHARPDX_VECTOR4* Values) + ID3D11DeviceContext::ClearUnorderedAccessViewFloat +
    + + +

    Clears the depth-stencil resource.

    +
    +

    Pointer to the depth stencil to be cleared.

    +

    Identify the type of data to clear (see ).

    +

    Clear the depth buffer with this value. This value will be clamped between 0 and 1.

    +

    Clear the stencil buffer with this value.

    + +

    Differences between Direct3D 9 and Direct3D 11/10:

    Unlike Direct3D 9, the full extent of the resource view is always cleared. Viewport and scissor settings are not applied.

    ?

    +
    + + ff476387 + void ID3D11DeviceContext::ClearDepthStencilView([In] ID3D11DepthStencilView* pDepthStencilView,[In] D3D11_CLEAR_FLAG ClearFlags,[In] float Depth,[In] unsigned char Stencil) + ID3D11DeviceContext::ClearDepthStencilView +
    + + +

    Generate mipmaps for the given shader resource.

    +
    +

    Pointer to an interface that represents the shader resource.

    + +

    GenerateMips may be called on any shader-resource view in order to generate the lower mipmap levels. GenerateMips uses the largest mipmap level of the view to recursively generate the lower levels of the mip, stopping with the smallest level specified by the view. If the base resource was not created with and , this call has no effect.

    All video adapters support generating mipmaps if you are using any of the following formats:

     	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            	
    +            

    Some video adapters support generating mipmaps if you are using this format:

     	
    +            

    For all other unsupported formats, this method will silently fail.

    +
    + + ff476426 + void ID3D11DeviceContext::GenerateMips([In] ID3D11ShaderResourceView* pShaderResourceView) + ID3D11DeviceContext::GenerateMips +
    + + +

    Sets the minimum level-of-detail (LOD) for a resource.

    +
    +

    A reference to an that represents the resource.

    +

    The level-of-detail, which ranges between 0 and the maximum number of mipmap levels of the resource. For example, the maximum number of mipmap levels of a 1D texture is specified in the MipLevels member of the structure.

    + +

    To use a resource with SetResourceMinLOD, you must set the flag when you create that resource.

    For Direct3D 10 and Direct3D 10.1, when sampling from a texture resource in a shader, the sampler can define a minimum LOD clamp to force sampling from less detailed mip levels. For Direct3D 11, this functionality is extended from the sampler to the entire resource. Therefore, the application can specify the highest-resolution mip level of a resource that is available for access. This restricts the set of mip levels that are required to be resident in GPU memory, thereby saving memory.

    The set of mip levels resident per-resource in GPU memory can be specified by the user.

    Minimum LOD affects all of the resident mip levels. Therefore, only the resident mip levels can be updated and read from.

    All methods that access texture resources must adhere to minimum LOD clamps.

    Empty-set accesses are handled as out-of-bounds cases.

    +
    + + ff476482 + void ID3D11DeviceContext::SetResourceMinLOD([In] ID3D11Resource* pResource,[In] float MinLOD) + ID3D11DeviceContext::SetResourceMinLOD +
    + + +

    Gets the minimum level-of-detail (LOD).

    +
    +

    A reference to an which represents the resource.

    +

    Returns the minimum LOD.

    + + ff476430 + float ID3D11DeviceContext::GetResourceMinLOD([In] ID3D11Resource* pResource) + ID3D11DeviceContext::GetResourceMinLOD +
    + + +

    Copy a multisampled resource into a non-multisampled resource.

    +
    +

    Destination resource. Must be a created with the flag and be single-sampled. See .

    +

    A zero-based index, that identifies the destination subresource. Use D3D11CalcSubresource to calculate the index.

    +

    Source resource. Must be multisampled.

    +

    >The source subresource of the source resource.

    +

    A that indicates how the multisampled resource will be resolved to a single-sampled resource. See remarks.

    + +

    This API is most useful when re-using the resulting rendertarget of one render pass as an input to a second render pass.

    The source and destination resources must be the same resource type and have the same dimensions. In addition, they must have compatible formats. There are three scenarios for this:

    ScenarioRequirements
    Source and destination are prestructured and typedBoth the source and destination must have identical formats and that format must be specified in the Format parameter.
    One resource is prestructured and typed and the other is prestructured and typelessThe typed resource must have a format that is compatible with the typeless resource (i.e. the typed resource is and the typeless resource is ). The format of the typed resource must be specified in the Format parameter.
    Source and destination are prestructured and typelessBoth the source and desintation must have the same typeless format (i.e. both must have ), and the Format parameter must specify a format that is compatible with the source and destination (i.e. if both are then could be specified in the Format parameter).

    For example, given the format:

    • The source (or dest) format could be
    • The dest (or source) format could be

    ?

    +
    + + ff476474 + void ID3D11DeviceContext::ResolveSubresource([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In] DXGI_FORMAT Format) + ID3D11DeviceContext::ResolveSubresource +
    + + +

    Queues commands from a command list onto a device.

    +
    +

    A reference to an interface that encapsulates a command list.

    +

    A Boolean flag that determines whether the immediate context state is saved prior to and restored after the execution of a command list. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that no state shall be saved or restored, which causes the immediate context to return to its default state after the command list executes. Applications should typically use unless they will restore the state to be nearly equivalent to the state that the runtime would restore if TRUE were passed. When applications use , they can avoid unnecessary and inefficient state transitions.

    + +

    Use this method to play back a command list that was recorded by a deferred context on any thread.

    This method performs some runtime validation related to queries. Queries that are begun in a device context cannot be manipulated indirectly by executing a command list (that is, Begin or End was invoked against the same query by the deferred context which generated the command list). If such a condition occurs, the ExecuteCommandList method does not execute the command list. However, the state of the device context is still maintained, as would be expected ( is performed, unless the application indicates to preserve the device context state).

    +
    + + ff476423 + void ID3D11DeviceContext::ExecuteCommandList([In] ID3D11CommandList* pCommandList,[In] BOOL RestoreContextState) + ID3D11DeviceContext::ExecuteCommandList +
    + + +

    Get the rendering predicate state.

    +
    +

    Address of a boolean to fill with the predicate comparison value. upon device creation.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476429 + void ID3D11DeviceContext::GetPredication([Out, Optional] ID3D11Predicate** ppPredicate,[Out, Optional] BOOL* pPredicateValue) + ID3D11DeviceContext::GetPredication +
    + + +

    Restore all default settings.

    +
    + +

    This method resets any device context to the default settings. This sets all input/output resource slots, shaders, input layouts, predications, scissor rectangles, depth-stencil state, rasterizer state, blend state, sampler state, and viewports to null. The primitive topology is set to UNDEFINED.

    For a scenario where you would like to clear a list of commands recorded so far, call and throw away the resulting .

    +
    + + ff476389 + void ID3D11DeviceContext::ClearState() + ID3D11DeviceContext::ClearState +
    + + +

    Sends queued-up commands in the command buffer to the graphics processing unit (GPU).

    +
    + +

    Most applications don't need to call this method. If an application calls this method when not necessary, it incurs a performance penalty. Each call to Flush incurs a significant amount of overhead.

    When Microsoft Direct3D state-setting, present, or draw commands are called by an application, those commands are queued into an internal command buffer. Flush sends those commands to the GPU for processing. Typically, the Direct3D runtime sends these commands to the GPU automatically whenever the runtime determines that they need to be sent, such as when the command buffer is full or when an application maps a resource. Flush sends the commands manually.

    We recommend that you use Flush when the CPU waits for an arbitrary amount of time (such as when you call the Sleep function).

    Because Flush operates asynchronously, it can return either before or after the GPU finishes executing the queued graphics commands. However, the graphics commands eventually always complete. You can call the method with the value to create an event query; you can then use that event query in a call to the method to determine when the GPU is finished processing the graphics commands. +

    Microsoft Direct3D?11 defers the destruction of objects. Therefore, an application can't rely upon objects immediately being destroyed. By calling Flush, you destroy any objects whose destruction was deferred. If an application requires synchronous destruction of an object, we recommend that the application release all its references, call , and then call Flush.

    Deferred Destruction Issues with Flip Presentation Swap Chains

    Direct3D?11 defers the destruction of objects like views and resources until it can efficiently destroy them. This deferred destruction can cause problems with flip presentation model swap chains. Flip presentation model swap chains have the flag set. When you create a flip presentation model swap chain, you can associate only one swap chain at a time with an , IWindow, or composition surface. If an application attempts to destroy a flip presentation model swap chain and replace it with another swap chain, the original swap chain is not destroyed when the application immediately frees all of the original swap chain's references.

    Most applications typically use the method for the majority of scenarios where they replace new swap chain buffers for old swap chain buffers. However, if an application must actually destroy an old swap chain and create a new swap chain, the application must force the destruction of all objects that the application freed. To force the destruction, call (or otherwise ensure no views are bound to pipeline state), and then call Flush on the immediate context. You must force destruction before you call , IDXGIFactory2::CreateSwapChainForImmersiveWindow, or IDXGIFactory2::CreateSwapChainForCompositionSurface again to create a new swap chain.

    +
    + + ff476425 + void ID3D11DeviceContext::Flush() + ID3D11DeviceContext::Flush +
    + + +

    Gets the type of device context.

    +
    +

    A member of that indicates the type of device context.

    + + ff476431 + D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() + ID3D11DeviceContext::GetType +
    + + +

    Gets the initialization flags associated with the current deferred context.

    +
    + No documentation. + +

    The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

    +
    + + ff476427 + unsigned int ID3D11DeviceContext::GetContextFlags() + ID3D11DeviceContext::GetContextFlags +
    + + +

    Create a command list and record graphics commands into it.

    +
    +

    A Boolean flag that determines whether the runtime saves deferred context state before it executes FinishCommandList and restores it afterwards. Use TRUE to indicate that the runtime needs to save and restore the state. Use to indicate that the runtime will not save or restore any state. In this case, the deferred context will return to its default state after the call to FinishCommandList completes. For information about default state, see . Typically, use unless you restore the state to be nearly equivalent to the state that the runtime would restore if you passed TRUE. When you use , you can avoid unnecessary and inefficient state transitions.

    Note??This parameter does not affect the command list that the current call to FinishCommandList returns. However, this parameter affects the command list of the next call to FinishCommandList on the same deferred context.

    +

    Upon completion of the method, the passed reference to an interface reference is initialized with the recorded command list information.

    +

    Returns if successful; otherwise, returns one of the following:

    • Returns if the video card has been physically removed from the system, or a driver upgrade for the video card has occurred. If this error occurs, you should destroy and recreate the device.
    • Returns if FinishCommandList cannot be called from the current context. See remarks.
    • Returns E_OUTOFMEMORY if the application has exhausted available memory.
    + +

    Create a command list from a deferred context and record commands into it by calling FinishCommandList. Play back a command list with an immediate context by calling .

    Immediate context state is cleared before and after a command list is executed. A command list has no concept of inheritance. Each call to FinishCommandList will record only the state set since any previous call to FinishCommandList.

    For example, the state of a device context is its render state or pipeline state. To retrieve device context state, an application can call or .

    For more information about how to use FinishCommandList, see How to: Record a Command List.

    +
    + + ff476424 + HRESULT ID3D11DeviceContext::FinishCommandList([In] BOOL RestoreDeferredContextState,[Out, Optional] ID3D11CommandList** ppCommandList) + ID3D11DeviceContext::FinishCommandList +
    + + Inner interface giving access to VertexShaderStage methods. + + + Inner interface giving access to PixelShaderStage methods. + + + Inner interface giving access to InputAssemblerStage methods. + + + Inner interface giving access to GeometryShaderStage methods. + + + Inner interface giving access to OutputMergerStage methods. + + + Inner interface giving access to StreamOutputStage methods. + + + Inner interface giving access to RasterizerStage methods. + + + Inner interface giving access to HullShaderStage methods. + + + Inner interface giving access to DomainShaderStage methods. + + + Inner interface giving access to ComputeShaderStage methods. + + + +

    Gets the type of device context.

    +
    + + ff476431 + GetType + GetType + D3D11_DEVICE_CONTEXT_TYPE ID3D11DeviceContext::GetType() +
    + + +

    Gets the initialization flags associated with the current deferred context.

    +
    + +

    The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

    +
    + + ff476427 + GetContextFlags + GetContextFlags + unsigned int ID3D11DeviceContext::GetContextFlags() +
    + + + Initializes a new deferred context instance of class. + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Copies a region from a source resource to a destination resource.

    +
    +

    A reference to the destination resource.

    +

    Destination subresource index.

    +

    The x-coordinate of the upper-left corner of the destination region.

    +

    The y-coordinate of the upper-left corner of the destination region. For a 1D subresource, this must be zero.

    +

    The z-coordinate of the upper-left corner of the destination region. For a 1D or 2D subresource, this must be zero.

    +

    A reference to the source resource.

    +

    Source subresource index.

    +

    A reference to a 3D box that defines the source subresources that can be copied. If null, the entire source subresource is copied. The box must fit within the source resource.

    +

    A -typed value that specifies how to perform the copy operation. If you specify zero for no copy option, CopySubresourceRegion1 behaves like . For existing display drivers that can't process these flags, the runtime doesn't use them.

    + +

    The source and destination resources can be identical, and the source and destination regions can overlap each other. For existing display drivers that don?t support overlapping, the runtime drops the call (that is, the runtime doesn't call the corresponding device driver interface (DDI)). + This overlapping support enables additional scroll functionality in a call to .

    +
    + + hh404604 + void ID3D11DeviceContext1::CopySubresourceRegion1([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In] unsigned int DstX,[In] unsigned int DstY,[In] unsigned int DstZ,[In] ID3D11Resource* pSrcResource,[In] unsigned int SrcSubresource,[In, Optional] const D3D11_BOX* pSrcBox,[In] unsigned int CopyFlags) + ID3D11DeviceContext1::CopySubresourceRegion1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    The CPU copies data from memory to a subresource created in non-mappable memory.

    +
    +

    A reference to the destination resource.

    +

    A zero-based index that identifies the destination subresource. See D3D11CalcSubresource for more details.

    +

    A reference to a box that defines the portion of the destination subresource to copy the resource data into. Coordinates are in bytes for buffers and in texels for textures. If null, the data is written to the destination subresource with no offset. The dimensions of the source must fit the destination.

    +

    A reference to the source data in memory.

    +

    The size of one row of the source data.

    +

    The size of one depth slice of source data.

    +

    A -typed value that specifies how to perform the update operation. If you specify zero for no update option, UpdateSubresource1 behaves like . For existing display drivers that can't process these flags, the runtime doesn't use them.

    + +

    If you call UpdateSubresource1 to update a constant buffer, pass any region, and the driver has not been implemented to Windows?8 Consumer Preview, the runtime drops the call (except feature level 9.1, 9.2, and 9.3 where the runtime emulates support). The runtime also drops the call if you update a constant buffer with a partial region whose extent is not aligned to 16-byte granularity (16 bytes being a full constant). When the runtime drops the call, the runtime doesn't call the corresponding device driver interface (DDI).

    When you record a call to UpdateSubresource with an offset pDstBox in a software command list, the offset in pDstBox is incorrectly applied to pSrcData when you play back the command list. The new-for-Windows?8UpdateSubresource1 fixes this issue. In a call to UpdateSubresource1, pDstBox does not affect pSrcData.

    +
    + + hh446790 + void ID3D11DeviceContext1::UpdateSubresource1([In] ID3D11Resource* pDstResource,[In] unsigned int DstSubresource,[In, Optional] const D3D11_BOX* pDstBox,[In] const void* pSrcData,[In] unsigned int SrcRowPitch,[In] unsigned int SrcDepthPitch,[In] unsigned int CopyFlags) + ID3D11DeviceContext1::UpdateSubresource1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Discards a resource from the device context.

    +
    +

    A reference to the interface for the resource to discard. The resource must have been created with usage or , otherwise the runtime drops the call to DiscardResource; if the debug layer is enabled, the runtime returns an error message.

    + +

    DiscardResource informs the graphics processing unit (GPU) that the existing content in the resource that pResource points to is no longer needed.

    +
    + + hh404613 + void ID3D11DeviceContext1::DiscardResource([In] ID3D11Resource* pResource) + ID3D11DeviceContext1::DiscardResource +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Discards a resource view from the device context.

    +
    +

    A reference to the interface for the resource view to discard. The resource that underlies the view must have been created with usage or , otherwise the runtime drops the call to DiscardView; if the debug layer is enabled, the runtime returns an error message.

    + +

    DiscardView informs the graphics processing unit (GPU) that the existing content in the resource view that pResourceView points to is no longer needed. The view can be an SRV, RTV, UAV, or DSV. DiscardView is a variation on the DiscardResource method. DiscardView allows you to discard a subset of a resource that is in a view (such as a single miplevel). More importantly, DiscardView provides a convenience because often views are what are being bound and unbound at the pipeline. Some pipeline bindings do not have views, such as stream output. In that situation, DiscardResource can do the job for any resource.

    +
    + + hh404616 + void ID3D11DeviceContext1::DiscardView([In] ID3D11View* pResourceView) + ID3D11DeviceContext1::DiscardView +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the vertex shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to VSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to VSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the VSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh446795 + void ID3D11DeviceContext1::VSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::VSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the vertex shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to VSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to VSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the VSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh446795 + void ID3D11DeviceContext1::VSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::VSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the hull-shader stage of the pipeline uses.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

    The runtime drops the call to HSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to HSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If the pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the HSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404642 + void ID3D11DeviceContext1::HSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::HSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the hull-shader stage of the pipeline uses.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

    The runtime drops the call to HSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to HSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If the pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the HSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404642 + void ID3D11DeviceContext1::HSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::HSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the domain-shader stage uses.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to DSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to DSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the DSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404632 + void ID3D11DeviceContext1::DSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::DSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the domain-shader stage uses.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to DSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to DSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the DSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404632 + void ID3D11DeviceContext1::DSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::DSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the geometry shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to GSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to GSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the GSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404638 + void ID3D11DeviceContext1::GSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::GSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the geometry shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to GSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to GSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the GSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404638 + void ID3D11DeviceContext1::GSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::GSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the pixel shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to PSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to PSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the PSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404649 + void ID3D11DeviceContext1::PSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::PSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the pixel shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to PSSetConstantBuffers1 if the numbers of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to PSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the PSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404649 + void ID3D11DeviceContext1::PSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::PSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the compute-shader stage uses.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to CSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to CSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the CSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404610 + void ID3D11DeviceContext1::CSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::CSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the constant buffers that the compute-shader stage uses.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    +

    A reference to an array that holds the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer.

    +

    A reference to an array that holds the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array.

    + +

    The runtime drops the call to CSSetConstantBuffers1 if the number of constants to which pNumConstants points is larger than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). The values in the elements of the pFirstConstant and pFirstConstant + pNumConstants arrays can exceed the length of each buffer; from the shader's point of view, the constant buffer is the intersection of the actual memory allocation for the buffer and the window [value in an element of pFirstConstant, value in an element of pFirstConstant + value in an element of pNumConstants]. The runtime also drops the call to CSSetConstantBuffers1 on existing drivers that do not support this offsetting.

    The runtime will emulate this feature for feature level 9.1, 9.2, and 9.3; therefore, this feature is supported for feature level 9.1, 9.2, and 9.3. This feature is always available on new drivers for feature level 10 and higher.

    From the shader?s point of view, element [0] in the constant buffers array is the constant at pFirstConstant.

    Out of bounds access to the constant buffers from the shader to the range that is defined by pFirstConstant and pNumConstants returns 0.

    If pFirstConstant and pNumConstants arrays are null, you get the same result as if you were binding the entire buffer into view. You get this same result if you call the CSSetConstantBuffers method. If the buffer is larger than the maximum constant buffer size that is supported by shaders (4096 elements), the shader can access only the first 4096 constants.

    If either pFirstConstant or pNumConstants is null, the other parameter must also be null.

    +
    + + hh404610 + void ID3D11DeviceContext1::CSSetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppConstantBuffers,[In, Buffer, Optional] const unsigned int* pFirstConstant,[In, Buffer, Optional] const unsigned int* pNumConstants) + ID3D11DeviceContext1::CSSetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the vertex shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references to be returned by the method.

    +

    A reference to an array that receives the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer. The runtime sets pFirstConstant to null if the buffers do not have offsets.

    +

    A reference to an array that receives the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array. The runtime sets pNumConstants to null if it doesn't specify the numbers of constants in each buffer.

    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh446793 + void ID3D11DeviceContext1::VSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::VSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the hull-shader stage uses.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. + No documentation. + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh404641 + void ID3D11DeviceContext1::HSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::HSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the domain-shader stage uses.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references to be returned by the method.

    +

    A reference to an array that receives the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer. The runtime sets pFirstConstant to null if the buffers do not have offsets.

    +

    A reference to an array that receives the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array. The runtime sets pNumConstants to null if it doesn't specify the numbers of constants in each buffer.

    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh404630 + void ID3D11DeviceContext1::DSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::DSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the geometry shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references to be returned by the method.

    +

    A reference to an array that receives the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer. The runtime sets pFirstConstant to null if the buffers do not have offsets.

    +

    A reference to an array that receives the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array. The runtime sets pNumConstants to null if it doesn't specify the numbers of constants in each buffer.

    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh404635 + void ID3D11DeviceContext1::GSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::GSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the pixel shader pipeline stage uses.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references to be returned by the method.

    +

    A reference to an array that receives the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer. The runtime sets pFirstConstant to null if the buffers do not have offsets.

    +

    A reference to an array that receives the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array. The runtime sets pNumConstants to null if it doesn't specify the numbers of constants in each buffer.

    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh404645 + void ID3D11DeviceContext1::PSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::PSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the constant buffers that the compute-shader stage uses.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references to be returned by the method.

    +

    A reference to an array that receives the offsets into the buffers that ppConstantBuffers specifies. Each offset specifies where, from the shader's point of view, each constant buffer starts. Each offset is measured in shader constants, which are 16 bytes (4*32-bit components). Therefore, an offset of 2 indicates that the start of the associated constant buffer is 32 bytes into the constant buffer. The runtime sets pFirstConstant to null if the buffers do not have offsets.

    +

    A reference to an array that receives the numbers of constants in the buffers that ppConstantBuffers specifies. Each number specifies the number of constants that are contained in the constant buffer that the shader uses. Each number of constants starts from its respective offset that is specified in the pFirstConstant array. The runtime sets pNumConstants to null if it doesn't specify the numbers of constants in each buffer.

    + +

    If no buffer is bound at a slot, pFirstConstant and pNumConstants are null for that slot.

    +
    + + hh404607 + void ID3D11DeviceContext1::CSGetConstantBuffers1([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers,[Out, Buffer, Optional] unsigned int* pFirstConstant,[Out, Buffer, Optional] unsigned int* pNumConstants) + ID3D11DeviceContext1::CSGetConstantBuffers1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Activates the given context state object and changes the current device behavior to Direct3D?11, Direct3D?10.1, or Direct3D?10.

    +
    +

    A reference to the interface for the context state object that was previously created through the method. If SwapDeviceContextState is called with pState set to null, the call has no effect.

    +

    A reference to a variable that receives a reference to the interface for the previously-activated context state object.

    + +

    SwapDeviceContextState changes device behavior. This device behavior depends on the emulated interface that you passed to the EmulatedInterface parameter of the method when you created the context state object.

    SwapDeviceContextState is not supported on a deferred context.

    SwapDeviceContextState disables the incompatible device interfaces ID3D10Device, ID3D10Device1, , and . When a context state object is active, the runtime disables certain methods on the device and context interfaces. A context state object that is created with __uuidof() or __uuidof() turns off most of the Direct3D?10 device interfaces. A context state object that is created with __uuidof(ID3D10Device1) or __uuidof(ID3D10Device) turns off most of the methods. + For more information about this behavior, see .

    SwapDeviceContextState activates the context state object specified by pState. This means that the device behaviors that are associated with the context state object's feature level and compatible interface are activated on the Direct3D device until the next call to SwapDeviceContextState. In addition, any state that was saved when this context state object was last active is now reactivated, so that the previous state is replaced.

    SwapDeviceContextState sets ppPreviousState to the most recently activated context state object. The object allows the caller to save and then later restore the previous device state. This behavior is useful in a plug-in architecture such as Direct2D that shares a Direct3D device with its plug-ins. A Direct2D interface can use context state objects to save and restore the application's state.

    If the caller did not previously call the method to create a previous context state object, SwapDeviceContextState sets ppPreviousState to the default context state object. In either case, usage of SwapDeviceContextState is the same.

    The feature level that is specified by the application, and that is chosen by the context state object from the acceptable list that the application supplies to , controls the feature level of the immediate context whenever the context state object is active. Because the Direct3D?11 device is free-threaded, the device methods cannot query the current immediate context feature level. Instead, the device runs at a feature level that is the maximum of all previously created context state objects' feature levels. This means that the device's feature level can increase dynamically.

    The feature level of the context state object controls the functionality available from the immediate context. However, to maintain the free-threaded contract of the Direct3D?11 device methods?the resource-creation methods in particular?the upper-bound feature level of all created context state objects controls the set of resources that the device creates.

    Because the context state object interface is published by the immediate context, the interface requires the same threading model as the immediate context. Specifically, SwapDeviceContextState is single-threaded with respect to the other immediate context methods and with respect to the equivalent methods of ID3D10Device.

    Crucially, because only one of the Direct3D?10 or Direct3D?11 ref-count behaviors can be available at a time, one of the Direct3D?10 and Direct3D?11 interfaces must break its ref-count contract. To avoid this situation, the activation of a context state object turns off the incompatible version interface. Also, if you call a method of an incompatible version interface, the call silently fails if the method has return type void, returns an value of E_INVALIDARG, or sets any out parameter to null.

    When you switch from Direct3D?11 mode to either Direct3D?10 mode or Direct3D?10.1 mode, the binding behavior of the device changes. Specifically, the final release of a resource induces unbind in Direct3D?10 mode or Direct3D?10.1 mode. During final release an application releases all of the resource's references, including indirect references such as the linkage from view to resource, and the linkage from context state object to any of the context state object's bound resources. Any bound resource to which the application has no reference is unbound and destroyed, in order to maintain the Direct3D?10 behavior.

    SwapDeviceContextState does not affect any state that sets.

    Command lists that are generated by deferred contexts do not hold a reference to context state objects and are not affected by future updates to context state objects.

    No asynchronous objects are affected by SwapDeviceContextState. For example, if a query is active before a call to SwapDeviceContextState, it is still active after the call.

    +
    + + hh446787 + void ID3D11DeviceContext1::SwapDeviceContextState([In] ID3DDeviceContextState* pState,[Out, Optional] ID3DDeviceContextState** ppPreviousState) + ID3D11DeviceContext1::SwapDeviceContextState +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets all the elements in a resource view to one value.

    +
    +

    A reference to the interface that represents the resource view to clear.

    +

    A 4-component array that represents the color to use to clear the resource view.

    +

    An array of D3D11_RECT structures for the rectangles in the resource view to clear. If null, ClearView clears the entire surface.

    +

    Number of rectangles in the array that the pRect parameter specifies.

    + +

    ClearView works only on render-target views (RTVs), unordered-access views (UAVs), or any video view of a Texture2D surface. The runtime drops invalid calls. Empty rectangles in the pRect array are a no-op. A rectangle is empty if the top value equals the bottom value or the left value equals the right value.

    ClearView doesn?t support 3D textures.

    ClearView applies the same color value to all array slices in a view; all rectangles in the pRect array correspond to each array slice. The pRect array of rectangles is a set of areas to clear on a single surface. If the view is an array, ClearView clears all the rectangles on each array slice individually.

    When you apply rectangles to buffers, set the top value to 0 and the bottom value to 1 and set the left value and right value to describe the extent within the buffer. When the top value equals the bottom value or the left value equals the right value, the rectangle is empty and a no-op is achieved.

    The driver converts and clamps color values to the destination format as appropriate per Direct3D conversion rules. For example, if the format of the view is , the driver clamps inputs to 0.0f to 1.0f (+INF -> 1.0f (0XFF)/NaN -> 0.0f).

    If the format is integer, such as , the runtime interprets inputs as integral floats. Therefore, 235.0f maps to 235 (rounds to zero, out of range/INF values clamp to target range, and NaN to 0).

    Here are the color mappings:

    • Color[0]: R (or Y for video)
    • Color[1]: G (or U/Cb for video)
    • Color[2]: B (or V/Cr for video)
    • Color[3]: A

    For video views with YUV or YCbBr formats, ClearView doesn't convert color values. In situations where the format name doesn?t indicate _UNORM, _UINT, and so on, ClearView assumes _UINT. Therefore, 235.0f maps to 235 (rounds to zero, out of range/INF values clamp to target range, and NaN to 0).

    +
    + + hh404601 + void ID3D11DeviceContext1::ClearView([In] ID3D11View* pView,[In] const float* Color,[In, Buffer, Optional] const RECT* pRect,[In] unsigned int NumRects) + ID3D11DeviceContext1::ClearView +
    + + + No documentation. + + No documentation. + No documentation. + No documentation. + + void ID3D11DeviceContext1::DiscardView1([In] ID3D11View* pResourceView,[In, Buffer, Optional] const RECT* pRects,[In] unsigned int NumRects) + ID3D11DeviceContext1::DiscardView1 + + + +

    This interface encapsulates methods for measuring GPU performance.

    +
    + +

    A counter can be created with .

    This is a derived class of .

    Counter data is gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of counter. The call to End causes the data returned by GetData to be accurate up until the last call to End.

    Counters are best suited for profiling.

    For a list of the types of performance counters, see .

    +
    + + ff476364 + ID3D11Counter + ID3D11Counter +
    + + +

    This interface encapsulates methods for retrieving data from the GPU asynchronously.

    +
    + +

    There are three types of asynchronous interfaces, all of which inherit this interface:

    • - Queries information from the GPU.
    • - Determines whether a piece of geometry should be processed or not depending on the results of a previous draw call.
    • - Measures GPU performance.
    +
    + + ff476347 + ID3D11Asynchronous + ID3D11Asynchronous +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the size of the data (in bytes) that is output when calling .

    +
    +

    Size of the data (in bytes) that is output when calling GetData.

    + + ff476348 + unsigned int ID3D11Asynchronous::GetDataSize() + ID3D11Asynchronous::GetDataSize +
    + + +

    Get the size of the data (in bytes) that is output when calling .

    +
    + + ff476348 + GetDataSize + GetDataSize + unsigned int ID3D11Asynchronous::GetDataSize() +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The counter description. + The newly created object. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a counter description.

    +
    +

    Pointer to a counter description (see ).

    + + ff476365 + void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) + ID3D11Counter::GetDesc +
    + + +

    Get a counter description.

    +
    + + ff476365 + GetDesc + GetDesc + void ID3D11Counter::GetDesc([Out] D3D11_COUNTER_DESC* pDesc) +
    + + + Counter metadata that contains the type, name, units of measure, and a description of an existing counter. + + + + + Gets the data type of a counter (see ). + + The type. + + + + Gets the number of hardware counters that are needed for this counter type to be created. All instances of the same counter type use the same hardware counters. + + The hardware counter count. + + + + Gets a brief name for the counter. + + The name. + + + + Gets the units a counter measures. + + The units. + + + + Gets a description of the counter. + + The description. + + + +

    The depth-stencil-state interface holds a description for depth-stencil state that you can bind to the output-merger stage.

    +
    + +

    To create a depth-stencil-state object, call . To bind the depth-stencil-state object to the output-merger stage, call .

    +
    + + ff476375 + ID3D11DepthStencilState + ID3D11DepthStencilState +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + ff476506 + HRESULT ID3D11Device::CreateDepthStencilState([In] const D3D11_DEPTH_STENCIL_DESC* pDepthStencilDesc,[Out, Fast] ID3D11DepthStencilState** ppDepthStencilState) + ID3D11Device::CreateDepthStencilState + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

    +
    +

    A reference to a structure that receives a description of the depth-stencil state.

    + +

    You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

    +
    + + ff476376 + void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) + ID3D11DepthStencilState::GetDesc +
    + + +

    Gets the description for depth-stencil state that you used to create the depth-stencil-state object.

    +
    + +

    You use the description for depth-stencil state in a call to the method to create the depth-stencil-state object.

    +
    + + ff476376 + GetDesc + GetDesc + void ID3D11DepthStencilState::GetDesc([Out] D3D11_DEPTH_STENCIL_DESC* pDesc) +
    + + +

    A depth-stencil-view interface accesses a texture resource during depth-stencil testing.

    +
    + +

    To create a depth-stencil view, call .

    To bind a depth-stencil view to the pipeline, call .

    +
    + + ff476377 + ID3D11DepthStencilView + ID3D11DepthStencilView +
    + + +

    A view interface specifies the parts of a resource the pipeline can access during rendering.

    +
    + +

    A view interface is the base interface for all views. There are four types of views; a depth-stencil view, a render-target view, a shader-resource view, and an unordered-access view.

    • To create a render-target view, call .
    • To create a depth-stencil view, call .
    • To create a shader-resource view, call .
    • To create an unordered-access view, call .

    All resources must be bound to the pipeline before they can be accessed.

    • To bind a render-target view or a depth-stencil view, call .
    • To bind a shader resource, call .
    +
    + + ff476642 + ID3D11View + ID3D11View +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the resource that is accessed through this view.

    +
    +

    Address of a reference to the resource that is accessed through this view. (See .)

    + +

    This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

    +
    + + ff476643 + void ID3D11View::GetResource([Out] void** ppResource) + ID3D11View::GetResource +
    + + +

    Get the resource that is accessed through this view.

    +
    + +

    This function increments the reference count of the resource by one, so it is necessary to call Dispose on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

    +
    + ff476643 + GetResource + GetResource + void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) +
    + + +

    Get the resource that is accessed through this view.

    +
    + +

    This function increments the reference count of the resource by one, so it is necessary to call Release on the returned reference when the application is done with it. Destroying (or losing) the returned reference before Release is called will result in a memory leak.

    +
    + ff476643 + GetResource + GetResource + void ID3D11View::GetResource([Out] ID3D11Resource** ppResource) +
    + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + ID3D11Device::CreateDepthStencilView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the DepthStencil flag. + A structure describing the to be created. + ID3D11Device::CreateDepthStencilView + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the depth-stencil view.

    +
    +

    Pointer to a depth-stencil-view description (see ).

    + + ff476378 + void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) + ID3D11DepthStencilView::GetDesc +
    + + +

    Get the depth-stencil view.

    +
    + + ff476378 + GetDesc + GetDesc + void ID3D11DepthStencilView::GetDesc([Out] D3D11_DEPTH_STENCIL_VIEW_DESC* pDesc) +
    + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Set the target output {{buffers}} for the {{StreamOutput}} stage, which enables/disables the pipeline to stream-out data. + + + Call ID3D10Device::SOSetTargets (before any draw calls) to stream data out; call SOSetTargets with NULL to stop streaming data out. For an example, see Exercise 01 from the GDC 2007 workshop, which sets the stream output rendertargets before calling draw methods in the RenderInstanceToStream function. An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass. Calling this method using a buffer that is currently bound for writing will effectively bind NULL instead because a buffer cannot be bound as both an input and an output at the same time. The {{DeviceDebug Layer}} will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime. The method will not hold a reference to the interfaces passed in. For that reason, applications should be careful not to release an interface currently in use by the device. + + an array of output buffers (see ) to bind to the device. The buffers must have been created with the flag. + void SOSetTargets([In] int NumBuffers,[In, Buffer, Optional] const ID3D10Buffer** ppSOTargets,[In, Buffer, Optional] const int* pOffsets) + + + + Get the target output {{buffers}} for the {{StreamOutput}} stage of the pipeline. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of buffers to get. A maximum of four output buffers can be retrieved. + an array of output buffers (see ) to bind to the device. + void SOGetTargets([In] int NumBuffers,[Out, Buffer, Optional] ID3D10Buffer** ppSOTargets,[Out, Buffer, Optional] int* pOffsets) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Set the target output buffers for the stream-output stage of the pipeline.

    +
    +

    The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

    +

    The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

    +

    Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

    + +

    An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

    Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D11DeviceContext::SOSetTargets +
    + + +

    Set the target output buffers for the stream-output stage of the pipeline.

    +
    +

    The number of buffer to bind to the device. A maximum of four output buffers can be set. If less than four are defined by the call, the remaining buffer slots are set to null. See Remarks.

    +

    The array of output buffers (see ) to bind to the device. The buffers must have been created with the flag.

    +

    Array of offsets to the output buffers from ppSOTargets, one offset for each buffer. The offset values must be in bytes.

    + +

    An offset of -1 will cause the stream output buffer to be appended, continuing after the last location written to the buffer in a previous stream output pass.

    Calling this method using a buffer that is currently bound for writing will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476484 + void ID3D11DeviceContext::SOSetTargets([In] unsigned int NumBuffers,[In, Buffer, Optional] const ID3D11Buffer** ppSOTargets,[In, Buffer, Optional] const unsigned int* pOffsets) + ID3D11DeviceContext::SOSetTargets +
    + + +

    Get the target output buffers for the stream-output stage of the pipeline.

    +
    +

    Number of buffers to get.

    +

    An array of output buffers (see ) to be retrieved from the device.

    + +

    A maximum of four output buffers can be retrieved.

    The offsets to the output buffers pointed to in the returned ppSOTargets array may be assumed to be -1 (append), as defined for use in .

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476483 + void ID3D11DeviceContext::SOGetTargets([In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppSOTargets) + ID3D11DeviceContext::SOGetTargets +
    + + + Common Shader class. Provides a common set of methods for a Shader Stage. + TODO: check if usage of abstract is not introducing an unacceptable overhead... + + Type of the shader + + Functions + + + + + Constant ImmediateConstantBufferRegisterComponents. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COMPONENTS + + + Constant InputResourceRegisterReadPorts. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READ_PORTS + + + Constant SamplerRegisterComponents. + D3D11_COMMONSHADER_SAMPLER_REGISTER_COMPONENTS + + + Constant SamplerRegisterCount. + D3D11_COMMONSHADER_SAMPLER_REGISTER_COUNT + + + Constant ConstantBufferRegisterReadPorts. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READ_PORTS + + + Constant InputResourceRegisterCount. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COUNT + + + Constant FlowcontrolNestingLimit. + D3D11_COMMONSHADER_FLOWCONTROL_NESTING_LIMIT + + + Constant ImmediateValueComponentBitCount. + D3D11_COMMONSHADER_IMMEDIATE_VALUE_COMPONENT_BIT_COUNT + + + Constant TextureCoordRangeReductionMinimum. + D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MIN + + + Constant TempRegisterComponentBitCount. + D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENT_BIT_COUNT + + + Constant TempRegisterComponents. + D3D11_COMMONSHADER_TEMP_REGISTER_COMPONENTS + + + Constant TextureCoordRangeReductionMaximum. + D3D11_COMMONSHADER_TEXCOORD_RANGE_REDUCTION_MAX + + + Constant SamplerRegisterReadPorts. + D3D11_COMMONSHADER_SAMPLER_REGISTER_READ_PORTS + + + Constant TextureElOffsetMaximumNegative. + D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_NEGATIVE + + + Constant InputResourceSlotCount. + D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT + + + Constant SamplerRegisterReadsPerInst. + D3D11_COMMONSHADER_SAMPLER_REGISTER_READS_PER_INST + + + Constant ImmediateConstantBufferRegisterCount. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_COUNT + + + Constant TempRegisterReadPorts. + D3D11_COMMONSHADER_TEMP_REGISTER_READ_PORTS + + + Constant ConstantBufferRegisterCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COUNT + + + Constant ConstantBufferRegisterReadsPerInst. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_READS_PER_INST + + + Constant InputResourceRegisterComponents. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_COMPONENTS + + + Constant TempRegisterCount. + D3D11_COMMONSHADER_TEMP_REGISTER_COUNT + + + Constant TextureElOffsetMaximumPositive. + D3D11_COMMONSHADER_TEXEL_OFFSET_MAX_POSITIVE + + + Constant SubRoutineNestingLimit. + D3D11_COMMONSHADER_SUBROUTINE_NESTING_LIMIT + + + Constant ImmediateConstantBufferRegisterReadsPerInst. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READS_PER_INST + + + Constant ConstantBufferComponentBitCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENT_BIT_COUNT + + + Constant TempRegisterReadsPerInst. + D3D11_COMMONSHADER_TEMP_REGISTER_READS_PER_INST + + + Constant ConstantBufferHwSlotCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_HW_SLOT_COUNT + + + Constant SamplerSlotCount. + D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT + + + Constant ConstantBufferRegisterComponents. + D3D11_COMMONSHADER_CONSTANT_BUFFER_REGISTER_COMPONENTS + + + Constant ImmediateConstantBufferRegisterReadPorts. + D3D11_COMMONSHADER_IMMEDIATE_CONSTANT_BUFFER_REGISTER_READ_PORTS + + + Constant ConstantBufferPartialUpdateExtentsByteAlignment. + D3D11_COMMONSHADER_CONSTANT_BUFFER_PARTIAL_UPDATE_EXTENTS_BYTE_ALIGNMENT + + + Constant InputResourceRegisterReadsPerInst. + D3D11_COMMONSHADER_INPUT_RESOURCE_REGISTER_READS_PER_INST + + + Constant ConstantBufferApiSlotCount. + D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT + + + Constant ConstantBufferComponents. + D3D11_COMMONSHADER_CONSTANT_BUFFER_COMPONENTS + + + + Initializes a new instance of the class. + + The pointer. + + + + Gets the constant buffers used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving constant buffers. + Number of buffers to retrieve. + An array of constant buffers. + + + + Gets the sampler states used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving samplers. + Number of samplers to retrieve. + An array of sampler states. + + + + Gets the shader resources used by the shader stage. + + Index into the device's zero-based array from which to begin retrieving shader resources. + Number of resources to retrieve. + An array of shader resources. + + + + Sets a single constant buffer to be used by the shader stage. + + Index into the device's zero-based array to which to set the constant buffer. + constant buffer to set + + + + Sets an array of constant buffers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of constant buffers. + An array of constant buffer to set + + + + Sets an array of constant buffers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of constant buffers. + An array of constant buffer to set + + + + Sets a single sampler to be used by the shader stage. + + Index into the device's zero-based array to which to set the sampler. + sampler state to set + + + + Sets an array of samplers to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of sampler states. + An array of sampler state to set + + + + Sets an array of samplesr to be used by the shader stage. + + Index into the device's zero-based array to which to set the array of sampler states. + An array of sampler state to set + + + + Sets a single shader resource to be used by the shader stage. + + Index into the device's zero-based array to which to set the resource. + Resource view to attach + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Array of {{shader resource view}} interfaces to set to the device. + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Array of {{shader resource view}} interfaces to set to the device. + + + + Get the shader resources. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to be returned by the device. + void PSGetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[Out, Buffer] ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Get an array of sampler states from the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into a zero-based array to begin getting samplers from (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Arry of sampler-state interface pointers (see ) to be returned by the device. + void PSGetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[Out, Buffer] ID3D11SamplerState** ppSamplers) + + + + Get the constant buffers used by the shader pipeline stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to retrieve (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffer interface pointers (see ) to be returned by the method. + void PSGetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[Out, Buffer] ID3D11Buffer** ppConstantBuffers) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Bind an array of shader resources to the shader stage. + + + If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with NULL.For information about creating shader-resource views, see . The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1). + Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - StartSlot). + Array of {{shader resource view}} interfaces to set to the device. + void PSSetShaderResources([In] UINT StartSlot,[In] UINT NumViews,[In, Buffer] const ID3D11ShaderResourceView** ppShaderResourceViews) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) + + + + Set an array of sampler states to the shader pipeline stage. + + + Any sampler may be set to NULL; this invokes the default state, which is defined to be the following.StateDefault ValueFilterD3D11_FILTER_MIN_MAG_MIP_LINEARAddressUD3D11_TEXTURE_ADDRESS_CLAMPAddressVD3D11_TEXTURE_ADDRESS_CLAMPAddressWD3D11_TEXTURE_ADDRESS_CLAMPMipLODBias0MaxAnisotropy1ComparisonFuncD3D11_COMPARISON_NEVERBorderColor[0]1.0fBorderColor[1]1.0fBorderColor[2]1.0fBorderColor[3]1.0fMinLOD-FLT_MAXMaxLODFLT_MAX The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting samplers to (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1). + Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot). + Pointer to an array of sampler-state interfaces (see ). See Remarks. + void PSSetSamplers([In] UINT StartSlot,[In] UINT NumSamplers,[In, Buffer] const ID3D11SamplerState** ppSamplers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) + + + + Set the constant buffers used by the shader pipeline stage. + + + The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1). + Number of buffers to set (ranges from 0 to D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot). + Array of constant buffers (see ) being given to the device. + void PSSetConstantBuffers([In] UINT StartSlot,[In] UINT NumBuffers,[In, Buffer] const ID3D11Buffer** ppConstantBuffers) + + + + Common Shader class. Provides a common set of methods for a Shader Stage. + TODO: check if usage of abstract is not introducing an unacceptable overhead... + + Type of the shader + + + + Initializes a new instance of the class. + + The pointer. + + + + Gets the shader currently assigned to the device. + + The shader (null if no shader is assigned). + + + + Gets the shader currently assigned to the device. + + An array that will be used to contain any class instances currently active. + The shader (null if no shader is assigned). + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. + + + + Assigns a compute shader to the device. + + The shader to assign to the device. Assign null to disable the compute shader. + An array of class-instance interfaces. Each interface used by a shader must have a corresponding class instance or the shader will get disabled. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + Constant UnorderedAccessViewSlotCount. + D3D11_PS_CS_UAV_REGISTER_COUNT + + + Constant ThreadGroupSharedMemoryResourceRegisterReadPorts. + D3D11_CS_TGSM_RESOURCE_REGISTER_READ_PORTS + + + Constant ThreadGroupMaximumX. + D3D11_CS_THREAD_GROUP_MAX_X + + + Constant DispatchMaximumThreadGroupsPerDimension. + D3D11_CS_DISPATCH_MAX_THREAD_GROUPS_PER_DIMENSION + + + Constant ThreadidingroupflattenedRegisterComponents. + D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COMPONENTS + + + Constant ThreadGroupSharedMemoryRegisterCount. + D3D11_CS_TGSM_REGISTER_COUNT + + + Constant ThreadidingroupRegisterComponents. + D3D11_CS_THREADIDINGROUP_REGISTER_COMPONENTS + + + Constant ThreadGroupMaximumThreadsPerGroup. + D3D11_CS_THREAD_GROUP_MAX_THREADS_PER_GROUP + + + Constant ThreadgroupidRegisterCount. + D3D11_CS_THREADGROUPID_REGISTER_COUNT + + + Constant ThreadgroupidRegisterComponents. + D3D11_CS_THREADGROUPID_REGISTER_COMPONENTS + + + Constant ThreadGroupMaximumY. + D3D11_CS_THREAD_GROUP_MAX_Y + + + Constant ThreadidingroupRegisterCount. + D3D11_CS_THREADIDINGROUP_REGISTER_COUNT + + + Constant ThreadidingroupflattenedRegisterCount. + D3D11_CS_THREADIDINGROUPFLATTENED_REGISTER_COUNT + + + Constant ThreadGroupMinimumZ. + D3D11_CS_THREAD_GROUP_MIN_Z + + + Constant ThreadGroupSharedMemoryRegisterReadsPerInst. + D3D11_CS_TGSM_REGISTER_READS_PER_INST + + + Constant ThreadGroupMaximumZ. + D3D11_CS_THREAD_GROUP_MAX_Z + + + Constant ThreadidRegisterComponents. + D3D11_CS_THREADID_REGISTER_COMPONENTS + + + Constant ThreadGroupMinimumY. + D3D11_CS_THREAD_GROUP_MIN_Y + + + Constant ThreadLocalTempRegisterPool. + D3D11_CS_THREAD_LOCAL_TEMP_REGISTER_POOL + + + Constant ThreadidRegisterCount. + D3D11_CS_THREADID_REGISTER_COUNT + + + Constant ThreadGroupMinimumX. + D3D11_CS_THREAD_GROUP_MIN_X + + + Constant ThreadGroupSharedMemoryResourceRegisterComponents. + D3D11_CS_TGSM_RESOURCE_REGISTER_COMPONENTS + + + + Gets an array of views for an unordered resource. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). + Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). + void CSGetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[Out, Buffer] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. + void CSSetUnorderedAccessViews([In] int StartSlot,[In] int NumUAVs,[In, Buffer] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer] const int* pUAVInitialCounts) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind an array of shader resources to the compute-shader stage.

    +
    +

    Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

    +

    Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to set to the device.

    + +

    If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. +

    +
    + + ff476403 + void ID3D11DeviceContext::CSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::CSSetShaderResources +
    + + +

    Sets an array of views for an unordered resource.

    +
    +

    Index of the first element in the zero-based array to begin setting (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - 1). D3D11_1_UAV_SLOT_COUNT is defined as 64.

    +

    Number of views to set (ranges from 0 to D3D11_1_UAV_SLOT_COUNT - StartSlot).

    +

    A reference to an array of references to be set by the method.

    +

    An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is only relevant for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

    + + ff476404 + void ID3D11DeviceContext::CSSetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const void** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::CSSetUnorderedAccessViews +
    + + +

    Set a compute shader to the device.

    +
    +

    Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476402 + void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::CSSetShader +
    + + +

    Set a compute shader to the device.

    +
    +

    Pointer to a compute shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476402 + void ID3D11DeviceContext::CSSetShader([In, Optional] ID3D11ComputeShader* pComputeShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::CSSetShader +
    + + +

    Set an array of sampler states to the compute-shader stage.

    +
    +

    Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

    +

    Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ). See Remarks.

    + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

     //Default sampler state:	
    +             SamplerDesc;	
    +            SamplerDesc.Filter = ;	
    +            SamplerDesc.AddressU = ;	
    +            SamplerDesc.AddressV = ;	
    +            SamplerDesc.AddressW = ;	
    +            SamplerDesc.MipLODBias = 0;	
    +            SamplerDesc.MaxAnisotropy = 1;	
    +            SamplerDesc.ComparisonFunc = ;	
    +            SamplerDesc.BorderColor[0] = 1.0f;	
    +            SamplerDesc.BorderColor[1] = 1.0f;	
    +            SamplerDesc.BorderColor[2] = 1.0f;	
    +            SamplerDesc.BorderColor[3] = 1.0f;	
    +            SamplerDesc.MinLOD = -FLT_MAX;	
    +            SamplerDesc.MaxLOD = FLT_MAX; 

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476401 + void ID3D11DeviceContext::CSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::CSSetSamplers +
    + + +

    Sets the constant buffers used by the compute-shader stage.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the CSSetConstantBuffers1 method instead.

    +
    + + ff476400 + void ID3D11DeviceContext::CSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::CSSetConstantBuffers +
    + + +

    Get the compute-shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476398 + void ID3D11DeviceContext::CSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::CSGetShaderResources +
    + + +

    Gets an array of views for an unordered resource.

    +
    +

    Index of the first element in the zero-based array to return (ranges from 0 to - 1).

    +

    Number of views to get (ranges from 0 to - StartSlot).

    +

    A reference to an array of interface references (see ) to get.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476399 + void ID3D11DeviceContext::CSGetUnorderedAccessViews([In] unsigned int StartSlot,[In] unsigned int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + ID3D11DeviceContext::CSGetUnorderedAccessViews +
    + + +

    Get the compute shader currently set on the device.

    +
    +

    Address of a reference to a Compute shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476397 + void ID3D11DeviceContext::CSGetShader([Out] ID3D11ComputeShader** ppComputeShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::CSGetShader +
    + + +

    Get an array of sampler state interfaces from the compute-shader stage.

    +
    +

    Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

    +

    Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ).

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476396 + void ID3D11DeviceContext::CSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::CSGetSamplers +
    + + +

    Get the constant buffers used by the compute-shader stage.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references (see ) to be returned by the method.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476395 + void ID3D11DeviceContext::CSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::CSGetConstantBuffers +
    + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + Constant IndexInputResourceSlotCount. + D3D11_IA_INDEX_INPUT_RESOURCE_SLOT_COUNT + + + Constant VertexIdBitCount. + D3D11_IA_VERTEX_ID_BIT_COUNT + + + Constant DefaultIndexBufferOffsetInBytes. + D3D11_IA_DEFAULT_INDEX_BUFFER_OFFSET_IN_BYTES + + + Constant DefaultPrimitiveTopology. + D3D11_IA_DEFAULT_PRIMITIVE_TOPOLOGY + + + Constant DefaultVertexBufferOffsetInBytes. + D3D11_IA_DEFAULT_VERTEX_BUFFER_OFFSET_IN_BYTES + + + Constant InstanceIdBitCount. + D3D11_IA_INSTANCE_ID_BIT_COUNT + + + Constant VertexInputResourceSlotCount. + D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT + + + Constant IntegerArithmeticBitCount. + D3D11_IA_INTEGER_ARITHMETIC_BIT_COUNT + + + Constant VertexInputStructureElementsComponents. + D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENTS_COMPONENTS + + + Constant PatchMaximumControlPointCount. + D3D11_IA_PATCH_MAX_CONTROL_POINT_COUNT + + + Constant VertexInputStructureElementCount. + D3D11_IA_VERTEX_INPUT_STRUCTURE_ELEMENT_COUNT + + + Constant PrimitiveIdBitCount. + D3D11_IA_PRIMITIVE_ID_BIT_COUNT + + + +

    Bind a single vertex buffer to the input-assembler stage.

    +
    +

    The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

    +

    A . The vertex buffer must have been created with the flag.

    /// +

    For information about creating vertex buffers, see Create a Vertex Buffer.

    Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
    + + +

    Bind an array of vertex buffers to the input-assembler stage.

    +
    +

    The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

    +

    A reference to an array of . The vertex buffers must have been created with the flag.

    /// +

    For information about creating vertex buffers, see Create a Vertex Buffer.

    Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
    + + +

    Bind an array of vertex buffers to the input-assembler stage.

    +
    +

    The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

    +

    A reference to an array of vertex buffers (see ). The vertex buffers must have been created with the flag.

    +

    Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.

    +

    Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

    + +

    For information about creating vertex buffers, see Create a Vertex Buffer.

    Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer] const void* ppVertexBuffers,[In, Buffer] const void* pStrides,[In, Buffer] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind an input-layout object to the input-assembler stage.

    +
    +

    A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

    + +

    Input-layout objects describe how vertex buffer data is streamed into the IA pipeline stage. To create an input-layout object, call .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476454 + void ID3D11DeviceContext::IASetInputLayout([In, Optional] ID3D11InputLayout* pInputLayout) + ID3D11DeviceContext::IASetInputLayout +
    + + +

    Bind an array of vertex buffers to the input-assembler stage.

    +
    +

    The first input slot for binding. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

    +

    The number of vertex buffers in the array. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots (ranges from 0 to - StartSlot).

    +

    A reference to an array of vertex buffers (see ). The vertex buffers must have been created with the flag.

    +

    Pointer to an array of stride values; one stride value for each buffer in the vertex-buffer array. Each stride is the size (in bytes) of the elements that are to be used from that vertex buffer.

    +

    Pointer to an array of offset values; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

    + +

    For information about creating vertex buffers, see Create a Vertex Buffer.

    Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476456 + void ID3D11DeviceContext::IASetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void* ppVertexBuffers,[In, Buffer, Optional] const void* pStrides,[In, Buffer, Optional] const void* pOffsets) + ID3D11DeviceContext::IASetVertexBuffers +
    + + +

    Bind an index buffer to the input-assembler stage.

    +
    +

    A reference to an object, that contains indices. The index buffer must have been created with the flag.

    +

    A that specifies the format of the data in the index buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

    +

    Offset (in bytes) from the start of the index buffer to the first index to use.

    + +

    For information about creating index buffers, see How to: Create an Index Buffer.

    Calling this method using a buffer that is currently bound for writing (i.e. bound to the stream output pipeline stage) will effectively bind null instead because a buffer cannot be bound as both an input and an output at the same time.

    The debug layer will generate a warning whenever a resource is prevented from being bound simultaneously as an input and an output, but this will not prevent invalid data from being used by the runtime.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476453 + void ID3D11DeviceContext::IASetIndexBuffer([In, Optional] ID3D11Buffer* pIndexBuffer,[In] DXGI_FORMAT Format,[In] unsigned int Offset) + ID3D11DeviceContext::IASetIndexBuffer +
    + + +

    Bind information about the primitive type, and data order that describes input data for the input assembler stage.

    +
    +

    The type of primitive and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

    + + ff476455 + void ID3D11DeviceContext::IASetPrimitiveTopology([In] D3D_PRIMITIVE_TOPOLOGY Topology) + ID3D11DeviceContext::IASetPrimitiveTopology +
    + + +

    Get a reference to the input-layout object that is bound to the input-assembler stage.

    +
    +

    A reference to the input-layout object (see ), which describes the input buffers that will be read by the IA stage.

    + +

    For information about creating an input-layout object, see Creating the Input-Layout Object.

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476450 + void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) + ID3D11DeviceContext::IAGetInputLayout +
    + + +

    Get the vertex buffers bound to the input-assembler stage.

    +
    +

    The input slot of the first vertex buffer to get. The first vertex buffer is explicitly bound to the start slot; this causes each additional vertex buffer in the array to be implicitly bound to each subsequent input slot. The maximum of 16 or 32 input slots (ranges from 0 to - 1) are available; the maximum number of input slots depends on the feature level.

    +

    The number of vertex buffers to get starting at the offset. The number of buffers (plus the starting slot) cannot exceed the total number of IA-stage input slots.

    +

    A reference to an array of vertex buffers returned by the method (see ).

    +

    Pointer to an array of stride values returned by the method; one stride value for each buffer in the vertex-buffer array. Each stride value is the size (in bytes) of the elements that are to be used from that vertex buffer.

    +

    Pointer to an array of offset values returned by the method; one offset value for each buffer in the vertex-buffer array. Each offset is the number of bytes between the first element of a vertex buffer and the first element that will be used.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476452 + void ID3D11DeviceContext::IAGetVertexBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppVertexBuffers,[Out, Buffer, Optional] unsigned int* pStrides,[Out, Buffer, Optional] unsigned int* pOffsets) + ID3D11DeviceContext::IAGetVertexBuffers +
    + + +

    Get a reference to the index buffer that is bound to the input-assembler stage.

    +
    +

    A reference to an index buffer returned by the method (see ).

    +

    Specifies format of the data in the index buffer (see ). These formats provide the size and type of the data in the buffer. The only formats allowed for index buffer data are 16-bit () and 32-bit () integers.

    +

    Offset (in bytes) from the start of the index buffer, to the first index to use.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476449 + void ID3D11DeviceContext::IAGetIndexBuffer([Out, Optional] ID3D11Buffer** pIndexBuffer,[Out, Optional] DXGI_FORMAT* Format,[Out, Optional] unsigned int* Offset) + ID3D11DeviceContext::IAGetIndexBuffer +
    + + +

    Get information about the primitive type, and data order that describes input data for the input assembler stage.

    +
    +

    A reference to the type of primitive, and ordering of the primitive data (see D3D11_PRIMITIVE_TOPOLOGY).

    + + ff476451 + void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) + ID3D11DeviceContext::IAGetPrimitiveTopology +
    + + +

    Get or sets a reference to the input-layout object that is bound to the input-assembler stage.

    +
    + +

    For information about creating an input-layout object, see Creating the Input-Layout Object.

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476450 + IAGetInputLayout / IASetInputLayout + IAGetInputLayout + void ID3D11DeviceContext::IAGetInputLayout([Out] ID3D11InputLayout** ppInputLayout) +
    + + +

    Get or sets information about the primitive type, and data order that describes input data for the input assembler stage.

    +
    + + ff476451 + IAGetPrimitiveTopology / IASetPrimitiveTopology + IAGetPrimitiveTopology + void ID3D11DeviceContext::IAGetPrimitiveTopology([Out] D3D_PRIMITIVE_TOPOLOGY* pTopology) +
    + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get references to the render targets and the depth-stencil buffer that are available to the {{output-merger stage}}. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Number of render targets to retrieve. + Pointer to a depth-stencil view (see ) to be filled with the depth-stencil information from the device. + an array of render targets views (see ) to be filled with the render targets from the device. + void OMGetRenderTargets([In] int NumViews,[Out, Buffer, Optional] ID3D10RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D10DepthStencilView** ppDepthStencilView) + + + + Get the {{blend state}} of the output-merger stage. + + + The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak. + + Array of blend factors, one for each RGBA component. + Pointer to a {{sample mask}}. + a reference to a blend-state interface (see ). + void OMGetBlendState([Out, Optional] ID3D10BlendState** ppBlendState,[Out, Optional] float BlendFactor[4],[Out, Optional] int* pSampleMask) + + + + Gets the {{depth-stencil}} state of the output-merger stage. + + + Any returned interfaces will have their reference count incremented by one. Applications should call {{IUnknown::Release}} on the returned interfaces when they are no longer needed to avoid memory leaks. + + Pointer to the stencil reference value used in the {{depth-stencil}} test. + a reference to a depth-stencil state interface (see ) to be filled with information from the device. + void OMGetDepthStencilState([Out, Optional] ID3D10DepthStencilState** ppDepthStencilState,[Out, Optional] int* pStencilRef) + + + + Gets an array of views for an unordered resource. + + + Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks. + + Index of the first element in the zero-based array to return (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - 1). + Number of views to get (ranges from 0 to D3D11_PS_CS_UAV_REGISTER_COUNT - StartSlot). + void OMGetRenderTargetsAndUnorderedAccessViews([In] int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] int UAVStartSlot,[In] int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + + + + Unbinds all depth-stencil buffer and render targets from the output-merger stage. + + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets + + + +

    Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

    +
    + A set of render target views to bind. + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a single render target to the output-merger stage. + + A view of the render target to bind. + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a depth-stencil buffer and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A view of the render target to bind. + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a depth-stencil buffer and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + A set of render target views to bind. + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a set of render targets to the output-merger stage and clear the depth stencil view. + + A set of render target views to bind. + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + + Binds a set of unordered access views and a single render target to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a set of render targets to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a single render target to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a set of unordered access views and a set of render targets to the output-merger stage. + + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a single render target to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A view of the render target to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Binds a depth-stencil buffer, a set of unordered access views, and a set of render targets to the output-merger stage. + + A view of the depth-stencil buffer to bind. + Index into a zero-based array to begin setting unordered access views. + A set of unordered access views to bind. + A set of render target views to bind. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an references to be set by the method. + An Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. uAVInitialCount is only relevant for UAVs which have the flag, otherwise the argument is ignored. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + + Sets an array of views for an unordered resource. + + + + Index of the first element in the zero-based array to begin setting. + A reference to an array of references to be set by the method. + An array of Append/Consume buffer offsets. A value of -1 indicates the current offset should be kept. Any other values set the hidden counter for that Appendable/Consumeable UAV. pUAVInitialCounts is only relevant for UAVs which have the flag, otherwise the argument is ignored. + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews + + + +

    Binds resources to the output-merger stage.

    +
    +

    Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

    +

    Pointer to an array of s, which represent render-target views. Specify null to set none.

    +

    Pointer to a , which represents a depth-stencil view. Specify null to set none.

    +

    Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

    For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

    +

    Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

    +

    Pointer to an array of s, which represent unordered-access views.

    +

    An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

    + +

    For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

    Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

    Two RTVs conflict if they share a subresource (and therefore share the same resource).

    Two UAVs conflict if they share a subresource (and therefore share the same resource).

    An RTV conflicts with a UAV if they share a subresource or share a bind point.

    OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

    1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • UAVStartSlot >= NumViews
      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

      • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
      • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
    2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All RTVs in slots >= UAVStartSlot
      • All RTVs that conflict with any UAVs in ppUnorderedAccessView
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

      OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

    3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • There must be no conflicts in ppRenderTargetViews.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All UAVs in slots < NumViews
      • All UAVs that conflict with any RTVs in ppRenderTargetViews
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

      OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

    +
    + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
    + + +

    Binds resources to the output-merger stage.

    +
    +

    Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

    +

    Pointer to an array of s, which represent render-target views. Specify null to set none.

    +

    Pointer to a , which represents a depth-stencil view. Specify null to set none.

    +

    Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

    For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

    +

    Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

    +

    Pointer to an array of s, which represent unordered-access views.

    +

    An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

    + +

    For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

    Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

    Two RTVs conflict if they share a subresource (and therefore share the same resource).

    Two UAVs conflict if they share a subresource (and therefore share the same resource).

    An RTV conflicts with a UAV if they share a subresource or share a bind point.

    OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

    1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • UAVStartSlot >= NumViews
      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

      • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
      • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
    2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All RTVs in slots >= UAVStartSlot
      • All RTVs that conflict with any UAVs in ppUnorderedAccessView
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

      OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

    3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • There must be no conflicts in ppRenderTargetViews.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All UAVs in slots < NumViews
      • All UAVs that conflict with any RTVs in ppRenderTargetViews
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

      OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

    +
    + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const ID3D11RenderTargetView** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const ID3D11UnorderedAccessView** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
    + + + Set the blend state of the output-merger stage. + + Pointer to a blend-state interface (see ). Passing in null implies a default blend state. See remarks for further details. + Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the option. + 32-bit sample coverage. The default value is 0xffffffff. See remarks. + + Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the blend operation to control where the two pixel values come from and how they are mathematically combined.To create a blend-state interface, call .Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.StateDefault Value AlphaToCoverageEnableFALSE BlendEnableFALSE[8] SrcBlendD3D11_BLEND_ONE DstBlendD3D11_BLEND_ZERO BlendOpD3D11_BLEND_OP_ADD SrcBlendAlphaD3D11_BLEND_ONE DstBlendAlphaD3D11_BLEND_ZERO BlendOpAlphaD3D11_BLEND_OP_ADD RenderTargetWriteMask[8][8]?A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10. + + void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind one or more render targets atomically and the depth-stencil buffer to the output-merger stage.

    +
    +

    Number of render targets to bind (ranges between 0 and D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT).

    +

    Pointer to an array of render targets (see ) to bind to the device. If this parameter is null, no render targets are bound. See Remarks.

    +

    Pointer to a depth-stencil view (see ) to bind to the device. If this parameter is null, the depth-stencil state is not bound.

    + +

    The maximum number of active render targets a device can have active at any given time is set by a #define in D3D11.h called D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT. It is invalid to try to set the same subresource to multiple render target slots. Any render targets not defined by this call are set to null.

    If any subresources are also currently bound for reading in a different stage or writing (perhaps in a different part of the pipeline), those bind points will be set to null, in order to prevent the same subresource from being read and written simultaneously in a single rendering operation.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    If the render-target views were created from an array resource type, then all of the render-target views must have the same array size. This restriction also applies to the depth-stencil view, its array size must match that of the render-target views being bound.

    The pixel shader must be able to simultaneously render to at least eight separate render targets. All of these render targets must access the same type of resource: Buffer, Texture1D, Texture1DArray, Texture2D, Texture2DArray, Texture3D, or TextureCube. All render targets must have the same size in all dimensions (width and height, and depth for 3D or array size for *Array types). If render targets use multisample anti-aliasing, all bound render targets and depth buffer must be the same form of multisample resource (that is, the sample counts must be the same). Each render target can have a different data format. These render target formats are not required to have identical bit-per-element counts.

    Any combination of the eight slots for render targets can have a render target set or not set.

    The same resource view cannot be bound to multiple render target slots simultaneously. However, you can set multiple non-overlapping resource views of a single resource as simultaneous multiple render targets.

    +
    + + ff476464 + void ID3D11DeviceContext::OMSetRenderTargets([In] unsigned int NumViews,[In] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView) + ID3D11DeviceContext::OMSetRenderTargets +
    + + +

    Binds resources to the output-merger stage.

    +
    +

    Number of render-target views (ppRenderTargetViews) and depth-stencil view (ppDepthStencilView) to bind. If you set NumViews to D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL (0xffffffff), this method does not modify the currently bound render-target views (RTVs) and also does not modify depth-stencil view (DSV).

    +

    Pointer to an array of s, which represent render-target views. Specify null to set none.

    +

    Pointer to a , which represents a depth-stencil view. Specify null to set none.

    +

    Index into a zero-based array to begin setting unordered-access views (ranges from 0 to - 1).

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - 1. D3D11_1_UAV_SLOT_COUNT is defined as 64.

    For pixel shaders, UAVStartSlot should be equal to the number of render-target views being bound.

    +

    Number of unordered-access views (UAVs) in ppUnorderedAccessView. If you set NumUAVs to D3D11_KEEP_UNORDERED_ACCESS_VIEWS (0xffffffff), this method does not modify the currently bound unordered-access views.

    For the Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, this value can range from 0 to D3D11_1_UAV_SLOT_COUNT - UAVStartSlot.

    +

    Pointer to an array of s, which represent unordered-access views.

    +

    An array of append and consume buffer offsets. A value of -1 indicates to keep the current offset. Any other values set the hidden counter for that appendable and consumable UAV. pUAVInitialCounts is relevant only for UAVs that were created with either or specified when the UAV was created; otherwise, the argument is ignored.

    + +

    For pixel shaders, the render targets and unordered-access views share the same resource slots when being written out. This means that UAVs must be given an offset so that they are placed in the slots after the render target views that are being bound.

    Note??RTVs, DSV, and UAVs cannot be set independently; they all need to be set at the same time.

    Two RTVs conflict if they share a subresource (and therefore share the same resource).

    Two UAVs conflict if they share a subresource (and therefore share the same resource).

    An RTV conflicts with a UAV if they share a subresource or share a bind point.

    OMSetRenderTargetsAndUnorderedAccessViews operates properly in the following situations:

    1. NumViews != D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL and NumUAVs != D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • UAVStartSlot >= NumViews
      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in the set of all ppRenderTargetViews and ppUnorderedAccessView.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews performs the following tasks:

      • Unbinds all currently bound conflicting resources (stream-output target resources (SOTargets), compute shader (CS) UAVs, shader-resource views (SRVs)).
      • Binds ppRenderTargetViews, ppDepthStencilView, and ppUnorderedAccessView.
    2. NumViews == D3D11_KEEP_RENDER_TARGETS_AND_DEPTH_STENCIL

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only UAVs.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • UAVStartSlot + NumUAVs <= 8
      • There must be no conflicts in ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All RTVs in slots >= UAVStartSlot
      • All RTVs that conflict with any UAVs in ppUnorderedAccessView
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppUnorderedAccessView

      OMSetRenderTargetsAndUnorderedAccessViews binds ppUnorderedAccessView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores ppDepthStencilView, and the current depth-stencil view remains bound.

    3. NumUAVs == D3D11_KEEP_UNORDERED_ACCESS_VIEWS

      In this situation, OMSetRenderTargetsAndUnorderedAccessViews binds only RTVs and DSV.

      The following conditions must be true for OMSetRenderTargetsAndUnorderedAccessViews to succeed and for the runtime to pass the bind information to the driver:

      • NumViews <= 8
      • There must be no conflicts in ppRenderTargetViews.
      • ppDepthStencilView must match the render-target views. For more information about resource views, see Introduction to a Resource in Direct3D 11.

      OMSetRenderTargetsAndUnorderedAccessViews unbinds the following items:

      • All UAVs in slots < NumViews
      • All UAVs that conflict with any RTVs in ppRenderTargetViews
      • All currently bound resources (SOTargets, CS UAVs, SRVs) that conflict with ppRenderTargetViews

      OMSetRenderTargetsAndUnorderedAccessViews binds ppRenderTargetViews and ppDepthStencilView.

      OMSetRenderTargetsAndUnorderedAccessViews ignores UAVStartSlot.

    +
    + + ff476465 + void ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[In, Buffer, Optional] const void** ppRenderTargetViews,[In, Optional] ID3D11DepthStencilView* pDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[In, Buffer, Optional] const void** ppUnorderedAccessViews,[In, Buffer, Optional] const unsigned int* pUAVInitialCounts) + ID3D11DeviceContext::OMSetRenderTargetsAndUnorderedAccessViews +
    + + +

    Set the blend state of the output-merger stage.

    +
    +

    Pointer to a blend-state interface (see ). Passing in null implies a default blend state. See remarks for further details.

    +

    Array of blend factors, one for each RGBA component. This requires a blend state object that specifies the option.

    +

    32-bit sample coverage. The default value is 0xffffffff. See remarks.

    + +

    Blend state is used by the output-merger stage to determine how to blend together two pixel values. The two values are commonly the current pixel value and the pixel value already in the output render target. Use the blend operation to control where the two pixel values come from and how they are mathematically combined.

    To create a blend-state interface, call .

    Passing in null for the blend-state interface indicates to the runtime to set a default blending state. The following table indicates the default blending parameters.

    StateDefault Value
    AlphaToCoverageEnable
    BlendEnable[8]
    SrcBlend
    DstBlend
    BlendOp
    SrcBlendAlpha
    DstBlendAlpha
    BlendOpAlpha
    RenderTargetWriteMask[8][8]

    ?

    A sample mask determines which samples get updated in all the active render targets. The mapping of bits in a sample mask to samples in a multisample render target is the responsibility of an individual application. A sample mask is always applied; it is independent of whether multisampling is enabled, and does not depend on whether an application uses multisample render targets.

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476462 + void ID3D11DeviceContext::OMSetBlendState([In, Optional] ID3D11BlendState* pBlendState,[In, Optional] const SHARPDX_COLOR4* BlendFactor,[In] unsigned int SampleMask) + ID3D11DeviceContext::OMSetBlendState +
    + + +

    Sets the depth-stencil state of the output-merger stage.

    +
    +

    Pointer to a depth-stencil state interface (see ) to bind to the device. Set this to null to use the default state listed in .

    +

    Reference value to perform against when doing a depth-stencil test. See remarks.

    + +

    To create a depth-stencil state interface, call .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476463 + void ID3D11DeviceContext::OMSetDepthStencilState([In, Optional] ID3D11DepthStencilState* pDepthStencilState,[In] unsigned int StencilRef) + ID3D11DeviceContext::OMSetDepthStencilState +
    + + +

    Get references to the resources bound to the output-merger stage.

    +
    +

    Number of render targets to retrieve.

    +

    Pointer to an array of s which represent render target views. Specify null for this parameter when retrieval of a render target is not needed.

    +

    Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not needed.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476460 + void ID3D11DeviceContext::OMGetRenderTargets([In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView) + ID3D11DeviceContext::OMGetRenderTargets +
    + + +

    Get references to the resources bound to the output-merger stage.

    +
    +

    The number of render-target views to retrieve.

    +

    Pointer to an array of s, which represent render-target views. Specify null for this parameter when retrieval of render-target views is not required.

    +

    Pointer to a , which represents a depth-stencil view. Specify null for this parameter when retrieval of the depth-stencil view is not required.

    +

    Index into a zero-based array to begin retrieving unordered-access views (ranges from 0 to - 1). For pixel shaders UAVStartSlot should be equal to the number of render-target views that are bound.

    +

    Number of unordered-access views to return in ppUnorderedAccessViews. This number ranges from 0 to - UAVStartSlot.

    +

    Pointer to an array of s, which represent unordered-access views that are retrieved. Specify null for this parameter when retrieval of unordered-access views is not required.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476461 + void ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews([In] unsigned int NumRTVs,[Out, Buffer, Optional] ID3D11RenderTargetView** ppRenderTargetViews,[Out, Optional] ID3D11DepthStencilView** ppDepthStencilView,[In] unsigned int UAVStartSlot,[In] unsigned int NumUAVs,[Out, Buffer, Optional] ID3D11UnorderedAccessView** ppUnorderedAccessViews) + ID3D11DeviceContext::OMGetRenderTargetsAndUnorderedAccessViews +
    + + +

    Get the blend state of the output-merger stage.

    +
    +

    Address of a reference to a blend-state interface (see ).

    +

    Array of blend factors, one for each RGBA component.

    +

    Pointer to a sample mask.

    + +

    The reference count of the returned interface will be incremented by one when the blend state is retrieved. Applications must release returned reference(s) when they are no longer needed, or else there will be a memory leak.

    +
    + + ff476458 + void ID3D11DeviceContext::OMGetBlendState([Out, Optional] ID3D11BlendState** ppBlendState,[Out, Optional] SHARPDX_COLOR4* BlendFactor,[Out, Optional] unsigned int* pSampleMask) + ID3D11DeviceContext::OMGetBlendState +
    + + +

    Gets the depth-stencil state of the output-merger stage.

    +
    +

    Address of a reference to a depth-stencil state interface (see ) to be filled with information from the device.

    +

    Pointer to the stencil reference value used in the depth-stencil test.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476459 + void ID3D11DeviceContext::OMGetDepthStencilState([Out, Optional] ID3D11DepthStencilState** ppDepthStencilState,[Out, Optional] unsigned int* pStencilRef) + ID3D11DeviceContext::OMGetDepthStencilState +
    + + + Gets or sets the blend factor. + + The blend factor. + + + + Gets or sets the blend sample mask. + + The blend sample mask. + + + + Gets or sets the state of the blend. + + The state of the blend. + + + + Gets or sets the depth stencil reference. + + The depth stencil reference. + + + + Gets or sets the state of the depth stencil. + + The state of the depth stencil. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports + + + + Get the array of {{viewports}} bound to the {{rasterizer stage}} + + An array of viewports (see ). + void RSGetViewports([InOut] int* NumViewports,[Out, Buffer, Optional] D3D10_VIEWPORT* pViewports) + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects + + + + Get the array of {{scissor rectangles}} bound to the {{rasterizer stage}}. + + An array of scissor rectangles (see ). + void RSGetScissorRects([InOut] int* NumRects,[Out, Buffer, Optional] D3D10_RECT* pRects) + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects + + + + Binds a single scissor rectangle to the rasterizer stage. + + The left. + The top. + The right. + The bottom. + +

    All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

    The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

    Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

    Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

    +
    + ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
    + + + Binds a set of scissor rectangles to the rasterizer stage. + + The set of scissor rectangles to bind. + +

    All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

    The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

    Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

    Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

    +
    + ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
    + + + Binds a single viewport to the rasterizer stage. + + The x coord of the viewport. + The x coord of the viewport. + The width. + The height. + The min Z. + The max Z. + +

    All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

    Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

    +
    + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
    + + + Binds a single viewport to the rasterizer stage. + + The viewport. + +

    All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

    Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

    +
    + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
    + + + Binds a set of viewports to the rasterizer stage. + + The set of viewports to bind. + +

    All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

    Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

    +
    + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Set the rasterizer state for the rasterizer stage of the pipeline.

    +
    + No documentation. + +

    To create a rasterizer state interface, call .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476479 + void ID3D11DeviceContext::RSSetState([In, Optional] ID3D11RasterizerState* pRasterizerState) + ID3D11DeviceContext::RSSetState +
    + + +

    Bind an array of viewports to the rasterizer stage of the pipeline.

    +
    +

    Number of viewports to bind.

    +

    An array of structures to bind to the device. See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11 and Direct3D 10.

    + +

    All viewports must be set atomically as one operation. Any viewports not defined by the call are disabled.

    Which viewport to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader; if a geometry shader does not specify the semantic, Direct3D will use the first viewport in the array.

    +
    + + ff476480 + void ID3D11DeviceContext::RSSetViewports([In] unsigned int NumViewports,[In, Buffer, Optional] const void* pViewports) + ID3D11DeviceContext::RSSetViewports +
    + + +

    Bind an array of scissor rectangles to the rasterizer stage.

    +
    +

    Number of scissor rectangles to bind.

    +

    An array of scissor rectangles (see D3D11_RECT).

    + +

    All scissor rects must be set atomically as one operation. Any scissor rects not defined by the call are disabled.

    The scissor rectangles will only be used if ScissorEnable is set to true in the rasterizer state (see ).

    Which scissor rectangle to use is determined by the SV_ViewportArrayIndex semantic output by a geometry shader (see shader semantic syntax). If a geometry shader does not make use of the SV_ViewportArrayIndex semantic then Direct3D will use the first scissor rectangle in the array.

    Each scissor rectangle in the array corresponds to a viewport in an array of viewports (see ).

    +
    + + ff476478 + void ID3D11DeviceContext::RSSetScissorRects([In] unsigned int NumRects,[In, Buffer, Optional] const void* pRects) + ID3D11DeviceContext::RSSetScissorRects +
    + + +

    Get the rasterizer state from the rasterizer stage of the pipeline.

    +
    + No documentation. + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476476 + void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) + ID3D11DeviceContext::RSGetState +
    + + +

    Get the array of viewports bound to the rasterizer stage

    +
    +

    The input specifies the number of viewports (ranges from 0 to D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) in pViewports, the output contains the actual number of viewports returned. If pViewports is null, this will be filled with the number of viewports currently bound.

    +

    An array of structures that are bound to the device. If the number of viewports (in pNumViewports) is greater than the actual number of viewports currently bound, then unused members of the array will contain 0. See the structure page for details about how the viewport size is dependent on the device feature level which has changed between Direct3D 11 and Direct3D 10.

    + + ff476477 + void ID3D11DeviceContext::RSGetViewports([InOut] unsigned int* pNumViewports,[Out, Buffer, Optional] D3D11_VIEWPORT* pViewports) + ID3D11DeviceContext::RSGetViewports +
    + + +

    Get the array of scissor rectangles bound to the rasterizer stage.

    +
    +

    The number of scissor rectangles (ranges between 0 and D3D11_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) bound; set pRects to null to use pNumRects to see how many rectangles would be returned.

    +

    An array of scissor rectangles (see D3D11_RECT). If NumRects is greater than the number of scissor rects currently bound, then unused members of the array will contain 0.

    + + ff476475 + void ID3D11DeviceContext::RSGetScissorRects([InOut] unsigned int* pNumRects,[Out, Buffer, Optional] RECT* pRects) + ID3D11DeviceContext::RSGetScissorRects +
    + + +

    Get or sets the rasterizer state from the rasterizer stage of the pipeline.

    +
    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476476 + RSGetState / RSSetState + RSGetState + void ID3D11DeviceContext::RSGetState([Out] ID3D11RasterizerState** ppRasterizerState) +
    + + +

    A domain-shader interface manages an executable program (a domain shader) that controls the domain-shader stage.

    +
    + +

    The domain-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

    To create a domain-shader interface, call . Before using a domain shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476535 + ID3D11DomainShader + ID3D11DomainShader +
    + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Optional flags that control the behavior of .

    +
    + + ff476084 + D3D11_ASYNC_GETDATA_FLAG + D3D11_ASYNC_GETDATA_FLAG +
    + + + No documentation. + + + D3D11_ASYNC_GETDATA_DONOTFLUSH + D3D11_ASYNC_GETDATA_DONOTFLUSH + + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the type of Microsoft Direct3D authenticated channel.

    +
    + + hh447599 + D3D11_AUTHENTICATED_CHANNEL_TYPE + D3D11_AUTHENTICATED_CHANNEL_TYPE +
    + + +

    Direct3D?11 channel. This channel provides communication with the Direct3D runtime.

    +
    + + hh447599 + D3D11_AUTHENTICATED_CHANNEL_D3D11 + D3D11_AUTHENTICATED_CHANNEL_D3D11 +
    + + +

    Software driver channel. This channel provides communication with a driver that implements content protection mechanisms in software.

    +
    + + hh447599 + D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE + D3D11_AUTHENTICATED_CHANNEL_DRIVER_SOFTWARE +
    + + +

    Hardware driver channel. This channel provides communication with a driver that implements content protection mechanisms in the GPU hardware.

    +
    + + hh447599 + D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE + D3D11_AUTHENTICATED_CHANNEL_DRIVER_HARDWARE +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies the type of process that is identified in the structure.

    +
    + + hh447606 + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE +
    + + + No documentation. + + + D3D11_PROCESSIDTYPE_UNKNOWN + D3D11_PROCESSIDTYPE_UNKNOWN + + + + No documentation. + + + D3D11_PROCESSIDTYPE_DWM + D3D11_PROCESSIDTYPE_DWM + + + + No documentation. + + + D3D11_PROCESSIDTYPE_HANDLE + D3D11_PROCESSIDTYPE_HANDLE + + + +

    Identifies how to bind a resource to the pipeline.

    +
    + +

    In general, binding flags can be combined using a logical OR (except the constant-buffer flag); however, you should use a single flag to allow the device to optimize the resource usage.

    This enumeration is used by a:

    • Buffer description when creating a buffer.
    • Texture description when creating a texture (see or or ).

    A shader-resource buffer is NOT a constant buffer; rather, it is a texture or buffer resource that is bound to a shader, that contains texture or buffer data (it is not limited to a single element type in the buffer). A shader-resource buffer is created with the flag and is bound to the pipeline using one of these APIs: , , or . Furthermore, a shader-resource buffer cannot use the flag.

    +
    + + ff476085 + D3D11_BIND_FLAG + D3D11_BIND_FLAG +
    + + +

    Bind a buffer as a vertex buffer to the input-assembler stage.

    +
    + + ff476085 + D3D11_BIND_VERTEX_BUFFER + D3D11_BIND_VERTEX_BUFFER +
    + + +

    Bind a buffer as an index buffer to the input-assembler stage.

    +
    + + ff476085 + D3D11_BIND_INDEX_BUFFER + D3D11_BIND_INDEX_BUFFER +
    + + +

    Bind a buffer as a constant buffer to a shader stage; this flag may NOT be combined with any other bind flag.

    +
    + + ff476085 + D3D11_BIND_CONSTANT_BUFFER + D3D11_BIND_CONSTANT_BUFFER +
    + + +

    Bind a buffer or texture to a shader stage; this flag cannot be used with the flag.

    +
    + + ff476085 + D3D11_BIND_SHADER_RESOURCE + D3D11_BIND_SHADER_RESOURCE +
    + + +

    Bind an output buffer for the stream-output stage.

    +
    + + ff476085 + D3D11_BIND_STREAM_OUTPUT + D3D11_BIND_STREAM_OUTPUT +
    + + +

    Bind a texture as a render target for the output-merger stage.

    +
    + + ff476085 + D3D11_BIND_RENDER_TARGET + D3D11_BIND_RENDER_TARGET +
    + + +

    Bind a texture as a depth-stencil target for the output-merger stage.

    +
    + + ff476085 + D3D11_BIND_DEPTH_STENCIL + D3D11_BIND_DEPTH_STENCIL +
    + + +

    Bind an unordered access resource.

    +
    + + ff476085 + D3D11_BIND_UNORDERED_ACCESS + D3D11_BIND_UNORDERED_ACCESS +
    + + +

    Set this flag to indicate that a 2D texture is used to receive output from the decoder API. The common way to create resources for a decoder output is by calling the method to create an array of 2D textures. However, you cannot use texture arrays that are created with this flag in calls to .

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476085 + D3D11_BIND_DECODER + D3D11_BIND_DECODER +
    + + +

    Set this flag to indicate that a 2D texture is used to receive input from the video encoder API. The common way to create resources for a video encoder is by calling the method to create an array of 2D textures. However, you cannot use texture arrays that are created with this flag in calls to .

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476085 + D3D11_BIND_VIDEO_ENCODER + D3D11_BIND_VIDEO_ENCODER +
    + + + None. + + + None + None + + + +

    RGB or alpha blending operation.

    +
    + +

    The runtime implements RGB blending and alpha blending separately. Therefore, blend state requires separate blend operations for RGB data and alpha data. These blend operations are specified in a blend description. The two sources?Source 1, called SrcBlend and SrcBlendAlpha, and Source 2, called DestBlend and DestBlendAlpha?are shown in the blending block diagram.

    +
    + + ff476088 + D3D11_BLEND_OP + D3D11_BLEND_OP +
    + + +

    Add source 1 and source 2.

    +
    + + ff476088 + D3D11_BLEND_OP_ADD + D3D11_BLEND_OP_ADD +
    + + +

    Subtract source 1 from source 2.

    +
    + + ff476088 + D3D11_BLEND_OP_SUBTRACT + D3D11_BLEND_OP_SUBTRACT +
    + + +

    Subtract source 2 from source 1.

    +
    + + ff476088 + D3D11_BLEND_OP_REV_SUBTRACT + D3D11_BLEND_OP_REV_SUBTRACT +
    + + +

    Find the minimum of source 1 and source 2.

    +
    + + ff476088 + D3D11_BLEND_OP_MIN + D3D11_BLEND_OP_MIN +
    + + +

    Find the maximum of source 1 and source 2.

    +
    + + ff476088 + D3D11_BLEND_OP_MAX + D3D11_BLEND_OP_MAX +
    + + +

    Applies to: desktop apps | Metro style apps

    Blend options. A blend option identifies the data source and an optional pre-blend operation.

    +
    + +

    Blend operations are specified in a blend description.

    +
    + + ff476086 + D3D11_BLEND + D3D11_BLEND +
    + + +

    The data source is the color black (0, 0, 0, 0). No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_ZERO + D3D11_BLEND_ZERO +
    + + +

    The data source is the color white (1, 1, 1, 1). No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_ONE + D3D11_BLEND_ONE +
    + + +

    The data source is color data (RGB) from a pixel shader. No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_SRC_COLOR + D3D11_BLEND_SRC_COLOR +
    + + +

    The data source is color data (RGB) from a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB.

    +
    + + ff476086 + D3D11_BLEND_INV_SRC_COLOR + D3D11_BLEND_INV_SRC_COLOR +
    + + +

    The data source is alpha data (A) from a pixel shader. No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_SRC_ALPHA + D3D11_BLEND_SRC_ALPHA +
    + + +

    The data source is alpha data (A) from a pixel shader. The pre-blend operation inverts the data, generating 1 - A.

    +
    + + ff476086 + D3D11_BLEND_INV_SRC_ALPHA + D3D11_BLEND_INV_SRC_ALPHA +
    + + +

    The data source is alpha data from a rendertarget. No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_DEST_ALPHA + D3D11_BLEND_DEST_ALPHA +
    + + +

    The data source is alpha data from a rendertarget. The pre-blend operation inverts the data, generating 1 - A.

    +
    + + ff476086 + D3D11_BLEND_INV_DEST_ALPHA + D3D11_BLEND_INV_DEST_ALPHA +
    + + +

    The data source is color data from a rendertarget. No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_DEST_COLOR + D3D11_BLEND_DEST_COLOR +
    + + +

    The data source is color data from a rendertarget. The pre-blend operation inverts the data, generating 1 - RGB.

    +
    + + ff476086 + D3D11_BLEND_INV_DEST_COLOR + D3D11_BLEND_INV_DEST_COLOR +
    + + +

    The data source is alpha data from a pixel shader. The pre-blend operation clamps the data to 1 or less. +

    +
    + + ff476086 + D3D11_BLEND_SRC_ALPHA_SAT + D3D11_BLEND_SRC_ALPHA_SAT +
    + + +

    The data source is the blend factor set with . No pre-blend operation.

    +
    + + ff476086 + D3D11_BLEND_BLEND_FACTOR + D3D11_BLEND_BLEND_FACTOR +
    + + +

    The data source is the blend factor set with . The pre-blend operation inverts the blend factor, generating 1 - blend_factor.

    +
    + + ff476086 + D3D11_BLEND_INV_BLEND_FACTOR + D3D11_BLEND_INV_BLEND_FACTOR +
    + + +

    The data sources are both color data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.

    +
    + + ff476086 + D3D11_BLEND_SRC1_COLOR + D3D11_BLEND_SRC1_COLOR +
    + + +

    The data sources are both color data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - RGB. This options supports dual-source color blending.

    +
    + + ff476086 + D3D11_BLEND_INV_SRC1_COLOR + D3D11_BLEND_INV_SRC1_COLOR +
    + + +

    The data sources are alpha data output by a pixel shader. There is no pre-blend operation. This options supports dual-source color blending.

    +
    + + ff476086 + D3D11_BLEND_SRC1_ALPHA + D3D11_BLEND_SRC1_ALPHA +
    + + +

    The data sources are alpha data output by a pixel shader. The pre-blend operation inverts the data, generating 1 - A. This options supports dual-source color blending.

    +
    + + ff476086 + D3D11_BLEND_INV_SRC1_ALPHA + D3D11_BLEND_INV_SRC1_ALPHA +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies the type of I/O bus that is used by the graphics adapter.

    +
    + + hh447628 + D3D11_BUS_TYPE + D3D11_BUS_TYPE +
    + + +

    Indicates a type of bus other than the types listed here. +

    +
    + + hh447628 + D3D11_BUS_TYPE_OTHER + D3D11_BUS_TYPE_OTHER +
    + + +

    PCI bus. +

    +
    + + hh447628 + D3D11_BUS_TYPE_PCI + D3D11_BUS_TYPE_PCI +
    + + +

    PCI-X bus. +

    +
    + + hh447628 + D3D11_BUS_TYPE_PCIX + D3D11_BUS_TYPE_PCIX +
    + + +

    PCI Express bus. +

    +
    + + hh447628 + D3D11_BUS_TYPE_PCIEXPRESS + D3D11_BUS_TYPE_PCIEXPRESS +
    + + +

    Accelerated Graphics Port (AGP) bus. +

    +
    + + hh447628 + D3D11_BUS_TYPE_AGP + D3D11_BUS_TYPE_AGP +
    + + +

    The implementation for the graphics adapter is in a motherboard chipset's north bridge. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET + D3D11_BUS_IMPL_MODIFIER_INSIDE_OF_CHIPSET +
    + + +

    Indicates that the graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard, and all of the graphics adapter's chips are soldered to the motherboard. This flag implies that data never goes over an expansion bus (such as PCI or AGP) when it is transferred from main memory to the graphics adapter.

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP + D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_CHIP +
    + + +

    The graphics adapter is connected to a motherboard chipset's north bridge by tracks on the motherboard, and all of the graphics adapter's chips are connected through sockets to the motherboard. +

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET + D3D11_BUS_IMPL_MODIFIER_TRACKS_ON_MOTHER_BOARD_TO_SOCKET +
    + + +

    The graphics adapter is connected to the motherboard through a daughterboard connector. +

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR + D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR +
    + + +

    The graphics adapter is connected to the motherboard through a daughterboard connector, and the graphics adapter is inside an enclosure that is not user accessible. +

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE + D3D11_BUS_IMPL_MODIFIER_DAUGHTER_BOARD_CONNECTOR_INSIDE_OF_NUAE +
    + + +

    One of the D3D11_BUS_IMPL_MODIFIER_Xxx flags is set. +

    +
    + + hh447628 + D3D11_BUS_IMPL_MODIFIER_NON_STANDARD + D3D11_BUS_IMPL_MODIFIER_NON_STANDARD +
    + + +

    Identify which components of each pixel of a render target are writable during blending.

    +
    + +

    These flags can be combined with a bitwise OR.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE + D3D11_COLOR_WRITE_ENABLE +
    + + +

    Allow data to be stored in the red component.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE_RED + D3D11_COLOR_WRITE_ENABLE_RED +
    + + +

    Allow data to be stored in the green component.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE_GREEN + D3D11_COLOR_WRITE_ENABLE_GREEN +
    + + +

    Allow data to be stored in the blue component.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE_BLUE + D3D11_COLOR_WRITE_ENABLE_BLUE +
    + + +

    Allow data to be stored in the alpha component.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE_ALPHA + D3D11_COLOR_WRITE_ENABLE_ALPHA +
    + + +

    Allow data to be stored in all components.

    +
    + + ff476100 + D3D11_COLOR_WRITE_ENABLE_ALL + D3D11_COLOR_WRITE_ENABLE_ALL +
    + + +

    Comparison options.

    +
    + +

    A comparison option determines whether how the runtime compares source (new) data against destination (existing) data before storing the new data. The comparison option is declared in a description before an object is created. The API allows you to set a comparison option for a depth-stencil buffer (see ), depth-stencil operations (see ), or sampler state (see ).

    +
    + + ff476101 + D3D11_COMPARISON_FUNC + D3D11_COMPARISON_FUNC +
    + + +

    Never pass the comparison.

    +
    + + ff476101 + D3D11_COMPARISON_NEVER + D3D11_COMPARISON_NEVER +
    + + +

    If the source data is less than the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_LESS + D3D11_COMPARISON_LESS +
    + + +

    If the source data is equal to the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_EQUAL + D3D11_COMPARISON_EQUAL +
    + + +

    If the source data is less than or equal to the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_LESS_EQUAL + D3D11_COMPARISON_LESS_EQUAL +
    + + +

    If the source data is greater than the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_GREATER + D3D11_COMPARISON_GREATER +
    + + +

    If the source data is not equal to the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_NOT_EQUAL + D3D11_COMPARISON_NOT_EQUAL +
    + + +

    If the source data is greater than or equal to the destination data, the comparison passes.

    +
    + + ff476101 + D3D11_COMPARISON_GREATER_EQUAL + D3D11_COMPARISON_GREATER_EQUAL +
    + + +

    Always pass the comparison.

    +
    + + ff476101 + D3D11_COMPARISON_ALWAYS + D3D11_COMPARISON_ALWAYS +
    + + +

    Unordered resource support options for a compute shader resource (see ).

    +
    + + ff476135 + D3D11_FORMAT_SUPPORT2 + D3D11_FORMAT_SUPPORT2 +
    + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_ADD + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_BITWISE_OPS + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_COMPARE_STORE_OR_COMPARE_EXCHANGE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_EXCHANGE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_SIGNED_MIN_OR_MAX + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX + D3D11_FORMAT_SUPPORT2_UAV_ATOMIC_UNSIGNED_MIN_OR_MAX + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD + D3D11_FORMAT_SUPPORT2_UAV_TYPED_LOAD + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE + D3D11_FORMAT_SUPPORT2_UAV_TYPED_STORE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP + D3D11_FORMAT_SUPPORT2_OUTPUT_MERGER_LOGIC_OP + + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains flags that describe content-protection capabilities.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS + D3D11_CONTENT_PROTECTION_CAPS +
    + + +

    The encryption is implemented in software by the driver.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE + D3D11_CONTENT_PROTECTION_CAPS_SOFTWARE +
    + + +

    The encryption is implemented in hardware by the GPU. +

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_HARDWARE + D3D11_CONTENT_PROTECTION_CAPS_HARDWARE +
    + + +

    Content protection is always applied to a protected surface, regardless of whether the application explicitly enables protection.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON + D3D11_CONTENT_PROTECTION_CAPS_PROTECTION_ALWAYS_ON +
    + + +

    The driver can use partially encrypted buffers. If this capability is not present, the entire buffer must be either encrypted or clear.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION + D3D11_CONTENT_PROTECTION_CAPS_PARTIAL_DECRYPTION +
    + + +

    The driver can encrypt data using a separate content key that is encrypted using the session key.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY + D3D11_CONTENT_PROTECTION_CAPS_CONTENT_KEY +
    + + +

    The driver can refresh the session key without renegotiating the key.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY + D3D11_CONTENT_PROTECTION_CAPS_FRESHEN_SESSION_KEY +
    + + +

    The driver can read back encrypted data from a protected surface. For more information, see .

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK +
    + + +

    The driver requires a separate key to read encrypted data from a protected surface.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPTED_READ_BACK_KEY +
    + + +

    If the encryption type is D3DCRYPTOTYPE_AES128_CTR, the application must use a sequential count in the structure. For more information, see the remarks for .

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV + D3D11_CONTENT_PROTECTION_CAPS_SEQUENTIAL_CTR_IV +
    + + +

    The driver supports encrypted slice data, but does not not support any other encrypted data in the DXVA 2 compressed buffer. The caller should not encrypt any data within the buffer other than the slice data.

    Note??The driver should only report this flag for the specific DXVA profiles that have this limitation.

    +
    + + hh447629 + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY + D3D11_CONTENT_PROTECTION_CAPS_ENCRYPT_SLICEDATA_ONLY +
    + + + No documentation. + + + D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT + D3D11_CONTENT_PROTECTION_CAPS_DECRYPTION_BLT + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Note??This enumeration is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Specifies how to handle the existing contents of a resource during a copy or update operation of a region within that resource.

    +
    + + hh404451 + D3D11_COPY_FLAGS + D3D11_COPY_FLAGS +
    + + +

    The existing contents of the resource cannot be overwritten.

    +
    + + hh404451 + D3D11_COPY_NO_OVERWRITE + D3D11_COPY_NO_OVERWRITE +
    + + +

    The existing contents of the resource are undefined and can be discarded.

    +
    + + hh404451 + D3D11_COPY_DISCARD + D3D11_COPY_DISCARD +
    + + + None. + + + None + None + + + +

    Describes a counter.

    +
    + +

    This structure is used by , and .

    +
    + + ff476103 + D3D11_COUNTER + D3D11_COUNTER +
    + + +

    Type of counter (see ).

    +
    + + ff476103 + D3D11_COUNTER_DEVICE_DEPENDENT_0 + D3D11_COUNTER_DEVICE_DEPENDENT_0 +
    + + +

    Data type of a performance counter.

    +
    + +

    These flags are an output parameter in .

    +
    + + ff476105 + D3D11_COUNTER_TYPE + D3D11_COUNTER_TYPE +
    + + +

    32-bit floating point.

    +
    + + ff476105 + D3D11_COUNTER_TYPE_FLOAT32 + D3D11_COUNTER_TYPE_FLOAT32 +
    + + +

    16-bit unsigned integer.

    +
    + + ff476105 + D3D11_COUNTER_TYPE_UINT16 + D3D11_COUNTER_TYPE_UINT16 +
    + + +

    32-bit unsigned integer.

    +
    + + ff476105 + D3D11_COUNTER_TYPE_UINT32 + D3D11_COUNTER_TYPE_UINT32 +
    + + +

    64-bit unsigned integer.

    +
    + + ff476105 + D3D11_COUNTER_TYPE_UINT64 + D3D11_COUNTER_TYPE_UINT64 +
    + + +

    Specifies the types of CPU access allowed for a resource.

    +
    + +

    This enumeration is used in , , , .

    Applications may combine one or more of these flags with a logical OR. When possible, create resources with no CPU access flags, as this enables better resource optimiztion.

    +
    + + ff476106 + D3D11_CPU_ACCESS_FLAG + D3D11_CPU_ACCESS_FLAG +
    + + +

    The resource is to be mappable so that the CPU can change its contents. Resources created with this flag cannot be set as outputs of the pipeline and must be created with either dynamic or staging usage (see ).

    +
    + + ff476106 + D3D11_CPU_ACCESS_WRITE + D3D11_CPU_ACCESS_WRITE +
    + + +

    The resource is to be mappable so that the CPU can read its contents. Resources created with this flag cannot be set as either inputs or outputs to the pipeline and must be created with staging usage (see ).

    +
    + + ff476106 + D3D11_CPU_ACCESS_READ + D3D11_CPU_ACCESS_READ +
    + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Describes flags that are used to create a device context state object () with the method.

    +
    + + hh404432 + D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG + D3D11_1_CREATE_DEVICE_CONTEXT_STATE_FLAG +
    + + + No documentation. + + + D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED + D3D11_1_CREATE_DEVICE_CONTEXT_STATE_SINGLETHREADED + + + + None. + + + None + None + + + +

    Indicates triangles facing a particular direction are not drawn.

    +
    + +

    This enumeration is part of a rasterizer-state object description (see ).

    +
    + + ff476108 + D3D11_CULL_MODE + D3D11_CULL_MODE +
    + + +

    Always draw all triangles.

    +
    + + ff476108 + D3D11_CULL_NONE + D3D11_CULL_NONE +
    + + +

    Do not draw triangles that are front-facing.

    +
    + + ff476108 + D3D11_CULL_FRONT + D3D11_CULL_FRONT +
    + + +

    Do not draw triangles that are back-facing.

    +
    + + ff476108 + D3D11_CULL_BACK + D3D11_CULL_BACK +
    + + + No documentation. + + + D3D11_DEBUG_FEATURE_FLAGS + D3D11_DEBUG_FEATURE_FLAGS + + + +

    Specifies the parts of the depth stencil to clear.

    +
    + +

    These flags are used when calling ; the flags can be combined with a bitwise OR.

    +
    + + ff476099 + D3D11_CLEAR_FLAG + D3D11_CLEAR_FLAG +
    + + +

    Clear the depth buffer.

    +
    + + ff476099 + D3D11_CLEAR_DEPTH + D3D11_CLEAR_DEPTH +
    + + +

    Clear the stencil buffer.

    +
    + + ff476099 + D3D11_CLEAR_STENCIL + D3D11_CLEAR_STENCIL +
    + + +

    Specifies how to access a resource used in a depth-stencil view.

    +
    + +

    This enumeration is used in to create a depth-stencil view.

    +
    + + ff476115 + D3D11_DSV_DIMENSION + D3D11_DSV_DIMENSION +
    + + +

    is not a valid value for and is not used.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_UNKNOWN + D3D11_DSV_DIMENSION_UNKNOWN +
    + + +

    The resource will be accessed as a 1D texture.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE1D + D3D11_DSV_DIMENSION_TEXTURE1D +
    + + +

    The resource will be accessed as an array of 1D textures.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE1DARRAY + D3D11_DSV_DIMENSION_TEXTURE1DARRAY +
    + + +

    The resource will be accessed as a 2D texture.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2D + D3D11_DSV_DIMENSION_TEXTURE2D +
    + + +

    The resource will be accessed as an array of 2D textures.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DARRAY + D3D11_DSV_DIMENSION_TEXTURE2DARRAY +
    + + +

    The resource will be accessed as a 2D texture with multisampling.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DMS + D3D11_DSV_DIMENSION_TEXTURE2DMS +
    + + +

    The resource will be accessed as an array of 2D textures with multisampling.

    +
    + + ff476115 + D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY + D3D11_DSV_DIMENSION_TEXTURE2DMSARRAY +
    + + +

    Depth-stencil view options.

    +
    + +

    This enumeration is used by .

    Limiting a depth-stencil buffer to read-only access allows more than one depth-stencil view to be bound to the pipeline simultaneously, since it is not possible to have a read/write conflicts between separate views.

    +
    + + ff476116 + D3D11_DSV_FLAG + D3D11_DSV_FLAG +
    + + +

    Indicates that depth values are read only.

    +
    + + ff476116 + D3D11_DSV_READ_ONLY_DEPTH + D3D11_DSV_READ_ONLY_DEPTH +
    + + +

    Indicates that stencil values are read only.

    +
    + + ff476116 + D3D11_DSV_READ_ONLY_STENCIL + D3D11_DSV_READ_ONLY_STENCIL +
    + + + None. + + + None + None + + + +

    Identify the portion of a depth-stencil buffer for writing depth data.

    +
    + + ff476113 + D3D11_DEPTH_WRITE_MASK + D3D11_DEPTH_WRITE_MASK +
    + + +

    Turn off writes to the depth-stencil buffer.

    +
    + + ff476113 + D3D11_DEPTH_WRITE_MASK_ZERO + D3D11_DEPTH_WRITE_MASK_ZERO +
    + + +

    Turn on writes to the depth-stencil buffer.

    +
    + + ff476113 + D3D11_DEPTH_WRITE_MASK_ALL + D3D11_DEPTH_WRITE_MASK_ALL +
    + + +

    Device context options.

    +
    + +

    This enumeration is used by .

    +
    + + ff476114 + D3D11_DEVICE_CONTEXT_TYPE + D3D11_DEVICE_CONTEXT_TYPE +
    + + +

    The device context is an immediate context.

    +
    + + ff476114 + D3D11_DEVICE_CONTEXT_IMMEDIATE + D3D11_DEVICE_CONTEXT_IMMEDIATE +
    + + +

    The device context is a deferred context.

    +
    + + ff476114 + D3D11_DEVICE_CONTEXT_DEFERRED + D3D11_DEVICE_CONTEXT_DEFERRED +
    + + +

    Describes parameters that are used to create a device.

    +
    + +

    Device creation flags are used by and D3D11CreateDeviceAndSwapChain.

    An application might dynamically create (and destroy) threads to improve performance especially on a machine with multiple CPU cores. There may be cases, however, when an application needs to prevent extra threads from being created. This can happen when you want to simplify debugging, profile code or develop a tool for instance. For these cases, use to request that the runtime and video driver not create any additional threads that might interfere with the application.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_FLAG + D3D11_CREATE_DEVICE_FLAG +
    + + +

    You should use this flag if your application will only call methods of Direct3D?11 interfaces from a single thread. By default, the object is thread-safe. By using this flag, you can increase performance. However, if you use this flag and your application calls methods of Direct3D?11 interfaces from multiple threads, undefined behavior might result.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_SINGLETHREADED + D3D11_CREATE_DEVICE_SINGLETHREADED +
    + + +

    Creates a device that supports the debug layer.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_DEBUG + D3D11_CREATE_DEVICE_DEBUG +
    + + +

    Note??This flag is not supported in Direct3D?11.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_SWITCH_TO_REF + D3D11_CREATE_DEVICE_SWITCH_TO_REF +
    + + +

    Prevents multiple threads from being created. When this flag is used with a Windows Advanced Rasterization Platform (WARP) device, no additional threads will be created by WARP and all rasterization will occur on the calling thread. This flag is not recommended for general use. See remarks.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS + D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS +
    + + +

    Required for Direct2D interoperability with Direct3D resources.

    +
    + + ff476107 + D3D11_CREATE_DEVICE_BGRA_SUPPORT + D3D11_CREATE_DEVICE_BGRA_SUPPORT +
    + + +

    TBD

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476107 + D3D11_CREATE_DEVICE_DEBUGGABLE + D3D11_CREATE_DEVICE_DEBUGGABLE +
    + + +

    TBD

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476107 + D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY + D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY +
    + + +

    TBD

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476107 + D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT + D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT +
    + + +

    Forces the creation of the Direct3D device to fail if the display driver is not implemented to the WDDM for Windows Developer Preview (WDDM 1.2). When the display driver is not implemented to WDDM 1.2, only a Direct3D device that is created with feature level 9.1, 9.2, or 9.3 supports video; therefore, if this flag is set, the runtime creates the Direct3D device only for feature level 9.1, 9.2, or 9.3. We recommend not to specify this flag for applications that want to favor Direct3D capability over video. If feature level 10 and higher is available, the runtime will use that feature level regardless of video support.

    If this flag is set, device creation on the Basic Render Device (BRD) will succeed regardless of the BRD's missing support for video decode. This is because the Media Foundation video stack operates in software mode on BRD. In this situation, if you force the video stack to create the Direct3D device twice (create the device once with this flag, next discover BRD, then again create the device without the flag), you actually degrade performance.

    If you attempt to create a Direct3D device with driver type , , or , device creation fails at any feature level because none of the associated drivers provide video capability. If you attempt to create a Direct3D device with driver type , device creation succeeds to allow software fallback for video.

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476107 + D3D11_CREATE_DEVICE_VIDEO_SUPPORT + D3D11_CREATE_DEVICE_VIDEO_SUPPORT +
    + + + None. + + + None + None + + + +

    Direct3D 11 feature options.

    +
    + +

    This enumeration is used when querying a driver about support for these features by calling . Each value in this enumeration has a corresponding data structure that is required to be passed to the pFeatureSupportData parameter of .

    The following table shows the structures associated with each enumerant.

    EnumerantAssociated Structure

    ?

    +
    + + ff476124 + D3D11_FEATURE + D3D11_FEATURE +
    + + +

    The driver supports multithreading. To see an example of testing a driver for multithread support, see How To: Check for Driver Support.

    +
    + + ff476124 + D3D11_FEATURE_THREADING + D3D11_FEATURE_THREADING +
    + + +

    Supports the use of the double-precision shaders in HLSL.

    +
    + + ff476124 + D3D11_FEATURE_DOUBLES + D3D11_FEATURE_DOUBLES +
    + + +

    Supports the formats in .

    +
    + + ff476124 + D3D11_FEATURE_FORMAT_SUPPORT + D3D11_FEATURE_FORMAT_SUPPORT +
    + + +

    Supports the formats in .

    +
    + + ff476124 + D3D11_FEATURE_FORMAT_SUPPORT2 + D3D11_FEATURE_FORMAT_SUPPORT2 +
    + + +

    Supports compute shaders and raw and structured buffers.

    +
    + + ff476124 + D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS + D3D11_FEATURE_D3D10_X_HARDWARE_OPTIONS +
    + + +

    Supports Direct3D 11.1 feature options.

    Direct3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476124 + D3D11_FEATURE_D3D11_OPTIONS + D3D11_FEATURE_D3D11_OPTIONS +
    + + +

    Supports specific adapter architecture.

    Direct3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476124 + D3D11_FEATURE_ARCHITECTURE_INFO + D3D11_FEATURE_ARCHITECTURE_INFO +
    + + +

    Supports Direct3D?9 feature options.

    Direct3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476124 + D3D11_FEATURE_D3D9_OPTIONS + D3D11_FEATURE_D3D9_OPTIONS +
    + + +

    Supports minimum precision of shaders.

    Direct3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476124 + D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT + D3D11_FEATURE_SHADER_MIN_PRECISION_SUPPORT +
    + + + No documentation. + + + D3D11_FEATURE_D3D9_SHADOW_SUPPORT + D3D11_FEATURE_D3D9_SHADOW_SUPPORT + + + +

    Determines the fill mode to use when rendering triangles.

    +
    + +

    This enumeration is part of a rasterizer-state object description (see ).

    +
    + + ff476131 + D3D11_FILL_MODE + D3D11_FILL_MODE +
    + + +

    Draw lines connecting the vertices. Adjacent vertices are not drawn.

    +
    + + ff476131 + D3D11_FILL_WIREFRAME + D3D11_FILL_WIREFRAME +
    + + +

    Fill the triangles formed by the vertices. Adjacent vertices are not drawn.

    +
    + + ff476131 + D3D11_FILL_SOLID + D3D11_FILL_SOLID +
    + + +

    Types of magnification or minification sampler filters.

    +
    + + ff476133 + D3D11_FILTER + D3D11_FILTER +
    + + +

    Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

    +
    + + ff476133 + D3D11_FILTER_MIN_MAG_MIP_POINT + D3D11_FILTER_MIN_MAG_MIP_POINT +
    + + +

    Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

    +
    + + ff476133 + D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR + D3D11_FILTER_MIN_MAG_POINT_MIP_LINEAR +
    + + + No documentation. + + + D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D11_FILTER_MIN_POINT_MAG_LINEAR_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR + D3D11_FILTER_MIN_POINT_MAG_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT + D3D11_FILTER_MIN_LINEAR_MAG_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D11_FILTER_MIN_LINEAR_MAG_POINT_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT + D3D11_FILTER_MIN_MAG_LINEAR_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_MIN_MAG_MIP_LINEAR + D3D11_FILTER_MIN_MAG_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_ANISOTROPIC + D3D11_FILTER_ANISOTROPIC + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_MAG_POINT_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_POINT_MAG_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT + D3D11_FILTER_COMPARISON_MIN_MAG_LINEAR_MIP_POINT + + + + No documentation. + + + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR + D3D11_FILTER_COMPARISON_MIN_MAG_MIP_LINEAR + + + + No documentation. + + + D3D11_FILTER_COMPARISON_ANISOTROPIC + D3D11_FILTER_COMPARISON_ANISOTROPIC + + + +

    Types of magnification or minification sampler filters.

    +
    + + ff476133 + D3D11_FILTER_TYPE + D3D11_FILTER_TYPE +
    + + +

    Point filtering used as a texture magnification or minification filter. The texel with coordinates nearest to the desired pixel value is used. The texture filter to be used between mipmap levels is nearest-point mipmap filtering. The rasterizer uses the color from the texel of the nearest mipmap texture.

    +
    + + ff476133 + D3D11_FILTER_TYPE_POINT + D3D11_FILTER_TYPE_POINT +
    + + +

    Bilinear interpolation filtering used as a texture magnification or minification filter. A weighted average of a 2 x 2 area of texels surrounding the desired pixel is used. The texture filter to use between mipmap levels is trilinear mipmap interpolation. The rasterizer linearly interpolates pixel color, using the texels of the two nearest mipmap textures.

    +
    + + ff476133 + D3D11_FILTER_TYPE_LINEAR + D3D11_FILTER_TYPE_LINEAR +
    + + +

    Which resources are supported for a given format and given device (see and ).

    +
    + + ff476134 + D3D11_FORMAT_SUPPORT + D3D11_FORMAT_SUPPORT +
    + + + No documentation. + + + D3D11_FORMAT_SUPPORT_BUFFER + D3D11_FORMAT_SUPPORT_BUFFER + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER + D3D11_FORMAT_SUPPORT_IA_VERTEX_BUFFER + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER + D3D11_FORMAT_SUPPORT_IA_INDEX_BUFFER + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SO_BUFFER + D3D11_FORMAT_SUPPORT_SO_BUFFER + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_TEXTURE1D + D3D11_FORMAT_SUPPORT_TEXTURE1D + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_TEXTURE2D + D3D11_FORMAT_SUPPORT_TEXTURE2D + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_TEXTURE3D + D3D11_FORMAT_SUPPORT_TEXTURE3D + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_TEXTURECUBE + D3D11_FORMAT_SUPPORT_TEXTURECUBE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_LOAD + D3D11_FORMAT_SUPPORT_SHADER_LOAD + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_COMPARISON + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + D3D11_FORMAT_SUPPORT_SHADER_SAMPLE_MONO_TEXT + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_MIP + D3D11_FORMAT_SUPPORT_MIP + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_MIP_AUTOGEN + D3D11_FORMAT_SUPPORT_MIP_AUTOGEN + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_RENDER_TARGET + D3D11_FORMAT_SUPPORT_RENDER_TARGET + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_BLENDABLE + D3D11_FORMAT_SUPPORT_BLENDABLE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_DEPTH_STENCIL + D3D11_FORMAT_SUPPORT_DEPTH_STENCIL + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_CPU_LOCKABLE + D3D11_FORMAT_SUPPORT_CPU_LOCKABLE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RESOLVE + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_DISPLAY + D3D11_FORMAT_SUPPORT_DISPLAY + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + D3D11_FORMAT_SUPPORT_CAST_WITHIN_BIT_LAYOUT + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + D3D11_FORMAT_SUPPORT_MULTISAMPLE_RENDERTARGET + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD + D3D11_FORMAT_SUPPORT_MULTISAMPLE_LOAD + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_GATHER + D3D11_FORMAT_SUPPORT_SHADER_GATHER + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST + D3D11_FORMAT_SUPPORT_BACK_BUFFER_CAST + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW + D3D11_FORMAT_SUPPORT_TYPED_UNORDERED_ACCESS_VIEW + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON + D3D11_FORMAT_SUPPORT_SHADER_GATHER_COMPARISON + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_DECODER_OUTPUT + D3D11_FORMAT_SUPPORT_DECODER_OUTPUT + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT + D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_OUTPUT + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT + D3D11_FORMAT_SUPPORT_VIDEO_PROCESSOR_INPUT + + + + No documentation. + + + D3D11_FORMAT_SUPPORT_VIDEO_ENCODER + D3D11_FORMAT_SUPPORT_VIDEO_ENCODER + + + + None. + + + None + None + + + +

    Type of data contained in an input slot.

    +
    + +

    Use these values to specify the type of data for a particular input element (see ) of an input-layout object.

    +
    + + ff476179 + D3D11_INPUT_CLASSIFICATION + D3D11_INPUT_CLASSIFICATION +
    + + +

    Input data is per-vertex data.

    +
    + + ff476179 + D3D11_INPUT_PER_VERTEX_DATA + D3D11_INPUT_PER_VERTEX_DATA +
    + + +

    Input data is per-instance data.

    +
    + + ff476179 + D3D11_INPUT_PER_INSTANCE_DATA + D3D11_INPUT_PER_INSTANCE_DATA +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This enumeration is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Specifies logical operations to configure for a render target.

    +
    + + hh404484 + D3D11_LOGIC_OP + D3D11_LOGIC_OP +
    + + +

    Clears the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_CLEAR + D3D11_LOGIC_OP_CLEAR +
    + + +

    Sets the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_SET + D3D11_LOGIC_OP_SET +
    + + +

    Copys the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_COPY + D3D11_LOGIC_OP_COPY +
    + + +

    Performs an inverted-copy of the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_COPY_INVERTED + D3D11_LOGIC_OP_COPY_INVERTED +
    + + +

    No operation is performed on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_NOOP + D3D11_LOGIC_OP_NOOP +
    + + +

    Inverts the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_INVERT + D3D11_LOGIC_OP_INVERT +
    + + +

    Performs a logical AND operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_AND + D3D11_LOGIC_OP_AND +
    + + +

    Performs a logical NAND operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_NAND + D3D11_LOGIC_OP_NAND +
    + + +

    Performs a logical OR operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_OR + D3D11_LOGIC_OP_OR +
    + + +

    Performs a logical NOR operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_NOR + D3D11_LOGIC_OP_NOR +
    + + +

    Performs a logical XOR operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_XOR + D3D11_LOGIC_OP_XOR +
    + + +

    Performs a logical equal operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_EQUIV + D3D11_LOGIC_OP_EQUIV +
    + + +

    Performs a logical AND and reverse operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_AND_REVERSE + D3D11_LOGIC_OP_AND_REVERSE +
    + + +

    Performs a logical AND and invert operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_AND_INVERTED + D3D11_LOGIC_OP_AND_INVERTED +
    + + +

    Performs a logical OR and reverse operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_OR_REVERSE + D3D11_LOGIC_OP_OR_REVERSE +
    + + +

    Performs a logical OR and invert operation on the render target.

    +
    + + hh404484 + D3D11_LOGIC_OP_OR_INVERTED + D3D11_LOGIC_OP_OR_INVERTED +
    + + +

    Specifies how the CPU should respond when an application calls the method on a resource that is being used by the GPU.

    +
    + +

    This enumeration is used by .

    cannot be used with or D3D11_MAP_WRITE_NOOVERWRITE.

    +
    + + ff476183 + D3D11_MAP_FLAG + D3D11_MAP_FLAG +
    + + + No documentation. + + + D3D11_MAP_FLAG_DO_NOT_WAIT + D3D11_MAP_FLAG_DO_NOT_WAIT + + + + None. + + + None + None + + + +

    Identifies a resource to be accessed for reading and writing by the CPU. Applications may combine one or more of these flags.

    +
    + +

    This enumeration is used in .

    These remarks are divided into the following topics:

    • Meaning
    • Common
    Meaning of

    signifies that the application promises not to write to data that the input assembler (IA) stage is using. In exchange, the GPU allows the application to write to other parts of the same buffer. The application must ensure that it does not write over any data in use by the IA stage.

    For example, consider the buffer illustrated in the following diagram. If a Draw call has been issued that uses vertices 4-6, then an application that calls Map on this buffer must ensure that it does not write to the vertices that the Draw call will access during rendering.

    However, ensuring this can be difficult, because the GPU is often many frames behind the CPU in terms of which frame it is currently processing. Keeping track of which sections of a resource are being used because of calls made 2 to 5 frames ago is difficult and error-prone. Because of this, it is recommended that applications only write to the uninitialized portions of a resource when using .

    Common Usage of with

    and are normally used in conjunction with dynamic index/vertex buffers. can also be used with dynamic textures. However, cannot be used with dynamic textures.

    A common use of these two flags involves filling dynamic index/vertex buffers with geometry that can be seen from the camera's current position. The first time that data is entered into the buffer on a given frame, Map is called with ; doing so invalidates the previous contents of the buffer. The buffer is then filled with all available data.

    Subsequent writes to the buffer within the same frame should use . This will enable the CPU to access a resource that is potentially being used by the GPU as long as the restrictions described previously are respected.

    +
    + + ff476181 + D3D11_MAP + D3D11_MAP +
    + + +

    Resource is mapped for reading. The resource must have been created with read access (see ).

    +
    + + ff476181 + D3D11_MAP_READ + D3D11_MAP_READ +
    + + +

    Resource is mapped for writing. The resource must have been created with write access (see ).

    +
    + + ff476181 + D3D11_MAP_WRITE + D3D11_MAP_WRITE +
    + + +

    Resource is mapped for reading and writing. The resource must have been created with read and write access (see and ).

    +
    + + ff476181 + D3D11_MAP_READ_WRITE + D3D11_MAP_READ_WRITE +
    + + +

    Resource is mapped for writing; the previous contents of the resource will be undefined. The resource must have been created with write access and dynamic usage (See and ).

    +
    + + ff476181 + D3D11_MAP_WRITE_DISCARD + D3D11_MAP_WRITE_DISCARD +
    + + +

    Resource is mapped for writing; the existing contents of the resource cannot be overwritten (see Remarks). This flag is only valid on vertex and index buffers. The resource must have been created with write access (see ). Cannot be used on a resource created with the flag.

    +
    + + ff476181 + D3D11_MAP_WRITE_NO_OVERWRITE + D3D11_MAP_WRITE_NO_OVERWRITE +
    + + +

    Flags that describe miscellaneous query behavior.

    +
    + +

    This flag is part of a query description (see ).

    +
    + + ff476196 + D3D11_QUERY_MISC_FLAG + D3D11_QUERY_MISC_FLAG +
    + + +

    Tell the hardware that if it is not yet sure if something is hidden or not to draw it anyway. This is only used with an occlusion predicate. Predication data cannot be returned to your application via when using this flag.

    +
    + + ff476196 + D3D11_QUERY_MISC_PREDICATEHINT + D3D11_QUERY_MISC_PREDICATEHINT +
    + + + None. + + + None + None + + + +

    Query types.

    +
    + +

    Create a query with .

    +
    + + ff476191 + D3D11_QUERY + D3D11_QUERY +
    + + +

    Determines whether or not the GPU is finished processing commands. When the GPU is finished processing commands will return , and pData will point to a with a value of TRUE. When using this type of query, is disabled.

    +
    + + ff476191 + D3D11_QUERY_EVENT + D3D11_QUERY_EVENT +
    + + +

    Get the number of samples that passed the depth and stencil tests in between and . returns a UINT64. If a depth or stencil test is disabled, then each of those tests will be counted as a pass.

    +
    + + ff476191 + D3D11_QUERY_OCCLUSION + D3D11_QUERY_OCCLUSION +
    + + +

    Get a timestamp value where returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See . When using this type of query, is disabled.

    +
    + + ff476191 + D3D11_QUERY_TIMESTAMP + D3D11_QUERY_TIMESTAMP +
    + + +

    Determines whether or not a is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. will return a . This type of query should only be invoked once per frame or less.

    +
    + + ff476191 + D3D11_QUERY_TIMESTAMP_DISJOINT + D3D11_QUERY_TIMESTAMP_DISJOINT +
    + + +

    Get pipeline statistics, such as the number of pixel shader invocations in between and . will return a .

    +
    + + ff476191 + D3D11_QUERY_PIPELINE_STATISTICS + D3D11_QUERY_PIPELINE_STATISTICS +
    + + +

    Similar to , except returns a indicating whether or not any samples passed the depth and stencil tests - TRUE meaning at least one passed, meaning none passed.

    +
    + + ff476191 + D3D11_QUERY_OCCLUSION_PREDICATE + D3D11_QUERY_OCCLUSION_PREDICATE +
    + + +

    Get streaming output statistics, such as the number of primitives streamed out in between and . will return a structure.

    +
    + + ff476191 + D3D11_QUERY_SO_STATISTICS + D3D11_QUERY_SO_STATISTICS +
    + + +

    Determines whether or not any of the streaming output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

    +
    + + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE + D3D11_QUERY_SO_OVERFLOW_PREDICATE +
    + + +

    Get streaming output statistics for stream 0, such as the number of primitives streamed out in between and . will return a structure.

    +
    + + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM0 + D3D11_QUERY_SO_STATISTICS_STREAM0 +
    + + +

    Determines whether or not the stream 0 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

    +
    + + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM0 +
    + + +

    Get streaming output statistics for stream 1, such as the number of primitives streamed out in between and . will return a structure.

    +
    + + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM1 + D3D11_QUERY_SO_STATISTICS_STREAM1 +
    + + +

    Determines whether or not the stream 1 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

    +
    + + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM1 +
    + + +

    Get streaming output statistics for stream 2, such as the number of primitives streamed out in between and . will return a structure.

    +
    + + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM2 + D3D11_QUERY_SO_STATISTICS_STREAM2 +
    + + +

    Determines whether or not the stream 2 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

    +
    + + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM2 +
    + + +

    Get streaming output statistics for stream 3, such as the number of primitives streamed out in between and . will return a structure.

    +
    + + ff476191 + D3D11_QUERY_SO_STATISTICS_STREAM3 + D3D11_QUERY_SO_STATISTICS_STREAM3 +
    + + +

    Determines whether or not the stream 3 output buffers overflowed in between and . returns a - TRUE meaning there was an overflow, meaning there was not an overflow. If streaming output writes to multiple buffers, and one of the buffers overflows, then it will stop writing to all the output buffers. When an overflow is detected by Direct3D it is prevented from happening - no memory is corrupted. This predication may be used in conjunction with an SO_STATISTICS query so that when an overflow occurs the SO_STATISTIC query will let the application know how much memory was needed to prevent an overflow.

    +
    + + ff476191 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 + D3D11_QUERY_SO_OVERFLOW_PREDICATE_STREAM3 +
    + + +

    These flags identify the type of resource that will be viewed as a render target.

    +
    + +

    This enumeration is used in to create a render-target view.

    +
    + + ff476206 + D3D11_RTV_DIMENSION + D3D11_RTV_DIMENSION +
    + + +

    Do not use this value, as it will cause to fail.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_UNKNOWN + D3D11_RTV_DIMENSION_UNKNOWN +
    + + +

    The resource will be accessed as a buffer.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_BUFFER + D3D11_RTV_DIMENSION_BUFFER +
    + + +

    The resource will be accessed as a 1D texture.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE1D + D3D11_RTV_DIMENSION_TEXTURE1D +
    + + +

    The resource will be accessed as an array of 1D textures.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE1DARRAY + D3D11_RTV_DIMENSION_TEXTURE1DARRAY +
    + + +

    The resource will be accessed as a 2D texture.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2D + D3D11_RTV_DIMENSION_TEXTURE2D +
    + + +

    The resource will be accessed as an array of 2D textures.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DARRAY + D3D11_RTV_DIMENSION_TEXTURE2DARRAY +
    + + +

    The resource will be accessed as a 2D texture with multisampling.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DMS + D3D11_RTV_DIMENSION_TEXTURE2DMS +
    + + +

    The resource will be accessed as an array of 2D textures with multisampling.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY + D3D11_RTV_DIMENSION_TEXTURE2DMSARRAY +
    + + +

    The resource will be accessed as a 3D texture.

    +
    + + ff476206 + D3D11_RTV_DIMENSION_TEXTURE3D + D3D11_RTV_DIMENSION_TEXTURE3D +
    + + +

    Identifies the type of resource being used.

    +
    + +

    This enumeration is used in .

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION + D3D11_RESOURCE_DIMENSION +
    + + +

    Resource is of unknown type.

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION_UNKNOWN + D3D11_RESOURCE_DIMENSION_UNKNOWN +
    + + +

    Resource is a buffer.

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION_BUFFER + D3D11_RESOURCE_DIMENSION_BUFFER +
    + + +

    Resource is a 1D texture.

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE1D + D3D11_RESOURCE_DIMENSION_TEXTURE1D +
    + + +

    Resource is a 2D texture.

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE2D + D3D11_RESOURCE_DIMENSION_TEXTURE2D +
    + + +

    Resource is a 3D texture.

    +
    + + ff476202 + D3D11_RESOURCE_DIMENSION_TEXTURE3D + D3D11_RESOURCE_DIMENSION_TEXTURE3D +
    + + +

    Identifies options for resources.

    +
    + +

    This enumeration is used in , , , .

    These flags can be combined by bitwise OR.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_FLAG + D3D11_RESOURCE_MISC_FLAG +
    + + +

    Enables MIP map generation by using on a texture resource. The resource must be created with the bind flags that specify that the resource is a render target and a shader resource.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_GENERATE_MIPS + D3D11_RESOURCE_MISC_GENERATE_MIPS +
    + + +

    Enables resource data sharing between two or more Direct3D devices. The only resources that can be shared are 2D non-mipmapped textures.

    and are mutually exclusive.

    WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_SHARED + D3D11_RESOURCE_MISC_SHARED +
    + + +

    Sets a resource to be a cube texture created from a Texture2DArray that contains 6 textures.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_TEXTURECUBE + D3D11_RESOURCE_MISC_TEXTURECUBE +
    + + +

    Enables instancing of GPU-generated content.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS + D3D11_RESOURCE_MISC_DRAWINDIRECT_ARGS +
    + + +

    Enables a resource as a byte address buffer.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS + D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS +
    + + +

    Enables a resource as a structured buffer.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_BUFFER_STRUCTURED + D3D11_RESOURCE_MISC_BUFFER_STRUCTURED +
    + + +

    Enables a resource with MIP map clamping for use with .

    +
    + + ff476203 + D3D11_RESOURCE_MISC_RESOURCE_CLAMP + D3D11_RESOURCE_MISC_RESOURCE_CLAMP +
    + + +

    Enables the resource to be synchronized by using the and APIs. The following Direct3D?11 resource creation APIs, that take parameters, have been extended to support the new flag.

    If you call any of these methods with the flag set, the interface returned will support the interface. You can retrieve a reference to the interface from the resource by using IUnknown::QueryInterface. The interface implements the and APIs to synchronize access to the surface. The device that creates the surface, and any other device that opens the surface by using OpenSharedResource, must call before they issue any rendering commands to the surface. When those devices finish rendering, they must call .

    and are mutually exclusive.

    WARP and REF devices do not support shared resources. If you try to create a resource with this flag on either a WARP or REF device, the create method will return an E_OUTOFMEMORY error code.

    +
    + + ff476203 + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX + D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX +
    + + +

    Enables a resource compatible with GDI. You must set the flag on surfaces that you use with GDI. Setting the flag allows GDI rendering on the surface via . +

    Consider the following programming tips for using when you create a texture or use that texture in a swap chain:

    • and are mutually exclusive. Therefore, do not use them together.
    • and are mutually exclusive. Therefore, do not use them together.
    • You must bind the texture as a render target for the output-merger stage. For example, set the flag in the BindFlags member of the structure.
    • You must set the maximum number of MIP map levels to 1. For example, set the MipLevels member of the structure to 1.
    • You must specify that the texture requires read and write access by the GPU. For example, set the Usage member of the structure to .
    • You must set the texture format to one of the following types.

      • +
      • +
      For example, set the Format member of the structure to one of these types.
    • You cannot use with multisampling. Therefore, set the Count member of the structure to 1. Then, set the SampleDesc member of the structure to this structure.
    +
    + + ff476203 + D3D11_RESOURCE_MISC_GDI_COMPATIBLE + D3D11_RESOURCE_MISC_GDI_COMPATIBLE +
    + + +

    Set this flag to enable the use NT HANDLE values when you create a shared resource. By enabling this flag, you deprecate the use of existing HANDLE values.

    You must combine this flag only with the flag by using a bitwise OR operation. The resulting value specifies a new shared resource type that directs the runtime to use NT HANDLE values for the shared resource. The runtime then must confirm that the shared resource works on all hardware at the specified feature level.

    Without this flag set, the runtime does not strictly validate shared resource parameters (that is, formats, flags, usage, and so on). When the runtime does not validate shared resource parameters, behavior of much of the Direct3D API might be undefined and might vary from driver to driver.

    Direct 3D 11 and earlier:??This value is not supported until Direct3D 11.1.
    +
    + + ff476203 + D3D11_RESOURCE_MISC_SHARED_NTHANDLE + D3D11_RESOURCE_MISC_SHARED_NTHANDLE +
    + + +

    Set this flag to indicate that the resource might contain protected content; therefore, the operating system should use the resource only when the driver and hardware support content protection. If the driver and hardware do not support content protection and you try to create a resource with this flag, the resource creation fails.

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476203 + D3D11_RESOURCE_MISC_RESTRICTED_CONTENT + D3D11_RESOURCE_MISC_RESTRICTED_CONTENT +
    + + +

    Set this flag to indicate that the operating system restricts access to the shared surface. You can use this flag together with the flag and only when you create a shared surface. The process that creates the shared resource can always open the shared resource.

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476203 + D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE + D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE +
    + + +

    Set this flag to indicate that the driver restricts access to the shared surface. You can use this flag in conjunction with the flag and only when you create a shared surface. The process that creates the shared resource can always open the shared resource.

    Direct 3D 11:??This value is not supported until Direct3D 11.1.
    +
    + + ff476203 + D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER + D3D11_RESOURCE_MISC_RESTRICT_SHARED_RESOURCE_DRIVER +
    + + + No documentation. + + + D3D11_RESOURCE_MISC_GUARDED + D3D11_RESOURCE_MISC_GUARDED + + + + None. + + + None + None + + + +

    Identifies expected resource use during rendering. The usage directly reflects whether a resource is accessible by the CPU and/or the graphics processing unit (GPU).

    +
    + +

    An application identifies the way a resource is intended to be used (its usage) in a resource description. There are several structures for creating resources including: , , , .

    Differences between Direct3D 9 and Direct3D 10/11:

    In Direct3D 9, you specify the type of memory a resource should be created in at resource creation time (using D3DPOOL). It was an application's job to decide what memory pool would provide the best combination of functionality and performance.

    In Direct3D 10/11, an application no longer specifies what type of memory (the pool) to create a resource in. Instead, you specify the intended usage of the resource, and let the runtime (in concert with the driver and a memory manager) choose the type of memory that will achieve the best performance.

    ?

    Resource Usage Restrictions

    Each usage dictates a tradeoff between accessibility for the CPU and accessibility for the GPU. In general, higher-performance access for one of these two processors means lower-performance access for the other. At either extreme are the and usages. restricts access almost entirely to the GPU. restricts access almost entirely to the CPU and allows only a data transfer (copy) of a resource between the GPU and the CPU. You can perform these copy operations via the and methods. You can also use these copy methods to copy data between two resources of the same usage. You can also use the method to copy memory directly from a CPU-supplied reference to any resource, most usefully a resource with .

    usage is a special case that optimizes the flow of data from CPU to GPU when the CPU generates that data on-the-fly and sends that data with high frequency. is typically used on resources with vertex data and on constant buffers. Use the and methods to write data to these resources. To achieve the highest performance for data consumed serially, like vertex data, use the and sequence. For more info about this sequence, see Common Usage of with . +

    usage is another special case that causes the GPU to generate data just once when you create a resource. is well-suited to data such as textures because such data is typically read into memory from some file format. Therefore, when you create a texture with , the GPU directly reads that texture into memory. +

    Use the following table to choose the usage that best describes how the resource will need to be accessed by the CPU and/or the GPU. Of course, there will be performance tradeoffs.

    Resource UsageDefaultDynamicImmutableStaging
    GPU-Readyesyesyesyes1
    GPU-Writeyesyes1
    CPU-Readyes1
    CPU-Writeyesyes1

    ?

    1 - GPU read or write of a resource with the usage is restricted to copy operations. You use and for these copy operations. Also, because depth-stencil formats and multisample layouts are implementation details of a particular GPU design, the operating system can?t expose these formats and layouts to the CPU in general. Therefore, staging resources can't be a depth-stencil buffer or a multisampled render target.

    Note??You can technically use to copy to a resource with any usage except . However, we recommend to use to update only a resource with . We recommend to use and to update resources with because that is the specific purpose of resources, and is therefore the most optimized path.

    Note?? resources consume specific hardware capabilities. Therefore, use them sparingly. The display driver typically allocates memory for resources with a caching algorithm that favors CPU writes and hinders CPU reads. Furthermore, the memory behind resources might not even be the same for successive calls to . Therefore, do not expect high performance or even consistent CPU reads from resources.

    Note?? is a special case of GPU-to-CPU copy. Use only with unordered access views (UAVs) of buffers.

    Resource Bind Options

    To maximize performance, not all resource usage options can be used as input or output resources to the pipeline. This table identifies these limitations.

    Resource Can Be Bound AsDefaultDynamicImmutableStaging
    Input to a Stageyes2yes3yes
    Output from a Stageyes2

    ?

    • 2 - If bound as an input and an output using different views, each view must use different subresources.
    • 3 - The resource can only be created with a single subresource. The resource cannot be a texture array. The resource cannot be a mipmap chain.
    +
    + + ff476259 + D3D11_USAGE + D3D11_USAGE +
    + + +

    A resource that requires read and write access by the GPU. This is likely to be the most common usage choice.

    +
    + + ff476259 + D3D11_USAGE_DEFAULT + D3D11_USAGE_DEFAULT +
    + + +

    A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed at all by the CPU. This type of resource must be initialized when it is created, since it cannot be changed after creation.

    +
    + + ff476259 + D3D11_USAGE_IMMUTABLE + D3D11_USAGE_IMMUTABLE +
    + + +

    A resource that is accessible by both the GPU (read only) and the CPU (write only). A dynamic resource is a good choice for a resource that will be updated by the CPU at least once per frame. To update a dynamic resource, use a Map method.

    +
    + + ff476259 + D3D11_USAGE_DYNAMIC + D3D11_USAGE_DYNAMIC +
    + + +

    A resource that supports data transfer (copy) from the GPU to the CPU.

    +
    + + ff476259 + D3D11_USAGE_STAGING + D3D11_USAGE_STAGING +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Note??This enumeration is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Values that specify minimum precision levels at shader stages.

    +
    + + hh404495 + D3D11_SHADER_MIN_PRECISION_SUPPORT + D3D11_SHADER_MIN_PRECISION_SUPPORT +
    + + +

    Minimum precision level is 10-bit.

    +
    + + hh404495 + D3D11_SHADER_MIN_PRECISION_10_BIT + D3D11_SHADER_MIN_PRECISION_10_BIT +
    + + +

    Minimum precision level is 16-bit.

    +
    + + hh404495 + D3D11_SHADER_MIN_PRECISION_16_BIT + D3D11_SHADER_MIN_PRECISION_16_BIT +
    + + +

    Identifies how to bind a raw-buffer resource to the pipeline.

    +
    + +

    This enumeration is used by

    +
    + + ff476091 + D3D11_BUFFEREX_SRV_FLAG + D3D11_BUFFEREX_SRV_FLAG +
    + + +

    Bind a raw buffer to the input-assembler stage.

    +
    + + ff476091 + D3D11_BUFFEREX_SRV_FLAG_RAW + D3D11_BUFFEREX_SRV_FLAG_RAW +
    + + + None. + + + None + None + + + +

    Specifies a multi-sample pattern type.

    +
    + + ff476218 + D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS + D3D11_STANDARD_MULTISAMPLE_QUALITY_LEVELS +
    + + +

    Pre-defined multi-sample patterns required for DX11 and DX10.1 hardware.

    +
    + + ff476218 + D3D11_STANDARD_MULTISAMPLE_PATTERN + D3D11_STANDARD_MULTISAMPLE_PATTERN +
    + + +

    Pattern where all of the samples are located at the pixel center.

    +
    + + ff476218 + D3D11_CENTER_MULTISAMPLE_PATTERN + D3D11_CENTER_MULTISAMPLE_PATTERN +
    + + +

    The stencil operations that can be performed during depth-stencil testing.

    +
    + + ff476219 + D3D11_STENCIL_OP + D3D11_STENCIL_OP +
    + + +

    Keep the existing stencil data.

    +
    + + ff476219 + D3D11_STENCIL_OP_KEEP + D3D11_STENCIL_OP_KEEP +
    + + +

    Set the stencil data to 0.

    +
    + + ff476219 + D3D11_STENCIL_OP_ZERO + D3D11_STENCIL_OP_ZERO +
    + + +

    Set the stencil data to the reference value set by calling .

    +
    + + ff476219 + D3D11_STENCIL_OP_REPLACE + D3D11_STENCIL_OP_REPLACE +
    + + +

    Increment the stencil value by 1, and clamp the result.

    +
    + + ff476219 + D3D11_STENCIL_OP_INCR_SAT + D3D11_STENCIL_OP_INCR_SAT +
    + + +

    Decrement the stencil value by 1, and clamp the result.

    +
    + + ff476219 + D3D11_STENCIL_OP_DECR_SAT + D3D11_STENCIL_OP_DECR_SAT +
    + + +

    Invert the stencil data.

    +
    + + ff476219 + D3D11_STENCIL_OP_INVERT + D3D11_STENCIL_OP_INVERT +
    + + +

    Increment the stencil value by 1, and wrap the result if necessary.

    +
    + + ff476219 + D3D11_STENCIL_OP_INCR + D3D11_STENCIL_OP_INCR +
    + + +

    Increment the stencil value by 1, and wrap the result if necessary.

    +
    + + ff476219 + D3D11_STENCIL_OP_DECR + D3D11_STENCIL_OP_DECR +
    + + +

    Identify a technique for resolving texture coordinates that are outside of the boundaries of a texture.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_MODE + D3D11_TEXTURE_ADDRESS_MODE +
    + + +

    Tile the texture at every (u,v) integer junction. For example, for u values between 0 and 3, the texture is repeated three times.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_WRAP + D3D11_TEXTURE_ADDRESS_WRAP +
    + + +

    Flip the texture at every (u,v) integer junction. For u values between 0 and 1, for example, the texture is addressed normally; between 1 and 2, the texture is flipped (mirrored); between 2 and 3, the texture is normal again; and so on.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_MIRROR + D3D11_TEXTURE_ADDRESS_MIRROR +
    + + +

    Texture coordinates outside the range [0.0, 1.0] are set to the texture color at 0.0 or 1.0, respectively.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_CLAMP + D3D11_TEXTURE_ADDRESS_CLAMP +
    + + +

    Texture coordinates outside the range [0.0, 1.0] are set to the border color specified in or HLSL code.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_BORDER + D3D11_TEXTURE_ADDRESS_BORDER +
    + + +

    Similar to and . Takes the absolute value of the texture coordinate (thus, mirroring around 0), and then clamps to the maximum value.

    +
    + + ff476256 + D3D11_TEXTURE_ADDRESS_MIRROR_ONCE + D3D11_TEXTURE_ADDRESS_MIRROR_ONCE +
    + + +

    The different faces of a cube texture.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE + D3D11_TEXTURECUBE_FACE +
    + + +

    Positive X face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_X + D3D11_TEXTURECUBE_FACE_POSITIVE_X +
    + + +

    Negative X face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_X + D3D11_TEXTURECUBE_FACE_NEGATIVE_X +
    + + +

    Positive Y face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_Y + D3D11_TEXTURECUBE_FACE_POSITIVE_Y +
    + + +

    Negative Y face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_Y + D3D11_TEXTURECUBE_FACE_NEGATIVE_Y +
    + + +

    Positive Z face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_POSITIVE_Z + D3D11_TEXTURECUBE_FACE_POSITIVE_Z +
    + + +

    Negative Z face.

    +
    + + ff476255 + D3D11_TEXTURECUBE_FACE_NEGATIVE_Z + D3D11_TEXTURECUBE_FACE_NEGATIVE_Z +
    + + +

    Unordered-access-view buffer options.

    +
    + + ff476096 + D3D11_BUFFER_UAV_FLAG + D3D11_BUFFER_UAV_FLAG +
    + + +

    Resource contains raw, unstructured data. Requires the UAV format to be .

    +
    + + ff476096 + D3D11_BUFFER_UAV_FLAG_RAW + D3D11_BUFFER_UAV_FLAG_RAW +
    + + +

    Allow data to be appended to the end of the buffer. flag must also be used for any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer. Requires the UAV format to be .

    +
    + + ff476096 + D3D11_BUFFER_UAV_FLAG_APPEND + D3D11_BUFFER_UAV_FLAG_APPEND +
    + + +

    Adds a counter to the unordered-access-view buffer. can only be used on a UAV that is a RWStructuredBuffer and it enables the functionality needed for the IncrementCounter and DecrementCounter methods in HLSL. Requires the UAV format to be .

    +
    + + ff476096 + D3D11_BUFFER_UAV_FLAG_COUNTER + D3D11_BUFFER_UAV_FLAG_COUNTER +
    + + + None. + + + None + None + + + +

    Unordered-access view options.

    +
    + +

    This enumeration is used by a unordered access-view description (see ).

    +
    + + ff476257 + D3D11_UAV_DIMENSION + D3D11_UAV_DIMENSION +
    + + +

    The view type is unknown.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_UNKNOWN + D3D11_UAV_DIMENSION_UNKNOWN +
    + + +

    View the resource as a buffer.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_BUFFER + D3D11_UAV_DIMENSION_BUFFER +
    + + +

    View the resource as a 1D texture.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_TEXTURE1D + D3D11_UAV_DIMENSION_TEXTURE1D +
    + + +

    View the resource as a 1D texture array.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_TEXTURE1DARRAY + D3D11_UAV_DIMENSION_TEXTURE1DARRAY +
    + + +

    View the resource as a 2D texture.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_TEXTURE2D + D3D11_UAV_DIMENSION_TEXTURE2D +
    + + +

    View the resource as a 2D texture array.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_TEXTURE2DARRAY + D3D11_UAV_DIMENSION_TEXTURE2DARRAY +
    + + +

    View the resource as a 3D texture array.

    +
    + + ff476257 + D3D11_UAV_DIMENSION_TEXTURE3D + D3D11_UAV_DIMENSION_TEXTURE3D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies how to access a resource that is used in a video decoding output view.

    +
    + +

    This enumeration is used with the structure.

    +
    + + hh447636 + D3D11_VDOV_DIMENSION + D3D11_VDOV_DIMENSION +
    + + +

    Not a valid value.

    +
    + + hh447636 + D3D11_VDOV_DIMENSION_UNKNOWN + D3D11_VDOV_DIMENSION_UNKNOWN +
    + + +

    The resource will be accessed as a 2D texture. +

    +
    + + hh447636 + D3D11_VDOV_DIMENSION_TEXTURE2D + D3D11_VDOV_DIMENSION_TEXTURE2D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies a type of compressed buffer for DirectX Video Acceleration (DXVA) decoding.

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_TYPE + D3D11_VIDEO_DECODER_BUFFER_TYPE +
    + + +

    Picture decoding parameter buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS + D3D11_VIDEO_DECODER_BUFFER_PICTURE_PARAMETERS +
    + + +

    Macroblock control command buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL + D3D11_VIDEO_DECODER_BUFFER_MACROBLOCK_CONTROL +
    + + +

    Residual difference block data buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE + D3D11_VIDEO_DECODER_BUFFER_RESIDUAL_DIFFERENCE +
    + + +

    Deblocking filter control command buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL + D3D11_VIDEO_DECODER_BUFFER_DEBLOCKING_CONTROL +
    + + +

    Inverse quantization matrix buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX + D3D11_VIDEO_DECODER_BUFFER_INVERSE_QUANTIZATION_MATRIX +
    + + +

    Slice-control buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL + D3D11_VIDEO_DECODER_BUFFER_SLICE_CONTROL +
    + + +

    Bitstream data buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_BITSTREAM + D3D11_VIDEO_DECODER_BUFFER_BITSTREAM +
    + + +

    Motion vector buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR + D3D11_VIDEO_DECODER_BUFFER_MOTION_VECTOR +
    + + +

    Film grain synthesis data buffer. +

    +
    + + hh447642 + D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN + D3D11_VIDEO_DECODER_BUFFER_FILM_GRAIN +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes how a video stream is interlaced.

    +
    + + hh447647 + D3D11_VIDEO_FRAME_FORMAT + D3D11_VIDEO_FRAME_FORMAT +
    + + +

    Frames are progressive.

    +
    + + hh447647 + D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE + D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE +
    + + +

    Frames are interlaced. The top field of each frame is displayed first.

    +
    + + hh447647 + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_TOP_FIELD_FIRST +
    + + +

    Frame are interlaced. The bottom field of each frame is displayed first.

    +
    + + hh447647 + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST + D3D11_VIDEO_FRAME_FORMAT_INTERLACED_BOTTOM_FIELD_FIRST +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the alpha fill mode for video processing.

    +
    + + hh447648 + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE +
    + + +

    Alpha values inside the target rectangle are set to opaque.

    +
    + + hh447648 + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_OPAQUE +
    + + +

    Alpha values inside the target rectangle are set to the alpha value specified in the background color. To set the background color, call the method.

    +
    + + hh447648 + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_BACKGROUND +
    + + +

    Existing alpha values remain unchanged in the output surface.

    +
    + + hh447648 + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_DESTINATION +
    + + +

    Alpha values are taken from an input stream, scaled, and copied to the corresponding destination rectangle for that stream. The input stream is specified in the StreamIndex parameter of the method.

    If the input stream does not have alpha data, the video processor sets the alpha values in the target rectangle to opaque. If the input stream is disabled or the source rectangle is empty, the alpha values in the target rectangle are not modified.

    +
    + + hh447648 + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM + D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE_SOURCE_STREAM +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies the automatic image processing capabilities of the video processor.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS +
    + + +

    Denoise.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DENOISE +
    + + +

    Deringing.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_DERINGING +
    + + +

    Edge enhancement.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_EDGE_ENHANCEMENT +
    + + +

    Color correction.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_COLOR_CORRECTION +
    + + +

    Flesh-tone mapping.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_FLESH_TONE_MAPPING +
    + + +

    Image stabilization.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_IMAGE_STABILIZATION +
    + + +

    Enhanced image resolution.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_SUPER_RESOLUTION +
    + + +

    Anamorphic scaling.

    +
    + + hh447649 + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING + D3D11_VIDEO_PROCESSOR_AUTO_STREAM_CAPS_ANAMORPHIC_SCALING +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines video processing capabilities for a Microsoft Direct3D?11 video processor.

    +
    + + hh447654 + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS +
    + + +

    The video processor can blend video content in linear color space. Most video content is gamma corrected, resulting in nonlinear values. This capability flag means that the video processor converts colors to linear space before blending, which produces better results.

    +
    + + hh447654 + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_LINEAR_SPACE +
    + + +

    The video processor supports the xvYCC color space for YCbCr data.

    +
    + + hh447654 + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_xvYCC +
    + + +

    The video processor can perform range conversion when the input and output are both RGB but use different color ranges (0-255 or 16-235, for 8-bit RGB).

    +
    + + hh447654 + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_RGB_RANGE_CONVERSION +
    + + +

    The video processor can apply a matrix conversion to YCbCr values when the input and output are both YCbCr. For example, the driver can convert colors from BT.601 to BT.709.

    +
    + + hh447654 + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION + D3D11_VIDEO_PROCESSOR_DEVICE_CAPS_YCbCr_MATRIX_CONVERSION +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines features that a Microsoft Direct3D?11 video processor can support.

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS +
    + + +

    The video processor can set alpha values on the output pixels. For more information, see .

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_FILL +
    + + +

    The video processor can downsample the video output. For more information, see .

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_CONSTRICTION +
    + + +

    The video processor can perform luma keying. For more information, see .

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LUMA_KEY +
    + + +

    The video processor can apply alpha values from color palette entries.

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_PALETTE +
    + + +

    The driver does not support the DXVA-HD DDI. If this capability flag is set, the video processor has the following limitations:

    • A maximum of two streams are supported:
      • The first stream must be either NV12 or YUY2.
      • The second stream must be AYUV, AI44, or IA44.
    • Image adjustment (proc amp) controls are applied to the entire video processing blit, rather than per stream.
    • Support for per-stream planar alpha is not reliable. (Per-pixel alpha is supported, however.)
    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_LEGACY +
    + + +

    The video processor can support 3D stereo video. For more information, see .

    +
    + + hh447655 + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_STEREO +
    + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ROTATION + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_ALPHA_STREAM + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO + D3D11_VIDEO_PROCESSOR_FEATURE_CAPS_PIXEL_ASPECT_RATIO + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Defines the range of supported values for an image filter.

    +
    + +

    The multiplier enables the filter range to have a fractional step value.

    For example, a hue filter might have an actual range of [?180.0 ... +180.0] with a step size of 0.25. The device would report the following range and multiplier:

    • Minimum: ?720
    • Maximum: +720
    • Multiplier: 0.25

    In this case, a filter value of 2 would be interpreted by the device as 0.50 (or 2 ? 0.25).

    The device should use a multiplier that can be represented exactly as a base-2 fraction.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER + D3D11_VIDEO_PROCESSOR_FILTER +
    + + +

    The minimum value of the filter.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS + D3D11_VIDEO_PROCESSOR_FILTER_BRIGHTNESS +
    + + +

    The maximum value of the filter.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST + D3D11_VIDEO_PROCESSOR_FILTER_CONTRAST +
    + + +

    The default value of the filter.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER_HUE + D3D11_VIDEO_PROCESSOR_FILTER_HUE +
    + + +

    A multiplier. Use the following formula to translate the filter setting into the actual filter value: Actual Value = Set Value???Multiplier.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER_SATURATION + D3D11_VIDEO_PROCESSOR_FILTER_SATURATION +
    + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION + D3D11_VIDEO_PROCESSOR_FILTER_NOISE_REDUCTION + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT + D3D11_VIDEO_PROCESSOR_FILTER_EDGE_ENHANCEMENT + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING + D3D11_VIDEO_PROCESSOR_FILTER_ANAMORPHIC_SCALING + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT + D3D11_VIDEO_PROCESSOR_FILTER_STEREO_ADJUSTMENT + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines image filter capabilities for a Microsoft Direct3D?11 video processor.

    +
    + +

    These capability flags indicate support for the image filters defined by the enumeration. To apply a particular filter, call the method.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS + D3D11_VIDEO_PROCESSOR_FILTER_CAPS +
    + + +

    The video processor can adjust the brightness level.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_BRIGHTNESS +
    + + +

    The video processor can adjust the contrast level.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_CONTRAST +
    + + +

    The video processor can adjust hue.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_HUE +
    + + +

    The video processor can adjust the saturation level.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_SATURATION +
    + + +

    The video processor can perform noise reduction.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_NOISE_REDUCTION +
    + + +

    The video processor can perform edge enhancement.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_EDGE_ENHANCEMENT +
    + + +

    The video processor can perform anamorphic scaling. Anamorphic scaling can be used to stretch 4:3 content to a widescreen 16:9 aspect ratio.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_ANAMORPHIC_SCALING +
    + + +

    For stereo 3D video, the video processor can adjust the offset between the left and right views, allowing the user to reduce potential eye strain.

    +
    + + hh447671 + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT + D3D11_VIDEO_PROCESSOR_FILTER_CAPS_STEREO_ADJUSTMENT +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines capabilities related to input formats for a Microsoft Direct3D?11 video processor.

    +
    + +

    These flags define video processing capabilities that usually are not needed, and that video devices are therefore not required to support.

    The first three flags relate to RGB support for functions that are normally applied to YCbCr video: deinterlacing, color adjustment, and luma keying. A device that supports these functions for YCbCr is not required to support them for RGB input. Supporting RGB input for these functions is an additional capability, reflected by these constants. Note that the driver might convert the input to another color space, perform the indicated function, and then convert the result back to RGB.

    Similarly, a device that supports deinterlacing is not required to support deinterlacing of palettized formats. This capability is indicated by the flag.

    +
    + + hh447658 + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS +
    + + +

    The video processor can deinterlace an input stream that contains interlaced RGB video.

    +
    + + hh447658 + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_INTERLACED +
    + + +

    The video processor can perform color adjustment on RGB video.

    +
    + + hh447658 + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_PROCAMP +
    + + +

    The video processor can perform luma keying on RGB video.

    +
    + + hh447658 + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_RGB_LUMA_KEY +
    + + +

    The video processor can deinterlace input streams with palettized color formats.

    +
    + + hh447658 + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED + D3D11_VIDEO_PROCESSOR_FORMAT_CAPS_PALETTE_INTERLACED +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies how a video format can be used for video processing.

    +
    + + hh447659 + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT +
    + + +

    The format can be used as the input to the video processor.

    +
    + + hh447659 + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_INPUT +
    + + +

    The format can be used as the output from the video processor.

    +
    + + hh447659 + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT + D3D11_VIDEO_PROCESSOR_FORMAT_SUPPORT_OUTPUT +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies the inverse telecine (IVTC) capabilities of a video processor.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS +
    + + +

    The video processor can reverse 3:2 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32 +
    + + +

    The video processor can reverse 2:2 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_22 +
    + + +

    The video processor can reverse 2:2:2:4 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2224 +
    + + +

    The video processor can reverse 2:3:3:2 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_2332 +
    + + +

    The video processor can reverse 3:2:3:2:2 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_32322 +
    + + +

    The video processor can reverse 5:5 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_55 +
    + + +

    The video processor can reverse 6:4 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_64 +
    + + +

    The video processor can reverse 8:7 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_87 +
    + + +

    The video processor can reverse 2:2:2:2:2:2:2:2:2:2:2:3 pulldown.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_222222222223 +
    + + +

    The video processor can reverse other telecine modes not listed here.

    +
    + + hh447661 + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER + D3D11_VIDEO_PROCESSOR_ITELECINE_CAPS_OTHER +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the rate at which the video processor produces output frames from an input stream.

    +
    + + hh447662 + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE +
    + + +

    The output is the normal frame rate.

    +
    + + hh447662 + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_NORMAL +
    + + +

    The output is half the frame rate.

    +
    + + hh447662 + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_HALF +
    + + +

    The output is a custom frame rate.

    +
    + + hh447662 + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM + D3D11_VIDEO_PROCESSOR_OUTPUT_RATE_CUSTOM +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies video processing capabilities that relate to deinterlacing, inverse telecine (IVTC), and frame-rate conversion.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS +
    + + +

    The video processor can perform blend deinterlacing.

    In blend deinterlacing, the two fields from an interlaced frame are blended into a single progressive frame. A video processor uses blend deinterlacing when it deinterlaces at half rate, as when converting 60i to 30p. Blend deinterlacing does not require reference frames.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BLEND +
    + + +

    The video processor can perform bob deinterlacing.

    In bob deinterlacing, missing field lines are interpolated from the lines above and below. Bob deinterlacing does not require reference frames.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB +
    + + +

    The video processor can perform adaptive deinterlacing.

    Adaptive deinterlacing uses spatial or temporal interpolation, and switches between the two on a field-by-field basis, depending on the amount of motion. If the video processor does not receive enough reference frames to perform adaptive deinterlacing, it falls back to bob deinterlacing.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_ADAPTIVE +
    + + +

    The video processor can perform motion-compensated deinterlacing.

    Motion-compensated deinterlacing uses motion vectors to recreate missing lines. If the video processor does not receive enough reference frames to perform motion-compensated deinterlacing, it falls back to bob deinterlacing.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_MOTION_COMPENSATION +
    + + +

    The video processor can perform inverse telecine (IVTC).

    If the video processor supports this capability, the ITelecineCaps member of the structure specifies which IVTC modes are supported.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_INVERSE_TELECINE +
    + + +

    The video processor can convert the frame rate by interpolating frames.

    +
    + + hh447664 + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION + D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_FRAME_RATE_CONVERSION +
    + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_ROTATION + D3D11_VIDEO_PROCESSOR_ROTATION + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY + D3D11_VIDEO_PROCESSOR_ROTATION_IDENTITY + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_ROTATION_90 + D3D11_VIDEO_PROCESSOR_ROTATION_90 + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_ROTATION_180 + D3D11_VIDEO_PROCESSOR_ROTATION_180 + + + + No documentation. + + + D3D11_VIDEO_PROCESSOR_ROTATION_270 + D3D11_VIDEO_PROCESSOR_ROTATION_270 + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines stereo 3D capabilities for a Microsoft Direct3D?11 video processor.

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS + D3D11_VIDEO_PROCESSOR_STEREO_CAPS +
    + + +

    The video processor supports the format.

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_MONO_OFFSET +
    + + +

    The video processor supports the format.

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_ROW_INTERLEAVED +
    + + +

    The video processor supports the format.

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_COLUMN_INTERLEAVED +
    + + +

    The video processor supports the format.

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_CHECKERBOARD +
    + + +

    The video processor can flip one or both views. For more information, see .

    +
    + + hh447667 + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE + D3D11_VIDEO_PROCESSOR_STEREO_CAPS_FLIP_MODE +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereo 3D video, specifies whether the data in frame 0 or frame 1 is flipped, either horizontally or vertically.

    +
    + + hh447668 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE +
    + + +

    Neither frame is flipped.

    +
    + + hh447668 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_NONE +
    + + +

    The data in frame 0 is flipped.

    +
    + + hh447668 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME0 +
    + + +

    The data in frame 1 is flipped.

    +
    + + hh447668 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 + D3D11_VIDEO_PROCESSOR_STEREO_FLIP_FRAME1 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the layout in memory of a stereo 3D video frame.

    +
    + +

    This enumeration designates the two stereo views as "frame 0" and "frame 1". The LeftViewFrame0 parameter of the VideoProcessorSetStreamStereoFormat method specifies which view is the left view, and which is the right view.

    For packed formats, if the source rectangle clips part of the surface, the driver interprets the rectangle in logical coordinates relative to the stereo view, rather than absolute pixel coordinates. The result is that frame 0 and frame 1 are clipped proportionately.

    To query whether the device supports stereo 3D video, call and check for the flag in the FeatureCaps member of the structure. If this capability flag is present, it means that the driver supports all of the stereo formats that are not listed as optional. To find out which optional formats are supported, call GetVideoProcessorCaps and check the StereoCaps member of the structure.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT +
    + + +

    The sample does not contain stereo data. If the stereo format is not specified, this value is the default.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO +
    + + +

    Frame 0 and frame 1 are packed side-by-side, as shown in the following diagram.

    All drivers that support stereo video must support this format.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_HORIZONTAL +
    + + +

    Frame 0 and frame 1 are packed top-to-bottom, as shown in the following diagram.

    All drivers that support stereo video must support this format.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_VERTICAL +
    + + +

    Frame 0 and frame 1 are placed in separate resources or in separate texture array elements within the same resource.

    All drivers that support stereo video must support this format.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE +
    + + +

    The sample contains non-stereo data. However, the driver should create a left/right output of this sample using a specified offset. The offset is specified in the MonoOffset parameter of the method.

    This format is primarily intended for subtitles and other subpicture data, where the entire sample is presented on the same plane.

    Support for this stereo format is optional.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_MONO_OFFSET +
    + + +

    Frame 0 and frame 1 are packed into interleaved rows, as shown in the following diagram.

    Support for this stereo format is optional.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_ROW_INTERLEAVED +
    + + +

    Frame 0 and frame 1 are packed into interleaved columns, as shown in the following diagram.

    Support for this stereo format is optional.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_COLUMN_INTERLEAVED +
    + + +

    Frame 0 and frame 1 are packed in a checkerboard format, as shown in the following diagram.

    Support for this stereo format is optional.

    +
    + + hh447669 + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD + D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_CHECKERBOARD +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the intended use for a video processor.

    +
    + + hh447673 + D3D11_VIDEO_USAGE + D3D11_VIDEO_USAGE +
    + + +

    Normal video playback. The graphics driver should expose a set of capabilities that are appropriate for real-time video playback.

    +
    + + hh447673 + D3D11_VIDEO_USAGE_PLAYBACK_NORMAL + D3D11_VIDEO_USAGE_PLAYBACK_NORMAL +
    + + +

    Optimal speed. The graphics driver should expose a minimal set of capabilities that are optimized for performance.

    Use this setting if you want better performance and can accept some reduction in video quality. For example, you might use this setting in power-saving mode or to play video thumbnails.

    +
    + + hh447673 + D3D11_VIDEO_USAGE_OPTIMAL_SPEED + D3D11_VIDEO_USAGE_OPTIMAL_SPEED +
    + + +

    Optimal quality. The grahics driver should expose its maximum set of capabilities.

    Specify this setting to get the best video quality possible. It is appropriate for tasks such as video editing, when quality is more important than speed. It is not appropriate for real-time playback.

    +
    + + hh447673 + D3D11_VIDEO_USAGE_OPTIMAL_QUALITY + D3D11_VIDEO_USAGE_OPTIMAL_QUALITY +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies how to access a resource that is used in a video processor input view.

    +
    + +

    This enumeration is used with the structure.

    +
    + + hh447674 + D3D11_VPIV_DIMENSION + D3D11_VPIV_DIMENSION +
    + + +

    Not a valid value.

    +
    + + hh447674 + D3D11_VPIV_DIMENSION_UNKNOWN + D3D11_VPIV_DIMENSION_UNKNOWN +
    + + +

    The resource will be accessed as a 2D texture.

    +
    + + hh447674 + D3D11_VPIV_DIMENSION_TEXTURE2D + D3D11_VPIV_DIMENSION_TEXTURE2D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies how to access a resource that is used in a video processor output view.

    +
    + +

    This enumeration is used with the structure.

    +
    + + hh447675 + D3D11_VPOV_DIMENSION + D3D11_VPOV_DIMENSION +
    + + +

    Not a valid value.

    +
    + + hh447675 + D3D11_VPOV_DIMENSION_UNKNOWN + D3D11_VPOV_DIMENSION_UNKNOWN +
    + + +

    The resource will be accessed as a 2D texture.

    +
    + + hh447675 + D3D11_VPOV_DIMENSION_TEXTURE2D + D3D11_VPOV_DIMENSION_TEXTURE2D +
    + + +

    The resource will be accessed as an array of 2D textures.

    +
    + + hh447675 + D3D11_VPOV_DIMENSION_TEXTURE2DARRAY + D3D11_VPOV_DIMENSION_TEXTURE2DARRAY +
    + + + Functions + + + + + Constant SdkVersion. + D3D11_SDK_VERSION + + + +

    Creates a device that represents the display adapter.

    +
    +

    A reference to the video adapter to use when creating a device. Pass null to use the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters.

    Note??Do not mix the use of DXGI 1.0 () and DXGI 1.1 () in an application. Use or , but not both in an application.

    +

    The , which represents the driver type to create.

    +

    A handle to a DLL that implements a software rasterizer. If DriverType is , Software must not be null. Get the handle by calling LoadLibrary, LoadLibraryEx , or GetModuleHandle.

    +

    The runtime layers to enable (see ); values can be bitwise OR'd together.

    +

    A reference to an array of s, which determine the order of feature levels to attempt to create. Use default parameters to get the greatest feature level available. If pFeatureLevels is set to null, the following array of feature levels will be used:

     { , , , , , ,}; 
    +

    The number of elements in pFeatureLevels.

    +

    The SDK version; use .

    +

    Returns the address of a reference to an object that represents the device created.

    +

    If successful, returns the first from the pFeatureLevels array which succeeded. Otherwise, returns 0.

    +

    Returns the address of a reference to an object that represents the device context.

    +

    This method returns one of the following Direct3D 11 Return Codes.

    + +

    This entry-point is supported by the Direct3D 11 runtime, which is available on Windows 7, Windows Server 2008 R2, and as an update to Windows Vista (KB971644).

    Set ppDevice and ppImmediateContext to null to determine which feature level is supported by looking at pFeatureLevel without creating a device.

    For an example, see How To: Create a Device and Immediate Context; to create a device and a swap chain at the same time, use D3D11CreateDeviceAndSwapChain.

    If you set the pAdapter parameter to a non-null value, you must also set the DriverType parameter to the value. If you set the pAdapter parameter to a non-null value and the DriverType parameter to the value, returns an of E_INVALIDARG.

    Differences between Direct3D 10 and Direct3D 11:

    In Direct3D 10, the presence of pAdapter dictated which adapter to use and the DriverType could mismatch what the adapter was.

    In Direct3D 11, if you are trying to create a hardware or a software device, set pAdapter != null which constrains the other inputs to be:

    • DriverType must be
    • Software must be null.

    On the other hand, if pAdapter == null, the DriverType cannot be set to ; it can be set to either:

    • If DriverType == , Software cannot be null.
    • If DriverType == , the adapter used will be the default adapter, which is the first adapter that is enumerated by IDXGIFactory1::EnumAdapters

    ?

    +
    + + ff476082 + HRESULT D3D11CreateDevice([In, Optional] IDXGIAdapter* pAdapter,[In] D3D_DRIVER_TYPE DriverType,[In] HINSTANCE Software,[In] D3D11_CREATE_DEVICE_FLAG Flags,[In, Buffer, Optional] const D3D_FEATURE_LEVEL* pFeatureLevels,[In] unsigned int FeatureLevels,[In] unsigned int SDKVersion,[Out, Fast] ID3D11Device** ppDevice,[Out, Optional] D3D_FEATURE_LEVEL* pFeatureLevel,[Out, Optional] ID3D11DeviceContext** ppImmediateContext) + D3D11CreateDevice +
    + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant TooManyUniqueViewObjects. + D3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS + + + Constant TooManyUniqueStateObjects. + D3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS + + + Constant FileNotFound. + D3D11_ERROR_FILE_NOT_FOUND + + + Constant DeferredContextMapWithoutInitialDiscard. + D3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Provides a communication channel with the graphics driver or the Microsoft Direct3D runtime.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447690 + ID3D11AuthenticatedChannel + ID3D11AuthenticatedChannel +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the size of the driver's certificate chain.

    +
    +

    Receives the size of the certificate chain, in bytes.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447688 + HRESULT ID3D11AuthenticatedChannel::GetCertificateSize([Out] unsigned int* pCertificateSize) + ID3D11AuthenticatedChannel::GetCertificateSize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the driver's certificate chain.

    +
    +

    The size of the pCertificate array, in bytes. To get the size of the certificate chain, call .

    +

    A reference to a byte array that receives the driver's certificate chain. The caller must allocate the array.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447687 + HRESULT ID3D11AuthenticatedChannel::GetCertificate([In] unsigned int CertificateSize,[Out, Buffer] unsigned char* pCertificate) + ID3D11AuthenticatedChannel::GetCertificate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the authenticated channel.

    +
    +

    Receives a handle to the channel.

    + + hh447689 + void ID3D11AuthenticatedChannel::GetChannelHandle([Out] void** pChannelHandle) + ID3D11AuthenticatedChannel::GetChannelHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the size of the driver's certificate chain.

    +
    + + hh447688 + GetCertificateSize + GetCertificateSize + HRESULT ID3D11AuthenticatedChannel::GetCertificateSize([Out] unsigned int* pCertificateSize) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the authenticated channel.

    +
    + + hh447689 + GetChannelHandle + GetChannelHandle + void ID3D11AuthenticatedChannel::GetChannelHandle([Out] void** pChannelHandle) +
    + + +

    The interface encapsulates a list of graphics commands for play back.

    +
    + +

    There is no explicit creation method, simply declare an interface, then call to record commands or to play back commands.

    +
    + + ff476361 + ID3D11CommandList + ID3D11CommandList +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the initialization flags associated with the deferred context that created the command list.

    +
    +

    The context flag is reserved for future use and is always 0.

    + +

    The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

    +
    + + ff476362 + unsigned int ID3D11CommandList::GetContextFlags() + ID3D11CommandList::GetContextFlags +
    + + +

    Gets the initialization flags associated with the deferred context that created the command list.

    +
    + +

    The GetContextFlags method gets the flags that were supplied to the ContextFlags parameter of ; however, the context flag is reserved for future use.

    +
    + + ff476362 + GetContextFlags + GetContextFlags + unsigned int ID3D11CommandList::GetContextFlags() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Represents a cryptographic session.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447691 + ID3D11CryptoSession + ID3D11CryptoSession +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the type of encryption that is supported by this session.

    +
    +

    Receives a that specifies the encryption type. The following GUIDs are defined.

    ValueMeaning
    D3D11_CRYPTO_TYPE_AES128_CTR

    128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher.

    ?

    + +

    The application specifies the encryption type when it creates the session.

    +
    + + hh447699 + void ID3D11CryptoSession::GetCryptoType([Out] GUID* pCryptoType) + ID3D11CryptoSession::GetCryptoType +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the DirectX Video Acceleration (DXVA) decoding profile of the session.

    +
    +

    Receives the DXVA decoding profile. For a list of possible values, see .

    + +

    The application specifies the DXVA profile when it creates the session.

    +
    + + hh447701 + void ID3D11CryptoSession::GetDecoderProfile([Out] GUID* pDecoderProfile) + ID3D11CryptoSession::GetDecoderProfile +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the size of the driver's certificate chain.

    +
    +

    Receives the size of the certificate chain, in bytes.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    To get the certificate, call .

    +
    + + hh447695 + HRESULT ID3D11CryptoSession::GetCertificateSize([Out] unsigned int* pCertificateSize) + ID3D11CryptoSession::GetCertificateSize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the driver's certificate chain.

    +
    +

    The size of the pCertificate array, in bytes. To get the size of the certificate chain, call .

    +

    A reference to a byte array that receives the driver's certificate chain. The caller must allocate the array.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447693 + HRESULT ID3D11CryptoSession::GetCertificate([In] unsigned int CertificateSize,[Out, Buffer] unsigned char* pCertificate) + ID3D11CryptoSession::GetCertificate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the cryptographic session.

    +
    +

    Receives a handle to the session.

    + +

    You can use this handle to associate the session with a decoder. This enables the decoder to decrypt data that is encrypted using this session.

    +
    + + hh447697 + void ID3D11CryptoSession::GetCryptoSessionHandle([Out] void** pCryptoSessionHandle) + ID3D11CryptoSession::GetCryptoSessionHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the type of encryption that is supported by this session.

    +
    + +

    The application specifies the encryption type when it creates the session.

    +
    + + hh447699 + GetCryptoType + GetCryptoType + void ID3D11CryptoSession::GetCryptoType([Out] GUID* pCryptoType) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the DirectX Video Acceleration (DXVA) decoding profile of the session.

    +
    + +

    The application specifies the DXVA profile when it creates the session.

    +
    + + hh447701 + GetDecoderProfile + GetDecoderProfile + void ID3D11CryptoSession::GetDecoderProfile([Out] GUID* pDecoderProfile) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the size of the driver's certificate chain.

    +
    + +

    To get the certificate, call .

    +
    + + hh447695 + GetCertificateSize + GetCertificateSize + HRESULT ID3D11CryptoSession::GetCertificateSize([Out] unsigned int* pCertificateSize) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the cryptographic session.

    +
    + +

    You can use this handle to associate the session with a decoder. This enables the decoder to decrypt data that is encrypted using this session.

    +
    + + hh447697 + GetCryptoSessionHandle + GetCryptoSessionHandle + void ID3D11CryptoSession::GetCryptoSessionHandle([Out] void** pCryptoSessionHandle) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    The interface represents a context state object, which holds state and behavior information about a Microsoft Direct3D device.

    +
    + + hh446878 + ID3DDeviceContextState + ID3DDeviceContextState +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind an array of shader resources to the domain-shader stage.

    +
    +

    Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

    +

    Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to set to the device.

    + +

    If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476421 + void ID3D11DeviceContext::DSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::DSSetShaderResources +
    + + +

    Set a domain shader to the device.

    +
    +

    Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476420 + void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::DSSetShader +
    + + +

    Set a domain shader to the device.

    +
    +

    Pointer to a domain shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476420 + void ID3D11DeviceContext::DSSetShader([In, Optional] ID3D11DomainShader* pDomainShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::DSSetShader +
    + + +

    Set an array of sampler states to the domain-shader stage.

    +
    +

    Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

    +

    Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ). See Remarks.

    + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

     //Default sampler state:	
    +             SamplerDesc;	
    +            SamplerDesc.Filter = ;	
    +            SamplerDesc.AddressU = ;	
    +            SamplerDesc.AddressV = ;	
    +            SamplerDesc.AddressW = ;	
    +            SamplerDesc.MipLODBias = 0;	
    +            SamplerDesc.MaxAnisotropy = 1;	
    +            SamplerDesc.ComparisonFunc = ;	
    +            SamplerDesc.BorderColor[0] = 1.0f;	
    +            SamplerDesc.BorderColor[1] = 1.0f;	
    +            SamplerDesc.BorderColor[2] = 1.0f;	
    +            SamplerDesc.BorderColor[3] = 1.0f;	
    +            SamplerDesc.MinLOD = -FLT_MAX;	
    +            SamplerDesc.MaxLOD = FLT_MAX; 

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476419 + void ID3D11DeviceContext::DSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::DSSetSamplers +
    + + +

    Sets the constant buffers used by the domain-shader stage.

    +
    +

    Index into the zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the DSSetConstantBuffers1 method instead.

    +
    + + ff476418 + void ID3D11DeviceContext::DSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::DSSetConstantBuffers +
    + + +

    Get the domain-shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476417 + void ID3D11DeviceContext::DSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::DSGetShaderResources +
    + + +

    Get the domain shader currently set on the device.

    +
    +

    Address of a reference to a domain shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476416 + void ID3D11DeviceContext::DSGetShader([Out] ID3D11DomainShader** ppDomainShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::DSGetShader +
    + + +

    Get an array of sampler state interfaces from the domain-shader stage.

    +
    +

    Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

    +

    Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ).

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476415 + void ID3D11DeviceContext::DSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::DSGetSamplers +
    + + +

    Get the constant buffers used by the domain-shader stage.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references (see ) to be returned by the method.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476414 + void ID3D11DeviceContext::DSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::DSGetConstantBuffers +
    + + + No documentation. + + + IDrawingSurfaceRuntimeHostNative + IDrawingSurfaceRuntimeHostNative + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + + HRESULT IDrawingSurfaceRuntimeHostNative::RequestAdditionalFrame() + IDrawingSurfaceRuntimeHostNative::RequestAdditionalFrame + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IDrawingSurfaceRuntimeHostNative::CreateSynchronizedTexture([In] ID3D11Texture2D* texture,[Out] IDrawingSurfaceSynchronizedTextureNative** synchronizedTexture) + IDrawingSurfaceRuntimeHostNative::CreateSynchronizedTexture + + + + No documentation. + + + IDrawingSurfaceSynchronizedTextureNative + IDrawingSurfaceSynchronizedTextureNative + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + + HRESULT IDrawingSurfaceSynchronizedTextureNative::BeginDraw() + IDrawingSurfaceSynchronizedTextureNative::BeginDraw + + + + No documentation. + + No documentation. + + HRESULT IDrawingSurfaceSynchronizedTextureNative::EndDraw() + IDrawingSurfaceSynchronizedTextureNative::EndDraw + + + +

    A geometry-shader interface manages an executable program (a geometry shader) that controls the geometry-shader stage.

    +
    + +

    The geometry-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

    To create a geometry shader interface, call either or . Before using a geometry shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476536 + ID3D11GeometryShader + ID3D11GeometryShader +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + An array of instances describing the layout of the output buffers. + An array of buffer strides; each stride is the size of an element for that buffer. + The index number of the stream to be sent to the rasterizer stage. Set to NoRasterizedStream if no stream is to be rasterized. + A dynamic class linkage interface. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Sets the constant buffers used by the geometry shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    You can't use the ID3D11ShaderReflectionConstantBuffer interface to get information about what is currently bound to the pipeline in the device context. But you can use ID3D11ShaderReflectionConstantBuffer to get information from a compiled shader. For example, you can use ID3D11ShaderReflectionConstantBuffer and ID3D11ShaderReflectionVariable to determine the slot in which a geometry shader expects a constant buffer. You can then pass this slot number to GSSetConstantBuffers to set the constant buffer. You can call the D3D11Reflect function to retrieve the address of a reference to the ID3D11ShaderReflection interface and then call ID3D11ShaderReflection::GetConstantBufferByName to get a reference to ID3D11ShaderReflectionConstantBuffer.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the GSSetConstantBuffers1 method instead.

    +
    + + ff476436 + void ID3D11DeviceContext::GSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::GSSetConstantBuffers +
    + + +

    Set a geometry shader to the device.

    +
    +

    Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476438 + void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::GSSetShader +
    + + +

    Set a geometry shader to the device.

    +
    +

    Pointer to a geometry shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476438 + void ID3D11DeviceContext::GSSetShader([In, Optional] ID3D11GeometryShader* pShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::GSSetShader +
    + + +

    Bind an array of shader resources to the geometry shader stage.

    +
    +

    Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

    +

    Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources(ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to set to the device.

    + +

    If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476439 + void ID3D11DeviceContext::GSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::GSSetShaderResources +
    + + +

    Set an array of sampler states to the geometry shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

    +

    Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ). See Remarks.

    + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

     //Default sampler state:	
    +             SamplerDesc;	
    +            SamplerDesc.Filter = ;	
    +            SamplerDesc.AddressU = ;	
    +            SamplerDesc.AddressV = ;	
    +            SamplerDesc.AddressW = ;	
    +            SamplerDesc.MipLODBias = 0;	
    +            SamplerDesc.MaxAnisotropy = 1;	
    +            SamplerDesc.ComparisonFunc = ;	
    +            SamplerDesc.BorderColor[0] = 1.0f;	
    +            SamplerDesc.BorderColor[1] = 1.0f;	
    +            SamplerDesc.BorderColor[2] = 1.0f;	
    +            SamplerDesc.BorderColor[3] = 1.0f;	
    +            SamplerDesc.MinLOD = -FLT_MAX;	
    +            SamplerDesc.MaxLOD = FLT_MAX; 

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476437 + void ID3D11DeviceContext::GSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::GSSetSamplers +
    + + +

    Get the constant buffers used by the geometry shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references (see ) to be returned by the method.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476432 + void ID3D11DeviceContext::GSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::GSGetConstantBuffers +
    + + +

    Get the geometry shader currently set on the device.

    +
    +

    Address of a reference to a geometry shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476434 + void ID3D11DeviceContext::GSGetShader([Out] ID3D11GeometryShader** ppGeometryShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::GSGetShader +
    + + +

    Get the geometry shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476435 + void ID3D11DeviceContext::GSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::GSGetShaderResources +
    + + +

    Get an array of sampler state interfaces from the geometry shader pipeline stage.

    +
    +

    Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

    +

    Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ).

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476433 + void ID3D11DeviceContext::GSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::GSGetSamplers +
    + + +

    A hull-shader interface manages an executable program (a hull shader) that controls the hull-shader stage.

    +
    + +

    The hull-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

    To create a hull-shader interface, call . Before using a hull shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476537 + ID3D11HullShader + ID3D11HullShader +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind an array of shader resources to the hull-shader stage.

    +
    + No documentation. + No documentation. + No documentation. + +

    If an overlapping resource view is already bound to an output slot, such as a render target, then the method will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476448 + void ID3D11DeviceContext::HSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::HSSetShaderResources +
    + + +

    Set a hull shader to the device.

    +
    +

    Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476447 + void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::HSSetShader +
    + + +

    Set a hull shader to the device.

    +
    +

    Pointer to a hull shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476447 + void ID3D11DeviceContext::HSSetShader([In, Optional] ID3D11HullShader* pHullShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::HSSetShader +
    + + +

    Set an array of sampler states to the hull-shader stage.

    +
    + No documentation. + No documentation. + No documentation. + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

     //Default sampler state:	
    +             SamplerDesc;	
    +            SamplerDesc.Filter = ;	
    +            SamplerDesc.AddressU = ;	
    +            SamplerDesc.AddressV = ;	
    +            SamplerDesc.AddressW = ;	
    +            SamplerDesc.MipLODBias = 0;	
    +            SamplerDesc.MaxAnisotropy = 1;	
    +            SamplerDesc.ComparisonFunc = ;	
    +            SamplerDesc.BorderColor[0] = 1.0f;	
    +            SamplerDesc.BorderColor[1] = 1.0f;	
    +            SamplerDesc.BorderColor[2] = 1.0f;	
    +            SamplerDesc.BorderColor[3] = 1.0f;	
    +            SamplerDesc.MinLOD = -FLT_MAX;	
    +            SamplerDesc.MaxLOD = FLT_MAX; 

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476446 + void ID3D11DeviceContext::HSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::HSSetSamplers +
    + + +

    Set the constant buffers used by the hull-shader stage.

    +
    + No documentation. + No documentation. + No documentation. + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the HSSetConstantBuffers1 method instead.

    +
    + + ff476445 + void ID3D11DeviceContext::HSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::HSSetConstantBuffers +
    + + +

    Get the hull-shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476443 + void ID3D11DeviceContext::HSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::HSGetShaderResources +
    + + +

    Get the hull shader currently set on the device.

    +
    +

    Address of a reference to a hull shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476442 + void ID3D11DeviceContext::HSGetShader([Out] ID3D11HullShader** ppHullShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::HSGetShader +
    + + +

    Get an array of sampler state interfaces from the hull-shader stage.

    +
    + No documentation. + No documentation. + No documentation. + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476441 + void ID3D11DeviceContext::HSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::HSGetSamplers +
    + + +

    Get the constant buffers used by the hull-shader stage.

    +
    + No documentation. + No documentation. + No documentation. + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476440 + void ID3D11DeviceContext::HSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::HSGetConstantBuffers +
    + + + No documentation. + + + IDrawingSurfaceContentProviderNative + IDrawingSurfaceContentProviderNative + + + +

    An input-layout interface holds a definition of how to feed vertex data that is laid out in memory into the input-assembler stage of the graphics pipeline.

    +
    + +

    To create an input-layout object, call . To bind the input-layout object to the input-assembler stage, call .

    +
    + + ff476575 + ID3D11InputLayout + ID3D11InputLayout +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the object to describe the + input-buffer data for the input-assembler stage. + + ID3D11Device::CreateInputLayout + The device used to create the layout. + An array of input elements describing the layout of the input data. + The compiled shader used to validate the input elements. + + + +

    A pixel-shader interface manages an executable program (a pixel shader) that controls the pixel-shader stage.

    +
    + +

    The pixel-shader interface has no methods; use HLSL to implement your shader functionality. All shaders in are implemented from a common set of features referred to as the common-shader core..

    To create a pixel shader interface, call . Before using a pixel shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476576 + ID3D11PixelShader + ID3D11PixelShader +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + Constant InputRegisterComponentBitCount. + D3D11_PS_INPUT_REGISTER_COMPONENT_BIT_COUNT + + + Constant InputRegisterReadPorts. + D3D11_PS_INPUT_REGISTER_READ_PORTS + + + Constant OutputRegisterComponentBitCount. + D3D11_PS_OUTPUT_REGISTER_COMPONENT_BIT_COUNT + + + Constant PixelCenterFractionalComponent. + D3D11_PS_PIXEL_CENTER_FRACTIONAL_COMPONENT + + + Constant OutputRegisterCount. + D3D11_PS_OUTPUT_REGISTER_COUNT + + + Constant InputRegisterCount. + D3D11_PS_INPUT_REGISTER_COUNT + + + Constant OutputRegisterComponents. + D3D11_PS_OUTPUT_REGISTER_COMPONENTS + + + Constant FrontfacingFalseValue. + D3D11_PS_FRONTFACING_FALSE_VALUE + + + Constant OutputMaskRegisterCount. + D3D11_PS_OUTPUT_MASK_REGISTER_COUNT + + + Constant LegacyPixelCenterFractionalComponent. + D3D11_PS_LEGACY_PIXEL_CENTER_FRACTIONAL_COMPONENT + + + Constant InputRegisterReadsPerInst. + D3D11_PS_INPUT_REGISTER_READS_PER_INST + + + Constant OutputMaskRegisterComponentBitCount. + D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENT_BIT_COUNT + + + Constant OutputMaskRegisterComponents. + D3D11_PS_OUTPUT_MASK_REGISTER_COMPONENTS + + + Constant FrontfacingDefaultValue. + D3D11_PS_FRONTFACING_DEFAULT_VALUE + + + Constant OutputDepthRegisterComponentBitCount. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENT_BIT_COUNT + + + Constant FrontfacingTrueValue. + D3D11_PS_FRONTFACING_TRUE_VALUE + + + Constant OutputDepthRegisterCount. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COUNT + + + Constant OutputDepthRegisterComponents. + D3D11_PS_OUTPUT_DEPTH_REGISTER_COMPONENTS + + + Constant InputRegisterComponents. + D3D11_PS_INPUT_REGISTER_COMPONENTS + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Bind an array of shader resources to the pixel shader stage.

    +
    +

    Index into the device's zero-based array to begin setting shader resources to (ranges from 0 to - 1).

    +

    Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to set to the device.

    + +

    If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476473 + void ID3D11DeviceContext::PSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::PSSetShaderResources +
    + + +

    Sets a pixel shader to the device.

    +
    +

    Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

    +
    + + ff476472 + void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::PSSetShader +
    + + +

    Sets a pixel shader to the device.

    +
    +

    Pointer to a pixel shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    Set ppClassInstances to null if no interfaces are used in the shader. If it is not null, the number of class instances must match the number of interfaces used in the shader. Furthermore, each interface reference must have a corresponding class instance or the assigned shader will be disabled.

    +
    + + ff476472 + void ID3D11DeviceContext::PSSetShader([In, Optional] ID3D11PixelShader* pPixelShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::PSSetShader +
    + + +

    Set an array of sampler states to the pixel shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

    +

    Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ). See Remarks.

    + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

    StateDefault Value
    Filter
    AddressU
    AddressV
    AddressW
    MipLODBias0
    MaxAnisotropy1
    ComparisonFunc
    BorderColor[0]1.0f
    BorderColor[1]1.0f
    BorderColor[2]1.0f
    BorderColor[3]1.0f
    MinLOD-FLT_MAX
    MaxLODFLT_MAX

    ?

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476471 + void ID3D11DeviceContext::PSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::PSSetSamplers +
    + + +

    Sets the constant buffers used by the pixel shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The Direct3D 11.1 runtime, which is available on Windows Developer Preview and later operating systems, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the PSSetConstantBuffers1 method instead.

    +
    + + ff476470 + void ID3D11DeviceContext::PSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::PSSetConstantBuffers +
    + + +

    Get the pixel shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476469 + void ID3D11DeviceContext::PSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::PSGetShaderResources +
    + + +

    Get the pixel shader currently set on the device.

    +
    +

    Address of a reference to a pixel shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476468 + void ID3D11DeviceContext::PSGetShader([Out] ID3D11PixelShader** ppPixelShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::PSGetShader +
    + + +

    Get an array of sampler states from the pixel shader pipeline stage.

    +
    +

    Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

    +

    Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Arry of sampler-state interface references (see ) to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476467 + void ID3D11DeviceContext::PSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::PSGetSamplers +
    + + +

    Get the constant buffers used by the pixel shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references (see ) to be returned by the method.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476466 + void ID3D11DeviceContext::PSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::PSGetConstantBuffers +
    + + +

    A predicate interface determines whether geometry should be processed depending on the results of a previous draw call.

    +
    + +

    To create a predicate object, call . To set the predicate object, call .

    There are two types of predicates: stream-output-overflow predicates and occlusion predicates. Stream-output-overflow predicates cause any geometry residing in stream-output buffers that were overflowed to not be processed. Occlusion predicates cause any geometry that did not have a single sample pass the depth/stencil tests to not be processed.

    +
    + + ff476577 + ID3D11Predicate + ID3D11Predicate +
    + + +

    A query interface queries information from the GPU.

    +
    + +

    A query can be created with .

    Query data is typically gathered by issuing an command, issuing some graphics commands, issuing an command, and then calling to get data about what happened in between the Begin and End calls. The data returned by GetData will be different depending on the type of query.

    There are, however, some queries that do not require calls to Begin. For a list of possible queries see .

    A query is typically executed as shown in the following code:

      queryDesc;	
    +            ... // Fill out queryDesc structure	
    +             * pQuery;	
    +            pDevice->CreateQuery(&queryDesc, &pQuery);	
    +            pDeviceContext->Begin(pQuery); ... // Issue graphics commands pDeviceContext->End(pQuery);	
    +            UINT64 queryData; // This data type is different depending on the query type while(  != pDeviceContext->GetData(pQuery, &queryData, sizeof(UINT64), 0) )	
    +            {	
    +            }	
    +            

    When using a query that does not require a call to Begin, it still requires a call to End. The call to End causes the data returned by GetData to be accurate up until the last call to End.

    +
    + + ff476578 + ID3D11Query + ID3D11Query +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a query description.

    +
    +

    Pointer to a query description (see ).

    + + ff476579 + void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) + ID3D11Query::GetDesc +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

    Get a query description.

    +
    + + ff476579 + GetDesc + GetDesc + void ID3D11Query::GetDesc([Out] D3D11_QUERY_DESC* pDesc) +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The query description. + The newly created object. + + + +

    A render-target-view interface identifies the render-target subresources that can be accessed during rendering.

    +
    + +

    To create a render-target view, call . To bind a render-target view to the pipeline, call .

    A rendertarget is a resource that can be written by the output-merger stage at the end of a render pass. Each render-target should also have a corresponding depth-stencil view.

    +
    + + ff476582 + ID3D11RenderTargetView + ID3D11RenderTargetView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the properties of a render target view.

    +
    +

    Pointer to the description of a render target view (see ).

    + + ff476583 + void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) + ID3D11RenderTargetView::GetDesc +
    + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + ID3D11Device::CreateRenderTargetView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the RenderTarget flag. + A structure describing the to be created. + ID3D11Device::CreateRenderTargetView + + + +

    Get the properties of a render target view.

    +
    + + ff476583 + GetDesc + GetDesc + void ID3D11RenderTargetView::GetDesc([Out] D3D11_RENDER_TARGET_VIEW_DESC* pDesc) +
    + + +

    The sampler-state interface holds a description for sampler state that you can bind to any shader stage of the pipeline for reference by texture sample operations.

    +
    + +

    To create a sampler-state object, call .

    To bind a sampler-state object to any pipeline shader stage, call the following methods:

    • ID3D11DeviceContext::HSSetSampler

    You can bind the same sampler-state object to multiple shader stages simultaneously.

    +
    + + ff476588 + ID3D11SamplerState + ID3D11SamplerState +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Gets the description for sampler state that you used to create the sampler-state object.

    +
    +

    A reference to a structure that receives a description of the sampler state.

    + +

    You use the description for sampler state in a call to the method to create the sampler-state object.

    +
    + + ff476589 + void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) + ID3D11SamplerState::GetDesc +
    + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + ff476518 + HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) + ID3D11Device::CreateSamplerState + + + + Constructs a new based on the specified description. + + The device with which to associate the state object. + The state description. + The newly created object. + ff476518 + HRESULT ID3D11Device::CreateSamplerState([In] const D3D11_SAMPLER_DESC* pSamplerDesc,[Out, Fast] ID3D11SamplerState** ppSamplerState) + ID3D11Device::CreateSamplerState + + + +

    Gets the description for sampler state that you used to create the sampler-state object.

    +
    + +

    You use the description for sampler state in a call to the method to create the sampler-state object.

    +
    + + ff476589 + GetDesc + GetDesc + void ID3D11SamplerState::GetDesc([Out] D3D11_SAMPLER_DESC* pDesc) +
    + + +

    A shader-resource-view interface specifies the subresources a shader can access during rendering. Examples of shader resources include a constant buffer, a texture buffer, a texture or a sampler.

    +
    + +

    To create a shader-resource view, call .

    A shader-resource view is required when binding a resource to a shader stage; the binding occurs by calling , or .

    +
    + + ff476628 + ID3D11ShaderResourceView + ID3D11ShaderResourceView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the shader resource view's description.

    +
    +

    A reference to a structure to be filled with data about the shader resource view.

    + + ff476629 + void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) + ID3D11ShaderResourceView::GetDesc +
    + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the ShaderResource flag. + A structure describing the to be created. + ff476519 + HRESULT ID3D11Device::CreateShaderResourceView([In] ID3D11Resource* pResource,[In, Optional] const D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc,[Out, Fast] ID3D11ShaderResourceView** ppSRView) + ID3D11Device::CreateShaderResourceView + + + +

    Get the shader resource view's description.

    +
    + + ff476629 + GetDesc + GetDesc + void ID3D11ShaderResourceView::GetDesc([Out] D3D11_SHADER_RESOURCE_VIEW_DESC* pDesc) +
    + + +

    A 1D texture interface accesses texel data, which is structured memory.

    +
    + +

    To create an empty 1D texture, call . For more details on creating and loading textures, see Creating Texture Resources.

    Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

    +
    + + ff476633 + ID3D11Texture1D + ID3D11Texture1D +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the properties of the texture resource.

    +
    +

    Pointer to a resource description (see ).

    + + ff476634 + void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) + ID3D11Texture1D::GetDesc +
    + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476520 + HRESULT ID3D11Device::CreateTexture1D([In] const D3D11_TEXTURE1D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture1D** ppTexture1D) + ID3D11Device::CreateTexture1D + + + + + + +

    Get the properties of the texture resource.

    +
    + + ff476634 + GetDesc + GetDesc + void ID3D11Texture1D::GetDesc([Out] D3D11_TEXTURE1D_DESC* pDesc) +
    + + +

    A 2D texture interface manages texel data, which is structured memory.

    +
    + +

    To create an empty Texture2D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

    Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

    +
    + + ff476635 + ID3D11Texture2D + ID3D11Texture2D +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the properties of the texture resource.

    +
    +

    Pointer to a resource description (see ).

    + + ff476636 + void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) + ID3D11Texture2D::GetDesc +
    + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + ff476521 + HRESULT ID3D11Device::CreateTexture2D([In] const D3D11_TEXTURE2D_DESC* pDesc,[In, Buffer, Optional] const D3D11_SUBRESOURCE_DATA* pInitialData,[Out, Fast] ID3D11Texture2D** ppTexture2D) + ID3D11Device::CreateTexture2D + + + + + + +

    Get the properties of the texture resource.

    +
    + + ff476636 + GetDesc + GetDesc + void ID3D11Texture2D::GetDesc([Out] D3D11_TEXTURE2D_DESC* pDesc) +
    + + +

    A 3D texture interface accesses texel data, which is structured memory.

    +
    + +

    To create an empty Texture3D resource, call . For more details on creating and loading textures, see Creating Texture Resources.

    Textures cannot be bound directly to the pipeline; instead, a view must be created and bound. Using a view, texture data can be interpreted at run time within certain restrictions. To use the texture as a render target or depth-stencil resource, call , and , respectively. To use the texture as an input to a shader, create a by calling .

    +
    + + ff476637 + ID3D11Texture3D + ID3D11Texture3D +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get the properties of the texture resource.

    +
    +

    Pointer to a resource description (see ).

    + + ff476638 + void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) + ID3D11Texture3D::GetDesc +
    + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + + + + Initializes a new instance of the class. + + The device with which to associate the texture. + The description of the texture. + An array of initial texture data for each subresource. + + + + + + +

    Get the properties of the texture resource.

    +
    + + ff476638 + GetDesc + GetDesc + void ID3D11Texture3D::GetDesc([Out] D3D11_TEXTURE3D_DESC* pDesc) +
    + + +

    A view interface specifies the parts of a resource the pipeline can access during rendering.

    +
    + +

    To create a view for an unordered access resource, call .

    All resources must be bound to the pipeline before they can be accessed. Call to bind an unordered access view to a compute shader; call to bind an unordered access view to a pixel shader.

    +
    + + ff476639 + ID3D11UnorderedAccessView + ID3D11UnorderedAccessView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a description of the resource.

    +
    +

    Pointer to a resource description (see .)

    + + ff476640 + void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) + ID3D11UnorderedAccessView::GetDesc +
    + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. + ID3D11Device::CreateUnorderedAccessView + + + + Creates a for accessing resource data. + + The device to use when creating this . + The resource that represents the render-target surface. This surface must have been created with the UnorderedAccess flag. + A structure describing the to be created. + ID3D11Device::CreateUnorderedAccessView + + + +

    Get a description of the resource.

    +
    + + ff476640 + GetDesc + GetDesc + void ID3D11UnorderedAccessView::GetDesc([Out] D3D11_UNORDERED_ACCESS_VIEW_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    The interface enables an application to describe conceptual sections and markers within the application's code flow. An appropriately enabled tool, such as Microsoft Visual Studio?11 Ultimate Beta, can display these sections and markers visually along the tool's Microsoft Direct3D time line, while the tool debugs the application. These visual notes allow users of such a tool to navigate to parts of the time line that are of interest, or to understand what set of Direct3D calls are produced by certain sections of the application's code.

    +
    + +

    The methods of have no effect when the calling application is not running under a Direct3D-specific profiling tool like Visual Studio?11 Ultimate Beta. +

    The interface is published by Microsoft Direct3D?11 device contexts. Therefore, has the same threading rules as the interface, or any other context interface. For more information about Direct3D threading, see MultiThreading. + To retrieve the interface for the context, call the QueryInterface method for the context (for example, ID3D11DeviceContext::QueryInterface). In this call, you must pass the identifier of .

    The interface is the Microsoft Direct3D?10 and later equivalent of the Direct3D 9 PIX functions (D3DPERF_* functions).

    Note??Setting the flag in your app replaces calling D3DPerf_SetOptions(1). But, to prevent Direct3D debugging tools from hooking your app, your app can also call to determine whether it is running under a Direct3D debugging tool and then exit accordingly.

    You must call the BeginEvent and EndEvent methods in pairs; pairs of calls to these methods can nest within pairs of calls to these methods at a higher level in the application's call stack. In other words, a "Draw World" section can entirely contain another section named "Draw Trees," which can in turn entirely contain a section called "Draw Oaks." You can only associate an EndEvent method with the most recent BeginEvent method, that is, pairs cannot overlap. You cannot call an EndEvent for any BeginEvent that preceded the most recent BeginEvent. In fact, the runtime interprets the first EndEvent as ending the second BeginEvent.

    +
    + + hh446881 + ID3DUserDefinedAnnotation + ID3DUserDefinedAnnotation +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Marks the beginning of a section of event code.

    +
    +

    A null-terminated UNICODE string that contains the name of the event. The name is not relevant to the operating system. You can choose a name that is meaningful when the calling application is running under the Direct3D profiling tool.A null reference produces undefined results.

    +

    Returns the number of previous calls to BeginEvent that have not yet been finalized by calls to the method.

    The return value is ?1 if the calling application is not running under a Direct3D profiling tool.

    + +

    You call the EndEvent method to mark the end of the section of event code.

    A user can visualize the event when the calling application is running under an enabled Direct3D profiling tool such as Microsoft Visual Studio?11 Ultimate Beta.

    BeginEvent has no effect if the calling application is not running under an enabled Direct3D profiling tool.

    +
    + + hh446884 + int ID3DUserDefinedAnnotation::BeginEvent([In] const wchar_t* Name) + ID3DUserDefinedAnnotation::BeginEvent +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Marks the end of a section of event code.

    +
    +

    Returns the number of previous calls to the method that have not yet been finalized by calls to EndEvent.

    The return value is ?1 if the calling application is not running under a Direct3D profiling tool.

    + +

    You call the BeginEvent method to mark the beginning of the section of event code.

    A user can visualize the event when the calling application is running under an enabled Direct3D profiling tool such as Microsoft Visual Studio?11 Ultimate Beta.

    EndEvent has no effect if the calling application is not running under an enabled Direct3D profiling tool.

    +
    + + hh446886 + int ID3DUserDefinedAnnotation::EndEvent() + ID3DUserDefinedAnnotation::EndEvent +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Marks a single point of execution in code.

    +
    +

    A null-terminated UNICODE string that contains the name of the marker. The name is not relevant to the operating system. You can choose a name that is meaningful when the calling application is running under the Direct3D profiling tool.A null reference produces undefined results.

    + +

    A user can visualize the marker when the calling application is running under an enabled Direct3D profiling tool such as Microsoft Visual Studio?11 Ultimate Beta.

    SetMarker has no effect if the calling application is not running under an enabled Direct3D profiling tool.

    +
    + + hh446898 + void ID3DUserDefinedAnnotation::SetMarker([In] const wchar_t* Name) + ID3DUserDefinedAnnotation::SetMarker +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether the calling application is running under a Microsoft Direct3D profiling tool.

    +
    +

    The return value is nonzero if the calling application is running under a Direct3D profiling tool such as Visual Studio?11 Ultimate Beta, and zero otherwise.

    + +

    You can call GetStatus to determine whether your application is running under a Direct3D profiling tool before you make further calls to other methods of the interface. For example, the and methods have no effect if the calling application is not running under an enabled Direct3D profiling tool. Therefore, you do not need to call these methods unless your application is running under a Direct3D profiling tool.

    +
    + + hh446889 + BOOL ID3DUserDefinedAnnotation::GetStatus() + ID3DUserDefinedAnnotation::GetStatus +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Marks a single point of execution in code.

    +
    + +

    A user can visualize the marker when the calling application is running under an enabled Direct3D profiling tool such as Microsoft Visual Studio?11 Ultimate Beta.

    SetMarker has no effect if the calling application is not running under an enabled Direct3D profiling tool.

    +
    + + hh446898 + SetMarker + SetMarker + void ID3DUserDefinedAnnotation::SetMarker([In] const wchar_t* Name) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Determines whether the calling application is running under a Microsoft Direct3D profiling tool.

    +
    + +

    You can call GetStatus to determine whether your application is running under a Direct3D profiling tool before you make further calls to other methods of the interface. For example, the and methods have no effect if the calling application is not running under an enabled Direct3D profiling tool. Therefore, you do not need to call these methods unless your application is running under a Direct3D profiling tool.

    +
    + + hh446889 + GetStatus + GetStatus + BOOL ID3DUserDefinedAnnotation::GetStatus() +
    + + +

    A vertex-shader interface manages an executable program (a vertex shader) that controls the vertex-shader stage.

    +
    + +

    The vertex-shader interface has no methods; use HLSL to implement your shader functionality. All shaders are implemented from a common set of features referred to as the common-shader core..

    To create a vertex shader interface, call . Before using a vertex shader you must bind it to the device by calling .

    This interface is defined in D3D11.h.

    +
    + + ff476641 + ID3D11VertexShader + ID3D11VertexShader +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Initializes a new instance of the class. + + The device used to create the shader. + The compiled shader bytecode. + A dynamic class linkage interface. + + + +

    The interface represents a device context which generates rendering commands.

    +
    + + ff476385 + ID3D11DeviceContext + ID3D11DeviceContext +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Sets the constant buffers used by the vertex shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting constant buffers to (ranges from 0 to - 1).

    +

    Number of buffers to set (ranges from 0 to - StartSlot).

    +

    Array of constant buffers (see ) being given to the device.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The Direct3D 11.1 runtime, which is available starting with Windows Developer Preview, can bind a larger number of resources to the shader than the maximum constant buffer size that is supported by shaders (4096 constants ? 4*32-bit components each). When you bind such a large buffer, the shader can access only the first 4096 4*32-bit component constants in the buffer, as if 4096 constants is the full size of the buffer.

    If the application wants the shader to access other parts of the buffer, it must call the VSSetConstantBuffers1 method instead.

    +
    + + ff476491 + void ID3D11DeviceContext::VSSetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[In, Buffer, Optional] const void** ppConstantBuffers) + ID3D11DeviceContext::VSSetConstantBuffers +
    + + +

    Set a vertex shader to the device.

    +
    +

    Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476493 + void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::VSSetShader +
    + + +

    Set a vertex shader to the device.

    +
    +

    Pointer to a vertex shader (see ). Passing in null disables the shader for this pipeline stage.

    +

    A reference to an array of class-instance interfaces (see ). Each interface used by a shader must have a corresponding class instance or the shader will get disabled. Set ppClassInstances to null if the shader does not use any interfaces.

    +

    The number of class-instance interfaces in the array.

    + +

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    The maximum number of instances a shader can have is 256.

    +
    + + ff476493 + void ID3D11DeviceContext::VSSetShader([In, Optional] ID3D11VertexShader* pVertexShader,[In, Buffer, Optional] const ID3D11ClassInstance** ppClassInstances,[In] unsigned int NumClassInstances) + ID3D11DeviceContext::VSSetShader +
    + + +

    Bind an array of shader resources to the vertex-shader stage.

    +
    +

    Index into the device's zero-based array to begin setting shader resources to (range is from 0 to - 1).

    +

    Number of shader resources to set. Up to a maximum of 128 slots are available for shader resources (range is from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to set to the device.

    + +

    If an overlapping resource view is already bound to an output slot, such as a rendertarget, then this API will fill the destination shader resource slot with null.

    For information about creating shader-resource views, see .

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476494 + void ID3D11DeviceContext::VSSetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[In, Buffer, Optional] const void** ppShaderResourceViews) + ID3D11DeviceContext::VSSetShaderResources +
    + + +

    Set an array of sampler states to the vertex shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin setting samplers to (ranges from 0 to - 1).

    +

    Number of samplers in the array. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Pointer to an array of sampler-state interfaces (see ). See Remarks.

    + +

    Any sampler may be set to null; this invokes the default state, which is defined to be the following.

     //Default sampler state:	
    +             SamplerDesc;	
    +            SamplerDesc.Filter = ;	
    +            SamplerDesc.AddressU = ;	
    +            SamplerDesc.AddressV = ;	
    +            SamplerDesc.AddressW = ;	
    +            SamplerDesc.MipLODBias = 0;	
    +            SamplerDesc.MaxAnisotropy = 1;	
    +            SamplerDesc.ComparisonFunc = ;	
    +            SamplerDesc.BorderColor[0] = 1.0f;	
    +            SamplerDesc.BorderColor[1] = 1.0f;	
    +            SamplerDesc.BorderColor[2] = 1.0f;	
    +            SamplerDesc.BorderColor[3] = 1.0f;	
    +            SamplerDesc.MinLOD = -FLT_MAX;	
    +            SamplerDesc.MaxLOD = FLT_MAX; 

    The method will hold a reference to the interfaces passed in. This differs from the device state behavior in Direct3D 10.

    +
    + + ff476492 + void ID3D11DeviceContext::VSSetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[In, Buffer, Optional] const void** ppSamplers) + ID3D11DeviceContext::VSSetSamplers +
    + + +

    Get the constant buffers used by the vertex shader pipeline stage.

    +
    +

    Index into the device's zero-based array to begin retrieving constant buffers from (ranges from 0 to - 1).

    +

    Number of buffers to retrieve (ranges from 0 to - StartSlot).

    +

    Array of constant buffer interface references (see ) to be returned by the method.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476487 + void ID3D11DeviceContext::VSGetConstantBuffers([In] unsigned int StartSlot,[In] unsigned int NumBuffers,[Out, Buffer, Optional] ID3D11Buffer** ppConstantBuffers) + ID3D11DeviceContext::VSGetConstantBuffers +
    + + +

    Get the vertex shader currently set on the device.

    +
    +

    Address of a reference to a vertex shader (see ) to be returned by the method.

    +

    Pointer to an array of class instance interfaces (see ).

    +

    The number of class-instance elements in the array.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476489 + void ID3D11DeviceContext::VSGetShader([Out] ID3D11VertexShader** ppVertexShader,[Out, Buffer, Optional] ID3D11ClassInstance** ppClassInstances,[InOut] unsigned int* pNumClassInstances) + ID3D11DeviceContext::VSGetShader +
    + + +

    Get the vertex shader resources.

    +
    +

    Index into the device's zero-based array to begin getting shader resources from (ranges from 0 to - 1).

    +

    The number of resources to get from the device. Up to a maximum of 128 slots are available for shader resources (ranges from 0 to - StartSlot).

    +

    Array of shader resource view interfaces to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476490 + void ID3D11DeviceContext::VSGetShaderResources([In] unsigned int StartSlot,[In] unsigned int NumViews,[Out, Buffer, Optional] ID3D11ShaderResourceView** ppShaderResourceViews) + ID3D11DeviceContext::VSGetShaderResources +
    + + +

    Get an array of sampler states from the vertex shader pipeline stage.

    +
    +

    Index into a zero-based array to begin getting samplers from (ranges from 0 to - 1).

    +

    Number of samplers to get from a device context. Each pipeline stage has a total of 16 sampler slots available (ranges from 0 to - StartSlot).

    +

    Arry of sampler-state interface references (see ) to be returned by the device.

    + +

    Any returned interfaces will have their reference count incremented by one. Applications should call IUnknown::Release on the returned interfaces when they are no longer needed to avoid memory leaks.

    +
    + + ff476488 + void ID3D11DeviceContext::VSGetSamplers([In] unsigned int StartSlot,[In] unsigned int NumSamplers,[Out, Buffer, Optional] ID3D11SamplerState** ppSamplers) + ID3D11DeviceContext::VSGetSamplers +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a reference to a DirectX Video Acceleration (DXVA) decoder buffer.

    +
    + +

    The graphics driver allocates the buffers that are used for DXVA decoding. This method locks the Microsoft Direct3D surface that contains the buffer. When you are done using the buffer, call to unlock the surface.

    +
    + + hh447711 + ID3D11VideoContext + ID3D11VideoContext +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a reference to a DirectX Video Acceleration (DXVA) decoder buffer.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The type of buffer to retrieve, specified as a member of the enumeration.

    +

    Receives the size of the buffer, in bytes.

    +

    Receives a reference to the start of the memory buffer.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The graphics driver allocates the buffers that are used for DXVA decoding. This method locks the Microsoft Direct3D surface that contains the buffer. When you are done using the buffer, call to unlock the surface.

    +
    + + hh447711 + HRESULT ID3D11VideoContext::GetDecoderBuffer([In] ID3D11VideoDecoder* pDecoder,[In] D3D11_VIDEO_DECODER_BUFFER_TYPE Type,[Out] unsigned int* pBufferSize,[Out, Buffer, Optional] void** ppBuffer) + ID3D11VideoContext::GetDecoderBuffer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Releases a buffer that was obtained by calling the method.

    +
    + No documentation. + No documentation. +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447716 + HRESULT ID3D11VideoContext::ReleaseDecoderBuffer([In] ID3D11VideoDecoder* pDecoder,[In] D3D11_VIDEO_DECODER_BUFFER_TYPE Type) + ID3D11VideoContext::ReleaseDecoderBuffer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Starts a DirectX Video Acceleration (DXVA) decoding operation to decode a video frame.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to the interface. This interface describes the resource that will receive the decoded frame. To get this reference, call .

    +

    The size of the content key that is specified in pContentKey. If pContentKey is null, set ContentKeySize to zero.

    +

    An optional reference to a content key that was used to encrypt the frame data. If no content key was used, set this parameter to null. If the caller provides a content key, the caller must use the session key to encrypt the content key.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    After this method is called, call to perform decoding operations. When all decoding operations have been executed, call .

    Each call to DecoderBeginFrame must have a matching call to DecoderEndFrame, and DecoderBeginFrame calls cannot be nested.

    +
    + + hh447705 + HRESULT ID3D11VideoContext::DecoderBeginFrame([In] ID3D11VideoDecoder* pDecoder,[In] ID3D11VideoDecoderOutputView* pView,[In] unsigned int ContentKeySize,[In, Buffer, Optional] const void* pContentKey) + ID3D11VideoContext::DecoderBeginFrame +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Signals the end of a DirectX Video Acceleration (DXVA) decoding operation.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447706 + HRESULT ID3D11VideoContext::DecoderEndFrame([In] ID3D11VideoDecoder* pDecoder) + ID3D11VideoContext::DecoderEndFrame +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Submits one or more buffers for DirectX Video Acceleration (DXVA) decoding.

    +
    +

    A reference to the interface. To get this reference, call the method.

    +

    The number of buffers submitted for decoding.

    +

    A reference to an array of structures. The NumBuffers parameter specifies the number of elements in the array. Each element in the array describes a compressed buffer for decoding.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447718 + HRESULT ID3D11VideoContext::SubmitDecoderBuffers([In] ID3D11VideoDecoder* pDecoder,[In] unsigned int NumBuffers,[In, Buffer] const D3D11_VIDEO_DECODER_BUFFER_DESC* pBufferDesc) + ID3D11VideoContext::SubmitDecoderBuffers +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Performs an extended function for DirectX Video Acceleration (DXVA) decoding. This method enables extensions to the basic DXVA decoder functionality.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to a structure that contains data for the function.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447707 + HRESULT ID3D11VideoContext::DecoderExtension([In] ID3D11VideoDecoder* pDecoder,[In] const D3D11_VIDEO_DECODER_EXTENSION* pExtensionData) + ID3D11VideoContext::DecoderExtension +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the target rectangle for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Specifies whether to apply the target rectangle.

    +

    A reference to a structure that specifies the target rectangle. If Enable is , this parameter is ignored.

    + +

    The target rectangle is the area within the destination surface where the output will be drawn. The target rectangle is given in pixel coordinates, relative to the destination surface.

    If this method is never called, or if the Enable parameter is , the video processor writes to the entire destination surface.

    +
    + + hh447752 + void ID3D11VideoContext::VideoProcessorSetOutputTargetRect([In] ID3D11VideoProcessor* pVideoProcessor,[In] BOOL Enable,[In, Optional] const RECT* pRect) + ID3D11VideoContext::VideoProcessorSetOutputTargetRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the background color for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    If TRUE, the color is specified as a YCbCr value. Otherwise, the color is specified as an RGB value.

    +

    A reference to a structure that specifies the background color.

    + +

    The video processor uses the background color to fill areas of the target rectangle that do not contain a video image. Areas outside the target rectangle are not affected.

    +
    + + hh447747 + void ID3D11VideoContext::VideoProcessorSetOutputBackgroundColor([In] ID3D11VideoProcessor* pVideoProcessor,[In] BOOL YCbCr,[In] const D3D11_VIDEO_COLOR* pColor) + ID3D11VideoContext::VideoProcessorSetOutputBackgroundColor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the output color space for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to a structure that specifies the color space.

    + + hh447748 + void ID3D11VideoContext::VideoProcessorSetOutputColorSpace([In] ID3D11VideoProcessor* pVideoProcessor,[In] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE* pColorSpace) + ID3D11VideoContext::VideoProcessorSetOutputColorSpace +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the alpha fill mode for data that the video processor writes to the render target.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The alpha fill mode, specified as a value.

    +

    The zero-based index of an input stream. This parameter is used if AlphaFillMode is . Otherwise, the parameter is ignored.

    + +

    To find out which fill modes the device supports, call the method. If the driver reports the capability, the driver supports all of the fill modes. Otherwise, the AlphaFillMode parameter must be .

    The default fill mode is .

    +
    + + hh447746 + void ID3D11VideoContext::VideoProcessorSetOutputAlphaFillMode([In] ID3D11VideoProcessor* pVideoProcessor,[In] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE AlphaFillMode,[In] unsigned int StreamIndex) + ID3D11VideoContext::VideoProcessorSetOutputAlphaFillMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the amount of downsampling to perform on the output.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    If TRUE, downsampling is enabled. Otherwise, downsampling is disabled and the Size member is ignored.

    +

    The sampling size.

    + +

    Downsampling is sometimes used to reduce the quality of premium content when other forms of content protection are not available. By default, downsampling is disabled.

    If the Enable parameter is TRUE, the driver downsamples the composed image to the specified size, and then scales it back to the size of the target rectangle.

    The width and height of Size must be greater than zero. If the size is larger than the target rectangle, downsampling does not occur.

    To use this feature, the driver must support downsampling, indicated by the capability flag. To query for this capability, call .

    +
    + + hh447749 + void ID3D11VideoContext::VideoProcessorSetOutputConstriction([In] ID3D11VideoProcessor* pVideoProcessor,[In] BOOL Enable,[In] SIZE Size) + ID3D11VideoContext::VideoProcessorSetOutputConstriction +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies whether the video processor produces stereo video frames.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    If TRUE, stereo output is enabled. Otherwise, the video processor produces mono video frames.

    + +

    By default, the video processor produces mono video frames. If stereo video is enabled, set the stereo output format by calling .

    To use this feature, the driver must support stereo video, indicated by the capability flag. To query for this capability, call .

    +
    + + hh447751 + void ID3D11VideoContext::VideoProcessorSetOutputStereoMode([In] ID3D11VideoProcessor* pVideoProcessor,[In] BOOL Enable) + ID3D11VideoContext::VideoProcessorSetOutputStereoMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets a driver-specific video processing state.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to a that identifies the operation. The meaning of this is defined by the graphics driver.

    +

    The size of the pData buffer, in bytes.

    +

    A reference to a buffer that contains private state data. The method passes this buffer directly to the driver without validation. It is the responsibility of the driver to validate the data.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447750 + HRESULT ID3D11VideoContext::VideoProcessorSetOutputExtension([In] ID3D11VideoProcessor* pVideoProcessor,[In] const GUID* pExtensionGuid,[In] unsigned int DataSize,[In] void* pData) + ID3D11VideoContext::VideoProcessorSetOutputExtension +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current target rectangle for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Receives the value TRUE if the target rectangle was explicitly set using the method. Receives the value if the target rectangle was disabled or was never set.

    +

    If Enabled receives the value TRUE, this parameter receives the target rectangle. Otherwise, this parameter is ignored.

    + + hh447726 + void ID3D11VideoContext::VideoProcessorGetOutputTargetRect([In] ID3D11VideoProcessor* pVideoProcessor,[Out] BOOL* Enabled,[Out] RECT* pRect) + ID3D11VideoContext::VideoProcessorGetOutputTargetRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current background color for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Receives the value TRUE if the background color is a YCbCr color, or if the background color is an RGB color.

    +

    A reference to a structure. The method fills in the structure with the background color.

    + + hh447721 + void ID3D11VideoContext::VideoProcessorGetOutputBackgroundColor([In] ID3D11VideoProcessor* pVideoProcessor,[Out] BOOL* pYCbCr,[Out] D3D11_VIDEO_COLOR* pColor) + ID3D11VideoContext::VideoProcessorGetOutputBackgroundColor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current output color space for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to a structure. The method fills in the structure with the output color space.

    + + hh447722 + void ID3D11VideoContext::VideoProcessorGetOutputColorSpace([In] ID3D11VideoProcessor* pVideoProcessor,[Out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE* pColorSpace) + ID3D11VideoContext::VideoProcessorGetOutputColorSpace +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current alpha fill mode for the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Receives the alpha fill mode, as a value.

    +

    If the alpha fill mode is , this parameter receives the zero-based index of an input stream. The input stream provides the alpha values for the alpha fill.

    + + hh447720 + void ID3D11VideoContext::VideoProcessorGetOutputAlphaFillMode([In] ID3D11VideoProcessor* pVideoProcessor,[Out] D3D11_VIDEO_PROCESSOR_ALPHA_FILL_MODE* pAlphaFillMode,[Out] unsigned int* pStreamIndex) + ID3D11VideoContext::VideoProcessorGetOutputAlphaFillMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current level of downsampling that is performed by the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Receives the value TRUE if downsampling was explicitly enabled using the method. Receives the value if the downsampling was disabled or was never set.

    +

    If Enabled receives the value TRUE, this parameter receives the downsampling size. Otherwise, this parameter is ignored.

    + + hh447723 + void ID3D11VideoContext::VideoProcessorGetOutputConstriction([In] ID3D11VideoProcessor* pVideoProcessor,[Out] BOOL* pEnabled,[Out] SIZE* pSize) + ID3D11VideoContext::VideoProcessorGetOutputConstriction +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the video processor produces stereo video frames.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Receives the value TRUE if stereo output is enabled, or otherwise.

    + + hh447725 + void ID3D11VideoContext::VideoProcessorGetOutputStereoMode([In] ID3D11VideoProcessor* pVideoProcessor,[Out] BOOL* pEnabled) + ID3D11VideoContext::VideoProcessorGetOutputStereoMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets private state data from the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    A reference to a that identifies the state. The meaning of this is defined by the graphics driver.

    +

    The size of the pData buffer, in bytes.

    +

    A reference to a buffer that receives the private state data.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447724 + HRESULT ID3D11VideoContext::VideoProcessorGetOutputExtension([In] ID3D11VideoProcessor* pVideoProcessor,[In] const GUID* pExtensionGuid,[In] unsigned int DataSize,[Out] void* pData) + ID3D11VideoContext::VideoProcessorGetOutputExtension +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies whether an input stream on the video processor contains interlaced or progressive frames.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    A value that specifies the interlacing.

    + + hh447759 + void ID3D11VideoContext::VideoProcessorSetStreamFrameFormat([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] D3D11_VIDEO_FRAME_FORMAT FrameFormat) + ID3D11VideoContext::VideoProcessorSetStreamFrameFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the color space for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    A reference to a structure that specifies the color space.

    + + hh447755 + void ID3D11VideoContext::VideoProcessorSetStreamColorSpace([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] const D3D11_VIDEO_PROCESSOR_COLOR_SPACE* pColorSpace) + ID3D11VideoContext::VideoProcessorSetStreamColorSpace +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the rate at which the video processor produces output frames for an input stream.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    The output rate, specified as a value.

    +

    Specifies how the driver performs frame-rate conversion, if required.

    ValueMeaning
    TRUE

    Repeat frames.

    Interpolate frames.

    ?

    +

    A reference to a structure. If OutputRate is , this parameter specifies the exact output rate. Otherwise, this parameter is ignored and can be null.

    + +

    The standard output rates are normal frame-rate () and half frame-rate (). In addition, the driver might support custom rates for rate conversion or inverse telecine. To get the list of custom rates, call .

    Depending on the output rate, the driver might need to convert the frame rate. If so, the value of RepeatFrame controls whether the driver creates interpolated frames or simply repeats input frames.

    +
    + + hh447761 + void ID3D11VideoContext::VideoProcessorSetStreamOutputRate([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE OutputRate,[In] BOOL RepeatFrame,[In, Optional] const DXGI_RATIONAL* pCustomRate) + ID3D11VideoContext::VideoProcessorSetStreamOutputRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the source rectangle for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether to apply the source rectangle.

    +

    A reference to a structure that specifies the source rectangle. If Enable is , this parameter is ignored.

    + +

    The source rectangle is the portion of the input surface that is blitted to the destination surface. The source rectangle is given in pixel coordinates, relative to the input surface.

    If this method is never called, or if the Enable parameter is , the video processor reads from the entire input surface.

    +
    + + hh447764 + void ID3D11VideoContext::VideoProcessorSetStreamSourceRect([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In, Optional] const RECT* pRect) + ID3D11VideoContext::VideoProcessorSetStreamSourceRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the destination rectangle for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether to apply the destination rectangle.

    +

    A reference to a structure that specifies the destination rectangle. If Enable is , this parameter is ignored.

    + +

    The destination rectangle is the portion of the output surface that receives the blit for this stream. The destination rectangle is given in pixel coordinates, relative to the output surface.

    The default destination rectangle is an empty rectangle (0, 0, 0, 0). If this method is never called, or if the Enable parameter is , no data is written from this stream.

    +
    + + hh447756 + void ID3D11VideoContext::VideoProcessorSetStreamDestRect([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In, Optional] const RECT* pRect) + ID3D11VideoContext::VideoProcessorSetStreamDestRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the planar alpha for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether alpha blending is enabled.

    +

    The planar alpha value. The value can range from 0.0 (transparent) to 1.0 (opaque). If Enable is , this parameter is ignored.

    + +

    Alpha blending is disabled by default.

    For each pixel, the destination color value is computed as follows:

    Cd = Cs * (As * Ap * Ae) + Cd * (1.0 - As * Ap * Ae)

    where:

    • Cd = The color value of the destination pixel
    • Cs = The color value of the source pixel
    • As = The per-pixel source alpha
    • Ap = The planar alpha value
    • Ae = The palette-entry alpha value, or 1.0 (see Note)

    Note??Palette-entry alpha values apply only to palettized color formats, and only when the device supports the capability. Otherwise, this factor equals 1.0.

    The destination alpha value is computed according to the alpha fill mode. For more information, see .

    +
    + + hh447753 + void ID3D11VideoContext::VideoProcessorSetStreamAlpha([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In] float Alpha) + ID3D11VideoContext::VideoProcessorSetStreamAlpha +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the color-palette entries for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    The number of elements in the pEntries array.

    +

    A reference to an array of palette entries. For RGB streams, the palette entries use the DXGI_FORMAT_B8G8R8A8 representation. For YCbCr streams, the palette entries use the representation. The caller allocates the array.

    + +

    This method applies only to input streams that have a palettized color format. Palettized formats with 4 bits per pixel (bpp) use the first 16 entries in the list. Formats with 8 bpp use the first 256 entries.

    If a pixel has a palette index greater than the number of entries, the device treats the pixel as white with opaque alpha. For full-range RGB, this value is (255, 255, 255, 255); for YCbCr the value is (255, 235, 128, 128).

    If the driver does not report the capability flag, every palette entry must have an alpha value of 0xFF (opaque). To query for this capability, call .

    +
    + + hh447762 + void ID3D11VideoContext::VideoProcessorSetStreamPalette([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] unsigned int Count,[In, Buffer, Optional] const unsigned int* pEntries) + ID3D11VideoContext::VideoProcessorSetStreamPalette +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the pixel aspect ratio for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether the pSourceAspectRatio and pDestinationAspectRatio parameters contain valid values. Otherwise, the pixel aspect ratios are unspecified.

    +

    A reference to a structure that contains the pixel aspect ratio of the source rectangle. If Enable is , this parameter can be null.

    +

    A reference to a structure that contains the pixel aspect ratio of the destination rectangle. If Enable is , this parameter can be null.

    + +

    Pixel aspect ratios of the form 0/n and n/0 are not valid.

    The default pixel aspect ratio is 1:1 (square pixels).

    +
    + + hh447763 + void ID3D11VideoContext::VideoProcessorSetStreamPixelAspectRatio([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In, Optional] const DXGI_RATIONAL* pSourceAspectRatio,[In, Optional] const DXGI_RATIONAL* pDestinationAspectRatio) + ID3D11VideoContext::VideoProcessorSetStreamPixelAspectRatio +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the luma key for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether luma keying is enabled.

    +

    The lower bound for the luma key. The valid range is [0?1]. If Enable is , this parameter is ignored.

    +

    The upper bound for the luma key. The valid range is [0?1]. If Enable is , this parameter is ignored.

    + +

    To use this feature, the driver must support luma keying, indicated by the capability flag. To query for this capability, call . In addition, if the input format is RGB, the device must support the capability.

    The values of Lower and Upper give the lower and upper bounds of the luma key, using a nominal range of [0...1]. Given a format with n bits per channel, these values are converted to luma values as follows:

    val = f * ((1 << n)-1)

    Any pixel whose luma value falls within the upper and lower bounds (inclusive) is treated as transparent.

    For example, if the pixel format uses 8-bit luma, the upper bound is calculated as follows:

    BYTE Y = BYTE(max(min(1.0, Upper), 0.0) * 255.0)

    Note that the value is clamped to the range [0...1] before multiplying by 255.

    +
    + + hh447760 + void ID3D11VideoContext::VideoProcessorSetStreamLumaKey([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In] float Lower,[In] float Upper) + ID3D11VideoContext::VideoProcessorSetStreamLumaKey +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Enables or disables stereo 3D video for an input stream on the video processor. In addition, this method specifies the layout of the video frames in memory.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Specifies whether stereo 3D is enabled for this stream. If the value is , the remaining parameters of this method are ignored.

    +

    Specifies the layout of the two stereo views in memory, as a value.

    +

    If TRUE, frame 0 contains the left view. Otherwise, frame 0 contains the right view.

    This parameter is ignored for the following stereo formats:

    +

    If TRUE, frame 0 contains the base view. Otherwise, frame 1 contains the base view.

    This parameter is ignored for the following stereo formats:

    +

    A flag from the enumeration, specifying whether one of the views is flipped.

    +

    For format, this parameter specifies how to generate the left and right views:

    • If MonoOffset is positive, the right view is shifted to the right by that many pixels, and the left view is shifted to the left by the same amount.
    • If MonoOffset is negative, the right view is shifted to the left by that many pixels, and the left view is shifted to right by the same amount.

    If Format is not , this parameter must be zero.

    + + hh447765 + void ID3D11VideoContext::VideoProcessorSetStreamStereoFormat([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT Format,[In] BOOL LeftViewFrame0,[In] BOOL BaseViewFrame0,[In] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE FlipMode,[In] int MonoOffset) + ID3D11VideoContext::VideoProcessorSetStreamStereoFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Enables or disables automatic processing features on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    If TRUE, automatic processing features are enabled. If , the driver disables any extra video processing that it might be performing.

    + +

    By default, the driver might perform certain processing tasks automatically during the video processor blit. This method enables the application to disable these extra video processing features. For example, if you provide your own pixel shader for the video processor, you might want to disable the driver's automatic processing.

    +
    + + hh447754 + void ID3D11VideoContext::VideoProcessorSetStreamAutoProcessingMode([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable) + ID3D11VideoContext::VideoProcessorSetStreamAutoProcessingMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Enables or disables an image filter for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    The filter, specified as a value.

    To query which filters the driver supports, call .

    +

    Specifies whether to enable the filter.

    +

    The filter level. If Enable is , this parameter is ignored.

    To find the valid range of levels for a specified filter, call .

    + + hh447758 + void ID3D11VideoContext::VideoProcessorSetStreamFilter([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] D3D11_VIDEO_PROCESSOR_FILTER Filter,[In] BOOL Enable,[In] int Level) + ID3D11VideoContext::VideoProcessorSetStreamFilter +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets a driver-specific state on a video processing stream.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    A reference to a that identifies the operation. The meaning of this is defined by the graphics driver.

    +

    The size of the pData buffer, in bytes.

    +

    A reference to a buffer that contains private state data. The method passes this buffer directly to the driver without validation. It is the responsibility of the driver to validate the data.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447757 + HRESULT ID3D11VideoContext::VideoProcessorSetStreamExtension([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] const GUID* pExtensionGuid,[In] unsigned int DataSize,[In] void* pData) + ID3D11VideoContext::VideoProcessorSetStreamExtension +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the format of an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives a value that specifies whether the stream contains interlaced or progressive frames.

    + + hh447739 + void ID3D11VideoContext::VideoProcessorGetStreamFrameFormat([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] D3D11_VIDEO_FRAME_FORMAT* pFrameFormat) + ID3D11VideoContext::VideoProcessorGetStreamFrameFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the color space for an input stream of the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives a value that specifies the color space.

    + + hh447731 + void ID3D11VideoContext::VideoProcessorGetStreamColorSpace([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] D3D11_VIDEO_PROCESSOR_COLOR_SPACE* pColorSpace) + ID3D11VideoContext::VideoProcessorGetStreamColorSpace +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the rate at which the video processor produces output frames for an input stream.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives a value that specifies the output rate.

    +

    Receives a Boolean value that specifies how the driver performs frame-rate conversion, if required.

    ValueMeaning
    TRUE

    Repeat frames.

    Interpolate frames.

    ?

    +

    A reference to a structure. If the output rate is , the method fills in this structure with the exact output rate. Otherwise, this parameter is ignored.

    + + hh447741 + void ID3D11VideoContext::VideoProcessorGetStreamOutputRate([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] D3D11_VIDEO_PROCESSOR_OUTPUT_RATE* pOutputRate,[Out] BOOL* pRepeatFrame,[Out] DXGI_RATIONAL* pCustomRate) + ID3D11VideoContext::VideoProcessorGetStreamOutputRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the source rectangle for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if the source rectangle is enabled, or otherwise.

    +

    A reference to a structure that receives the source rectangle.

    + + hh447744 + void ID3D11VideoContext::VideoProcessorGetStreamSourceRect([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled,[Out] RECT* pRect) + ID3D11VideoContext::VideoProcessorGetStreamSourceRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the destination rectangle for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if the destination rectangle is enabled, or otherwise.

    +

    A reference to a structure that receives the destination rectangle.

    + + hh447733 + void ID3D11VideoContext::VideoProcessorGetStreamDestRect([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled,[Out] RECT* pRect) + ID3D11VideoContext::VideoProcessorGetStreamDestRect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the planar alpha for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if planar alpha is enabled, or otherwise.

    +

    Receives the planar alpha value. The value can range from 0.0 (transparent) to 1.0 (opaque).

    + + hh447727 + void ID3D11VideoContext::VideoProcessorGetStreamAlpha([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled,[Out] float* pAlpha) + ID3D11VideoContext::VideoProcessorGetStreamAlpha +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the color-palette entries for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    The number of entries in the pEntries array.

    +

    A reference to a UINT array allocated by the caller. The method fills the array with the palette entries. For RGB streams, the palette entries use the DXGI_FORMAT_B8G8R8A8 representation. For YCbCr streams, the palette entries use the representation.

    + +

    This method applies only to input streams that have a palettized color format. Palettized formats with 4 bits per pixel (bpp) use 16 palette entries. Formats with 8 bpp use 256 entries.

    +
    + + hh447742 + void ID3D11VideoContext::VideoProcessorGetStreamPalette([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] unsigned int Count,[Out, Buffer] unsigned int* pEntries) + ID3D11VideoContext::VideoProcessorGetStreamPalette +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the pixel aspect ratio for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if the pixel aspect ratio is specified. Otherwise, receives the value .

    +

    A reference to a structure. If *pEnabled is TRUE, this parameter receives the pixel aspect ratio of the source rectangle.

    +

    A reference to a structure. If *pEnabled is TRUE, this parameter receives the pixel aspect ratio of the destination rectangle.

    + +

    When the method returns, if *pEnabled is TRUE, the pSourceAspectRatio and pDestinationAspectRatio parameters contain the pixel aspect ratios. Otherwise, the default pixel aspect ratio is 1:1 (square pixels).

    +
    + + hh447743 + void ID3D11VideoContext::VideoProcessorGetStreamPixelAspectRatio([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled,[Out] DXGI_RATIONAL* pSourceAspectRatio,[Out] DXGI_RATIONAL* pDestinationAspectRatio) + ID3D11VideoContext::VideoProcessorGetStreamPixelAspectRatio +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the luma key for an input stream of the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if luma keying is enabled, or otherwise.

    +

    Receives the lower bound for the luma key. The valid range is [0?1].

    +

    Receives the upper bound for the luma key. The valid range is [0?1].

    + + hh447740 + void ID3D11VideoContext::VideoProcessorGetStreamLumaKey([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled,[Out] float* pLower,[Out] float* pUpper) + ID3D11VideoContext::VideoProcessorGetStreamLumaKey +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the stereo 3D format for an input stream on the video processor

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if stereo 3D is enabled for this stream, or otherwise. If the value is , ignore the remaining parameters.

    +

    Receives a value that specifies the layout of the two stereo views in memory.

    +

    Receives a Boolean value.

    ValueMeaning
    TRUE

    Frame 0 contains the left view.

    Frame 0 contains the right view.

    ?

    +

    Receives a Boolean value.

    ValueMeaning
    TRUE

    Frame 0 contains the base view.

    Frame 1 contains the base view.

    ?

    +

    Receives a value. This value specifies whether one of the views is flipped.

    +

    Receives the pixel offset used for format. This parameter is ignored for other stereo formats.

    + + hh447745 + void ID3D11VideoContext::VideoProcessorGetStreamStereoFormat([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnable,[Out] D3D11_VIDEO_PROCESSOR_STEREO_FORMAT* pFormat,[Out] BOOL* pLeftViewFrame0,[Out] BOOL* pBaseViewFrame0,[Out] D3D11_VIDEO_PROCESSOR_STEREO_FLIP_MODE* pFlipMode,[Out] int* MonoOffset) + ID3D11VideoContext::VideoProcessorGetStreamStereoFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether automatic processing features of the video processor are enabled.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    Receives the value TRUE if automatic processing features are enabled, or otherwise.

    + + hh447729 + void ID3D11VideoContext::VideoProcessorGetStreamAutoProcessingMode([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnabled) + ID3D11VideoContext::VideoProcessorGetStreamAutoProcessingMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the image filter settings for an input stream on the video processor.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    The filter to query, specified as a value.

    +

    Receives the value TRUE if the image filter is enabled, or otherwise.

    +

    Receives the filter level.

    + + hh447737 + void ID3D11VideoContext::VideoProcessorGetStreamFilter([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] D3D11_VIDEO_PROCESSOR_FILTER Filter,[Out] BOOL* pEnabled,[Out] int* pLevel) + ID3D11VideoContext::VideoProcessorGetStreamFilter +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a driver-specific state for a video processing stream.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    The zero-based index of the input stream. To get the maximum number of streams, call and check the MaxStreamStates structure member.

    +

    A reference to a that identifies the state. The meaning of this is defined by the graphics driver.

    +

    The size of the pData buffer, in bytes.

    +

    A reference to a buffer that receives the private state data.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447735 + HRESULT ID3D11VideoContext::VideoProcessorGetStreamExtension([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] const GUID* pExtensionGuid,[In] unsigned int DataSize,[Out] void* pData) + ID3D11VideoContext::VideoProcessorGetStreamExtension +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Performs a video processing operation on one or more input samples and writes the result to a Direct3D surface.

    +
    +

    A reference to the interface. To get this reference, call the method.

    +

    A reference to the interface for the output surface. The output of the video processing operation will be written to this surface.

    +

    The frame number of the output video frame, indexed from zero.

    +

    The number of input streams to process.

    +

    A reference to an array of structures that contain information about the input streams. The caller allocates the array and fills in each structure. The number of elements in the array is given in the StreamCount parameter.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The maximum value of StreamCount is given in the MaxStreamStates member of the structure. The maximum numbr of streams that can be enabled at one time is given in the MaxInputStreams member of that structure.

    +
    + + hh447719 + HRESULT ID3D11VideoContext::VideoProcessorBlt([In] ID3D11VideoProcessor* pVideoProcessor,[In] ID3D11VideoProcessorOutputView* pView,[In] unsigned int OutputFrame,[In] unsigned int StreamCount,[In, Buffer] const D3D11_VIDEO_PROCESSOR_STREAM* pStreams) + ID3D11VideoContext::VideoProcessorBlt +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Establishes the session key for a cryptographic session.

    +
    +

    A reference to the interface of the cryptographic session.

    +

    The size of the pData byte array, in bytes.

    +

    A reference to a byte array that contains the encrypted session key.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The key exchange mechanism depends on the type of cryptographic session.

    For RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP), the software decoder generates the secret key, encrypts the secret key by using the public key with RSAES-OAEP, and places the cipher text in the pData parameter. The actual size of the buffer for RSAES-OAEP is 256 bytes.

    +
    + + hh447714 + HRESULT ID3D11VideoContext::NegotiateCryptoSessionKeyExchange([In] ID3D11CryptoSession* pCryptoSession,[In] unsigned int DataSize,[Out, Buffer] void* pData) + ID3D11VideoContext::NegotiateCryptoSessionKeyExchange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Reads encrypted data from a protected surface.

    +
    +

    A reference to the interface of the cryptographic session.

    +

    A reference to the interface of the protected surface.

    +

    A reference to the interface of the surface that receives the encrypted data.

    +

    A reference to a buffer that receives the initialization vector (IV). The caller allocates this buffer, but the driver generates the IV.

    For 128-bit AES-CTR encryption, pIV points to a structure. When the driver generates the first IV, it initializes the structure to a random number. For each subsequent IV, the driver simply increments the IV member of the structure, ensuring that the value always increases. The application can validate that the same IV is never used more than once with the same key pair.

    +

    The size of the pIV buffer, in bytes.

    + +

    Not all drivers support this method. To query the driver capabilities, call and check for the flag in the Caps member of the structure.

    Some drivers might require a separate key to decrypt the data that is read back. To check for this requirement, call GetContentProtectionCaps and check for the flag. If this flag is present, call to get the decryption key.

    This method has the following limitations:

    • Reading back subrectangles is not supported.
    • Reading back partially encrypted surfaces is not supported.
    • The protected surface must be either an offscreen plain surface or a render target.
    • The destination surface must be a system-memory surface, created with the proper alignment.
    • The protected surface cannot be multisampled.
    • Stretching and colorspace conversion are not supported.
    +
    + + hh447709 + void ID3D11VideoContext::EncryptionBlt([In] ID3D11CryptoSession* pCryptoSession,[In] ID3D11Texture2D* pSrcSurface,[In] ID3D11Texture2D* pDstSurface,[In] unsigned int IVSize,[In, Buffer, Optional] void* pIV) + ID3D11VideoContext::EncryptionBlt +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Writes encrypted data to a protected surface.

    +
    +

    A reference to the interface.

    +

    A reference to the surface that contains the source data.

    +

    A reference to the protected surface where the encrypted data is written.

    +

    A reference to a structure, or null.

    If the driver supports partially encrypted buffers, pEncryptedBlockInfo indicates which portions of the buffer are encrypted. If the entire surface is encrypted, set this parameter to null.

    To check whether the driver supports partially encrypted buffers, call and check for the capabilities flag. If the driver does not support partially encrypted buffers, set this parameter to null.

    +

    A reference to a buffer that contains a content encryption key, or null. To query whether the driver supports the use of content keys, call and check for the capabilities flag.

    If the driver supports content keys, use the content key to encrypt the surface. Encrypt the content key using the session key, and place the resulting cipher text in pContentKey. If the driver does not support content keys, use the session key to encrypt the surface and set pContentKey to null.

    +

    The size of the encrypted content key, in bytes.

    +

    A reference to a buffer that contains the initialization vector (IV).

    For 128-bit AES-CTR encryption, pIV points to a structure. The caller allocates the structure and generates the IV. When you generate the first IV, initialize the structure to a random number. For each subsequent IV, simply increment the IV member of the structure, ensuring that the value always increases. This procedure enables the driver to validate that the same IV is never used more than once with the same key pair.

    For other encryption types, a different structure might be used, or the encryption might not use an IV.

    +

    The size of the pIV buffer, in bytes.

    + +

    Not all hardware or drivers support this functionality for all cryptographic types.

    This method does not support writing to subrectangles of the surface.

    +
    + + hh447708 + void ID3D11VideoContext::DecryptionBlt([In] ID3D11CryptoSession* pCryptoSession,[In] ID3D11Texture2D* pSrcSurface,[In] ID3D11Texture2D* pDstSurface,[In, Optional] D3D11_ENCRYPTED_BLOCK_INFO* pEncryptedBlockInfo,[In] unsigned int ContentKeySize,[In, Buffer, Optional] const void* pContentKey,[In] unsigned int IVSize,[In, Buffer, Optional] void* pIV) + ID3D11VideoContext::DecryptionBlt +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a random number that can be used to refresh the session key.

    +
    +

    A reference to the interface.

    +

    A reference to a byte array that receives a random number.

    +

    The size of the pRandomNumber array, in bytes. The size should match the size of the session key.

    + +

    To generate a new session key, perform a bitwise XOR between the previous session key and the random number. The new session key does not take affect until the application calls .

    To query whether the driver supports this method, call and check for the capabilities flag.

    +
    + + hh447717 + void ID3D11VideoContext::StartSessionKeyRefresh([In] ID3D11CryptoSession* pCryptoSession,[In] unsigned int RandomNumberSize,[Out, Buffer] void* pRandomNumber) + ID3D11VideoContext::StartSessionKeyRefresh +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Switches to a new session key.

    +
    +

    A reference to the interface.

    + +

    Before calling this method, call . The StartSessionKeyRefresh method gets a random number from the driver, which is used to create a new session key. The new session key does not become active until the application calls FinishSessionKeyRefresh. After the application calls FinishSessionKeyRefresh, all protected surfaces are encrypted using the new session key.

    +
    + + hh447710 + void ID3D11VideoContext::FinishSessionKeyRefresh([In] ID3D11CryptoSession* pCryptoSession) + ID3D11VideoContext::FinishSessionKeyRefresh +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the cryptographic key to decrypt the data returned by the method.

    +
    + No documentation. + No documentation. + No documentation. +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method applies only when the driver requires a separate content key for the EncryptionBlt method. For more information, see the Remarks for EncryptionBlt.

    Each time this method is called, the driver generates a new key.

    +
    + + hh447712 + HRESULT ID3D11VideoContext::GetEncryptionBltKey([In] ID3D11CryptoSession* pCryptoSession,[In] unsigned int KeySize,[Out, Buffer] void* pReadbackKey) + ID3D11VideoContext::GetEncryptionBltKey +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Establishes a session key for an authenticated channel.

    +
    +

    A reference to the interface.

    +

    The size of the data in the pData array, in bytes.

    +

    A reference to a byte array that contains the encrypted session key. The buffer must contain 256 bytes of data, encrypted using RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP).

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447713 + HRESULT ID3D11VideoContext::NegotiateAuthenticatedChannelKeyExchange([In] ID3D11AuthenticatedChannel* pChannel,[In] unsigned int DataSize,[Out, Buffer] void* pData) + ID3D11VideoContext::NegotiateAuthenticatedChannelKeyExchange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sends a query to an authenticated channel.

    +
    +

    A reference to the interface.

    +

    The size of the pInput array, in bytes.

    +

    A reference to a byte array that contains input data for the query. This array always starts with a structure. The QueryType member of the structure specifies the query and defines the meaning of the rest of the array.

    +

    The size of the pOutput array, in bytes.

    +

    A reference to a byte array that receives the result of the query. This array always starts with a structure. The meaning of the rest of the array depends on the query.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447715 + HRESULT ID3D11VideoContext::QueryAuthenticatedChannel([In] ID3D11AuthenticatedChannel* pChannel,[In] unsigned int InputSize,[In, Buffer] const void* pInput,[In] unsigned int OutputSize,[Out, Buffer] void* pOutput) + ID3D11VideoContext::QueryAuthenticatedChannel +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sends a configuration command to an authenticated channel.

    +
    +

    A reference to the interface.

    +

    The size of the pInput array, in bytes.

    +

    A reference to a byte array that contains input data for the command. This buffer always starts with a structure. The ConfigureType member of the structure specifies the command and defines the meaning of the rest of the buffer.

    +

    A reference to a structure that receives the response to the command.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447704 + HRESULT ID3D11VideoContext::ConfigureAuthenticatedChannel([In] ID3D11AuthenticatedChannel* pChannel,[In] unsigned int InputSize,[In, Buffer] const void* pInput,[Out] D3D11_AUTHENTICATED_CONFIGURE_OUTPUT* pOutput) + ID3D11VideoContext::ConfigureAuthenticatedChannel +
    + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + + void ID3D11VideoContext::VideoProcessorSetStreamRotation([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[In] BOOL Enable,[In] D3D11_VIDEO_PROCESSOR_ROTATION Rotation) + ID3D11VideoContext::VideoProcessorSetStreamRotation + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + + void ID3D11VideoContext::VideoProcessorGetStreamRotation([In] ID3D11VideoProcessor* pVideoProcessor,[In] unsigned int StreamIndex,[Out] BOOL* pEnable,[Out] D3D11_VIDEO_PROCESSOR_ROTATION* pRotation) + ID3D11VideoContext::VideoProcessorGetStreamRotation + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Represents a hardware-accelerated video decoder for Microsoft Direct3D?11.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447766 + ID3D11VideoDecoder + ID3D11VideoDecoder +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the parameters that were used to create the decoder.

    +
    +

    A reference to a structure that receives a description of the video stream.

    +

    A reference to a structure that receives the decoder configuration.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447769 + HRESULT ID3D11VideoDecoder::GetCreationParameters([Out] D3D11_VIDEO_DECODER_DESC* pVideoDesc,[Out] D3D11_VIDEO_DECODER_CONFIG* pConfig) + ID3D11VideoDecoder::GetCreationParameters +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a handle to the driver.

    +
    +

    Receives a handle to the driver.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The driver handle can be used to configure content protection.

    +
    + + hh447780 + HRESULT ID3D11VideoDecoder::GetDriverHandle([Out] void** pDriverHandle) + ID3D11VideoDecoder::GetDriverHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a handle to the driver.

    +
    + +

    The driver handle can be used to configure content protection.

    +
    + + hh447780 + GetDriverHandle + GetDriverHandle + HRESULT ID3D11VideoDecoder::GetDriverHandle([Out] void** pDriverHandle) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the output surfaces that can be accessed during video decoding.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447767 + ID3D11VideoDecoderOutputView + ID3D11VideoDecoderOutputView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video decoder output view. +

    +
    +

    A reference to a structure. The method fills the structure with the view properties.

    + + hh447768 + void ID3D11VideoDecoderOutputView::GetDesc([Out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC* pDesc) + ID3D11VideoDecoderOutputView::GetDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video decoder output view. +

    +
    + + hh447768 + GetDesc + GetDesc + void ID3D11VideoDecoderOutputView::GetDesc([Out] D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Provides the video decoding and video processing capabilities of a Microsoft Direct3D?11 device.

    +
    + +

    The Direct3D?11 device supports this interface. To get a reference to this interface, call QueryInterface with an interface reference.

    +
    + + hh447781 + ID3D11VideoDevice + ID3D11VideoDevice +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a DXVA video decoder device for Microsoft Direct3D?11.

    +
    +

    A reference to a structure that describes the video stream and the decoder profile.

    +

    A reference to a structure that specifies the decoder configuration.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method allocates the necessary decoder buffers.

    The method does not affect the internal state of the video decoder.

    +
    + + hh447786 + HRESULT ID3D11VideoDevice::CreateVideoDecoder([In] const D3D11_VIDEO_DECODER_DESC* pVideoDesc,[In] const D3D11_VIDEO_DECODER_CONFIG* pConfig,[Out] ID3D11VideoDecoder** ppDecoder) + ID3D11VideoDevice::CreateVideoDecoder +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a video processor device for Microsoft Direct3D?11.

    +
    +

    A reference to the interface. To get this reference, call .

    +

    Specifies the frame-rate conversion capabilities for the video processor. The value is a zero-based index that corresponds to the TypeIndex parameter of the method.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The method does not affect the internal state of the video processor.

    +
    + + hh447788 + HRESULT ID3D11VideoDevice::CreateVideoProcessor([In] ID3D11VideoProcessorEnumerator* pEnum,[In] unsigned int RateConversionIndex,[Out] ID3D11VideoProcessor** ppVideoProcessor) + ID3D11VideoDevice::CreateVideoProcessor +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a channel to communicate with the Microsoft Direct3D device or the graphics driver. The channel can be used to send commands and queries for content protection.

    +
    +

    Specifies the type of channel, as a member of the enumeration.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the ChannelType parameter is , the method creates a channel with the Direct3D device. This type of channel does not support authentication.

    If ChannelType is or , the method creates an authenticated channel with the graphics driver.

    +
    + + hh447784 + HRESULT ID3D11VideoDevice::CreateAuthenticatedChannel([In] D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType,[Out] ID3D11AuthenticatedChannel** ppAuthenticatedChannel) + ID3D11VideoDevice::CreateAuthenticatedChannel +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a cryptographic session to encrypt video content that is sent to the graphics driver.

    +
    +

    A reference to a that specifies the type of encryption to use. The following GUIDs are defined.

    ValueMeaning
    D3D11_CRYPTO_TYPE_AES128_CTR

    128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher.

    ?

    +

    A reference to a that specifies the DirectX Video Acceleration (DXVA) decoding profile. For a list of possible values, see . If DXVA decoding will not be used, set this parameter to null.

    +

    A reference to a that specifies the type of key exchange.

    ValueMeaning
    D3D11_KEY_EXCHANGE_RSAES_OAEP

    The caller will create the session key, encrypt it with RSA Encryption Scheme - Optimal Asymmetric Encryption Padding (RSAES-OAEP) by using the driver's public key, and pass the session key to the driver.

    ?

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The method does not affect the internal state of the cryptographic session.

    +
    + + hh447785 + HRESULT ID3D11VideoDevice::CreateCryptoSession([In] const GUID* pCryptoType,[In, Optional] const GUID* pDecoderProfile,[In] const GUID* pKeyExchangeType,[Out] ID3D11CryptoSession** ppCryptoSession) + ID3D11VideoDevice::CreateCryptoSession +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a resource view for a video decoder, describing the output sample for the decoding operation.

    +
    +

    A reference to the interface of the decoder surface. The resource must be created with the flag. See .

    +

    A reference to a structure that describes the view.

    +

    Receives a reference to the interface. The caller must release the interface. If this parameter is null, the method checks whether the view is supported, but does not create the view.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Set the ppVDOVView parameter to null to test whether a view is supported.

    +
    + + hh447787 + HRESULT ID3D11VideoDevice::CreateVideoDecoderOutputView([In] ID3D11Resource* pResource,[In] const D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC* pDesc,[Out, Optional] ID3D11VideoDecoderOutputView** ppVDOVView) + ID3D11VideoDevice::CreateVideoDecoderOutputView +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a resource view for a video processor, describing the input sample for the video processing operation.

    +
    +

    A reference to the interface of the input surface.

    +

    A reference to the interface that specifies the video processor. To get this reference, call .

    +

    A reference to a structure that describes the view.

    +

    Receives a reference to the interface. The caller must release the resource. If this parameter is null, the method checks whether the view is supported, but does not create the view.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Set the ppVPIView parameter to null to test whether a view is supported.

    The surface format is given in the FourCC member of the structure. The method fails if the video processor does not support this format as an input sample.

    +
    + + hh447790 + HRESULT ID3D11VideoDevice::CreateVideoProcessorInputView([In] ID3D11Resource* pResource,[In] ID3D11VideoProcessorEnumerator* pEnum,[In] const D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC* pDesc,[Out, Optional] ID3D11VideoProcessorInputView** ppVPIView) + ID3D11VideoDevice::CreateVideoProcessorInputView +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a resource view for a video processor, describing the output sample for the video processing operation.

    +
    +

    A reference to the interface of the output surface. The resource must be created with the flag. See .

    +

    A reference to the interface that specifies the video processor. To get this reference, call .

    +

    A reference to a structure that describes the view.

    +

    Receives a reference to the interface. The caller must release the resource. If this parameter is null, the method checks whether the view is supported, but does not create the view.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Set the ppVPOView parameter to null to test whether a view is supported.

    The surface format is given in the FourCC member of the structure. The method fails if the video processor does not support this format as an input sample.

    +
    + + hh447791 + HRESULT ID3D11VideoDevice::CreateVideoProcessorOutputView([In] ID3D11Resource* pResource,[In] ID3D11VideoProcessorEnumerator* pEnum,[In] const D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC* pDesc,[Out, Optional] ID3D11VideoProcessorOutputView** ppVPOView) + ID3D11VideoDevice::CreateVideoProcessorOutputView +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Enumerates the video processor capabilities of the driver.

    +
    +

    A reference to a structure that describes the video content.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    To create the video processor device, pass the reference to the method.

    +
    + + hh447789 + HRESULT ID3D11VideoDevice::CreateVideoProcessorEnumerator([In] const D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc,[Out] ID3D11VideoProcessorEnumerator** ppEnum) + ID3D11VideoDevice::CreateVideoProcessorEnumerator +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of DirectX Video Acceleration (DXVA) profiles that are supported by the driver.

    +
    +

    Returns the number of DXVA profiles.

    + +

    To enumerate the profiles, call .

    +
    + + hh447796 + unsigned int ID3D11VideoDevice::GetVideoDecoderProfileCount() + ID3D11VideoDevice::GetVideoDecoderProfileCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a DirectX Video Acceleration (DXVA) profile that is supported by the driver.

    +
    +

    The zero-based index of the DXVA profile. To get the number of profiles that the driver supports, call .

    +

    Receives a that identifies the profile.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447795 + HRESULT ID3D11VideoDevice::GetVideoDecoderProfile([In] unsigned int Index,[Out] GUID* pDecoderProfile) + ID3D11VideoDevice::GetVideoDecoderProfile +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Given a DirectX Video Accelaration (DXVA) profile, checks whether the driver supports a specified output format.

    +
    +

    A reference to a that identifies the DXVA profile. To get the list of supported profiles, call .

    +

    A value that specifies the output format. Typical values include and .

    +

    Receives the value TRUE if the format is supported, or otherwise.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the driver does not support the DXVA profile given in pDecoderProfile, the method returns E_INVALIDARG. If the driver supports the profile, but the DXGI format is not compatible with the profile, the method succeeds but returns the value in pSupported.

    +
    + + hh447783 + HRESULT ID3D11VideoDevice::CheckVideoDecoderFormat([In] const GUID* pDecoderProfile,[In] DXGI_FORMAT Format,[Out] BOOL* pSupported) + ID3D11VideoDevice::CheckVideoDecoderFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of decoder configurations that the driver supports for a specified video description.

    +
    +

    A reference to a structure that describes the video stream.

    +

    Receives the number of decoder configurations.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    To enumerate the decoder configurations, call .

    +
    + + hh447794 + HRESULT ID3D11VideoDevice::GetVideoDecoderConfigCount([In] const D3D11_VIDEO_DECODER_DESC* pDesc,[Out] unsigned int* pCount) + ID3D11VideoDevice::GetVideoDecoderConfigCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a decoder configuration that is supported by the driver.

    +
    +

    A reference to a structure that describes the video stream.

    +

    The zero-based index of the decoder configuration. To get the number of configurations that the driver supports, call .

    +

    A reference to a structure. The method fills in the structure with the decoder configuration.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447793 + HRESULT ID3D11VideoDevice::GetVideoDecoderConfig([In] const D3D11_VIDEO_DECODER_DESC* pDesc,[In] unsigned int Index,[Out] D3D11_VIDEO_DECODER_CONFIG* pConfig) + ID3D11VideoDevice::GetVideoDecoderConfig +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the driver for its content protection capabilities.

    +
    +

    A reference to a that specifies the type of encryption to be used. The following GUIDs are defined.

    ValueMeaning
    D3D11_CRYPTO_TYPE_AES128_CTR

    128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher.

    ?

    If no encryption will be used, set this parameter to null.

    +

    A reference to a that specifies the DXVA decoding profile. To get DXVA profiles that the driver supports, call . If DXVA decoding will not be used, set this parameter to null.

    The driver might disallow some combinations of encryption type and DXVA profile.

    +

    A reference to a structure. The method fills in this structure with the driver's content protection capabilities.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447792 + HRESULT ID3D11VideoDevice::GetContentProtectionCaps([In, Optional] const GUID* pCryptoType,[In, Optional] const GUID* pDecoderProfile,[Out] D3D11_VIDEO_CONTENT_PROTECTION_CAPS* pCaps) + ID3D11VideoDevice::GetContentProtectionCaps +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a cryptographic key-exchange mechanism that is supported by the driver.

    +
    +

    A reference to a that specifies the type of encryption to be used. The following GUIDs are defined.

    ValueMeaning
    D3D11_CRYPTO_TYPE_AES128_CTR

    128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher.

    ?

    +

    A reference to a that specifies the DXVA decoding profile. To get DXVA profiles that the driver supports, call . If DXVA decoding will not be used, set this parameter to null.

    +

    The zero-based index of the key-exchange type. The driver reports the number of types in the KeyExchangeTypeCount member of the structure.

    +

    Receives a that identifies the type of key exchange.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447782 + HRESULT ID3D11VideoDevice::CheckCryptoKeyExchange([In] const GUID* pCryptoType,[In, Optional] const GUID* pDecoderProfile,[In] unsigned int Index,[Out] GUID* pKeyExchangeType) + ID3D11VideoDevice::CheckCryptoKeyExchange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets private data on the video device and associates that data with a . +

    +
    +

    The associated with the data.

    +

    The size of the data, in bytes.

    +

    A reference to the data.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447797 + HRESULT ID3D11VideoDevice::SetPrivateData([In] const GUID& guid,[In] unsigned int DataSize,[In, Buffer, Optional] const void* pData) + ID3D11VideoDevice::SetPrivateData +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets a private reference on the video device and associates that reference with a . +

    +
    + No documentation. + No documentation. +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447798 + HRESULT ID3D11VideoDevice::SetPrivateDataInterface([In] const GUID& guid,[In, Optional] const IUnknown* pData) + ID3D11VideoDevice::SetPrivateDataInterface +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of DirectX Video Acceleration (DXVA) profiles that are supported by the driver.

    +
    + +

    To enumerate the profiles, call .

    +
    + + hh447796 + GetVideoDecoderProfileCount + GetVideoDecoderProfileCount + unsigned int ID3D11VideoDevice::GetVideoDecoderProfileCount() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Represents a video processor for Microsoft Direct3D?11.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447799 + ID3D11VideoProcessor + ID3D11VideoProcessor +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the content description that was used to create the video processor.

    +
    +

    A reference to a structure that receives the content description.

    + + hh447811 + void ID3D11VideoProcessor::GetContentDesc([Out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc) + ID3D11VideoProcessor::GetContentDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the rate conversion capabilities of the video processor.

    +
    +

    A reference to a structure that receives the rate conversion capabilities.

    + + hh447813 + void ID3D11VideoProcessor::GetRateConversionCaps([Out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS* pCaps) + ID3D11VideoProcessor::GetRateConversionCaps +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the content description that was used to create the video processor.

    +
    + + hh447811 + GetContentDesc + GetContentDesc + void ID3D11VideoProcessor::GetContentDesc([Out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the rate conversion capabilities of the video processor.

    +
    + + hh447813 + GetRateConversionCaps + GetRateConversionCaps + void ID3D11VideoProcessor::GetRateConversionCaps([Out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS* pCaps) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Enumerates the video processor capabilities of a Microsoft Direct3D?11 device.

    +
    + +

    To get a reference to this interface, call .

    To create an instance of the video processor, pass the reference to the method.

    +
    + + hh447800 + ID3D11VideoProcessorEnumerator + ID3D11VideoProcessorEnumerator +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the content description that was used to create this enumerator.

    +
    +

    A reference to a structure that receives the content description.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447803 + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorContentDesc([Out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pContentDesc) + ID3D11VideoProcessorEnumerator::GetVideoProcessorContentDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the video processor supports a specified video format.

    +
    +

    The video format to query, specified as a value.

    +

    Receives a bitwise OR of zero or more flags from the enumeration.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447801 + HRESULT ID3D11VideoProcessorEnumerator::CheckVideoProcessorFormat([In] DXGI_FORMAT Format,[Out] unsigned int* pFlags) + ID3D11VideoProcessorEnumerator::CheckVideoProcessorFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the capabilities of the video processor.

    +
    +

    A reference to a structure that receives the capabilities.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447802 + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorCaps([Out] D3D11_VIDEO_PROCESSOR_CAPS* pCaps) + ID3D11VideoProcessorEnumerator::GetVideoProcessorCaps +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Returns a group of video processor capabilities that are associated with frame-rate conversion, including deinterlacing and inverse telecine.

    +
    +

    The zero-based index of the group to retrieve. To get the maximum index, call and check the RateConversionCapsCount member of the structure.

    +

    A reference to a structure that receives the frame-rate conversion capabilities.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The capabilities defined in the structure are interdependent. Therefore, the driver can support multiple, distinct groups of these capabilities.

    +
    + + hh447806 + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorRateConversionCaps([In] unsigned int TypeIndex,[Out] D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS* pCaps) + ID3D11VideoProcessorEnumerator::GetVideoProcessorRateConversionCaps +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a list of custom frame rates that a video processor supports.

    +
    +

    The zero-based index of the frame-rate capability group. To get the maxmum index, call and check the RateConversionCapsCount member of the structure.

    +

    The zero-based index of the custom rate to retrieve. To get the maximum index, call and check the CustomRateCount member of the structure.

    This index value is always relative to the capability group specified in the TypeIndex parameter.

    +

    A reference to a structure that receives the custom rate.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447804 + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorCustomRate([In] unsigned int TypeIndex,[In] unsigned int CustomRateIndex,[Out] D3D11_VIDEO_PROCESSOR_CUSTOM_RATE* pRate) + ID3D11VideoProcessorEnumerator::GetVideoProcessorCustomRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the range of values for an image filter.

    +
    +

    The type of image filter, specified as a value.

    +

    A reference to a structure. The method fills the structure with the range of values for the specified filter.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447805 + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorFilterRange([In] D3D11_VIDEO_PROCESSOR_FILTER Filter,[Out] D3D11_VIDEO_PROCESSOR_FILTER_RANGE* pRange) + ID3D11VideoProcessorEnumerator::GetVideoProcessorFilterRange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the content description that was used to create this enumerator.

    +
    + + hh447803 + GetVideoProcessorContentDesc + GetVideoProcessorContentDesc + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorContentDesc([Out] D3D11_VIDEO_PROCESSOR_CONTENT_DESC* pContentDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the capabilities of the video processor.

    +
    + + hh447802 + GetVideoProcessorCaps + GetVideoProcessorCaps + HRESULT ID3D11VideoProcessorEnumerator::GetVideoProcessorCaps([Out] D3D11_VIDEO_PROCESSOR_CAPS* pCaps) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the input surfaces that can be accessed during video processing.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447807 + ID3D11VideoProcessorInputView + ID3D11VideoProcessorInputView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video processor input view.

    +
    +

    A reference to a structure. The method fills the structure with the view properties.

    + + hh447808 + void ID3D11VideoProcessorInputView::GetDesc([Out] D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC* pDesc) + ID3D11VideoProcessorInputView::GetDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video processor input view.

    +
    + + hh447808 + GetDesc + GetDesc + void ID3D11VideoProcessorInputView::GetDesc([Out] D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the output surfaces that can be accessed during video processing.

    +
    + +

    To get a reference to this interface, call .

    +
    + + hh447809 + ID3D11VideoProcessorOutputView + ID3D11VideoProcessorOutputView +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video processor output view.

    +
    +

    A reference to a structure. The method fills the structure with the view properties.

    + + hh447810 + void ID3D11VideoProcessorOutputView::GetDesc([Out] D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC* pDesc) + ID3D11VideoProcessorOutputView::GetDesc +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the properties of the video processor output view.

    +
    + + hh447810 + GetDesc + GetDesc + void ID3D11VideoProcessorOutputView::GetDesc([Out] D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC* pDesc) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains an initialization vector (IV) for 128-bit Advanced Encryption Standard CTR mode (AES-CTR) block cipher encryption.

    +
    + + hh447597 + D3D11_AES_CTR_IV + D3D11_AES_CTR_IV +
    + + +

    The IV, in big-endian format.

    +
    + + hh447597 + unsigned longlong IV + unsigned longlong IV +
    + + +

    The block count, in big-endian format.

    +
    + + hh447597 + unsigned longlong Count + unsigned longlong Count +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_CONFIGURE_ENCRYPTION_WHEN_ACCESSIBLE command.

    +
    + + hh447600 + D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT + D3D11_AUTHENTICATED_CONFIGURE_ACCESSIBLE_ENCRYPTION_INPUT +
    + + +

    A structure that contains the command and other data.

    +
    + + hh447600 + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters +
    + + +

    A that specifies the type of encryption to apply.

    +
    + + hh447600 + GUID EncryptionGuid + GUID EncryptionGuid +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION command.

    +
    + + hh447601 + D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT + D3D11_AUTHENTICATED_CONFIGURE_CRYPTO_SESSION_INPUT +
    + + +

    A structure that contains the command and other data.

    +
    + + hh447601 + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters +
    + + +

    A handle to the decoder device.

    +
    + + hh447601 + void* DecoderHandle + void DecoderHandle +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447601 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    A handle to the Direct3D device.

    +
    + + hh447601 + void* DeviceHandle + void DeviceHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE command.

    +
    + + hh447602 + D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT + D3D11_AUTHENTICATED_CONFIGURE_INITIALIZE_INPUT +
    + + +

    A structure that contains the command and other data.

    +
    + + hh447602 + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters +
    + + +

    The initial sequence number for queries.

    +
    + + hh447602 + unsigned int StartSequenceQuery + unsigned int StartSequenceQuery +
    + + +

    The initial sequence number for commands.

    +
    + + hh447602 + unsigned int StartSequenceConfigure + unsigned int StartSequenceConfigure +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for the method.

    +
    + + hh447603 + D3D11_AUTHENTICATED_CONFIGURE_INPUT + D3D11_AUTHENTICATED_CONFIGURE_INPUT +
    + + + No documentation. + + + D3D11_OMAC omac + D3D11_OMAC omac + + + + No documentation. + + + GUID ConfigureType + GUID ConfigureType + + + + No documentation. + + + void* hChannel + void hChannel + + + + No documentation. + + + unsigned int SequenceNumber + unsigned int SequenceNumber + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Contains the response from the method.

    +
    + + hh447604 + D3D11_AUTHENTICATED_CONFIGURE_OUTPUT + D3D11_AUTHENTICATED_CONFIGURE_OUTPUT +
    + + + No documentation. + + + D3D11_OMAC omac + D3D11_OMAC omac + + + + No documentation. + + + GUID ConfigureType + GUID ConfigureType + + + + No documentation. + + + void* hChannel + void hChannel + + + + No documentation. + + + unsigned int SequenceNumber + unsigned int SequenceNumber + + + + No documentation. + + + HRESULT ReturnCode + HRESULT ReturnCode + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_CONFIGURE_PROTECTION command.

    +
    + + hh447598 + D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT + D3D11_AUTHENTICATED_CONFIGURE_PROTECTION_INPUT +
    + + +

    A structure that contains the command and other data.

    +
    + + hh447598 + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters +
    + + +

    A union that specifies the protection level.

    +
    + + hh447598 + D3D11_AUTHENTICATED_PROTECTION_FLAGS Protections + D3D11_AUTHENTICATED_PROTECTION_FLAGS Protections +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE command.

    +
    + + hh447605 + D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT + D3D11_AUTHENTICATED_CONFIGURE_SHARED_RESOURCE_INPUT +
    + + +

    A structure that contains the command and other data.

    +
    + + hh447605 + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters + D3D11_AUTHENTICATED_CONFIGURE_INPUT Parameters +
    + + +

    A value that specifies the type of process. To specify the Desktop Window Manager (DWM) process, set this member to . Otherwise, set this member to and set the ProcessHandle member to a valid handle.

    +
    + + hh447605 + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE ProcessType + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE ProcessType +
    + + +

    A process handle. If the ProcessIdentifier member equals , the ProcessHandle member specifies a handle to a process. Otherwise, the value is ignored.

    +
    + + hh447605 + void* ProcessHandle + void ProcessHandle +
    + + +

    If TRUE, the specified process has access to restricted shared resources.

    +
    + + hh447605 + BOOL AllowAccess + BOOL AllowAccess +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies the protection level for video content.

    +
    + + hh447607 + D3D11_AUTHENTICATED_PROTECTION_FLAGS + D3D11_AUTHENTICATED_PROTECTION_FLAGS +
    + + +
    ProtectionEnabled

    If 1, video content protection is enabled.

    OverlayOrFullscreenRequired

    If 1, the application requires video to be displayed using either a hardware overlay or full-screen exclusive mode.

    Reserved

    Reserved. Set all bits to zero.

    +
    + + hh447607 + D3D11_AUTHENTICATED_PROTECTION_FLAGS___MIDL___MIDL_itf_d3d11_0000_0034_0001_INNER Flags + D3D11_AUTHENTICATED_PROTECTION_FLAGS___MIDL___MIDL_itf_d3d11_0000_0034_0001_INNER Flags +
    + + +

    Use this member to access all of the bits in the union.

    +
    + + hh447607 + unsigned int Value + unsigned int Value +
    + + + No documentation. + + + D3D11_AUTHENTICATED_PROTECTION_FLAGS___MIDL___MIDL_itf_d3d11_0000_0034_0001_INNER + D3D11_AUTHENTICATED_PROTECTION_FLAGS___MIDL___MIDL_itf_d3d11_0000_0034_0001_INNER + + + + No documentation. + + + unsigned int ProtectionEnabled + unsigned int ProtectionEnabled + + + + No documentation. + + + unsigned int OverlayOrFullscreenRequired + unsigned int OverlayOrFullscreenRequired + + + + No documentation. + + + unsigned int Reserved + unsigned int Reserved + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID_COUNT query.

    +
    + + hh447608 + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_COUNT_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447608 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    The number of encryption GUIDs.

    +
    + + hh447608 + unsigned int EncryptionGuidCount + unsigned int EncryptionGuidCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID query.

    +
    + + hh447609 + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_INPUT +
    + + +

    A structure that contains the for the query and other data.

    +
    + + hh447609 + D3D11_AUTHENTICATED_QUERY_INPUT Input + D3D11_AUTHENTICATED_QUERY_INPUT Input +
    + + +

    The index of the encryption .

    +
    + + hh447609 + unsigned int EncryptionGuidIndex + unsigned int EncryptionGuidIndex +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_ENCRYPTION_WHEN_ACCESSIBLE_GUID query.

    +
    + + hh447610 + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT + D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ENCRYPTION_GUID_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447610 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    The index of the encryption .

    +
    + + hh447610 + unsigned int EncryptionGuidIndex + unsigned int EncryptionGuidIndex +
    + + +

    A that specifies a supported encryption type.

    +
    + + hh447610 + GUID EncryptionGuid + GUID EncryptionGuid +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_ACCESSIBILITY_ATTRIBUTES query.

    +
    + + hh447611 + D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT + D3D11_AUTHENTICATED_QUERY_ACESSIBILITY_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447611 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A bitwise OR of flags from the enumeration.

    +
    + + hh447611 + D3D11_BUS_TYPE BusType + D3D11_BUS_TYPE BusType +
    + + +

    If TRUE, contiguous blocks of video memory may be accessible to the CPU or the bus.

    +
    + + hh447611 + BOOL AccessibleInContiguousBlocks + BOOL AccessibleInContiguousBlocks +
    + + +

    If TRUE, non-contiguous blocks of video memory may be accessible to the CPU or the bus.

    +
    + + hh447611 + BOOL AccessibleInNonContiguousBlocks + BOOL AccessibleInNonContiguousBlocks +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE query.

    +
    + + hh447612 + D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT + D3D11_AUTHENTICATED_QUERY_CHANNEL_TYPE_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447612 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A value that specifies the channel type.

    +
    + + hh447612 + D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType + D3D11_AUTHENTICATED_CHANNEL_TYPE ChannelType +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION query.

    +
    + + hh447613 + D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT + D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_INPUT +
    + + +

    A structure that contains the for the query and other data.

    +
    + + hh447613 + D3D11_AUTHENTICATED_QUERY_INPUT Input + D3D11_AUTHENTICATED_QUERY_INPUT Input +
    + + +

    A handle to a decoder device.

    +
    + + hh447613 + void* DecoderHandle + void DecoderHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION query.

    +
    + + hh447614 + D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT + D3D11_AUTHENTICATED_QUERY_CRYPTO_SESSION_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447614 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A handle to a decoder device.

    +
    + + hh447614 + void* DecoderHandle + void DecoderHandle +
    + + +

    A handle to the cryptographic session that is associated with the decoder device.

    +
    + + hh447614 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    A handle to the Direct3D device that is associated with the decoder device.

    +
    + + hh447614 + void* DeviceHandle + void DeviceHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_CURRENT_ENCRYPTION_WHEN_ACCESSIBLE query.

    +
    + + hh447615 + D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT + D3D11_AUTHENTICATED_QUERY_CURRENT_ACCESSIBILITY_ENCRYPTION_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447615 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A that specifies the current encryption type.

    +
    + + hh447615 + GUID EncryptionGuid + GUID EncryptionGuid +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE query.

    +
    + + hh447616 + D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT + D3D11_AUTHENTICATED_QUERY_DEVICE_HANDLE_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447616 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A handle to the device.

    +
    + + hh447616 + void* DeviceHandle + void DeviceHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for the method.

    +
    + + hh447617 + D3D11_AUTHENTICATED_QUERY_INPUT + D3D11_AUTHENTICATED_QUERY_INPUT +
    + + + No documentation. + + + GUID QueryType + GUID QueryType + + + + No documentation. + + + void* hChannel + void hChannel + + + + No documentation. + + + unsigned int SequenceNumber + unsigned int SequenceNumber + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_OUTPUT_ID query.

    +
    + + hh447622 + D3D11_AUTHENTICATED_QUERY_OUTPUT + D3D11_AUTHENTICATED_QUERY_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447622 + D3D11_OMAC omac + D3D11_OMAC omac +
    + + +

    A handle to the device.

    +
    + + hh447622 + GUID QueryType + GUID QueryType +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447622 + void* hChannel + void hChannel +
    + + +

    The index of the output ID.

    +
    + + hh447622 + unsigned int SequenceNumber + unsigned int SequenceNumber +
    + + +

    An output ID that is associated with the specified device and cryptographic session.

    +
    + + hh447622 + HRESULT ReturnCode + HRESULT ReturnCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT query.

    +
    + + hh447619 + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_INPUT +
    + + +

    A structure that contains the for the query and other data.

    +
    + + hh447619 + D3D11_AUTHENTICATED_QUERY_INPUT Input + D3D11_AUTHENTICATED_QUERY_INPUT Input +
    + + +

    A handle to the device.

    +
    + + hh447619 + void* DeviceHandle + void DeviceHandle +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447619 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT query.

    +
    + + hh447620 + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_COUNT_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447620 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A handle to the device.

    +
    + + hh447620 + void* DeviceHandle + void DeviceHandle +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447620 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    The number of output IDs associated with the specified device and cryptographic session.

    +
    + + hh447620 + unsigned int OutputIDCount + unsigned int OutputIDCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_QUERY_OUTPUT_ID query.

    +
    + + hh447621 + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_INPUT +
    + + +

    A structure that contains the for the query and other data.

    +
    + + hh447621 + D3D11_AUTHENTICATED_QUERY_INPUT Input + D3D11_AUTHENTICATED_QUERY_INPUT Input +
    + + +

    A handle to the device.

    +
    + + hh447621 + void* DeviceHandle + void DeviceHandle +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447621 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    The index of the output ID.

    +
    + + hh447621 + unsigned int OutputIDIndex + unsigned int OutputIDIndex +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_OUTPUT_ID query.

    +
    + + hh447622 + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT + D3D11_AUTHENTICATED_QUERY_OUTPUT_ID_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447622 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A handle to the device.

    +
    + + hh447622 + void* DeviceHandle + void DeviceHandle +
    + + +

    A handle to the cryptographic session.

    +
    + + hh447622 + void* CryptoSessionHandle + void CryptoSessionHandle +
    + + +

    The index of the output ID.

    +
    + + hh447622 + unsigned int OutputIDIndex + unsigned int OutputIDIndex +
    + + +

    An output ID that is associated with the specified device and cryptographic session.

    +
    + + hh447622 + unsigned longlong OutputID + unsigned longlong OutputID +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_PROTECTION query.

    +
    + + hh447623 + D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT + D3D11_AUTHENTICATED_QUERY_PROTECTION_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447623 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    A union that specifies the protection level.

    +
    + + hh447623 + D3D11_AUTHENTICATED_PROTECTION_FLAGS ProtectionFlags + D3D11_AUTHENTICATED_PROTECTION_FLAGS ProtectionFlags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT query.

    +
    + + hh447624 + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_COUNT_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447624 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    The number of processes that are allowed to open shared resources that have restricted access. A process cannot open such a resource unless the process has been granted access.

    +
    + + hh447624 + unsigned int RestrictedSharedResourceProcessCount + unsigned int RestrictedSharedResourceProcessCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains input data for a D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS query.

    +
    + + hh447625 + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_INPUT +
    + + +

    A structure that contains the for the query and other data.

    +
    + + hh447625 + D3D11_AUTHENTICATED_QUERY_INPUT Input + D3D11_AUTHENTICATED_QUERY_INPUT Input +
    + + +

    The index of the process.

    +
    + + hh447625 + unsigned int ProcessIndex + unsigned int ProcessIndex +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS query.

    +
    + +

    The Desktop Window Manager (DWM) process is identified by setting ProcessIdentifier equal to . Other processes are identified by setting the process handle in ProcessHandle and setting ProcessIdentifier equal to .

    +
    + + hh447626 + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT + D3D11_AUTHENTICATED_QUERY_RESTRICTED_SHARED_RESOURCE_PROCESS_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447626 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    The index of the process in the list of processes.

    +
    + + hh447626 + unsigned int ProcessIndex + unsigned int ProcessIndex +
    + + +

    A value that specifies the type of process.

    +
    + + hh447626 + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE ProcessIdentifier + D3D11_AUTHENTICATED_PROCESS_IDENTIFIER_TYPE ProcessIdentifier +
    + + +

    A process handle. If the ProcessIdentifier member equals , the ProcessHandle member contains a valid handle to a process. Otherwise, this member is ignored.

    +
    + + hh447626 + void* ProcessHandle + void ProcessHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains the response to a D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT query.

    +
    + + hh447627 + D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT + D3D11_AUTHENTICATED_QUERY_UNRESTRICTED_PROTECTED_SHARED_RESOURCE_COUNT_OUTPUT +
    + + +

    A structure that contains a Message Authentication Code (MAC) and other data.

    +
    + + hh447627 + D3D11_AUTHENTICATED_QUERY_OUTPUT Output + D3D11_AUTHENTICATED_QUERY_OUTPUT Output +
    + + +

    The number of protected, shared resources that can be opened by any process without restrictions.

    +
    + + hh447627 + unsigned int UnrestrictedProtectedSharedResourceCount + unsigned int UnrestrictedProtectedSharedResourceCount +
    + + + No documentation. + + + CD3D11_VIDEO_DEFAULT + CD3D11_VIDEO_DEFAULT + + + +

    Describes an HLSL class instance.

    +
    + +

    The structure is returned by the method.

    The members of this structure except InstanceIndex are valid (non default values) if they describe a class instance aquired using . The InstanceIndex member is only valid when the class instance is aquired using .

    +
    + + ff476098 + D3D11_CLASS_INSTANCE_DESC + D3D11_CLASS_INSTANCE_DESC +
    + + +

    The instance ID of an HLSL class; the default value is 0.

    +
    + + ff476098 + unsigned int InstanceId + unsigned int InstanceId +
    + + +

    The instance index of an HLSL class; the default value is 0.

    +
    + + ff476098 + unsigned int InstanceIndex + unsigned int InstanceIndex +
    + + +

    The type ID of an HLSL class; the default value is 0.

    +
    + + ff476098 + unsigned int TypeId + unsigned int TypeId +
    + + +

    Describes the constant buffer associated with an HLSL class; the default value is 0.

    +
    + + ff476098 + unsigned int ConstantBuffer + unsigned int ConstantBuffer +
    + + +

    The base constant buffer offset associated with an HLSL class; the default value is 0.

    +
    + + ff476098 + unsigned int BaseConstantBufferOffset + unsigned int BaseConstantBufferOffset +
    + + +

    The base texture associated with an HLSL class; the default value is 127.

    +
    + + ff476098 + unsigned int BaseTexture + unsigned int BaseTexture +
    + + +

    The base sampler associated with an HLSL class; the default value is 15.

    +
    + + ff476098 + unsigned int BaseSampler + unsigned int BaseSampler +
    + + +

    True if the class was created; the default value is false.

    +
    + + ff476098 + BOOL Created + BOOL Created +
    + + +

    Information about the video card's performance counter capabilities.

    +
    + +

    This structure is returned by .

    +
    + + ff476104 + D3D11_COUNTER_INFO + D3D11_COUNTER_INFO +
    + + +

    Largest device-dependent counter ID that the device supports. If none are supported, this value will be 0. Otherwise it will be greater than or equal to . See .

    +
    + + ff476104 + D3D11_COUNTER LastDeviceDependentCounter + D3D11_COUNTER LastDeviceDependentCounter +
    + + +

    Number of counters that can be simultaneously supported.

    +
    + + ff476104 + unsigned int NumSimultaneousCounters + unsigned int NumSimultaneousCounters +
    + + +

    Number of detectable parallel units that the counter is able to discern. Values are 1 ~ 4. Use NumDetectableParallelUnits to interpret the values of the VERTEX_PROCESSING, GEOMETRY_PROCESSING, PIXEL_PROCESSING, and OTHER_GPU_PROCESSING counters.

    +
    + + ff476104 + unsigned char NumDetectableParallelUnits + unsigned char NumDetectableParallelUnits +
    + + +

    Describes a counter.

    +
    + +

    This structure is used by , and .

    +
    + + ff476103 + D3D11_COUNTER_DESC + D3D11_COUNTER_DESC +
    + + +

    Type of counter (see ).

    +
    + + ff476103 + D3D11_COUNTER Counter + D3D11_COUNTER Counter +
    + + +

    Reserved.

    +
    + + ff476103 + unsigned int MiscFlags + unsigned int MiscFlags +
    + + +

    Stencil operations that can be performed based on the results of stencil test.

    +
    + +

    All stencil operations are specified as a . The stencil operation can be set differently based on the outcome of the stencil test (which is referred to as StencilFunc in the stencil test portion of depth-stencil testing.

    This structure is a member of a depth-stencil description.

    +
    + + ff476109 + D3D11_DEPTH_STENCILOP_DESC + D3D11_DEPTH_STENCILOP_DESC +
    + + +

    The stencil operation to perform when stencil testing fails.

    +
    + + ff476109 + D3D11_STENCIL_OP StencilFailOp + D3D11_STENCIL_OP StencilFailOp +
    + + +

    The stencil operation to perform when stencil testing passes and depth testing fails.

    +
    + + ff476109 + D3D11_STENCIL_OP StencilDepthFailOp + D3D11_STENCIL_OP StencilDepthFailOp +
    + + +

    The stencil operation to perform when stencil testing and depth testing both pass.

    +
    + + ff476109 + D3D11_STENCIL_OP StencilPassOp + D3D11_STENCIL_OP StencilPassOp +
    + + +

    A function that compares stencil data against existing stencil data. The function options are listed in .

    +
    + + ff476109 + D3D11_COMPARISON_FUNC StencilFunc + D3D11_COMPARISON_FUNC StencilFunc +
    + + +

    Specifies the subresources of a texture that are accessible from a depth-stencil view.

    +
    + +

    These are valid formats for a depth-stencil view:

    A depth-stencil view cannot use a typeless format. If the format chosen is , then the format of the parent resource is used.

    A depth-stencil-view description is needed when calling .

    +
    + + ff476112 + D3D11_DEPTH_STENCIL_VIEW_DESC + D3D11_DEPTH_STENCIL_VIEW_DESC +
    + + +

    Resource data format (see ). See remarks for allowable formats.

    +
    + + ff476112 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    Type of resource (see ). Specifies how a depth-stencil resource will be accessed; the value is stored in the union in this structure.

    +
    + + ff476112 + D3D11_DSV_DIMENSION ViewDimension + D3D11_DSV_DIMENSION ViewDimension +
    + + +

    A value that describes whether the texture is read only. Pass 0 to specify that it is not read only; otherwise, pass one of the members of the enumerated type.

    +
    + + ff476112 + D3D11_DSV_FLAG Flags + D3D11_DSV_FLAG Flags +
    + + +

    Specifies a 1D texture subresource (see ).

    +
    + + ff476112 + D3D11_TEX1D_DSV Texture1D + D3D11_TEX1D_DSV Texture1D +
    + + +

    Specifies an array of 1D texture subresources (see ).

    +
    + + ff476112 + D3D11_TEX1D_ARRAY_DSV Texture1DArray + D3D11_TEX1D_ARRAY_DSV Texture1DArray +
    + + +

    Specifies a 2D texture subresource (see ).

    +
    + + ff476112 + D3D11_TEX2D_DSV Texture2D + D3D11_TEX2D_DSV Texture2D +
    + + +

    Specifies an array of 2D texture subresources (see ).

    +
    + + ff476112 + D3D11_TEX2D_ARRAY_DSV Texture2DArray + D3D11_TEX2D_ARRAY_DSV Texture2DArray +
    + + +

    Specifies a multisampled 2D texture (see ).

    +
    + + ff476112 + D3D11_TEX2DMS_DSV Texture2DMS + D3D11_TEX2DMS_DSV Texture2DMS +
    + + +

    Specifies an array of multisampled 2D textures (see ).

    +
    + + ff476112 + D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_DSV Texture2DMSArray +
    + + +

    Specifies the subresource from a 2D texture that is accessible to a depth-stencil view.

    +
    + +

    This structure is one member of a depth-stencil-view description (see ).

    +
    + + ff476243 + D3D11_TEX2D_DSV + D3D11_TEX2D_DSV +
    + + +

    The index of the first mipmap level to use.

    +
    + + ff476243 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Specifies the subresources from an array of 1D textures to use in a depth-stencil view.

    +
    + +

    This structure is one member of a depth-stencil-view description (see ).

    +
    + + ff476225 + D3D11_TEX1D_ARRAY_DSV + D3D11_TEX1D_ARRAY_DSV +
    + + +

    The index of the first mipmap level to use.

    +
    + + ff476225 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476225 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476225 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresources from an array 2D textures that are accessible to a depth-stencil view.

    +
    + +

    This structure is one member of a depth-stencil-view description (see ).

    +
    + + ff476239 + D3D11_TEX2D_ARRAY_DSV + D3D11_TEX2D_ARRAY_DSV +
    + + +

    The index of the first mipmap level to use.

    +
    + + ff476239 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476239 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476239 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresource from a 1D texture that is accessible to a depth-stencil view.

    +
    + +

    This structure is one member of a depth-stencil-view description (see ).

    +
    + + ff476229 + D3D11_TEX1D_DSV + D3D11_TEX1D_DSV +
    + + +

    The index of the first mipmap level to use.

    +
    + + ff476229 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Specifies the subresource from a multisampled 2D texture that is accessible to a depth-stencil view.

    +
    + +

    Because a multisampled 2D texture contains a single subtexture, there is nothing to specify; this unused member is included so that this structure will compile in C.

    +
    + + ff476236 + D3D11_TEX2DMS_DSV + D3D11_TEX2DMS_DSV +
    + + +

    Unused.

    +
    + + ff476236 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
    + + +

    Specifies the subresources from an array of multisampled 2D textures for a depth-stencil view.

    +
    + +

    This structure is one member of a depth-stencil-view description (see ).

    +
    + + ff476233 + D3D11_TEX2DMS_ARRAY_DSV + D3D11_TEX2DMS_ARRAY_DSV +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476233 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476233 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies which bytes in a video surface are encrypted.

    +
    + + hh447630 + D3D11_ENCRYPTED_BLOCK_INFO + D3D11_ENCRYPTED_BLOCK_INFO +
    + + +

    The number of bytes that are encrypted at the start of the buffer.

    +
    + + hh447630 + unsigned int NumEncryptedBytesAtBeginning + unsigned int NumEncryptedBytesAtBeginning +
    + + +

    The number of bytes that are skipped after the first NumEncryptedBytesAtBeginning bytes, and then after each block of NumBytesInEncryptPattern bytes. Skipped bytes are not encrypted.

    +
    + + hh447630 + unsigned int NumBytesInSkipPattern + unsigned int NumBytesInSkipPattern +
    + + +

    The number of bytes that are encrypted after each block of skipped bytes.

    +
    + + hh447630 + unsigned int NumBytesInEncryptPattern + unsigned int NumBytesInEncryptPattern +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes information about Direct3D 11.1 adapter architecture.

    +
    + + hh404455 + D3D11_FEATURE_DATA_ARCHITECTURE_INFO + D3D11_FEATURE_DATA_ARCHITECTURE_INFO +
    + + +

    Specifies whether a rendering device batches rendering commands and performs multipass rendering into tiles or bins over a render area. Certain API usage patterns that are fine TileBasedDefferredRenderers (TBDRs) can perform worse on non-TBDRs and vice versa. Applications that are careful about rendering can be friendly to both TBDR and non-TBDR architectures. TRUE if the rendering device batches rendering commands and otherwise.

    +
    + + hh404455 + BOOL TileBasedDeferredRenderer + BOOL TileBasedDeferredRenderer +
    + + +

    Describes compute shader and raw and structured buffer support in the current graphics driver.

    +
    + +

    Direct3D 11 devices () are required to support Compute Shader model 5.0. Direct3D 10.x devices (, ) can optionally support Compute Shader model 4.0 or 4.1.

    +
    + + ff476126 + D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS + D3D11_FEATURE_DATA_D3D10_X_HARDWARE_OPTIONS +
    + + +

    TRUE if compute shaders and raw and structured buffers are supported; otherwise .

    +
    + + ff476126 + BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x + BOOL ComputeShaders_Plus_RawAndStructuredBuffers_Via_Shader_4_x +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes Direct3D 11.1 feature options in the current graphics driver.

    +
    + +

    If a Microsoft Direct3D device supports feature level 11.1 (), when you call with , CheckFeatureSupport returns a reference to with all member set to TRUE except the SAD4ShaderInstructions and ExtendedDoublesShaderInstructions members, which are optionally supported by the hardware and driver and therefore can be TRUE or .

    Feature level 11.1 provides the following additional features:

    • UAVs at every shader stage with 64 UAV bind slots instead of 8.
    • Target-independent rasterization, which enables you to set the ForcedSampleCount member of to 1, 4, 8, or 16 and to render to RTVs with a single sample.
    • UAV-only rendering with the ForcedSampleCount member of set to up to 16 (only up to 8 for feature level 11).

    The runtime always sets the following groupings of members identically. That is, all the values in a grouping are TRUE or together:

    • DiscardAPIsSeenByDriver and FlagsForUpdateAndCopySeenByDriver
    • ClearView, CopyWithOverlap, ConstantBufferPartialUpdate, ConstantBufferOffsetting, and MapNoOverwriteOnDynamicConstantBuffer
    • MapNoOverwriteOnDynamicBufferSRV and MultisampleRTVWithForcedSampleCountOne
    +
    + + hh404457 + D3D11_FEATURE_DATA_D3D11_OPTIONS + D3D11_FEATURE_DATA_D3D11_OPTIONS +
    + + +

    Specifies whether logic operations are available in blend state. The runtime sets this member to TRUE if logic operations are available in blend state and otherwise. This member is for feature level 9.1, 9.2, and 9.3. This member is optional for feature level 10, 10.1, and 11. This member is TRUE for feature level 11.1.

    +
    + + hh404457 + BOOL OutputMergerLogicOp + BOOL OutputMergerLogicOp +
    + + +

    Specifies whether the driver can render with no RTVs or DSVs and only UAVs bound. The runtime sets this member to TRUE if the driver can render with no RTVs or DSVs and only UAVs bound and otherwise. If TRUE, you can set the ForcedSampleCount member of to 1, 4, or 8 when you render with no RTVs or DSV and only UAVs bound. For feature level 11.1, this member is always TRUE and you can also set ForcedSampleCount to 16 in addition to 1, 4, or 8. The default value of ForcedSampleCount is 0, which means the same as if the value is set to 1. You can always set ForcedSampleCount to 0 or 1 for UAV-only rendering independently of how this member is set.

    +
    + + hh404457 + BOOL UAVOnlyRenderingForcedSampleCount + BOOL UAVOnlyRenderingForcedSampleCount +
    + + +

    Specifies whether the driver supports the and methods. The runtime sets this member to TRUE if the driver supports these methods and otherwise. How this member is set does not indicate whether the driver actually uses these methods; that is, the driver might ignore these methods if they are not useful to the hardware. If , the runtime does not expose these methods to the driver because the driver does not support them. You can monitor this member during development to rule out legacy drivers on hardware where these methods might have otherwise been beneficial. You are not required to write separate code paths based on whether this member is TRUE or ; you can call these methods whenever applicable.

    +
    + + hh404457 + BOOL DiscardAPIsSeenByDriver + BOOL DiscardAPIsSeenByDriver +
    + + +

    Specifies whether the driver supports new semantics for copy and update that are exposed by the and methods. The runtime sets this member to TRUE if the driver supports new semantics for copy and update. The runtime sets this member to only for legacy drivers. The runtime handles this member similarly to the DiscardAPIsSeenByDriver member.

    +
    + + hh404457 + BOOL FlagsForUpdateAndCopySeenByDriver + BOOL FlagsForUpdateAndCopySeenByDriver +
    + + +

    Specifies whether the driver supports the method. The runtime sets this member to TRUE if the driver supports this method and otherwise. If , the runtime does not expose this method to the driver because the driver does not support it.

    Note??For feature level 9.1, 9.2, and 9.3, this member is always TRUE because the option is emulated by the runtime.

    +
    + + hh404457 + BOOL ClearView + BOOL ClearView +
    + + +

    Specifies whether you can call with overlapping source and destination rectangles. The runtime sets this member to TRUE if you can call CopySubresourceRegion1 with overlapping source and destination rectangles and otherwise. If , the runtime does not expose this method to the driver because the driver does not support it.

    Note??For feature level 9.1, 9.2, and 9.3, this member is always TRUE because drivers already support the option for these feature levels.

    +
    + + hh404457 + BOOL CopyWithOverlap + BOOL CopyWithOverlap +
    + + +

    Specifies whether the driver supports partial updates of constant buffers. The runtime sets this member to TRUE if the driver supports partial updates of constant buffers and otherwise. If , the runtime does not expose this operation to the driver because the driver does not support it.

    Note??For feature level 9.1, 9.2, and 9.3, this member is always TRUE because the option is emulated by the runtime.

    +
    + + hh404457 + BOOL ConstantBufferPartialUpdate + BOOL ConstantBufferPartialUpdate +
    + + +

    Specifies whether the driver supports new semantics for setting offsets in constant buffers for a shader. The runtime sets this member to TRUE if the driver supports allowing you to specify offsets when you call new methods like the method and otherwise. If , the runtime does not expose this operation to the driver because the driver does not support it.

    Note??For feature level 9.1, 9.2, and 9.3, this member is always TRUE because the option is emulated by the runtime.

    +
    + + hh404457 + BOOL ConstantBufferOffsetting + BOOL ConstantBufferOffsetting +
    + + +

    Specifies whether you can call with on a dynamic constant buffer (that is, whether the driver supports this operation). The runtime sets this member to TRUE if the driver supports this operation and otherwise. If , the runtime fails this method because the driver does not support the operation.

    Note??For feature level 9.1, 9.2, and 9.3, this member is always TRUE because the option is emulated by the runtime.

    +
    + + hh404457 + BOOL MapNoOverwriteOnDynamicConstantBuffer + BOOL MapNoOverwriteOnDynamicConstantBuffer +
    + + +

    Specifies whether you can call with on a dynamic buffer SRV (that is, whether the driver supports this operation). The runtime sets this member to TRUE if the driver supports this operation and otherwise. If , the runtime fails this method because the driver does not support the operation.

    +
    + + hh404457 + BOOL MapNoOverwriteOnDynamicBufferSRV + BOOL MapNoOverwriteOnDynamicBufferSRV +
    + + +

    Specifies whether the driver supports multisample rendering when you render with RTVs bound. If TRUE, you can set the ForcedSampleCount member of to 1 with a multisample RTV bound. The driver can support this option on feature level 10 and higher. If , the rasterizer-state creation will fail because the driver is legacy or the feature level is too low.

    +
    + + hh404457 + BOOL MultisampleRTVWithForcedSampleCountOne + BOOL MultisampleRTVWithForcedSampleCountOne +
    + + +

    Specifies whether the hardware and driver support the msad4 intrinsic function in shaders. The runtime sets this member to TRUE if the hardware and driver support calls to msad4 intrinsic functions in shaders. If , the driver is legacy or the hardware does not support the option; the runtime will fail shader creation for shaders that use msad4.

    +
    + + hh404457 + BOOL SAD4ShaderInstructions + BOOL SAD4ShaderInstructions +
    + + +

    Specifies whether the hardware and driver support the fma intrinsic function and other extended doubles instructions (DDIV and DRCP) in shaders. The fma intrinsic function emits an extended doubles DFMA instruction. The runtime sets this member to TRUE if the hardware and driver support extended doubles instructions in shaders (shader model 5 and higher). Support of this option implies support of basic double-precision shader instructions as well. You can use the value to query for support of double-precision shaders. If , the hardware and driver do not support the option; the runtime will fail shader creation for shaders that use extended doubles instructions.

    +
    + + hh404457 + BOOL ExtendedDoublesShaderInstructions + BOOL ExtendedDoublesShaderInstructions +
    + + + No documentation. + + + BOOL ExtendedResourceSharing + BOOL ExtendedResourceSharing + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes Direct3D 9 feature options in the current graphics driver.

    +
    + + hh404458 + D3D11_FEATURE_DATA_D3D9_OPTIONS + D3D11_FEATURE_DATA_D3D9_OPTIONS +
    + + +

    Specifies whether the driver supports the nonpowers-of-2-unconditionally feature. For more information about this feature, see feature level. The runtime sets this member to TRUE for hardware at Direct3D 10 and higher feature levels. For hardware at Direct3D 9.3 and lower feature levels, the runtime sets this member to if the hardware and driver support the powers-of-2 (2D textures must have widths and heights specified as powers of two) feature or the nonpowers-of-2-conditionally feature. For more information about this feature, see feature level.

    +
    + + hh404458 + BOOL FullNonPow2TextureSupport + BOOL FullNonPow2TextureSupport +
    + + +

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 and later operating systems.

    Describes Direct3D?9 shadow support in the current graphics driver.

    +
    + +

    Shadows are an important element in realistic 3D scenes. You can use the shadow buffer technique to render shadows. The basic principle of the technique is to use a depth buffer to store the scene depth info from the perspective of the light source, and then compare each point rendered in the scene with that buffer to determine if it is in shadow.

    To render objects into the scene with shadows on them, you create sampler state objects with comparison filtering set and the comparison mode (ComparisonFunc) to LessEqual. You can also set BorderColor addressing on this depth sampler, even though BorderColor isn't typically allowed on feature levels 9.1 and 9.2. By using the border color and picking 0.0 or 1.0 as the border color value, you can control whether the regions off the edge of the shadow map appear to be always in shadow or never in shadow respectively. + You can control the shadow filter quality by the Mag and Min filter settings in the comparison sampler. Point sampling will produce shadows with non-anti-aliased edges. Linear filter sampler settings will result in higher quality shadow edges, but might affect performance on some power-optimized devices.

    Note??If you use a separate setting for Mag versus Min filter options, you produce an undefined result. Anisotropic filtering is not supported. The Mip filter choice is not relevant because feature level 9.x does not allow mipmapped depth buffers.

    Note??On feature level 9.x, you can't compile a shader with the SampleCmp and SampleCmpLevelZero intrinsic functions by using older versions of the compiler. For example, you can't use the fxc.exe compiler that ships with the DirectX SDK or use the D3DCompile** functions (like D3DCompileFromFile) that are implemented in D3DCompiler_43.dll and earlier. These intrinsic functions on feature level 9.x are only supported in the fxc.exe compiler that ships with the Windows?8 SDK and later and with the D3DCompile** functions that are implemented in D3DCompiler_44.dll and later. + But these intrinsic functions are present in shader models for feature levels higher than 9.x.

    +
    + + jj247569 + D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT + D3D11_FEATURE_DATA_D3D9_SHADOW_SUPPORT +
    + + +

    Specifies whether the driver supports the shadowing feature with the comparison-filtering mode set to less than or equal to. The runtime sets this member to TRUE for hardware at Direct3D 10 and higher feature levels. For hardware at Direct3D 9.3 and lower feature levels, the runtime sets this member to TRUE only if the hardware and driver support the shadowing feature; otherwise .

    +
    + + jj247569 + BOOL SupportsDepthAsTextureWithLessEqualComparisonFilter + BOOL SupportsDepthAsTextureWithLessEqualComparisonFilter +
    + + +

    Describes double data type support in the current graphics driver.

    +
    + +

    If the runtime sets DoublePrecisionFloatShaderOps to TRUE, the hardware and driver support the following Shader Model 5 instructions:

    • dadd
    • dmax
    • dmin
    • dmul
    • deq
    • dge
    • dlt
    • dne
    • dmov
    • dmovc
    • dtof
    • ftod

    Note??If DoublePrecisionFloatShaderOps is TRUE, the hardware and driver do not necessarily support double-precision division.

    +
    + + ff476127 + D3D11_FEATURE_DATA_DOUBLES + D3D11_FEATURE_DATA_DOUBLES +
    + + +

    Specifies whether double types are allowed. If TRUE, double types are allowed; otherwise . The runtime must set DoublePrecisionFloatShaderOps to TRUE in order for you to use any HLSL shader that is compiled with a double type.

    +
    + + ff476127 + BOOL DoublePrecisionFloatShaderOps + BOOL DoublePrecisionFloatShaderOps +
    + + +

    Describes which resources are supported by the current graphics driver for a given format.

    +
    + + ff476128 + D3D11_FEATURE_DATA_FORMAT_SUPPORT + D3D11_FEATURE_DATA_FORMAT_SUPPORT +
    + + +

    to return information on.

    +
    + + ff476128 + DXGI_FORMAT InFormat + DXGI_FORMAT InFormat +
    + + +

    Combination of flags indicating which resources are supported.

    +
    + + ff476128 + D3D11_FORMAT_SUPPORT OutFormatSupport + D3D11_FORMAT_SUPPORT OutFormatSupport +
    + + +

    Describes which unordered resource options are supported by the current graphics driver for a given format.

    +
    + + ff476129 + D3D11_FEATURE_DATA_FORMAT_SUPPORT2 + D3D11_FEATURE_DATA_FORMAT_SUPPORT2 +
    + + +

    to return information on.

    +
    + + ff476129 + DXGI_FORMAT InFormat + DXGI_FORMAT InFormat +
    + + +

    Combination of flags indicating which unordered resource options are supported.

    +
    + + ff476129 + D3D11_FORMAT_SUPPORT2 OutFormatSupport2 + D3D11_FORMAT_SUPPORT2 OutFormatSupport2 +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes precision support options for shaders in the current graphics driver.

    +
    + +

    For hardware at Direct3D 10 and higher feature levels, the runtime sets both members identically. For hardware at Direct3D 9.3 and lower feature levels, the runtime can set a lower precision support in the PixelShaderMinPrecision member than the AllOtherShaderStagesMinPrecision member; for 9.3 and lower, all other shader stages represent only the vertex shader.

    +
    + + hh404460 + D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT + D3D11_FEATURE_DATA_SHADER_MIN_PRECISION_SUPPORT +
    + + +

    A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies minimum precision levels that the driver supports for the pixel shader. A value of zero indicates that the driver supports only full 32-bit precision for the pixel shader.

    +
    + + hh404460 + unsigned int PixelShaderMinPrecision + unsigned int PixelShaderMinPrecision +
    + + +

    A combination of -typed values that are combined by using a bitwise OR operation. The resulting value specifies minimum precision levels that the driver supports for all other shader stages. A value of zero indicates that the driver supports only full 32-bit precision for all other shader stages.

    +
    + + hh404460 + unsigned int AllOtherShaderStagesMinPrecision + unsigned int AllOtherShaderStagesMinPrecision +
    + + +

    Describes the multi-threading features that are supported by the current graphics driver.

    +
    + +

    Use the structure with the method to determine multi-threading support.

    +
    + + ff476130 + D3D11_FEATURE_DATA_THREADING + D3D11_FEATURE_DATA_THREADING +
    + + +

    TRUE means resources can be created concurrently on multiple threads while drawing; means that the presence of coarse synchronization will prevent concurrency.

    +
    + + ff476130 + BOOL DriverConcurrentCreates + BOOL DriverConcurrentCreates +
    + + +

    TRUE means command lists are supported by the current driver; means that the API will emulate deferred contexts and command lists with software.

    +
    + + ff476130 + BOOL DriverCommandLists + BOOL DriverCommandLists +
    + + +

    A description of a single element for the input-assembler stage.

    +
    + +

    An input-layout object contains an array of structures, each structure defines one element being read from an input slot. Create an input-layout object by calling . For an example, see the "Create the Input-Layout Object" subtopic under the Getting Started with the Input-Assembler Stage topic.

    +
    + + ff476180 + D3D11_INPUT_ELEMENT_DESC + D3D11_INPUT_ELEMENT_DESC +
    + + +

    The HLSL semantic associated with this element in a shader input-signature.

    +
    + + ff476180 + const char* SemanticName + char SemanticName +
    + + +

    The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name

    matrix

    , however each of the four component would have different semantic indices (0, 1, 2, and 3).

    +
    + + ff476180 + unsigned int SemanticIndex + unsigned int SemanticIndex +
    + + +

    The data type of the element data. See .

    +
    + + ff476180 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    An integer value that identifies the input-assembler (see input slot). Valid values are between 0 and 15, defined in D3D11.h.

    +
    + + ff476180 + unsigned int InputSlot + unsigned int InputSlot +
    + + +

    Optional. Offset (in bytes) between each element. Use D3D11_APPEND_ALIGNED_ELEMENT for convenience to define the current element directly after the previous one, including any packing if necessary.

    +
    + + ff476180 + unsigned int AlignedByteOffset + unsigned int AlignedByteOffset +
    + + +

    Identifies the input data class for a single input slot (see ).

    +
    + + ff476180 + D3D11_INPUT_CLASSIFICATION InputSlotClass + D3D11_INPUT_CLASSIFICATION InputSlotClass +
    + + +

    The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data (the slot class is set to ).

    +
    + + ff476180 + unsigned int InstanceDataStepRate + unsigned int InstanceDataStepRate +
    + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + Identifies the input data class for a single input slot. + The number of instances to draw using the same per-instance data before advancing in the buffer by one element. This value must be 0 for an element that contains per-vertex data. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + Offset (in bytes) between each element. Use AppendAligned for convenience to define the current element directly after the previous one, including any packing if necessary. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + Initializes a new instance of the struct. + + The HLSL semantic associated with this element in a shader input-signature. + The semantic index for the element. A semantic index modifies a semantic, with an integer index number. A semantic index is only needed in a case where there is more than one element with the same semantic. For example, a 4x4 matrix would have four components each with the semantic name matrix, however each of the four component would have different semantic indices (0, 1, 2, and 3). + The data type of the element data. + An integer value that identifies the input-assembler. Valid values are between 0 and 15. + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Returns a value that can be used for the offset parameter of an InputElement to indicate that the element + should be aligned directly after the previous element, including any packing if neccessary. + + A value used to align input elements. + D3D11_APPEND_ALIGNED_ELEMENT + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Contains a Message Authentication Code (MAC).

    +
    + + hh447631 + D3D11_OMAC + D3D11_OMAC +
    + + +

    A byte array that contains the cryptographic MAC value of the message.

    +
    + + hh447631 + unsigned char Omac[16] + unsigned char Omac +
    + + +

    Query information about graphics-pipeline activity in between calls to and .

    +
    + + ff476192 + D3D11_QUERY_DATA_PIPELINE_STATISTICS + D3D11_QUERY_DATA_PIPELINE_STATISTICS +
    + + + No documentation. + + + unsigned longlong IAVertices + unsigned longlong IAVertices + + + + No documentation. + + + unsigned longlong IAPrimitives + unsigned longlong IAPrimitives + + + + No documentation. + + + unsigned longlong VSInvocations + unsigned longlong VSInvocations + + + + No documentation. + + + unsigned longlong GSInvocations + unsigned longlong GSInvocations + + + + No documentation. + + + unsigned longlong GSPrimitives + unsigned longlong GSPrimitives + + + + No documentation. + + + unsigned longlong CInvocations + unsigned longlong CInvocations + + + + No documentation. + + + unsigned longlong CPrimitives + unsigned longlong CPrimitives + + + + No documentation. + + + unsigned longlong PSInvocations + unsigned longlong PSInvocations + + + + No documentation. + + + unsigned longlong HSInvocations + unsigned longlong HSInvocations + + + + No documentation. + + + unsigned longlong DSInvocations + unsigned longlong DSInvocations + + + + No documentation. + + + unsigned longlong CSInvocations + unsigned longlong CSInvocations + + + +

    Query information about the reliability of a timestamp query.

    +
    + +

    For a list of query types see .

    +
    + + ff476194 + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT + D3D11_QUERY_DATA_TIMESTAMP_DISJOINT +
    + + +

    How frequently the GPU counter increments in Hz.

    +
    + + ff476194 + unsigned longlong Frequency + unsigned longlong Frequency +
    + + +

    If this is TRUE, something occurred in between the query's and calls that caused the timestamp counter to become discontinuous or disjoint, such as unplugging the AC chord on a laptop, overheating, or throttling up/down due to laptop savings events. The timestamp returned by for a timestamp query is only reliable if Disjoint is .

    +
    + + ff476194 + BOOL Disjoint + BOOL Disjoint +
    + + +

    Describes a query.

    +
    + + ff476195 + D3D11_QUERY_DESC + D3D11_QUERY_DESC +
    + + +

    Type of query (see ).

    +
    + + ff476195 + D3D11_QUERY Query + D3D11_QUERY Query +
    + + +

    Miscellaneous flags (see ).

    +
    + + ff476195 + D3D11_QUERY_MISC_FLAG MiscFlags + D3D11_QUERY_MISC_FLAG MiscFlags +
    + + +

    Describes the blend state for a render target.

    +
    + +

    For info about how blending is done, see the output-merger stage.

    Here are the default values for blend state.

    StateDefault Value
    BlendEnable
    SrcBlend
    DestBlend
    BlendOp
    SrcBlendAlpha
    DestBlendAlpha
    BlendOpAlpha
    RenderTargetWriteMask

    ?

    +
    + + ff476200 + D3D11_RENDER_TARGET_BLEND_DESC + D3D11_RENDER_TARGET_BLEND_DESC +
    + + +

    Enable (or disable) blending.

    +
    + + ff476200 + BOOL BlendEnable + BOOL BlendEnable +
    + + +

    This blend option specifies the operation to perform on the RGB value that the pixel shader outputs. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

    +
    + + ff476200 + D3D11_BLEND SrcBlend + D3D11_BLEND SrcBlend +
    + + +

    This blend option specifies the operation to perform on the current RGB value in the render target. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

    +
    + + ff476200 + D3D11_BLEND DestBlend + D3D11_BLEND DestBlend +
    + + +

    This blend operation defines how to combine the SrcBlend and DestBlend operations.

    +
    + + ff476200 + D3D11_BLEND_OP BlendOp + D3D11_BLEND_OP BlendOp +
    + + +

    This blend option specifies the operation to perform on the alpha value that the pixel shader outputs. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + ff476200 + D3D11_BLEND SrcBlendAlpha + D3D11_BLEND SrcBlendAlpha +
    + + +

    This blend option specifies the operation to perform on the current alpha value in the render target. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + ff476200 + D3D11_BLEND DestBlendAlpha + D3D11_BLEND DestBlendAlpha +
    + + +

    This blend operation defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + ff476200 + D3D11_BLEND_OP BlendOpAlpha + D3D11_BLEND_OP BlendOpAlpha +
    + + +

    A write mask.

    +
    + + ff476200 + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask +
    + + + Initializes a new instance of the struct. + + The is blend enabled. + The source blend. + The destination blend. + The blend operation. + The source alpha blend. + The destination alpha blend. + The alpha blend operation. + The render target write mask. + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Note??This structure is supported by the Direct3D 11.1 runtime, which is available on Windows?8 Consumer Preview and later operating systems.

    Describes the blend state for a render target.

    +
    + +

    You specify an array of structures in the RenderTarget member of the structure to describe the blend states for render targets; you can bind up to eight render targets to the output-merger stage at one time.

    For info about how blending is done, see the output-merger stage.

    Here are the default values for blend state.

    StateDefault Value
    BlendEnable
    LogicOpEnable
    SrcBlend
    DestBlend
    BlendOp
    SrcBlendAlpha
    DestBlendAlpha
    BlendOpAlpha
    LogicOp
    RenderTargetWriteMask

    ?

    +
    + + hh404492 + D3D11_RENDER_TARGET_BLEND_DESC1 + D3D11_RENDER_TARGET_BLEND_DESC1 +
    + + +

    Enable (or disable) blending.

    +
    + + hh404492 + BOOL BlendEnable + BOOL BlendEnable +
    + + +

    Enable (or disable) a logical operation.

    +
    + + hh404492 + BOOL LogicOpEnable + BOOL LogicOpEnable +
    + + +

    This blend option specifies the operation to perform on the RGB value that the pixel shader outputs. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

    +
    + + hh404492 + D3D11_BLEND SrcBlend + D3D11_BLEND SrcBlend +
    + + +

    This blend option specifies the operation to perform on the current RGB value in the render target. The BlendOp member defines how to combine the SrcBlend and DestBlend operations.

    +
    + + hh404492 + D3D11_BLEND DestBlend + D3D11_BLEND DestBlend +
    + + +

    This blend operation defines how to combine the SrcBlend and DestBlend operations.

    +
    + + hh404492 + D3D11_BLEND_OP BlendOp + D3D11_BLEND_OP BlendOp +
    + + +

    This blend option specifies the operation to perform on the alpha value that the pixel shader outputs. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + hh404492 + D3D11_BLEND SrcBlendAlpha + D3D11_BLEND SrcBlendAlpha +
    + + +

    This blend option specifies the operation to perform on the current alpha value in the render target. Blend options that end in _COLOR are not allowed. The BlendOpAlpha member defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + hh404492 + D3D11_BLEND DestBlendAlpha + D3D11_BLEND DestBlendAlpha +
    + + +

    This blend operation defines how to combine the SrcBlendAlpha and DestBlendAlpha operations.

    +
    + + hh404492 + D3D11_BLEND_OP BlendOpAlpha + D3D11_BLEND_OP BlendOpAlpha +
    + + +

    A -typed value that specifies the logical operation to configure for the render target.

    +
    + + hh404492 + D3D11_LOGIC_OP LogicOp + D3D11_LOGIC_OP LogicOp +
    + + +

    A write mask.

    +
    + + hh404492 + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask + D3D11_COLOR_WRITE_ENABLE RenderTargetWriteMask +
    + + +

    Specifies the subresources from a resource that are accessible using a render-target view.

    +
    + +

    A render-target-view description is passed into to create a render target.

    A render-target-view cannot use the following formats:

    • Any typeless format.
    • DXGI_FORMAT_R32G32B32 if the view will be used to bind a buffer (vertex, index, constant, or stream-output).

    If the format is set to , then the format of the resource that the view binds to the pipeline will be used.

    +
    + + ff476201 + D3D11_RENDER_TARGET_VIEW_DESC + D3D11_RENDER_TARGET_VIEW_DESC +
    + + +

    The data format (see ).

    +
    + + ff476201 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    The resource type (see ), which specifies how the render-target resource will be accessed.

    +
    + + ff476201 + D3D11_RTV_DIMENSION ViewDimension + D3D11_RTV_DIMENSION ViewDimension +
    + + +

    Specifies which buffer elements can be accessed (see ).

    +
    + + ff476201 + D3D11_BUFFER_RTV Buffer + D3D11_BUFFER_RTV Buffer +
    + + +

    Specifies the subresources in a 1D texture that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX1D_RTV Texture1D + D3D11_TEX1D_RTV Texture1D +
    + + +

    Specifies the subresources in a 1D texture array that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX1D_ARRAY_RTV Texture1DArray + D3D11_TEX1D_ARRAY_RTV Texture1DArray +
    + + +

    Specifies the subresources in a 2D texture that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX2D_RTV Texture2D + D3D11_TEX2D_RTV Texture2D +
    + + +

    Specifies the subresources in a 2D texture array that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX2D_ARRAY_RTV Texture2DArray + D3D11_TEX2D_ARRAY_RTV Texture2DArray +
    + + +

    Specifies a single subresource because a multisampled 2D texture only contains one subresource (see ).

    +
    + + ff476201 + D3D11_TEX2DMS_RTV Texture2DMS + D3D11_TEX2DMS_RTV Texture2DMS +
    + + +

    Specifies the subresources in a multisampled 2D texture array that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_RTV Texture2DMSArray +
    + + +

    Specifies subresources in a 3D texture that can be accessed (see ).

    +
    + + ff476201 + D3D11_TEX3D_RTV Texture3D + D3D11_TEX3D_RTV Texture3D +
    + + +

    Specifies the subresources from a an array of multisampled 2D textures to use in a render-target view.

    +
    + +

    This structure is one member of a render-target-view description (see ).

    +
    + + ff476234 + D3D11_TEX2DMS_ARRAY_RTV + D3D11_TEX2DMS_ARRAY_RTV +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476234 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476234 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresource from a 1D texture to use in a render-target view.

    +
    + +

    This structure is one member of a render-target-view description (see ).

    +
    + + ff476230 + D3D11_TEX1D_RTV + D3D11_TEX1D_RTV +
    + + +

    The index of the mipmap level to use mip slice.

    +
    + + ff476230 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Specifies the subresource from a multisampled 2D texture to use in a render-target view.

    +
    + +

    Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

    +
    + + ff476237 + D3D11_TEX2DMS_RTV + D3D11_TEX2DMS_RTV +
    + + +

    Integer of any value. See remarks.

    +
    + + ff476237 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
    + + +

    Specifies the subresources from a 3D texture to use in a render-target view.

    +
    + +

    This structure is one member of a render target view. See .

    +
    + + ff476247 + D3D11_TEX3D_RTV + D3D11_TEX3D_RTV +
    + + +

    The index of the mipmap level to use mip slice.

    +
    + + ff476247 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    First depth level to use.

    +
    + + ff476247 + unsigned int FirstWSlice + unsigned int FirstWSlice +
    + + +

    Number of depth levels to use in the render-target view, starting from FirstWSlice. A value of -1 indicates all of the slices along the w axis, starting from FirstWSlice.

    +
    + + ff476247 + unsigned int WSize + unsigned int WSize +
    + + +

    Specifies the subresources from an array of 2D textures to use in a render-target view.

    +
    + +

    This structure is one member of a render-target-view description (see ).

    +
    + + ff476240 + D3D11_TEX2D_ARRAY_RTV + D3D11_TEX2D_ARRAY_RTV +
    + + +

    The index of the mipmap level to use mip slice.

    +
    + + ff476240 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476240 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures in the array to use in the render target view, starting from FirstArraySlice.

    +
    + + ff476240 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresource from a 2D texture to use in a render-target view.

    +
    + +

    This structure is one member of a render-target-view description (see ).

    +
    + + ff476244 + D3D11_TEX2D_RTV + D3D11_TEX2D_RTV +
    + + +

    The index of the mipmap level to use mip slice.

    +
    + + ff476244 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Specifies the elements in a buffer resource to use in a render-target view.

    +
    + +

    A render-target view is a member of a render-target-view description (see ). Create a render-target view by calling .

    +
    + + ff476093 + D3D11_BUFFER_RTV + D3D11_BUFFER_RTV +
    + + +

    Number of bytes between the beginning of the buffer and the first element to access.

    +
    + + ff476093 + unsigned int FirstElement + unsigned int FirstElement +
    + + +

    The offset of the first element in the view to access, relative to element 0.

    +
    + + ff476093 + unsigned int ElementOffset + unsigned int ElementOffset +
    + + +

    The total number of elements in the view.

    +
    + + ff476093 + unsigned int NumElements + unsigned int NumElements +
    + + +

    The width of each element (in bytes). This can be determined from the format stored in the render-target-view description.

    +
    + + ff476093 + unsigned int ElementWidth + unsigned int ElementWidth +
    + + +

    Specifies the subresources from an array of 1D textures to use in a render-target view.

    +
    + +

    This structure is one member of a render-target-view description (see ).

    +
    + + ff476226 + D3D11_TEX1D_ARRAY_RTV + D3D11_TEX1D_ARRAY_RTV +
    + + +

    The index of the mipmap level to use mip slice.

    +
    + + ff476226 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476226 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476226 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Defines a 3D box.

    +
    + +

    The following diagram shows a 3D box, where the origin is the left, front, top corner.

    The values for right, bottom, and back are each one pixel past the end of the pixels that are included in the box region. That is, the values for left, top, and front are included in the box region while the values for right, bottom, and back are excluded from the box region. For example, for a box that is one pixel wide, (right - left) == 1; the box region includes the left pixel but not the right pixel.

    +
    + + ff476089 + D3D11_BOX + D3D11_BOX +
    + + +

    The x position of the left hand side of the box.

    +
    + + ff476089 + unsigned int left + unsigned int left +
    + + +

    The y position of the top of the box.

    +
    + + ff476089 + unsigned int top + unsigned int top +
    + + +

    The z position of the front of the box.

    +
    + + ff476089 + unsigned int front + unsigned int front +
    + + +

    The x position of the right hand side of the box.

    +
    + + ff476089 + unsigned int right + unsigned int right +
    + + +

    The y position of the bottom of the box.

    +
    + + ff476089 + unsigned int bottom + unsigned int bottom +
    + + +

    The z position of the back of the box.

    +
    + + ff476089 + unsigned int back + unsigned int back +
    + + + Initiailize a new instance of struct. + + Left coordinates (inclusive) + Top coordinates (inclusive) + Front coordinates (inclusive) + Right coordinates (exclusive) + Botoom coordinates (exclusive) + Back coordinates (exclusive) + +
      +
    • For a Width of 1 pixels, (right - left) = 1. If left = 0, right = Width.
    • +
    • For a Height of 1 pixels, (bottom - top) = 1. If top = 0, bottom = Height.
    • +
    • For a Depth of 1 pixels, (back - front) = 1. If front = 0, back = Depth.
    • +
    +
    +
    + + +

    Describes a sampler state.

    +
    + +

    These are the default values for sampler state.

    StateDefault Value
    FilterMIN_MAG_MIP_LINEAR
    AddressUClamp
    AddressVClamp
    AddressWClamp
    MinLOD-3.402823466e+38F (-FLT_MAX)
    MaxLOD3.402823466e+38F (FLT_MAX)
    MipMapLODBias0.0f
    MaxAnisotropy16
    ComparisonFuncNever
    BorderColorfloat4(0.0f,0.0f,0.0f,0.0f)
    TextureN/A

    ?

    +
    + + ff476207 + D3D11_SAMPLER_DESC + D3D11_SAMPLER_DESC +
    + + +

    Filtering method to use when sampling a texture (see ).

    +
    + + ff476207 + D3D11_FILTER Filter + D3D11_FILTER Filter +
    + + +

    Method to use for resolving a u texture coordinate that is outside the 0 to 1 range (see ).

    +
    + + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressU + D3D11_TEXTURE_ADDRESS_MODE AddressU +
    + + +

    Method to use for resolving a v texture coordinate that is outside the 0 to 1 range.

    +
    + + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressV + D3D11_TEXTURE_ADDRESS_MODE AddressV +
    + + +

    Method to use for resolving a w texture coordinate that is outside the 0 to 1 range.

    +
    + + ff476207 + D3D11_TEXTURE_ADDRESS_MODE AddressW + D3D11_TEXTURE_ADDRESS_MODE AddressW +
    + + +

    Offset from the calculated mipmap level. For example, if Direct3D calculates that a texture should be sampled at mipmap level 3 and MipLODBias is 2, then the texture will be sampled at mipmap level 5.

    +
    + + ff476207 + float MipLODBias + float MipLODBias +
    + + +

    Clamping value used if or is specified in Filter. Valid values are between 1 and 16.

    +
    + + ff476207 + unsigned int MaxAnisotropy + unsigned int MaxAnisotropy +
    + + +

    A function that compares sampled data against existing sampled data. The function options are listed in .

    +
    + + ff476207 + D3D11_COMPARISON_FUNC ComparisonFunc + D3D11_COMPARISON_FUNC ComparisonFunc +
    + + +

    Border color to use if is specified for AddressU, AddressV, or AddressW. Range must be between 0.0 and 1.0 inclusive.

    +
    + + ff476207 + SHARPDX_COLOR4 BorderColor + SHARPDX_COLOR4 BorderColor +
    + + +

    Lower end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed.

    +
    + + ff476207 + float MinLOD + float MinLOD +
    + + +

    Upper end of the mipmap range to clamp access to, where 0 is the largest and most detailed mipmap level and any level higher than that is less detailed. This value must be greater than or equal to MinLOD. To have no upper limit on LOD set this to a large value such as D3D11_FLOAT32_MAX.

    +
    + + ff476207 + float MaxLOD + float MaxLOD +
    + + + Returns default values for . + + + See MSDN documentation for default values. + + + + +

    Describes a shader-resource view.

    +
    + +

    A view is a format-specific way to look at the data in a resource. The view determines what data to look at, and how it is cast when read.

    When viewing a resource, the resource-view description must specify a typed format, that is compatible with the resource format. So that means that you cannot create a resource-view description using any format with _TYPELESS in the name. You can however view a typeless resource by specifying a typed format for the view. For example, a resource can be viewed with one of these typed formats: , , and , since these typed formats are compatible with the typeless resource.

    Create a shader-resource-view description by calling . To view a shader-resource-view description, call .

    +
    + + ff476211 + D3D11_SHADER_RESOURCE_VIEW_DESC + D3D11_SHADER_RESOURCE_VIEW_DESC +
    + + +

    A specifying the viewing format. See remarks.

    +
    + + ff476211 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    The resource type of the view. See D3D11_SRV_DIMENSION. This should be the same as the resource type of the underlying resource. This parameter also determines which _SRV to use in the union below.

    +
    + + ff476211 + D3D_SRV_DIMENSION ViewDimension + D3D_SRV_DIMENSION ViewDimension +
    + + +

    View the resource as a buffer using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_BUFFER_SRV Buffer + D3D11_BUFFER_SRV Buffer +
    + + +

    View the resource as a 1D texture using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX1D_SRV Texture1D + D3D11_TEX1D_SRV Texture1D +
    + + +

    View the resource as a 1D-texture array using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX1D_ARRAY_SRV Texture1DArray + D3D11_TEX1D_ARRAY_SRV Texture1DArray +
    + + +

    View the resource as a 2D-texture using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX2D_SRV Texture2D + D3D11_TEX2D_SRV Texture2D +
    + + +

    View the resource as a 2D-texture array using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX2D_ARRAY_SRV Texture2DArray + D3D11_TEX2D_ARRAY_SRV Texture2DArray +
    + + +

    View the resource as a 2D-multisampled texture using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX2DMS_SRV Texture2DMS + D3D11_TEX2DMS_SRV Texture2DMS +
    + + +

    View the resource as a 2D-multisampled-texture array using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray + D3D11_TEX2DMS_ARRAY_SRV Texture2DMSArray +
    + + +

    View the resource as a 3D texture using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEX3D_SRV Texture3D + D3D11_TEX3D_SRV Texture3D +
    + + +

    View the resource as a 3D-cube texture using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEXCUBE_SRV TextureCube + D3D11_TEXCUBE_SRV TextureCube +
    + + +

    View the resource as a 3D-cube-texture array using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray + D3D11_TEXCUBE_ARRAY_SRV TextureCubeArray +
    + + +

    View the resource as an extended buffer using information from a shader-resource view (see ).

    +
    + + ff476211 + D3D11_BUFFEREX_SRV BufferEx + D3D11_BUFFEREX_SRV BufferEx +
    + + +

    Specifies the elements in a buffer resource to use in a shader-resource view.

    +
    + +

    The structure is a member of the structure, which represents a shader-resource view description. You can create a shader-resource view by calling the method.

    +
    + + ff476094 + D3D11_BUFFER_SRV + D3D11_BUFFER_SRV +
    + + +

    Number of bytes between the beginning of the buffer and the first element to access.

    +
    + + ff476094 + unsigned int FirstElement + unsigned int FirstElement +
    + + +

    The offset of the first element in the view to access, relative to element 0.

    +
    + + ff476094 + unsigned int ElementOffset + unsigned int ElementOffset +
    + + +

    The total number of elements in the view.

    +
    + + ff476094 + unsigned int NumElements + unsigned int NumElements +
    + + +

    The width of each element (in bytes). This can be determined from the format stored in the shader-resource-view description.

    +
    + + ff476094 + unsigned int ElementWidth + unsigned int ElementWidth +
    + + +

    Describes a raw buffer resource.

    +
    + +

    This structure is used by to create a raw buffer.

    +
    + + ff476090 + D3D11_BUFFEREX_SRV + D3D11_BUFFEREX_SRV +
    + + +

    The index of the first element to be accessed by the view.

    +
    + + ff476090 + unsigned int FirstElement + unsigned int FirstElement +
    + + +

    The number of elements in the resource.

    +
    + + ff476090 + unsigned int NumElements + unsigned int NumElements +
    + + +

    Options for binding a raw buffer (see ).

    +
    + + ff476090 + D3D11_BUFFEREX_SRV_FLAG Flags + D3D11_BUFFEREX_SRV_FLAG Flags +
    + + +

    Specifies the subresource from a 1D texture to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    As an example, assuming MostDetailedMip = 6 and MipLevels = 2, the view will have access to 2 mipmap levels, 6 and 7, of the original texture for which creates the view. In this situation, MostDetailedMip is greater than the MipLevels in the view. However, MostDetailedMip is not greater than the MipLevels in the original resource.

    +
    + + ff476231 + D3D11_TEX1D_SRV + D3D11_TEX1D_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

    +
    + + ff476231 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks.

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476231 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Specifies the subresources from an array of 1D textures to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476227 + D3D11_TEX1D_ARRAY_SRV + D3D11_TEX1D_ARRAY_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture1D for which creates a view) -1.

    +
    + + ff476227 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476227 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476227 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures in the array.

    +
    + + ff476227 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresource from a 2D texture to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476245 + D3D11_TEX2D_SRV + D3D11_TEX2D_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

    +
    + + ff476245 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476245 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Specifies the subresources from an array of 2D textures to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476241 + D3D11_TEX2D_ARRAY_SRV + D3D11_TEX2D_ARRAY_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture2D for which creates a view) -1.

    +
    + + ff476241 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476241 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476241 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures in the array.

    +
    + + ff476241 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresources from a multisampled 2D texture to use in a shader-resource view.

    +
    + +

    Since a multisampled 2D texture contains a single subresource, there is actually nothing to specify in . Consequently, UnusedField_NothingToDefine is included so that this structure will compile in C.

    +
    + + ff476238 + D3D11_TEX2DMS_SRV + D3D11_TEX2DMS_SRV +
    + + +

    Integer of any value. See remarks.

    +
    + + ff476238 + unsigned int UnusedField_NothingToDefine + unsigned int UnusedField_NothingToDefine +
    + + +

    Specifies the subresources from an array of multisampled 2D textures to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476235 + D3D11_TEX2DMS_ARRAY_SRV + D3D11_TEX2DMS_ARRAY_SRV +
    + + +

    The index of the first texture to use in an array of textures.

    +
    + + ff476235 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    Number of textures to use.

    +
    + + ff476235 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Specifies the subresources from a 3D texture to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476248 + D3D11_TEX3D_SRV + D3D11_TEX3D_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original Texture3D for which creates a view) -1.

    +
    + + ff476248 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476248 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Specifies the subresource from a cube texture to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476251 + D3D11_TEXCUBE_SRV + D3D11_TEXCUBE_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

    +
    + + ff476251 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476251 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Specifies the subresources from an array of cube textures to use in a shader-resource view.

    +
    + +

    This structure is one member of a shader-resource-view description (see ).

    +
    + + ff476250 + D3D11_TEXCUBE_ARRAY_SRV + D3D11_TEXCUBE_ARRAY_SRV +
    + + +

    Index of the most detailed mipmap level to use; this number is between 0 and MipLevels (from the original TextureCube for which creates a view) -1.

    +
    + + ff476250 + unsigned int MostDetailedMip + unsigned int MostDetailedMip +
    + + +

    The maximum number of mipmap levels for the view of the texture. See the remarks in .

    Set to -1 to indicate all the mipmap levels from MostDetailedMip on down to least detailed.

    +
    + + ff476250 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Index of the first 2D texture to use.

    +
    + + ff476250 + unsigned int First2DArrayFace + unsigned int First2DArrayFace +
    + + +

    Number of cube textures in the array.

    +
    + + ff476250 + unsigned int NumCubes + unsigned int NumCubes +
    + + +

    Description of a vertex element in a vertex buffer in an output slot.

    +
    + + ff476216 + D3D11_SO_DECLARATION_ENTRY + D3D11_SO_DECLARATION_ENTRY +
    + + +

    Zero-based, stream number.

    +
    + + ff476216 + unsigned int Stream + unsigned int Stream +
    + + +

    Type of output element; possible values include: "POSITION", "NORMAL", or "TEXCOORD0". Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

    +
    + + ff476216 + const char* SemanticName + char SemanticName +
    + + +

    Output element's zero-based index. Should be used if, for example, you have more than one texture coordinate stored in each vertex.

    +
    + + ff476216 + unsigned int SemanticIndex + unsigned int SemanticIndex +
    + + +

    Which component of the entry to begin writing out to. Valid values are 0 to 3. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2.

    +
    + + ff476216 + unsigned char StartComponent + unsigned char StartComponent +
    + + +

    The number of components of the entry to write out to. Valid values are 1 to 4. For example, if you only wish to output to the y and z components of a position, then StartComponent should be 1 and ComponentCount should be 2. Note that if SemanticName is null then ComponentCount can be greater than 4 and the described entry will be a gap in the stream out where no data will be written.

    +
    + + ff476216 + unsigned char ComponentCount + unsigned char ComponentCount +
    + + +

    The associated stream output buffer that is bound to the pipeline (see ). The valid range for OutputSlot is 0 to 3.

    +
    + + ff476216 + unsigned char OutputSlot + unsigned char OutputSlot +
    + + +

    Query information about the amount of data streamed out to the stream-output buffers in between and .

    +
    + + ff476193 + D3D11_QUERY_DATA_SO_STATISTICS + D3D11_QUERY_DATA_SO_STATISTICS +
    + + + No documentation. + + + unsigned longlong NumPrimitivesWritten + unsigned longlong NumPrimitivesWritten + + + + No documentation. + + + unsigned longlong PrimitivesStorageNeeded + unsigned longlong PrimitivesStorageNeeded + + + +

    Describes a 1D texture.

    +
    + +

    This structure is used in a call to . A helpful derived structure CD3D11_TEXTURE1D_DESC is declared in D3D11.h, to help create a texture description.

    The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to D3D10_REQ_TEXTURE1D_U_DIMENSION (8192) when you create your 1D texture.

    +
    + + ff476252 + D3D11_TEXTURE1D_DESC + D3D11_TEXTURE1D_DESC +
    + + +

    Texture width (in texels). The range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476252 + unsigned int Width + unsigned int Width +
    + + +

    The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

    +
    + + ff476252 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Number of textures in the array. The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476252 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Texture format (see ).

    +
    + + ff476252 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

    +
    + + ff476252 + D3D11_USAGE Usage + D3D11_USAGE Usage +
    + + +

    Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR. For a 1D texture, the allowable values are: , and .

    +
    + + ff476252 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
    + + +

    Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

    +
    + + ff476252 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
    + + +

    Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

    +
    + + ff476252 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies a texture resource for a video processor output view.

    +
    + + hh447632 + D3D11_TEX2D_ARRAY_VPOV + D3D11_TEX2D_ARRAY_VPOV +
    + + +

    The zero-based index into the array of subtextures.

    +
    + + hh447632 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The index of the first texture to use.

    +
    + + hh447632 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    The number of textures in the array.

    +
    + + hh447632 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Describes a 2D texture.

    +
    + +

    This structure is used in a call to . A helpful derived structure CD3D11_TEXTURE2D_DESC is declared in D3D11.h, to help create a texture description.

    The device places some size restrictions (must be multiples of a minimum size) for a subsampled, block compressed, or bit-format resource.

    The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to D3D10_REQ_TEXTURE2D_U_OR_V_DIMENSION (8192) when you create your 2D texture.

    +
    + + ff476253 + D3D11_TEXTURE2D_DESC + D3D11_TEXTURE2D_DESC +
    + + +

    Texture width (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476253 + unsigned int Width + unsigned int Width +
    + + +

    Texture height (in texels). The range is from 1 to (16384). For a texture cube-map, the range is from 1 to (16384). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476253 + unsigned int Height + unsigned int Height +
    + + +

    The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

    +
    + + ff476253 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Number of textures in the texture array. The range is from 1 to (2048). For a texture cube-map, this value is a multiple of 6 (that is, 6 times the value in the NumCubes member of ), and the range is from 6 to . The range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476253 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Texture format (see ).

    +
    + + ff476253 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    Structure that specifies multisampling parameters for the texture. See .

    +
    + + ff476253 + DXGI_SAMPLE_DESC SampleDesc + DXGI_SAMPLE_DESC SampleDesc +
    + + +

    Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

    +
    + + ff476253 + D3D11_USAGE Usage + D3D11_USAGE Usage +
    + + +

    Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

    +
    + + ff476253 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
    + + +

    Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

    +
    + + ff476253 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
    + + +

    Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined by using a logical OR. For a texture cube-map, set the flag. Cube-map arrays (that is, ArraySize > 6) require feature level or higher.

    +
    + + ff476253 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the texture resource for a video decoder output view.

    +
    + + hh447633 + D3D11_TEX2D_VDOV + D3D11_TEX2D_VDOV +
    + + +

    The zero-based index of the texture.

    +
    + + hh447633 + unsigned int ArraySlice + unsigned int ArraySlice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies the texture resource for a video processor input view.

    +
    + + hh447634 + D3D11_TEX2D_VPIV + D3D11_TEX2D_VPIV +
    + + +

    The zero-based index into the array of subtextures.

    +
    + + hh447634 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The zero-based index of the texture.

    +
    + + hh447634 + unsigned int ArraySlice + unsigned int ArraySlice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Identifies a texture resource for a video processor output view.

    +
    + + hh447635 + D3D11_TEX2D_VPOV + D3D11_TEX2D_VPOV +
    + + +

    The zero-based index into the array of subtextures.

    +
    + + hh447635 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Describes a 3D texture.

    +
    + +

    This structure is used in a call to . A helpful derived structure CD3D11_TEXTURE3D_DESC is declared in D3D11.h, to help create a texture description.

    The device restricts the size of subsampled, block compressed, and bit format resources to be multiples of sizes specific to each format.

    The texture size range is determined by the feature level at which you create the device and not the Microsoft Direct3D interface version. For example, if you use Microsoft Direct3D?10 hardware at feature level 10 () and call to create an , you must constrain the maximum texture size to D3D10_REQ_TEXTURE3D_U_V_OR_W_DIMENSION (2048) when you create your 3D texture.

    +
    + + ff476254 + D3D11_TEXTURE3D_DESC + D3D11_TEXTURE3D_DESC +
    + + +

    Texture width (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476254 + unsigned int Width + unsigned int Width +
    + + +

    Texture height (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476254 + unsigned int Height + unsigned int Height +
    + + +

    Texture depth (in texels). The range is from 1 to (2048). However, the range is actually constrained by the feature level at which you create the rendering device. For more information about restrictions, see Remarks.

    +
    + + ff476254 + unsigned int Depth + unsigned int Depth +
    + + +

    The maximum number of mipmap levels in the texture. See the remarks in . Use 1 for a multisampled texture; or 0 to generate a full set of subtextures.

    +
    + + ff476254 + unsigned int MipLevels + unsigned int MipLevels +
    + + +

    Texture format (see ).

    +
    + + ff476254 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    Value that identifies how the texture is to be read from and written to. The most common value is ; see for all possible values.

    +
    + + ff476254 + D3D11_USAGE Usage + D3D11_USAGE Usage +
    + + +

    Flags (see ) for binding to pipeline stages. The flags can be combined by a logical OR.

    +
    + + ff476254 + D3D11_BIND_FLAG BindFlags + D3D11_BIND_FLAG BindFlags +
    + + +

    Flags (see ) to specify the types of CPU access allowed. Use 0 if CPU access is not required. These flags can be combined with a logical OR.

    +
    + + ff476254 + D3D11_CPU_ACCESS_FLAG CPUAccessFlags + D3D11_CPU_ACCESS_FLAG CPUAccessFlags +
    + + +

    Flags (see ) that identify other, less common resource options. Use 0 if none of these flags apply. These flags can be combined with a logical OR.

    +
    + + ff476254 + D3D11_RESOURCE_MISC_FLAG MiscFlags + D3D11_RESOURCE_MISC_FLAG MiscFlags +
    + + +

    Specifies the subresources from a resource that are accessible using an unordered-access view.

    +
    + +

    An unordered-access-view description is passed into to create a view.

    +
    + + ff476258 + D3D11_UNORDERED_ACCESS_VIEW_DESC + D3D11_UNORDERED_ACCESS_VIEW_DESC +
    + + +

    The data format (see ).

    +
    + + ff476258 + DXGI_FORMAT Format + DXGI_FORMAT Format +
    + + +

    The resource type (see ), which specifies how the resource will be accessed.

    +
    + + ff476258 + D3D11_UAV_DIMENSION ViewDimension + D3D11_UAV_DIMENSION ViewDimension +
    + + +

    Specifies which buffer elements can be accessed (see ).

    +
    + + ff476258 + D3D11_BUFFER_UAV Buffer + D3D11_BUFFER_UAV Buffer +
    + + +

    Specifies the subresources in a 1D texture that can be accessed (see ).

    +
    + + ff476258 + D3D11_TEX1D_UAV Texture1D + D3D11_TEX1D_UAV Texture1D +
    + + +

    Specifies the subresources in a 1D texture array that can be accessed (see ).

    +
    + + ff476258 + D3D11_TEX1D_ARRAY_UAV Texture1DArray + D3D11_TEX1D_ARRAY_UAV Texture1DArray +
    + + +

    Specifies the subresources in a 2D texture that can be accessed (see ).

    +
    + + ff476258 + D3D11_TEX2D_UAV Texture2D + D3D11_TEX2D_UAV Texture2D +
    + + +

    Specifies the subresources in a 2D texture array that can be accessed (see ).

    +
    + + ff476258 + D3D11_TEX2D_ARRAY_UAV Texture2DArray + D3D11_TEX2D_ARRAY_UAV Texture2DArray +
    + + +

    Specifies subresources in a 3D texture that can be accessed (see ).

    +
    + + ff476258 + D3D11_TEX3D_UAV Texture3D + D3D11_TEX3D_UAV Texture3D +
    + + +

    Describes a unordered-access 1D texture resource.

    +
    + +

    This structure is used by a .

    +
    + + ff476232 + D3D11_TEX1D_UAV + D3D11_TEX1D_UAV +
    + + +

    The mipmap slice index.

    +
    + + ff476232 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Unordered-access-view buffer options.

    +
    + + ff476096 + D3D11_BUFFER_UAV + D3D11_BUFFER_UAV +
    + + +

    Resource contains raw, unstructured data. Requires the UAV format to be .

    +
    + + ff476096 + unsigned int FirstElement + unsigned int FirstElement +
    + + +

    Allow data to be appended to the end of the buffer. flag must also be used for any view that will be used as a AppendStructuredBuffer or a ConsumeStructuredBuffer. Requires the UAV format to be .

    +
    + + ff476096 + unsigned int NumElements + unsigned int NumElements +
    + + +

    Adds a counter to the unordered-access-view buffer. can only be used on a UAV that is a RWStructuredBuffer and it enables the functionality needed for the IncrementCounter and DecrementCounter methods in HLSL. Requires the UAV format to be .

    +
    + + ff476096 + D3D11_BUFFER_UAV_FLAG Flags + D3D11_BUFFER_UAV_FLAG Flags +
    + + +

    Describes a unordered-access 2D texture resource.

    +
    + +

    This structure is used by a .

    +
    + + ff476246 + D3D11_TEX2D_UAV + D3D11_TEX2D_UAV +
    + + +

    The mipmap slice index.

    +
    + + ff476246 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    Describes a unordered-access 3D texture resource.

    +
    + +

    This structure is used by a .

    +
    + + ff476249 + D3D11_TEX3D_UAV + D3D11_TEX3D_UAV +
    + + +

    The mipmap slice index.

    +
    + + ff476249 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The zero-based index of the first depth slice to be accessed.

    +
    + + ff476249 + unsigned int FirstWSlice + unsigned int FirstWSlice +
    + + +

    The number of depth slices.

    +
    + + ff476249 + unsigned int WSize + unsigned int WSize +
    + + +

    Describes an array of unordered-access 2D texture resources.

    +
    + +

    This structure is used by a .

    +
    + + ff476242 + D3D11_TEX2D_ARRAY_UAV + D3D11_TEX2D_ARRAY_UAV +
    + + +

    The mipmap slice index.

    +
    + + ff476242 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The zero-based index of the first array slice to be accessed.

    +
    + + ff476242 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    The number of slices in the array.

    +
    + + ff476242 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    Describes an array of unordered-access 1D texture resources.

    +
    + +

    This structure is used by a .

    +
    + + ff476228 + D3D11_TEX1D_ARRAY_UAV + D3D11_TEX1D_ARRAY_UAV +
    + + +

    The mipmap slice index.

    +
    + + ff476228 + unsigned int MipSlice + unsigned int MipSlice +
    + + +

    The zero-based index of the first array slice to be accessed.

    +
    + + ff476228 + unsigned int FirstArraySlice + unsigned int FirstArraySlice +
    + + +

    The number of slices in the array.

    +
    + + ff476228 + unsigned int ArraySize + unsigned int ArraySize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies an RGB color value.

    +
    + +

    The RGB values have a nominal range of [0...1]. For an RGB format with n bits per channel, the value of each color component is calculated as follows:

    val = f * ((1 << n)-1)

    For example, for RGB-32 (8 bits per channel), val = BYTE(f * 255.0).

    +
    + + hh447638 + D3D11_VIDEO_COLOR + D3D11_VIDEO_COLOR +
    + + +

    The red value.

    +
    + + hh447638 + D3D11_VIDEO_COLOR_YCbCrA YCbCr + D3D11_VIDEO_COLOR_YCbCrA YCbCr +
    + + +

    The green value.

    +
    + + hh447638 + D3D11_VIDEO_COLOR_RGBA RGBA + D3D11_VIDEO_COLOR_RGBA RGBA +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies an RGB color value.

    +
    + +

    The RGB values have a nominal range of [0...1]. For an RGB format with n bits per channel, the value of each color component is calculated as follows:

    val = f * ((1 << n)-1)

    For example, for RGB-32 (8 bits per channel), val = BYTE(f * 255.0).

    +
    + + hh447638 + D3D11_VIDEO_COLOR_RGBA + D3D11_VIDEO_COLOR_RGBA +
    + + +

    The red value.

    +
    + + hh447638 + float R + float R +
    + + +

    The green value.

    +
    + + hh447638 + float G + float G +
    + + +

    The blue value.

    +
    + + hh447638 + float B + float B +
    + + +

    The alpha value. Values range from 0 (transparent) to 1 (opaque). +

    +
    + + hh447638 + float A + float A +
    + + + No documentation. + + + D3D11_VIDEO_COLOR_YCbCrA + D3D11_VIDEO_COLOR_YCbCrA + + + + No documentation. + + + float Y + float Y + + + + No documentation. + + + float Cb + float Cb + + + + No documentation. + + + float Cr + float Cr + + + + No documentation. + + + float A + float A + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes the content-protection capabilities of a graphics driver.

    +
    + + hh447640 + D3D11_VIDEO_CONTENT_PROTECTION_CAPS + D3D11_VIDEO_CONTENT_PROTECTION_CAPS +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447640 + unsigned int Caps + unsigned int Caps +
    + + +

    The number of cryptographic key-exchange types that are supported by the driver. To get the list of key-exchange types, call the method.

    +
    + + hh447640 + unsigned int KeyExchangeTypeCount + unsigned int KeyExchangeTypeCount +
    + + +

    The encyrption block size, in bytes. The size of data to be encrypted must be a multiple of this value.

    +
    + + hh447640 + unsigned int BlockAlignmentSize + unsigned int BlockAlignmentSize +
    + + +

    The total amount of memory, in bytes, that can be used to hold protected surfaces.

    +
    + + hh447640 + unsigned longlong ProtectedMemorySize + unsigned longlong ProtectedMemorySize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a compressed buffer for DirectX Video Acceleration (DXVA) decoding.

    +
    + + hh447641 + D3D11_VIDEO_DECODER_BUFFER_DESC + D3D11_VIDEO_DECODER_BUFFER_DESC +
    + + +

    The type of buffer, specified as a member of the enumeration.

    +
    + + hh447641 + D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType + D3D11_VIDEO_DECODER_BUFFER_TYPE BufferType +
    + + +

    Reserved.

    +
    + + hh447641 + unsigned int BufferIndex + unsigned int BufferIndex +
    + + +

    The offset of the relevant data from the beginning of the buffer, in bytes. This value must be zero. +

    +
    + + hh447641 + unsigned int DataOffset + unsigned int DataOffset +
    + + +

    The macroblock address of the first macroblock in the buffer. The macroblock address is given in raster scan order. +

    +
    + + hh447641 + unsigned int DataSize + unsigned int DataSize +
    + + +

    The number of macroblocks of data in the buffer. This count includes skipped macroblocks.

    +
    + + hh447641 + unsigned int FirstMBaddress + unsigned int FirstMBaddress +
    + + +

    Reserved. Set to zero.

    +
    + + hh447641 + unsigned int NumMBsInBuffer + unsigned int NumMBsInBuffer +
    + + +

    Reserved. Set to zero.

    +
    + + hh447641 + unsigned int Width + unsigned int Width +
    + + +

    Reserved. Set to zero.

    +
    + + hh447641 + unsigned int Height + unsigned int Height +
    + + +

    Reserved. Set to zero.

    +
    + + hh447641 + unsigned int Stride + unsigned int Stride +
    + + +

    A reference to a buffer that contains an initialization vector (IV) for encrypted data. If the decode buffer does not contain encrypted data, set this member to null.

    +
    + + hh447641 + unsigned int ReservedBits + unsigned int ReservedBits +
    + + +

    The size of the buffer specified in the pIV parameter. If pIV is null, set this member to zero.

    +
    + + hh447641 + void* pIV + void pIV +
    + + +

    If TRUE, the video surfaces are partially encrypted.

    +
    + + hh447641 + unsigned int IVSize + unsigned int IVSize +
    + + +

    A structure that specifies which bytes of the surface are encrypted.

    +
    + + hh447641 + BOOL PartialEncryption + BOOL PartialEncryption +
    + + + No documentation. + + + D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo + D3D11_ENCRYPTED_BLOCK_INFO EncryptedBlockInfo + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes the configuration of a Microsoft Direct3D?11 decoder device for DirectX Video Acceleration (DXVA).

    +
    + + hh447643 + D3D11_VIDEO_DECODER_CONFIG + D3D11_VIDEO_DECODER_CONFIG +
    + + +

    Defines the encryption protocol type for bit-stream data buffers. If no encryption is applied, the value is DXVA_NoEncrypt. If ConfigBitstreamRaw is 0, the value must be DXVA_NoEncrypt.

    +
    + + hh447643 + GUID guidConfigBitstreamEncryption + GUID guidConfigBitstreamEncryption +
    + + +

    Defines the encryption protocol type for macroblock control data buffers. If no encryption is applied, the value is DXVA_NoEncrypt. If ConfigBitstreamRaw is 1, the value must be DXVA_NoEncrypt.

    +
    + + hh447643 + GUID guidConfigMBcontrolEncryption + GUID guidConfigMBcontrolEncryption +
    + + +

    Defines the encryption protocol type for residual difference decoding data buffers (buffers containing spatial-domain data or sets of transform-domain coefficients for accelerator-based inverse discrete cosine transform [IDCT]). If no encryption is applied, the value is DXVA_NoEncrypt. If ConfigBitstreamRaw is 1, the value must be DXVA_NoEncrypt.

    +
    + + hh447643 + GUID guidConfigResidDiffEncryption + GUID guidConfigResidDiffEncryption +
    + + +

    Indicates whether the host-decoder sends raw bit-stream data. If the value is 1, the data for the pictures will be sent in bit-stream buffers as raw bit-stream content. If the value is 0, picture data will be sent using macroblock control command buffers. If either ConfigResidDiffHost or ConfigResidDiffAccelerator is 1, the value must be 0.

    +
    + + hh447643 + unsigned int ConfigBitstreamRaw + unsigned int ConfigBitstreamRaw +
    + + +

    Specifies whether macroblock control commands are in raster scan order or in arbitrary order. If the value is 1, the macroblock control commands within each macroblock control command buffer are in raster-scan order. If the value is 0, the order is arbitrary. For some types of bit streams, forcing raster order either greatly increases the number of required macroblock control buffers that must be processed, or requires host reordering of the control information. Therefore, supporting arbitrary order can be more efficient.

    +
    + + hh447643 + unsigned int ConfigMBcontrolRasterOrder + unsigned int ConfigMBcontrolRasterOrder +
    + + +

    Contains the host residual difference configuration. If the value is 1, some residual difference decoding data may be sent as blocks in the spatial domain from the host. If the value is 0, spatial domain data will not be sent.

    +
    + + hh447643 + unsigned int ConfigResidDiffHost + unsigned int ConfigResidDiffHost +
    + + +

    Indicates the word size used to represent residual difference spatial-domain blocks for predicted (non-intra) pictures when using host-based residual difference decoding.

    If ConfigResidDiffHost is 1 and ConfigSpatialResid8 is 1, the host will send residual difference spatial-domain blocks for non-intra macroblocks using 8-bit signed samples and for intra macroblocks in predicted (non-intra) pictures in a format that depends on the value of ConfigIntraResidUnsigned:

    • If ConfigIntraResidUnsigned is 0, spatial-domain blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1).
    • If ConfigIntraResidUnsigned is 1, spatial-domain blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0.

    If ConfigResidDiffHost is 1 and ConfigSpatialResid8 is 0, the host will send residual difference spatial-domain blocks of data for non-intra macroblocks using 16-bit signed samples and for intra macroblocks in predicted (non-intra) pictures in a format that depends on the value of ConfigIntraResidUnsigned:

    • If ConfigIntraResidUnsigned is 0, spatial domain blocks for intra macroblocks are sent as 16-bit signed integer values relative to a constant reference value of 2^(BPP?1).
    • If ConfigIntraResidUnsigned is 1, spatial domain blocks for intra macroblocks are sent as 16-bit unsigned integer values relative to a constant reference value of 0.

    If ConfigResidDiffHost is 0, ConfigSpatialResid8 must be 0.

    For intra pictures, spatial-domain blocks must be sent using 8-bit samples if bits-per-pixel (BPP) is 8, and using 16-bit samples if BPP > 8. If ConfigIntraResidUnsigned is 0, these samples are sent as signed integer values relative to a constant reference value of 2^(BPP?1), and if ConfigIntraResidUnsigned is 1, these samples are sent as unsigned integer values relative to a constant reference value of 0.

    +
    + + hh447643 + unsigned int ConfigSpatialResid8 + unsigned int ConfigSpatialResid8 +
    + + +

    If the value is 1, 8-bit difference overflow blocks are subtracted rather than added. The value must be 0 unless ConfigSpatialResid8 is 1.

    The ability to subtract differences rather than add them enables 8-bit difference decoding to be fully compliant with the full ?255 range of values required in video decoder specifications, because +255 cannot be represented as the addition of two signed 8-bit numbers, but any number in the range ?255 can be represented as the difference between two signed 8-bit numbers (+255 = +127 minus ?128).

    +
    + + hh447643 + unsigned int ConfigResid8Subtraction + unsigned int ConfigResid8Subtraction +
    + + +

    If the value is 1, spatial-domain blocks for intra macroblocks must be clipped to an 8-bit range on the host and spatial-domain blocks for non-intra macroblocks must be clipped to a 9-bit range on the host. If the value is 0, no such clipping is necessary by the host.

    The value must be 0 unless ConfigSpatialResid8 is 0 and ConfigResidDiffHost is 1.

    +
    + + hh447643 + unsigned int ConfigSpatialHost8or9Clipping + unsigned int ConfigSpatialHost8or9Clipping +
    + + +

    If the value is 1, any spatial-domain residual difference data must be sent in a chrominance-interleaved form matching the YUV format chrominance interleaving pattern. The value must be 0 unless ConfigResidDiffHost is 1 and the YUV format is NV12 or NV21.

    +
    + + hh447643 + unsigned int ConfigSpatialResidInterleaved + unsigned int ConfigSpatialResidInterleaved +
    + + +

    Indicates the method of representation of spatial-domain blocks of residual difference data for intra blocks when using host-based difference decoding.

    If ConfigResidDiffHost is 1 and ConfigIntraResidUnsigned is 0, spatial-domain residual difference data blocks for intra macroblocks must be sent as follows:

    • In a non-intra picture, if ConfigSpatialResid8 is 0, the spatial-domain residual difference data blocks for intra macroblocks are sent as 16-bit signed integer values relative to a constant reference value of 2^(BPP?1).
    • In a non-intra picture, if ConfigSpatialResid8 is 1, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1).
    • In an intra picture, if BPP is 8, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit signed integer values relative to a constant reference value of 2^(BPP?1), regardless of the value of ConfigSpatialResid8.

    If ConfigResidDiffHost is 1 and ConfigIntraResidUnsigned is 1, spatial-domain residual difference data blocks for intra macroblocks must be sent as follows:

    • In a non-intra picture, if ConfigSpatialResid8 is 0, the spatial-domain residual difference data blocks for intra macroblocks must be sent as 16-bit unsigned integer values relative to a constant reference value of 0.
    • In a non-intra picture, if ConfigSpatialResid8 is 1, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0.
    • In an intra picture, if BPP is 8, the spatial-domain residual difference data blocks for intra macroblocks are sent as 8-bit unsigned integer values relative to a constant reference value of 0, regardless of the value of ConfigSpatialResid8.

    The value of the member must be 0 unless ConfigResidDiffHost is 1.

    +
    + + hh447643 + unsigned int ConfigIntraResidUnsigned + unsigned int ConfigIntraResidUnsigned +
    + + +

    If the value is 1, transform-domain blocks of coefficient data may be sent from the host for accelerator-based IDCT. If the value is 0, accelerator-based IDCT will not be used. If both ConfigResidDiffHost and ConfigResidDiffAccelerator are 1, this indicates that some residual difference decoding will be done on the host and some on the accelerator, as indicated by macroblock-level control commands.

    The value must be 0 if ConfigBitstreamRaw is 1.

    +
    + + hh447643 + unsigned int ConfigResidDiffAccelerator + unsigned int ConfigResidDiffAccelerator +
    + + +

    If the value is 1, the inverse scan for transform-domain block processing will be performed on the host, and absolute indices will be sent instead for any transform coefficients. If the value is 0, the inverse scan will be performed on the accelerator.

    The value must be 0 if ConfigResidDiffAccelerator is 0 or if Config4GroupedCoefs is 1.

    +
    + + hh447643 + unsigned int ConfigHostInverseScan + unsigned int ConfigHostInverseScan +
    + + +

    If the value is 1, the IDCT specified in Annex W of ITU-T Recommendation H.263 is used. If the value is 0, any compliant IDCT can be used for off-host IDCT.

    The H.263 annex does not comply with the IDCT requirements of MPEG-2 corrigendum 2, so the value must not be 1 for use with MPEG-2 video.

    The value must be 0 if ConfigResidDiffAccelerator is 0, indicating purely host-based residual difference decoding.

    +
    + + hh447643 + unsigned int ConfigSpecificIDCT + unsigned int ConfigSpecificIDCT +
    + + +

    If the value is 1, transform coefficients for off-host IDCT will be sent using the DXVA_TCoef4Group structure. If the value is 0, the DXVA_TCoefSingle structure is used. The value must be 0 if ConfigResidDiffAccelerator is 0 or if ConfigHostInverseScan is 1.

    +
    + + hh447643 + unsigned int Config4GroupedCoefs + unsigned int Config4GroupedCoefs +
    + + +

    Specifies how many frames the decoder device processes at any one time.

    +
    + + hh447643 + unsigned short ConfigMinRenderTargetBuffCount + unsigned short ConfigMinRenderTargetBuffCount +
    + + +

    Contains decoder-specific configuration information.

    +
    + + hh447643 + unsigned short ConfigDecoderSpecific + unsigned short ConfigDecoderSpecific +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a video stream for a Microsoft Direct3D?11 video decoder or video processor.

    +
    + + hh447644 + D3D11_VIDEO_DECODER_DESC + D3D11_VIDEO_DECODER_DESC +
    + + +

    The DirectX Video Acceleration (DXVA) decoding profile. To get the list of profiles supported by the device, call the method.

    +
    + + hh447644 + GUID Guid + GUID Guid +
    + + +

    The width of the video frame, in pixels.

    +
    + + hh447644 + unsigned int SampleWidth + unsigned int SampleWidth +
    + + +

    The height of the video frame, in pixels.

    +
    + + hh447644 + unsigned int SampleHeight + unsigned int SampleHeight +
    + + +

    The output surface format, specified as a value.

    +
    + + hh447644 + DXGI_FORMAT OutputFormat + DXGI_FORMAT OutputFormat +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Contains driver-specific data for the method.

    +
    + +

    The exact meaning of each structure member depends on the value of Function.

    +
    + + hh447645 + D3D11_VIDEO_DECODER_EXTENSION + D3D11_VIDEO_DECODER_EXTENSION +
    + + + No documentation. + + + unsigned int Function + unsigned int Function + + + + No documentation. + + + void* pPrivateInputData + void pPrivateInputData + + + + No documentation. + + + unsigned int PrivateInputDataSize + unsigned int PrivateInputDataSize + + + + No documentation. + + + void* pPrivateOutputData + void pPrivateOutputData + + + + No documentation. + + + unsigned int PrivateOutputDataSize + unsigned int PrivateOutputDataSize + + + + No documentation. + + + unsigned int ResourceCount + unsigned int ResourceCount + + + + No documentation. + + + ID3D11Resource** ppResourceList + ID3D11Resource ppResourceList + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a video decoder output view.

    +
    + + hh447646 + D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC + D3D11_VIDEO_DECODER_OUTPUT_VIEW_DESC +
    + + +

    The DirectX Video Acceleration (DXVA) decoding profile. To get the list of profiles supported by the device, call the method.

    +
    + + hh447646 + GUID DecodeProfile + GUID DecodeProfile +
    + + +

    The resource type of the view, specified as a member of the enumeration.

    +
    + + hh447646 + D3D11_VDOV_DIMENSION ViewDimension + D3D11_VDOV_DIMENSION ViewDimension +
    + + +

    A structure that identifies the texture resource for the output view.

    +
    + + hh447646 + D3D11_TEX2D_VDOV Texture2D + D3D11_TEX2D_VDOV Texture2D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes the capabilities of a Microsoft Direct3D?11 video processor.

    +
    + +

    The video processor stores state information for each input stream. These states persist between blits. With each blit, the application selects which streams to enable or disable. Disabling a stream does not affect the state information for that stream.

    The MaxStreamStates member gives the maximum number of stream states that can be saved. The MaxInputStreams member gives the maximum number of streams that can be enabled during a blit. These two values can differ.

    +
    + + hh447650 + D3D11_VIDEO_PROCESSOR_CAPS + D3D11_VIDEO_PROCESSOR_CAPS +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447650 + unsigned int DeviceCaps + unsigned int DeviceCaps +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447650 + unsigned int FeatureCaps + unsigned int FeatureCaps +
    + + +

    A bitwise OR of zero or more flags from the D3D11_VIDEO_PROCESSPR_FILTER_CAPS enumeration.

    +
    + + hh447650 + unsigned int FilterCaps + unsigned int FilterCaps +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447650 + unsigned int InputFormatCaps + unsigned int InputFormatCaps +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447650 + unsigned int AutoStreamCaps + unsigned int AutoStreamCaps +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447650 + unsigned int StereoCaps + unsigned int StereoCaps +
    + + +

    The number of frame-rate conversion capabilities. To enumerate the frame-rate conversion capabilities, call the method.

    +
    + + hh447650 + unsigned int RateConversionCapsCount + unsigned int RateConversionCapsCount +
    + + +

    The maximum number of input streams that can be enabled at the same time.

    +
    + + hh447650 + unsigned int MaxInputStreams + unsigned int MaxInputStreams +
    + + +

    The maximum number of input streams for which the device can store state data.

    +
    + + hh447650 + unsigned int MaxStreamStates + unsigned int MaxStreamStates +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the color space for video processing.

    +
    + +

    The RGB_Range member applies to RGB output, while the YCbCr_Matrix and YCbCr_xvYCC members apply to YCbCr output. If the driver performs color-space conversion on the background color, it uses the values that apply to both color spaces.

    If the driver supports extended YCbCr (xvYCC), it returns the capabilities flag in the method. Otherwise, the driver ignores the value of YCbCr_xvYCC and treats all YCbCr output as conventional YCbCr.

    If extended YCbCr is supported, it can be used with either transfer matrix. Extended YCbCr does not change the black point or white point?the black point is still 16 and the white point is still 235. However, extended YCbCr explicitly allows blacker-than-black values in the range 1?15, and whiter-than-white values in the range 236?254. When extended YCbCr is used, the driver should not clip the luma values to the nominal 16?235 range.

    +
    + + hh447651 + D3D11_VIDEO_PROCESSOR_COLOR_SPACE + D3D11_VIDEO_PROCESSOR_COLOR_SPACE +
    + + +

    Specifies whether the output is intended for playback or video processing (such as editing or authoring). The device can optimize the processing based on the type. The default state value is 0 (playback).

    ValueMeaning
    0

    Playback

    1

    Video processing

    ?

    +
    + + hh447651 + unsigned int Usage + unsigned int Usage +
    + + +

    Specifies the RGB color range. The default state value is 0 (full range).

    ValueMeaning
    0

    Full range (0-255)

    1

    Limited range (16-235)

    ?

    +
    + + hh447651 + unsigned int RGB_Range + unsigned int RGB_Range +
    + + +

    Specifies the YCbCr transfer matrix. The default state value is 0 (BT.601).

    ValueMeaning
    0

    ITU-R BT.601

    1

    ITU-R BT.709

    ?

    +
    + + hh447651 + unsigned int YCbCr_Matrix + unsigned int YCbCr_Matrix +
    + + +

    Specifies whether the output uses conventional YCbCr or extended YCbCr (xvYCC). The default state value is zero (conventional YCbCr).

    ValueMeaning
    0

    Conventional YCbCr

    1

    Extended YCbCr (xvYCC)

    ?

    +
    + + hh447651 + unsigned int YCbCr_xvYCC + unsigned int YCbCr_xvYCC +
    + + +

    Reserved. Set to zero.

    +
    + + hh447651 + unsigned int Reserved + unsigned int Reserved +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a video stream for a video processor.

    +
    + + hh447652 + D3D11_VIDEO_PROCESSOR_CONTENT_DESC + D3D11_VIDEO_PROCESSOR_CONTENT_DESC +
    + + +

    A member of the enumeration that describes how the video stream is interlaced.

    +
    + + hh447652 + D3D11_VIDEO_FRAME_FORMAT InputFrameFormat + D3D11_VIDEO_FRAME_FORMAT InputFrameFormat +
    + + +

    The frame rate of the input video stream, specified as a structure.

    +
    + + hh447652 + DXGI_RATIONAL InputFrameRate + DXGI_RATIONAL InputFrameRate +
    + + +

    The width of the input frames, in pixels.

    +
    + + hh447652 + unsigned int InputWidth + unsigned int InputWidth +
    + + +

    The height of the input frames, in pixels.

    +
    + + hh447652 + unsigned int InputHeight + unsigned int InputHeight +
    + + +

    The frame rate of the output video stream, specified as a structure.

    +
    + + hh447652 + DXGI_RATIONAL OutputFrameRate + DXGI_RATIONAL OutputFrameRate +
    + + +

    The width of the output frames, in pixels.

    +
    + + hh447652 + unsigned int OutputWidth + unsigned int OutputWidth +
    + + +

    The height of the output frames, in pixels.

    +
    + + hh447652 + unsigned int OutputHeight + unsigned int OutputHeight +
    + + +

    A member of the enumeration that describes how the video processor will be used. The value indicates the desired trade-off between speed and video quality. The driver uses this flag as a hint when it creates the video processor.

    +
    + + hh447652 + D3D11_VIDEO_USAGE Usage + D3D11_VIDEO_USAGE Usage +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies a custom rate for frame-rate conversion or inverse telecine (IVTC).

    +
    + +

    The CustomRate member gives the rate conversion factor, while the remaining members define the pattern of input and output samples.

    +
    + + hh447653 + D3D11_VIDEO_PROCESSOR_CUSTOM_RATE + D3D11_VIDEO_PROCESSOR_CUSTOM_RATE +
    + + +

    The ratio of the output frame rate to the input frame rate, expressed as a structure that holds a rational number.

    +
    + + hh447653 + DXGI_RATIONAL CustomRate + DXGI_RATIONAL CustomRate +
    + + +

    The number of output frames that will be generated for every N input samples, where N = InputFramesOrFields.

    +
    + + hh447653 + unsigned int OutputFrames + unsigned int OutputFrames +
    + + +

    If TRUE, the input stream must be interlaced. Otherwise, the input stream must be progressive.

    +
    + + hh447653 + BOOL InputInterlaced + BOOL InputInterlaced +
    + + +

    The number of input fields or frames for every N output frames that will be generated, where N = OutputFrames.

    +
    + + hh447653 + unsigned int InputFramesOrFields + unsigned int InputFramesOrFields +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Defines the range of supported values for an image filter.

    +
    + +

    The multiplier enables the filter range to have a fractional step value.

    For example, a hue filter might have an actual range of [?180.0 ... +180.0] with a step size of 0.25. The device would report the following range and multiplier:

    • Minimum: ?720
    • Maximum: +720
    • Multiplier: 0.25

    In this case, a filter value of 2 would be interpreted by the device as 0.50 (or 2 ? 0.25).

    The device should use a multiplier that can be represented exactly as a base-2 fraction.

    +
    + + hh447657 + D3D11_VIDEO_PROCESSOR_FILTER_RANGE + D3D11_VIDEO_PROCESSOR_FILTER_RANGE +
    + + +

    The minimum value of the filter.

    +
    + + hh447657 + int Minimum + int Minimum +
    + + +

    The maximum value of the filter.

    +
    + + hh447657 + int Maximum + int Maximum +
    + + +

    The default value of the filter.

    +
    + + hh447657 + int Default + int Default +
    + + +

    A multiplier. Use the following formula to translate the filter setting into the actual filter value: Actual Value = Set Value???Multiplier.

    +
    + + hh447657 + float Multiplier + float Multiplier +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a video processor input view.

    +
    + + hh447660 + D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC + D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC +
    + + +

    The surface format. If zero, the driver uses the DXGI format that was used to create the resource. If you are using feature level 9, the value must be zero.

    +
    + + hh447660 + unsigned int FourCC + unsigned int FourCC +
    + + +

    The resource type of the view, specified as a member of the enumeration.

    +
    + + hh447660 + D3D11_VPIV_DIMENSION ViewDimension + D3D11_VPIV_DIMENSION ViewDimension +
    + + +

    A structure that identifies the texture resource.

    +
    + + hh447660 + D3D11_TEX2D_VPIV Texture2D + D3D11_TEX2D_VPIV Texture2D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Describes a video processor output view.

    +
    + + hh447663 + D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC + D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC +
    + + +

    The resource type of the view, specified as a member of the enumeration.

    +
    + + hh447663 + D3D11_VPOV_DIMENSION ViewDimension + D3D11_VPOV_DIMENSION ViewDimension +
    + + +

    A structure that identifies the texture resource for the output view.

    Use this member of the union when ViewDimension equals .

    +
    + + hh447663 + D3D11_TEX2D_VPOV Texture2D + D3D11_TEX2D_VPOV Texture2D +
    + + +

    A structure that identifies the texture array for the output view.

    Use this member of the union when ViewDimension equals .

    +
    + + hh447663 + D3D11_TEX2D_ARRAY_VPOV Texture2DArray + D3D11_TEX2D_ARRAY_VPOV Texture2DArray +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Defines a group of video processor capabilities that are associated with frame-rate conversion, including deinterlacing and inverse telecine.

    +
    + + hh447665 + D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS + D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS +
    + + +

    The number of past reference frames required to perform the optimal video processing.

    +
    + + hh447665 + unsigned int PastFrames + unsigned int PastFrames +
    + + +

    The number of future reference frames required to perform the optimal video processing.

    +
    + + hh447665 + unsigned int FutureFrames + unsigned int FutureFrames +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447665 + unsigned int ProcessorCaps + unsigned int ProcessorCaps +
    + + +

    A bitwise OR of zero or more flags from the enumeration.

    +
    + + hh447665 + unsigned int ITelecineCaps + unsigned int ITelecineCaps +
    + + +

    The number of custom frame rates that the driver supports. To get the list of custom frame rates, call the method.

    +
    + + hh447665 + unsigned int CustomRateCount + unsigned int CustomRateCount +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Contains stream-level data for the method.

    +
    + +

    If the stereo 3D format is , the ppPastSurfaces, pInputSurface, and ppFutureSurfaces members contain the left view.

    +
    + + hh447670 + D3D11_VIDEO_PROCESSOR_STREAM + D3D11_VIDEO_PROCESSOR_STREAM +
    + + + No documentation. + + + BOOL Enable + BOOL Enable + + + + No documentation. + + + unsigned int OutputIndex + unsigned int OutputIndex + + + + No documentation. + + + unsigned int InputFrameOrField + unsigned int InputFrameOrField + + + + No documentation. + + + unsigned int PastFrames + unsigned int PastFrames + + + + No documentation. + + + unsigned int FutureFrames + unsigned int FutureFrames + + + + No documentation. + + + ID3D11VideoProcessorInputView** ppPastSurfaces + ID3D11VideoProcessorInputView ppPastSurfaces + + + + No documentation. + + + ID3D11VideoProcessorInputView* pInputSurface + ID3D11VideoProcessorInputView pInputSurface + + + + No documentation. + + + ID3D11VideoProcessorInputView** ppFutureSurfaces + ID3D11VideoProcessorInputView ppFutureSurfaces + + + + No documentation. + + + ID3D11VideoProcessorInputView** ppPastSurfacesRight + ID3D11VideoProcessorInputView ppPastSurfacesRight + + + + No documentation. + + + ID3D11VideoProcessorInputView* pInputSurfaceRight + ID3D11VideoProcessorInputView pInputSurfaceRight + + + + No documentation. + + + ID3D11VideoProcessorInputView** ppFutureSurfacesRight + ID3D11VideoProcessorInputView ppFutureSurfacesRight + + + + The default value for load options. + + + + + Gets an ImageLoadInformation that is setup with all default values (). + + + + + Internal class used to initialize this assembly. + + + + + Initializes this assembly. + + + This method is called when the assembly is loaded. + + + + + Properties defining the way a buffer is bound to the pipeline as a target for stream output operations. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + + + + Properties defining the way a buffer (containing vertex data) is bound + to the pipeline for rendering. + + + + + Initializes a new instance of the struct. + + The buffer being bound. + The stride between vertex element (in bytes). + The offset to the first vertex (in bytes). + + + + Gets or sets the buffer being bound. + + + + + Gets or sets the stride between vertex elements in the buffer (in bytes). + + + + + Gets or sets the offset from the start of the buffer of the first vertex to use (in bytes). + + + + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.MediaFoundation.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.MediaFoundation.dll new file mode 100644 index 0000000000000000000000000000000000000000..5e8b0a3a03b97ec3dd236bba8f8c5797e21879e5 GIT binary patch literal 111616 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

    J=Hi;bVL9% zHL@XACOe2{W;tO%;b65%D~h?rR1*4BD6P`dq)e9geMF%$HIDJ*nHmBAf$DXn+F-wV zq}nmccBI}hI+v;U1)NN#=I7DCUM<^!(@LzC15$~%1=JLi{%ozz+Nz!g#Ip0{_-@?b z=!PGrh*Z2$dBD+NTY1&g&|QZ%yK6CrqB)9Y02c4=vi{QP9Tm0grFz%0Y-Z^-?FAjZ z7}*yUb-uY7H|$KeW!Rc@=<5*3RUJy;S@E!PZq@Zj6Q^_pLW|`rd+Wf2o(z9pdoC>I zY5n8A=l4MRdqS*oFEgBSwOl=bSg#GhUyI+hc2(n57Y;Pdk;C5ADIja^nHzEC&Y^l_ zB^5=qy1#;flW-A4tasa7a;`*yGjE&-k4Z~3*{;>9y)O%u?=Dsj?k{)S4ffEcw3C&+ zXJ?Ch?UiJU!!4!HWm<>ZP^$eV9`%sf4V3XS!-k@t=N5*xZOkc@Lpgd&ljYc=$Hlm{ z7Ypy|A}eb;G8SDb%oerc-g`S083MzzQ0(ex7emslR}qB#^=)Ur-P>_NU#n)Ttz(&+ z^}T}z&vl3A5Ii$^CSh=sq;yk@=U$nD%shU|*C-NyoP3 zW;m&NNyig7nL`#~BKsZoIGOEjCd==O%WqxTvPuP)87nm<_uQcNezUo?c%{6kEq$xC zwYI*pe6_q{cg1k9-Q{6Ly9GMVufB_(AtP38*ZqMwZ5)Q}1n*MYtFbn&w4vDCtX7)o zXu`c8M6N{}61hg-D8|ZSPyLG z*Ao*F>F}%A;H)v=+B812J#|HI(dhR9vX$ur*%?kAu9Td5?9acbf!)>%0unqITM`4+t*E<`|0GNNWu_3rjo3hn?Fy^X!qxq zZ$7tZhY+slKuudOPath+DO%yOy{|;pMrQ!@z<~k;?e4Z)yr9r5Nbg2l4a(7pilh>Bi@s{L zfb*EXfsu(QbUbHKuOX0I0bbzM^0+h63kmTZ=vuy$r1Y7)xy3Z>-X1T}Hd*CwIf=NOKhniE=U`rE&* z^7L^(YOmFfR7g3>sj0qF zQo3$v5xp4j0bB2V1()unI{kdTd;8jcwXfKA!)>%_w$2nJ=Me`Kc$g=l zaYf}E3}LLFlp_LEk&8}O?ji;1<#ujUlb%XHVL})Y1dpmAr~IHPTgyof1(bd$oYGXN z?B#HoK8VHBTYp=M@84@4$m7xx@4S#Q`?J@qOoajlY5}0wW)%qr5%MmNT-)o3gh6;7 zn>O-@`nudw?4a-POtr2q-q3qM^iAm4+zo5g>3wvs^K$x@jcWCF*oKRA=~V+tVM9m} zp@B)8v4SUH$tHSot<8%h>o5TF*_)wd)pp)PjpRTMXXu&CbbZ`@ss8=x@`I+K8}0ZP zhb=d-qzd6fV>Rk>8 z+tr3%X?RtWm(Go5r?SIyhK_OqKp8=ZoJfn>U%qP-lyDLHOx8HUZCMY&R&R$J4bz@h z5ii>vEy9}3gkZIM_FyWPnKeek6u0B=q~%J-k2)G?xMa)$G?!NON=qlW0i@2ntr%|? zK{i8MiAA`&&BMk(R*L|wWp9DXG|=On0jz;CXQ&o-lNPxrD)?KA);a{I_1%M(p4#^y z5*&M(LG_SDHQ6Q*=3(3^dTngfrOS-MEvYInoTSQPvt|`Ct*CpnOT9`on;FP*1c&N& zPq}-Ai1t=1+E%y`-mgddYUUm}3`3+c8wWzEU3Efu?eum4dYSft8VLytrlW-bNLXgrslS_NU&fzRsS-l>Y!FcqM zmW%s3B5MaG0GD0`P`xgfr2(3W*?B5&r08>3k8d?=?kMEE2iMlie~}s5U*>_Bpu0RS z)ZgB;(cUKmAe)El<#hfH>Y8q9f(pqb_ZfIE-J?D)FFFpUM96^yCe!lx7MZc&*?HPB z;GNtC=c#p!wa$?|b(rK~nZkPn=sn5SYihYn-mi;lBt?pMc*)vJ3ZB9Yn1Agkrs;NL^NqMsE(ygHZypH^@5=3CfNScaTXbi2(&&I zMvwrpY?z(`$9ujsrZ)bR(uwYuCiTW$|aq}eOYT6%4f7TG;!OQED@|-oo-#*S_s#1)&E5`CSwBWVw$!+;poIVgqW^|+)pt2*Z-OJno zBP~y+FcMp44qL5W=oU=0#5Y{Id-0p3UFvc?+k)jREvws^J9_r$F+j``&aaIuhp6C{ zomUxXL1ZL@TJG^6F7pz5hY`*x(y=Uut*?cGbSiElcWCaNz)Zq_hi;)3^AlTp2rKV^ zPI4-GI{CoPjp!hWq19I@Wc6yn@bE|mzlWhSpy@~~u&gF{aFEDy(iUsw6p^*^V!K_@ zTVV8}t$>M29WMvaUn9v&0A_kMvmanMX7+MWx~B-3!XS%PXwjEtladTY)g;qLe?hik zrX)=4d-Oodj8sBM5}ARgc-BigQKeVO1kq|O-qizutR9-Ls@-!Z#6-F)%cuT(L+Y<8 zH8%j(PB)IK-6bOm@j;U3H4bG4R1;B325k2!)Fp!c4vK6KZP_h%H+USu@3daU!^7_H z!cFp40Ug=)*9#nIgHO{E7HFw#eJ3~Ga}%uFPkq0*;3!N`|1WWq3$X zX;~ZX-K7K8>O0YLa&hgR-W8R?GfQ&qo+5&Fr7u%vQ{CD0T<*KC z`OG1leHU0>>terUqc@+WepEk}BIn)3l`kFH7+u=ZbNTvh6}>^qJvu)2vXjNe2~odVYbfk|l!emaG(#jvC_?Lm*~C3$HddTuY|71BQR5MPp)_EAXtD5QN9(mwQf zbJ8O1qmcG7llC!__MvsY&|)U-VpvEI(1+h!ETaeeqh6_y7tQw3wyYK+q79!ZW!au@cn`o zjg_fK(C=Z>2m!3Bzwb@A3gATx+qu?eT;vaRXI~VTns;^=-h5FZ|JUESrPsXM>(qUd z^Uav{Be}bZnyGFPwq1~8UO-In3p0$_9`p+hmUrk0O5gFYo$O>Q&A|5O0H5$w6BPNk zzW4Ug<1s}8TO|(=4s4ec(z2X++K|fGd&-U4&b45ysdY5hMx6kz>qYjOJRa;v+7q+K zuaoB!(+4G)nPq-+?&`*RbXnWlz6H$dAhiKF$F%C+v0tcDv|NkzRCn)yK$N!MN#2s4 zR2Cz2G$;HbP7hW&-agpf#f$gy0+4dOvfFI=uLpQFNwXi@2|tL0&y*_K57lLM7n3d} z4|gK3x^ONLCW{q!IO+;r?r@r&Ms8Le$cMg7g__e~3W{-UB^M=k1l zLC<4wRg7lss-ml^T}?$(`o+f`{WfDo^{4bbt8e`Vc z6qQ@FeoFR~&4SSzu5YWPc7)>7e+rxuo+sa594RPC!d^e5STsROk-dT_FsWCW}8U@}6YTNFy8?&m9_3g)r zk-T1<`XOP9zBrJuZ!2ebpPEx<>WtcN5L z!*bFWqno!r7%>tur@YwkL6(rCSScQ9UXYM&T7sK%2iQ}(0}|HAd0$goZ~}9r3A#=T zFXR!fMQd=}Z5RB(79cS@f(@jCV0j+gaDL7yw;%`wVT9ar5APTyQoSRHt|Q1baUYPN zAd*=TJdZ+&FI~UraawiUauKl-*PspX15D7Q8GRfQ{v3)USx5mGAQMO+a!!niz9CO& z%bd#i0I6hHy9R?1kUT1di_nt3iI34du80xPV0ceW@);9UiuIut8U!S2(89-w1i}s1 zJ}_|W3-{3^WWn1bISF+=>Y%q7{UHVL7#%{l;3E7&#-X;uLc*a0;|DT0dF|VFX{quMj!MJX@^d8 z*2}zFV^Mu{NCG%v|Dc$AQ}USiU`4Rq%vqqeYcRQJx61<5aXW*yA_cA^*ax_Tw2=$W z_-v#Y+so)20(9ew(IL6mIv~0H!B2R_IMLH-)u||TpTPL=Qg9A>Qii?|^?*0>!03=V zmkh^_@gkRCh!ud&Xq)>M_hC>TOk9HmdK9!?p^SLXge~Fd|@w;e~(Gg zy2K;EW$<(kF?MVl+?x~Um;vEWu;^$D+72hHx~CP^)U^$3RuQ+s3EhGpa30x1LV=8TvY`LE-+SXqSKi> zpaKc&26fz*Ve_D<$B%Fds$*xcnb=i0Q?h&T#~*n7gAH|m1C^-ne`W*; ztLxqu%L67*8*2|v#Ej6cqQ3E1lwyy$!*@e>G#M#?*7N~C-M%tLxDF(!44&=>pdzK< z%m)turXH){ap)UQ1z+*k?rDHT%;8diUxH3aEJ+kj{El1^>kt=!n~&K&68uIwfdsu7 zG4jMnkTxU?D~YXl?I5m%ckmkdLSku;F8RuVORGb2UxXB(3D68mA#IFuN{}2bSRk=b zhjHVbzzO+-_Hfsw4gN3=x0m$jv5`m7*l*;ThzN;6FC7w`;|iSNGNsHrzyqyvugf@z zRp2PF88Z||8XBrYJ*03-AdUco!)kl^HUkNiP%Bn#Pu zvQUXD_nq+0F+|Gg2Tbr$w1Q8rEm%XOoIJGDqi&*g=mtDA82HEv{USTi8-8--^2g}l z15yAciO)j^@yB@eXpJ`L2EBOvL_hEtNFEEhjHC6yL@$vbx4=Mws^}eXi8P^`kIv)A z?C8*B_dH;LUNP$a(J_9c5{^0VusI&*B2UgS+PgfVQBVx7VPB9OC=Ku61%0Bg=qMQC zJ)BOiH$H}hv-FLv#L_`!WD{+1OG9fUgZAJDpP-Y|*`>+t3-aK81!>2d01-I83HZ+FfJ`Lja^TwHFp+U+3-7S@@D6(pJ;2xLi%w$4 zv2(z{{$X2y)Eg&lkajrjYXC0M#67X^5xVYWs5i&gPR3LW;kz;up7ZKn>{g1O5mqsBX;IY>lZaLeyb3 z1V04*umv7PgArT+5@T?Ag1+>FKkz669+I2r9h#j)R>>*>96>XP{XL3BGNCIJ!zSXB z9RtP)b7!10d|gYVjtiiBY^@*#OhoCQeq#dg~W4DUHlRe z1{{HVXaJhP=)lwU4xNT~;Olyatp+=4K^4|~7&jV>JR{xAkDX84J5E?H_(@%td*Hz# zEE>KKno=9<>(K|E37G*WY%6reW;pG99^pP1*zWt0Dlj4k&xu44ArghVjzLZLGK|fo z06q0Qpg@ykz7AD=bVP&5CYBmHK?x+qB{Q*aZtEE*vWZuL-sqao2(VA&x@*Uav&rIBZxmCeO`skoARD{l00ysolY%jEg;_l0d z0LXRUnAj&ggX=A^85#hu&^hdYN7A(P6&j=xZ-R{Yn35>i?FLc+zUYq66p=QMQ=lx? z2yf0j6WBpig%u`v{fazMfs_zc7~4gcw@S$H|L#Mdx9x`Gl&4Af0*0p1uoyDZ~d zV&RT1ARovikf=qR>HLR#Nt_DKjuSle(IG`Z0yCh~&V4#_4Uc;8PuLS=4;}M)i$elF zS6Fz)fE~n(bBE3&!Duve0$V8P(KYf29*iA2p;2H0X1*qdC&4RVEu9`7`9LQuxz7{v z6ZDTCfjVfPdjxm@HIPhf2vFSHA>l};YcTv}Oju~Vhp)B)2}=&0h)ozhQh-i?A##JX zVgt}%a3%6Ys@&!hR{<4BNEUR$7Jv(RPzTEiMW7uxK_@syJ~Mo*JG}zeHP~k}Kte-Y zvhXN)3bex`79u~V6ZCOA3I13M_b4u{t}S4Rv|-Po7*v8YZr{*5_wCpRp8+D7VC$BS zal<>t!w8v2B2mbr@7)L>;X~X@5|MdKh%InB!wu{kHWUAf#AD5nZ+MM;^0_~n z1C~xFM(Z8{U&-A;E9X7+u|#-7#srmsj9>9M_3-HMXs>s4*k0)B zegaI8H}~Pb8o-E=Cb#WSj5$2>N~nlef~v#?ZWobnkDZZGhoH+4nx(;zBKS z+2@PUk~kBcLu$!qF6MPzp1{v-0rr-$Ba_7Q_%&t($Ojz2OM#zzBe;S0KucVn&<&rF z<5_^@D=m0;VjG~td1f2Wz@*B&zXIf z!|8-~a^HeHBtFb3iRNOpXa}8;Ft>xrd;pnuFNtI(`}_EBaPpNIY^Bea(E&6b-l6S8 zqj*m+ak~Ib=+*J`NC;a%bbu5v7Az99N8?>G6aHa`sf#voRBo{8oi5;h6RLc$q8 zGJ>`tmp-FKpJ_>)i9`}ju?7Hj$U(2c$$Li^eMOCa+=oybU4g3fdl)B=|6U(X{iA~> zuXl8e68q=#Hn(rk5!yooKMR0nIzK66RK7~%v8M00ATMsOkaFk*P274SVXh-^$!AsY z6&j(DF1bGYKr(@V1SRXS-k;k7`arV5!?n`qDcBnHl&BJIW2WeS6Ai*oA%#d79x;(8 z^bUW7<|7YC06GM=_$A7K|eQ$&q+vj}Hk~WMM z4RXHYgOM;~ig}t#jC)3xQM?Q?N)*AoiI@oOX9k8$!4D`+T;MY!bdcJv!BEPj04_39 z180v~=##mV&*hOJ=z@Ln*_rDzxr`1g=8+h!uqAHO$Rn;H8lgRY1noiJkW3;Cw>rMA zg0zD#k_qL3gvW(XSXAhURrWPedcwY8RepXUk09J4TiSalMO>_SH z9MMNfJdVWTX`B~e;D&g%VD0x8rzc=tMjC z=+4J41f|Kt7NJ$>68++J(QRnsUIu^1A9{>NxCKI@ zoKDz5{1w)hl@+9oSOg!L;hR_Qvp!*hTgA>-ptqQfBis-vXlgK8mxbwIGemE>3 z!4;$wNZ5SZGj8~R9Y;pc9_Zy`ffnGz80eANhwF&jUm#&az>eNMeoA5|W+-?ZD1uHi zzr)tS1$uSf6H|f-qoWs>agT(2H4=@)?_mLn;*kPu1(t&GAnl9}OXyO7v?AlZ_=C~H zZTG`IBS89meVh>^L%yfzb1EMvbU=ggJLn)+=oPt88vQ^zWL4I;qT9Nkh`P~(Xy2|{ z!h?IyzpIvw=)g+qQAZ`sNbl{@cSpJV`fEjP-D9(&2b)nndU*hpj%u`3zpC#8UD0Dr zE%h27!TV~1x2K-Es&PBhd*={5;LsnvO+-E1BK`ZrA3DAB*6;a))$jbk$F~0UyWTw? z4Zrdm-~NmL?GHToE5rZjJYwo;tdoDLVk{_}rN;LS~`0#m% zHU3!sWRiU@_sGPM3Ph&yNAf2u`&@2#BA*k%&JT}R&EXN{QxEE$A32%N={|qTdLMfR zd`fvx7UHM#1EWsg35HyQe} znwPES#45lz9eDF3eY?)!W;XQ#0|lBxa^GS&8SWlM6G|>7B|{JY9v8Cq=I($Inch z9D9fLGxqSEPZ}2Q5P#ofSDxM|=Ay4T?lI=fv)}%s=c=gRXNV#Y*@@Nd^mJh|o|}^p z7q&~23)|Z}lT%a0`BI@67q)9!!4Rj$O%=|cMXHKO)#$6AKzx+K^!J%4z0XDIeU|lE z%lfQmeHKBIW=ea;UArXiBf1@Z_`&m|58w0X=^^;L2Zx=hdv6eV0~75lFj7K-@F0|< zr86dDLgEoXT>}ytH0+ni+pw%o=+L!y7)eH}WsMNf0OH~M9MnUht=#d`W&+L(Q}@j1 z!}r5VjTMHz&(hC|m*bFder9UAq*oD4ZcoS9f!fq$Mf{zdnVT+_c6Q?FN=+_R9DDPr z^U{{FGf2~v=s2!adin4JC!#2akUac=@${vU(?etPV^d=f|I1;TyfGT5$-E?f?96Ey zku{a5{qX3TtjpTzXlQs`f2Sw>`>}~rWA7j%h|BQUJDdkUIGl^rmHw$&S)WTodEE?= zH#FqgmxsQDyC+Cal3XJBa+1;WO3vs?EjRSp(&y&TuxGreo44yz15QpCw}(`nsttYi z_37$!U!PZoPDz-DPN{V0G|3|*BP5TKJVtVs2x-$;IqdexG)Z!SyRND%X( znK972yCvSpg zze@61l7C0?Ig;NX`5ltqBl-6vf28D{8Y+G;&@GE@t-h9B|b(T5*TuRa;d#-2&DUQ4pZhYgIXCl{Y|zzVNI$!j5F zT&e^u#@@L_a+BmmlDCu8NN$rfNcKs(B=<>PA$dshE|PbXNZ-faDSaP%r}Ta7o$n|4 zAj$WUe2C=3Bx3Q{J3mVDF_KS^e2V1L3V(CM!(znnY2t(Nu^Y0DLhmt&+Sseb;bFx^ zMa#OW076+qih-%|qNQ(_(I#}dX?Hcjpo-VHeHIwcD9{~yMpe#Rl?GMh!xV7~$o?rc zPl~#hb)R^Mkm{+Ek3=Vcrb&gByaED>n8v*ALy9x_y(^&dtW|zD{hS{Tbzif*_X40d zp!c1LP740UNCwFJA5-4&usmrx?hncfjquN4eBW7BAim93`H&TT*hc@%*kgA0kzt{y zkUNa@qa!w$jWpw9j|dqf%!bwf1ofevkM2{J`RS9xFvHTDmcD4|+bykGdfU>5rTdn4 zExm8)E0#XA^j(&|+tSx8eXphOv-JIze$dkIv-Crje%R8FSo%>*KW6DCEd7+FpH}!I zs*OwxjlDxNKm~J}yeJGB*5@ov+b=0l)S=9CIYp{upUaV{>Cf0Z5~oh|bb>N6PFZzL zF0HnK*0n*P@p%W%Wdg~kRKpfql51_4q=L+2M4VhCuytv$L)ORy6E#VMT27n>3A?5? zMJ5@cC|pyd_{1c{;uEgORKPPb_6~IjEJZYm>_#1AxTDe|!i!?aB+UGh0!82|(El(F zU0F|Vn$84^l@B&Z6EU+iXZ$Pg=EkRIuMSy&J9=$gbK=p<3PKfLURIgzN~3EEFZFdz z;iX+k0!J@tQmF_`15mW7>k+#ivFkH-ea4$#b70p-uO$;)LwQ(}5Ot?GZ9>zCYvbpK z&z?T{)X8MxBgMA-r%r0}V^=5zGhjo5KvCfBb~u@?YL-p$NOFJ1?-k)%t5E%HGW`}B zOus?GYe-*puZUSx5PXf&iE;VFh?WjUw30EBBYGXZrsS!Ux;ra8o*ccV=14W}O+ zKF30bEYq;UR+*<2O`-B{j7~-QC!ZXYz_{rRzH!fbd=Q)I2q3~7GwjFQnc>!donJvT4B zrsj%T8>*G2C+BCU7bX{`N(&3cN~u(>Y6;emdwl#c&8_ei<}TngGR60KeIp|B9X8_f z@YjX|ceXY=Tbr9NOitH|J0imN+~j<9c4o4=Jzt%h+nJ7cN(rSWtlQPnRI#wKSe%?& zTu`?at)ne2&Mi$Aw1~2@I=4DMU)E&TsP?AuF=^xItBqukTub-mEx9ssO)sx#rDu6^ zb*8waIsD4v8X{{^t4{-=g^)WKhxuZ$b~|mAK}l&QCygtU0Pk7lt@i$ z0$H3EA7>XP=a&~2ORKXbt??vuf7V1)-uW5$HazwW?Mq9`^NWHY5kOpLD>LHT)Xe1S zVqtoIadvibWoacKGG%m#=ceb1)t$byzIRI#+WSX!8woS$2ev=p}ICxu5@N-{gYtaYlH63bsk%z3Rq3R|rl z4vlMpO#*%*clNBUZ_ZUpv8om|d7hTGRObql+Y1ZRlQYvZ)3v$M)J#Ed+H)vxHr#ir zS{<3H6{JtntYT?uTC;75|J3aE_Vmfw9Pt!p;3e-A`0ua*|(7iJ2RtJ71SUo% zlGM*@v2wdKA5Us+XLe>@3Rs%g`h+p+vcM7iX(bNFdPa*ZTK%vUD{0qsr64F%b6VRd zP8Z|Jh1!mURKhZ&wX8~IHlh25(L*t#JeR>4y>>1KO=W%Ksh!IFWL%k%pifV!d95G` ztXAUU!opm&q!(E_CR^i%&`r6f6N;@(XhhJWmXNfVR&-lZ1ZcH5RhgRFL2hP*SZ!X* zFY$bJvQ(LtF(~e6sKo&E#qmcad5Xg=+NSZm*1u|6NS&PBnG+sbyg`WsW?{QlE6mSS zYAmlCDsT6t)FDG)==|x_Q@iAviNV59)0z-z7nSo-$VaQ@UOwTLwxeO2?i(N{Hd8-4hH zX|3#rA*$7K!B8UScO(BL(MiP~4?ivrC`AOgA?uTt^-0hAq-DKkS+9B4YpkD*1IqV8 z#!b&ZZs{j2eT^>0^QZEPClo?NAoGclTy!#SPU^RXG@a2TI(jS@oxUFHhoCyKqyhxq z`GgkLG)>pPH|8{r-^#y%pOU=NYNkIZwROAQy4T4)nTx*km?hdMqNl=z;su=$(UQlP z`Kwhs8@F4{_}TD6#IL(Me?coSTW23n-=P?OfRtZx8x2h+tj&a~YO!TLdE?>4e!F$I zUeh}jC(8A0^{&d=#Nx(U6#cne^i}Db6(|1r4^9-Orl%&A z6eboM@%>7(){ZCE54y2d!XD2>=Z<7P{N4+>hwnP{{=^IVt=PS~{rYj|Lh@3@US9g% z#b+n>^xKi`Mt%F)iDdYN3sV(ZpPkq^*w)X)>Q$=t!;oJ$ zSBxZRO8z-l^{kl3w!YznpCBjH2Ir@beq+4i4Vc=W{=ri$3>5 zx#;?4dGkN{`QN?&$p2a`zxsyHU3}~J{7#)F%U}BAzmw!5)_BLG=wUy66d}_7@6mkfUDD^~XLHeGL)`hl$A)C1qvxW{ z=$6uz=(?`fqN~vr-LENK)iwYA$#l0Qx1rtLHSG%TXs4HdZxWP9Z*Og@MpOI64cjNKtCY1}{(W?)p|zi!aAKFauKe8r zkS#ll+Usts)?M{b3%yJT z`?_-3QSU}KRcBJ4b=^~=A}m_k?{4ajy=}*NLJ%2AMOgYi_F}Z55%cdY;#h*qzSVjl z>Q)Rd$`_3~_pPL6{nFckV8<#E-^A@)I`*=1JHiZ_?5F($XH&cE(0gC_-;6GN0gR*Q zS$u2?_c_6B3v!PK1;HrlBl{?LPpU2)1go}LbpRDf-qFuwrwjX_!;9eHYUE$s^ zj_r#tjBZ!s>8fwI*q=8M{h&C)xd%Th=~o5ieIZ)D-Ntb>z(=a+HIY#6kd{9wEqmkH zFkWp4zJ7o$oQ=rx`cFnD^cf!Y!#m8WET42hLiLYI`SEQon7(Mp|MB1dS1Ism*=^zW PQO#`s + + + SharpDX.MediaFoundation + + + + + The assembly provides managed MediaFoundation API. + + + MediaFoundation + MediaFoundation + + + + ByteStream class used + + +

    Applies to: desktop apps | Metro style apps

    Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The interface supports the typical stream operations, such as reading, writing, and seeking.

    +
    + +

    The following functions return references for local files:

    • MFBeginCreateFile
    • MFCreateFile
    • MFCreateTempFile

    A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.)

    Some implementations of this interface also expose one or more of the following interfaces:

    • IMFGetService

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698720 + IMFByteStream + IMFByteStream +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents a byte stream from some data source, which might be a local file, a network file, or some other source. The interface supports the typical stream operations, such as reading, writing, and seeking.

    +
    + +

    The following functions return references for local files:

    • MFBeginCreateFile
    • MFCreateFile
    • MFCreateTempFile

    A byte stream for a media souce can be opened with read access. A byte stream for an archive media sink should be opened with both read and write access. (Read access may be required, because the archive sink might need to read portions of the file as it writes.)

    Some implementations of this interface also expose one or more of the following interfaces:

    • IMFGetService

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698720 + IMFByteStream + IMFByteStream +
    + + +

    Applies to: desktop apps | Metro style apps

    Reads data from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    +

    Size of the buffer in bytes.

    + The number of bytes that are copied into the buffer + +

    This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

    This method is synchronous. It blocks until the read operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698913 + HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) + IMFByteStream::Read +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous read operation from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704810 + HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFByteStream::BeginRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous read operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    + The number of bytes that were read + +

    Call this method after the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704042 + HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) + IMFByteStream::EndRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Writes data to the stream.

    +
    +

    Pointer to a buffer that contains the data to write.

    +

    Size of the buffer in bytes.

    +

    Receives the number of bytes that are written.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

    This method is synchronous. It blocks until the write operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703843 + HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) + IMFByteStream::Write +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous write operation to the stream.

    +
    +

    Pointer to a buffer containing the data to write.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms694005 + HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFByteStream::BeginWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous write operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    + The number of bytes that were written + +

    Call this method when the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703863 + HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) + IMFByteStream::EndWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Moves the current position in the stream by a specified offset.

    +
    +

    Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

    +

    Specifies the new position, as a byte offset from the seek origin.

    +

    Specifies zero or more flags. The following flags are defined.

    ValueMeaning
    MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

    All pending I/O requests are canceled after the seek request completes successfully.

    ?

    + The new position after the seek + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms697053 + HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) + IMFByteStream::Seek +
    + + +

    Applies to: desktop apps | Metro style apps

    Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the byte stream is read-only, this method has no effect.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms694833 + HRESULT IMFByteStream::Flush() + IMFByteStream::Flush +
    + + +

    Applies to: desktop apps | Metro style apps

    Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703909 + HRESULT IMFByteStream::Close() + IMFByteStream::Close +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the characteristics of the byte stream.

    +
    + The capabilities of the stream. + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698962 + HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) + IMFByteStream::GetCapabilities +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of the stream.

    +
    + The length of the stream, in bytes. If the length is unknown, this value is -1. + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698941 + HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) + IMFByteStream::GetLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the current read or write position in the stream.

    +
    + The current position, in bytes. + +

    The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704059 + HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) + IMFByteStream::GetCurrentPosition +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the current position has reached the end of the stream.

    +
    + true if the end of the stream has been reached + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms697369 + HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) + IMFByteStream::IsEndOfStream +
    + + + Instantiates a new instance from a . + + hh162754 + HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out] IMFByteStream** ppByteStream) + MFCreateMFByteStreamOnStreamEx + + + +

    Applies to: desktop apps | Metro style apps

    Reads data from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    + Offset into the buffer. +

    Size of the buffer in bytes.

    + The number of bytes that are copied into the buffer + +

    This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

    This method is synchronous. It blocks until the read operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698913 + HRESULT IMFByteStream::Read([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) + IMFByteStream::Read +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous read operation from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704810 + HRESULT IMFByteStream::BeginRead([Out, Buffer] unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFByteStream::BeginRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous read operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    + The number of bytes that were read + +

    Call this method after the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704042 + HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) + IMFByteStream::EndRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Writes data to the stream.

    +
    +

    Pointer to a buffer that contains the data to write.

    +

    Size of the buffer in bytes.

    + The number of bytes that are written. + +

    This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

    This method is synchronous. It blocks until the write operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703843 + HRESULT IMFByteStream::Write([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) + IMFByteStream::Write +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous write operation to the stream.

    +
    +

    Pointer to a buffer containing the data to write.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms694005 + HRESULT IMFByteStream::BeginWrite([In, Buffer] const unsigned char* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFByteStream::BeginWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous write operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    + The number of bytes that were written + +

    Call this method when the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703863 + HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) + IMFByteStream::EndWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Moves the current position in the stream by a specified offset.

    +
    +

    Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

    +

    Specifies the new position, as a byte offset from the seek origin.

    +

    Specifies zero or more flags. The following flags are defined.

    ValueMeaning
    MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

    All pending I/O requests are canceled after the seek request completes successfully.

    ?

    + The new position after the seek + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms697053 + HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) + IMFByteStream::Seek +
    + + +

    Applies to: desktop apps | Metro style apps

    Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the byte stream is read-only, this method has no effect.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms694833 + HRESULT IMFByteStream::Flush() + IMFByteStream::Flush +
    + + +

    Applies to: desktop apps | Metro style apps

    Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms703909 + HRESULT IMFByteStream::Close() + IMFByteStream::Close +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the characteristics of the byte stream.

    +
    +

    Receives a bitwise OR of zero or more flags. The following flags are defined.

    ValueMeaning
    MFBYTESTREAM_IS_READABLE
    0x00000001

    The byte stream can be read.

    MFBYTESTREAM_IS_WRITABLE
    0x00000002

    The byte stream can be written to.

    MFBYTESTREAM_IS_SEEKABLE
    0x00000004

    The byte stream can be seeked.

    MFBYTESTREAM_IS_REMOTE
    0x00000008

    The byte stream is from a remote source, such as a network.

    MFBYTESTREAM_IS_DIRECTORY
    0x00000080

    The byte stream represents a file directory.

    MFBYTESTREAM_HAS_SLOW_SEEK
    0x00000100

    Seeking within this stream might be slow. For example, the byte stream might download from a network.

    MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED
    0x00000200

    The byte stream is currently downloading data to a local cache. Read operations on the byte stream might take longer until the data is completely downloaded.

    This flag is cleared after all of the data has been downloaded.

    If the MFBYTESTREAM_HAS_SLOW_SEEK flag is also set, it means the byte stream must download the entire file sequentially. Otherwise, the byte stream can respond to seek requests by restarting the download from a new point in the stream.

    MFBYTESTREAM_SHARE_WRITE
    0x00000400

    Another thread or process can open this byte stream for writing. If this flag is present, the length of thebyte stream could change while it is being read.

    This flag can affect the behavior of byte-stream handlers. For more information, see MF_BYTESTREAMHANDLER_ACCEPTS_SHARE_WRITE.

    Note??Requires Windows?7 or later.

    ?

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698962 + HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) + IMFByteStream::GetCapabilities +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of the stream.

    +
    +

    Receives the length of the stream, in bytes. If the length is unknown, this value is -1.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698941 + HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) + IMFByteStream::GetLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the length of the stream.

    +
    +

    Length of the stream in bytes.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697225 + HRESULT IMFByteStream::SetLength([In] unsigned longlong qwLength) + IMFByteStream::SetLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the current read or write position in the stream.

    +
    +

    Receives the current position, in bytes.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704059 + HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) + IMFByteStream::GetCurrentPosition +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the current read or write position.

    +
    +

    New position in the stream, as a byte offset from the start of the stream.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    Invalid argument.

    ?

    + +

    If the new position is larger than the length of the stream, the method returns E_INVALIDARG.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms695238 + HRESULT IMFByteStream::SetCurrentPosition([In] unsigned longlong qwPosition) + IMFByteStream::SetCurrentPosition +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the current position has reached the end of the stream.

    +
    +

    Receives the value TRUE if the end of the stream has been reached, or otherwise.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697369 + HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) + IMFByteStream::IsEndOfStream +
    + + +

    Applies to: desktop apps | Metro style apps

    Reads data from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    +

    Size of the buffer in bytes.

    +

    Receives the number of bytes that are copied into the buffer. This parameter cannot be null.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method reads at most cb bytes from the current position in the stream and copies them into the buffer provided by the caller. The number of bytes that were read is returned in the pcbRead parameter. The method does not return an error code on reaching the end of the file, so the application should check the value in pcbRead after the method returns.

    This method is synchronous. It blocks until the read operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698913 + HRESULT IMFByteStream::Read([In] void* pb,[In] unsigned int cb,[Out] unsigned int* pcbRead) + IMFByteStream::Read +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous read operation from the stream.

    +
    +

    Pointer to a buffer that receives the data. The caller must allocate the buffer.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been read into the buffer, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not read from, write to, free, or reallocate the buffer while an asynchronous read is pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704810 + HRESULT IMFByteStream::BeginRead([In] void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState) + IMFByteStream::BeginRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous read operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    +

    Receives the number of bytes that were read.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method after the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704042 + HRESULT IMFByteStream::EndRead([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbRead) + IMFByteStream::EndRead +
    + + +

    Applies to: desktop apps | Metro style apps

    Writes data to the stream.

    +
    +

    Pointer to a buffer that contains the data to write.

    +

    Size of the buffer in bytes.

    +

    Receives the number of bytes that are written.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method writes the contents of the pb buffer to the stream, starting at the current stream position. The number of bytes that were written is returned in the pcbWritten parameter.

    This method is synchronous. It blocks until the write operation completes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703843 + HRESULT IMFByteStream::Write([In] const void* pb,[In] unsigned int cb,[Out] unsigned int* pcbWritten) + IMFByteStream::Write +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous write operation to the stream.

    +
    +

    Pointer to a buffer containing the data to write.

    +

    Size of the buffer in bytes.

    +

    Pointer to the interface of a callback object. The caller must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When all of the data has been written to the stream, the callback object's method is called. At that point, the application should call to complete the asynchronous request.

    Do not reallocate, free, or write to the buffer while an asynchronous write is still pending.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms694005 + HRESULT IMFByteStream::BeginWrite([In] const void* pb,[In] unsigned int cb,[In] IMFAsyncCallback* pCallback,[In] void* punkState) + IMFByteStream::BeginWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous write operation.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the method.

    +

    Receives the number of bytes that were written.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method when the method completes asynchronously.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703863 + HRESULT IMFByteStream::EndWrite([In] IMFAsyncResult* pResult,[Out] unsigned int* pcbWritten) + IMFByteStream::EndWrite +
    + + +

    Applies to: desktop apps | Metro style apps

    Moves the current position in the stream by a specified offset.

    +
    +

    Specifies the origin of the seek as a member of the enumeration. The offset is calculated relative to this position.

    +

    Specifies the new position, as a byte offset from the seek origin.

    +

    Specifies zero or more flags. The following flags are defined.

    ValueMeaning
    MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO

    All pending I/O requests are canceled after the seek request completes successfully.

    ?

    +

    Receives the new position after the seek.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697053 + HRESULT IMFByteStream::Seek([In] MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,[In] longlong llSeekOffset,[In] unsigned int dwSeekFlags,[Out] unsigned longlong* pqwCurrentPosition) + IMFByteStream::Seek +
    + + +

    Applies to: desktop apps | Metro style apps

    Clears any internal buffers used by the stream. If you are writing to the stream, the buffered data is written to the underlying file or device.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the byte stream is read-only, this method has no effect.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms694833 + HRESULT IMFByteStream::Flush() + IMFByteStream::Flush +
    + + +

    Applies to: desktop apps | Metro style apps

    Closes the stream and releases any resources associated with the stream, such as sockets or file handles. This method also cancels any pending asynchronous I/O requests.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703909 + HRESULT IMFByteStream::Close() + IMFByteStream::Close +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the characteristics of the byte stream.

    +
    + The capabilities of the stream. + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698962 + HRESULT IMFByteStream::GetCapabilities([Out] unsigned int* pdwCapabilities) + IMFByteStream::GetCapabilities +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of the stream.

    +
    + The length of the stream, in bytes. If the length is unknown, this value is -1. + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms698941 + HRESULT IMFByteStream::GetLength([Out] unsigned longlong* pqwLength) + IMFByteStream::GetLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the current read or write position in the stream.

    +
    + The current position, in bytes. + +

    The methods that update the current position are Read, BeginRead, Write, BeginWrite, SetCurrentPosition, and Seek.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms704059 + HRESULT IMFByteStream::GetCurrentPosition([Out] unsigned longlong* pqwPosition) + IMFByteStream::GetCurrentPosition +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the current position has reached the end of the stream.

    +
    + true if the end of the stream has been reached + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms697369 + HRESULT IMFByteStream::IsEndOfStream([Out] BOOL* pfEndOfStream) + IMFByteStream::IsEndOfStream +
    + + + The namespace provides a managed MediaFoundation for DirectX integration API. + + + MediaFoundation + MediaFoundation + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives the caller exclusive access to the Microsoft Direct3D device.

    +
    + +

    When you are done using the Direct3D device, call to unlock the device.

    If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

    If fBlock is TRUE, this method can potentially deadlock. For example, it will deadlock if a thread calls LockDevice and then waits on another thread that calls LockDevice. It will also deadlock if a thread calls LockDevice twice without calling UnlockDevice in between.

    +
    + + hh447909 + IMFDXGIDeviceManager + IMFDXGIDeviceManager +
    + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates an instance of the Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

    +
    + hh162750 + HRESULT MFCreateDXGIDeviceManager([Out] unsigned int* resetToken,[Out] IMFDXGIDeviceManager** ppDeviceManager) + MFCreateDXGIDeviceManager +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the Microsoft Direct3D device or notifies the device manager that the Direct3D device was reset.

    +
    +

    A reference to the interface of the DXGI device.

    + +

    When you first create the DXGI Device Manager, call this method with a reference to the Direct3D device. (The device manager does not create the device; the caller must provide the device reference initially.) Also call this method if the Direct3D device becomes lost and you need to reset the device or create a new device.

    The resetToken parameter ensures that only the component that originally created the device manager can invalidate the current device.

    If this method succeeds, all open device handles become invalid.

    +
    + hh447911 + HRESULT IMFDXGIDeviceManager::ResetDevice([In] IUnknown* pUnkDevice,[In] unsigned int resetToken) + IMFDXGIDeviceManager::ResetDevice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unlocks the Microsoft Direct3D device.

    +
    +

    A handle to the Direct3D device. To get the device handle, call .

    + +

    Call this method to release the device after calling .

    +
    + hh447913 + HRESULT IMFDXGIDeviceManager::UnlockDevice([In] void* hDevice,[In] BOOL fSaveState) + IMFDXGIDeviceManager::UnlockDevice +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Closes a Microsoft Direct3D device handle.

    +
    +

    A handle to the Direct3D device.

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    E_HANDLE

    The specified handle is not a Direct3D device handle.

    ?

    + +

    Call this method to release a device handle that was retrieved by the method.

    +
    + + hh447907 + HRESULT IMFDXGIDeviceManager::CloseDeviceHandle([In] void* hDevice) + IMFDXGIDeviceManager::CloseDeviceHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the Microsoft Direct3D device for an interface.

    +
    +

    A handle to the Direct3D device. To get the device handle, call .

    +

    The interface identifier (IID) of the requested interface. The Direct3D device supports the following interfaces:

    +

    Receives a reference to the requested interface. The caller must release the interface.

    + +

    If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

    +
    + + hh447908 + HRESULT IMFDXGIDeviceManager::GetVideoService([In] void* hDevice,[In] const GUID& riid,[Out] void** ppService) + IMFDXGIDeviceManager::GetVideoService +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives the caller exclusive access to the Microsoft Direct3D device.

    +
    +

    A handle to the Direct3D device. To get the device handle, call .

    +

    The interface identifier (IID) of the requested interface. The Direct3D device will support the following interfaces:

    +

    Specifies whether to wait for the device lock. If the device is already locked and this parameter is TRUE, the method blocks until the device is unlocked. Otherwise, if the device is locked and this parameter is , the method returns immediately with the error code DXVA2_E_VIDEO_DEVICE_LOCKED.

    +

    Receives a reference to the requested interface. The caller must release the interface.

    + +

    When you are done using the Direct3D device, call to unlock the device.

    If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

    If fBlock is TRUE, this method can potentially deadlock. For example, it will deadlock if a thread calls LockDevice and then waits on another thread that calls LockDevice. It will also deadlock if a thread calls LockDevice twice without calling UnlockDevice in between.

    +
    + + hh447909 + HRESULT IMFDXGIDeviceManager::LockDevice([In] void* hDevice,[In] const GUID& riid,[Out] void** ppUnkDevice,[In] BOOL fBlock) + IMFDXGIDeviceManager::LockDevice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a handle to the Microsoft Direct3D device.

    +
    +

    Receives the device handle.

    + + hh447910 + HRESULT IMFDXGIDeviceManager::OpenDeviceHandle([Out] void** phDevice) + IMFDXGIDeviceManager::OpenDeviceHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the Microsoft Direct3D device or notifies the device manager that the Direct3D device was reset.

    +
    +

    A reference to the interface of the DXGI device.

    +

    The token that was received in the pResetToken parameter of the function.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When you first create the DXGI Device Manager, call this method with a reference to the Direct3D device. (The device manager does not create the device; the caller must provide the device reference initially.) Also call this method if the Direct3D device becomes lost and you need to reset the device or create a new device.

    The resetToken parameter ensures that only the component that originally created the device manager can invalidate the current device.

    If this method succeeds, all open device handles become invalid.

    +
    + + hh447911 + HRESULT IMFDXGIDeviceManager::ResetDevice([In] IUnknown* pUnkDevice,[In] unsigned int resetToken) + IMFDXGIDeviceManager::ResetDevice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Tests whether a Microsoft Direct3D device handle is valid.

    +
    +

    A handle to the Direct3D device. To get the device handle, call .

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    E_HANDLE

    The specified handle is not a Direct3D device handle.

    MF_E_DXGI_NEW_VIDEO_DEVICE

    The device handle is invalid.

    ?

    + +

    If the method returns MF_E_DXGI_NEW_VIDEO_DEVICE, call to close the handle and then call OpenDeviceHandle again to get a new handle. The method invalidates all open device handles.

    +
    + + hh447912 + HRESULT IMFDXGIDeviceManager::TestDevice([In] void* hDevice) + IMFDXGIDeviceManager::TestDevice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unlocks the Microsoft Direct3D device.

    +
    +

    A handle to the Direct3D device. To get the device handle, call .

    +

    Reserved.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method to release the device after calling .

    +
    + + hh447913 + HRESULT IMFDXGIDeviceManager::UnlockDevice([In] void* hDevice,[In] BOOL fSaveState) + IMFDXGIDeviceManager::UnlockDevice +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates an instance of the Media Engine.

    +
    + +

    Before using this interface, call CoInitializeEx and .

    To get a reference to this interface, call CoCreateInstance. The class identifier is .

    +
    + + hh447919 + IMFMediaEngineClassFactory + IMFMediaEngineClassFactory +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + Constant ClsidMFMediaEngineClassFactory. + CLSID_MFMediaEngineClassFactory + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a new instance of the Media Engine.

    +
    +

    A bitwise OR of zero or more flags from the enumeration.

    +

    A reference to the interface of an attribute store.

    This parameter specifies configuration attributes for the Media Engine. Call to create the attribute store. Then, set one or more attributes from the list of Media Engine Attributes. For details, see Remarks.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    MF_E_ATTRIBUTENOTFOUND

    A required attribute was missing from pAttr, or an invalid combination of attributes was used.

    ?

    + +

    Before calling this method, call .

    The Media Engine supports three distinct modes:

    ModeDescription
    Frame-server mode

    In this mode, the Media Engine delivers uncompressed video frames to the application. The application is responsible for displaying each frame, using Microsoft Direct3D or any other rendering technique.

    The Media Engine renders the audio; the application is not responsible for audio rendering.

    Frame-server mode is the default mode.

    Rendering mode

    In this mode, the Media Engine renders both audio and video. The video is rendered to a window or Microsoft DirectComposition visual provided by the application.

    To enable rendering mode, set either the MF_MEDIA_ENGINE_PLAYBACK_HWND attribute or the MF_MEDIA_ENGINE_PLAYBACK_VISUAL attribute.

    Audio mode

    In this mode, the Media Engine renders audio only, with no video.

    To enable audio mode, set the flag in the dwFlags parameter.

    ?

    Intialization Attributes

    The following attributes are defined for the pAttr parameter. Some are required, and some are optional, depending on the mode you want.

    FeatureAttributesFrame Server ModeRendering ModeAudio Mode
    Event callback Required.Required.Required.
    Render target

    One of the following:

    MF_MEDIA_ENGINE_PLAYBACK_HWND
    MF_MEDIA_ENGINE_PLAYBACK_VISUAL

    These attributes are mutually exclusive. Setting either of these attributes puts the Media Engine into rendering mode.

    Do not set.Required. Do not set.
    Direct3D format Required.Optional.Do not set.
    Microsoft DirectX Graphics Infrastructure (DXGI) device manager Optional.Optional.Do not set.
    Media Engine extensions Optional.Optional.Optional.
    Content protection

    Any of the following:

    MF_MEDIA_ENGINE_OPM_HWND
    Optional.Optional.Optional.
    Audio playback

    Any of the following:

    Optional.Optional.Optional.

    ?

    +
    + + hh447921 + HRESULT IMFMediaEngineClassFactory::CreateInstance([In] MF_MEDIA_ENGINE_CREATEFLAGS dwFlags,[In] IMFAttributes* pAttr,[Out, Fast] IMFMediaEngine** ppPlayer) + IMFMediaEngineClassFactory::CreateInstance +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a time range object.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447922 + HRESULT IMFMediaEngineClassFactory::CreateTimeRange([Out, Fast] IMFMediaTimeRange** ppTimeRange) + IMFMediaEngineClassFactory::CreateTimeRange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a media error object.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447920 + HRESULT IMFMediaEngineClassFactory::CreateError([Out, Fast] IMFMediaError** ppError) + IMFMediaEngineClassFactory::CreateError +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Extends the interface.

    +
    + +

    The interface contains methods that map to the HTML5 media elements. The provides additional functionality that does not correspond directly to HTML5.

    +
    + + hh447923 + IMFMediaEngineEx + IMFMediaEngineEx +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Copies the current video frame to a DXGI surface or WIC bitmap.

    +
    + +

    In frame-server mode, call this method to blit the video frame to a DXGI or WIC surface. The application can call this method at any time after the Media Engine loads a video resource. Typically, however, the application calls first, to determine whether a new frame is available. If OnVideoStreamTick returns , the application then calls TransferVideoFrame.

    The Media Engine scales and letterboxes the video to fit the destination rectangle. It fills the letterbox area with the border color.

    For protected content, call the IMFMediaEngineProtectedContent::TransferVideoFrame method instead of this method.

    +
    + + hh448021 + IMFMediaEngine + IMFMediaEngine +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the most recent error status.

    +
    +

    Receives either a reference to the interface, or the value null. If the value is non-null, the caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method returns the last error status, if any, that resulted from loading the media source. If there has not been an error, ppError receives the value null.

    This method corresponds to the error attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447985 + HRESULT IMFMediaEngine::GetError([Out] IMFMediaError** ppError) + IMFMediaEngine::GetError +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the current error code.

    +
    +

    The error code, as an value.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448012 + HRESULT IMFMediaEngine::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error) + IMFMediaEngine::SetErrorCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets a list of media sources.

    +
    +

    A reference to the interface. The caller must implement this interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to adding a list of source elements to a media element in HTML5.

    The Media Engine tries to load each item in the pSrcElements list, until it finds one that loads successfully. After this method is called, the application can use the interface to update the list at any time. To reload the list, call .

    This method completes asynchronously. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

    If the Media Engine is unable to load a URL, it sends an event.

    For more information about event handling in the Media Engine, see .

    If the application also calls , the URL passed to SetSource takes precedence over the list given to SetSourceElements.

    +
    + + hh448018 + HRESULT IMFMediaEngine::SetSourceElements([In] IMFMediaEngineSrcElements* pSrcElements) + IMFMediaEngine::SetSourceElements +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the URL of a media resource.

    +
    +

    The URL of the media resource.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the src attribute of the HTMLMediaElement interface in HTML5.

    The URL specified by this method takes precedence over media resources specified in the method. To load the URL, call .

    This method asynchronously loads the URL. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

    If the Media Engine is unable to load the URL, the Media Engine sends an event.

    For more information about event handling in the Media Engine, see .

    +
    + + hh448017 + HRESULT IMFMediaEngine::SetSource([In] wchar_t* pUrl) + IMFMediaEngine::SetSource +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the URL of the current media resource, or an empty string if no media resource is present.

    +
    +

    Receives a BSTR that contains the URL of the current media resource. If there is no media resource, ppUrl receives an empty string. The caller must free the BSTR by calling SysFreeString.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the currentSrc attribute of the HTMLMediaElement interface in HTML5.

    Initially, the current media resource is empty. It is updated when the Media Engine performs the resource selection algorithm.

    +
    + + hh447981 + HRESULT IMFMediaEngine::GetCurrentSource([Out] wchar_t** ppUrl) + IMFMediaEngine::GetCurrentSource +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current network state of the media engine.

    +
    +

    Returns an enumeration value.

    + +

    This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447989 + unsigned short IMFMediaEngine::GetNetworkState() + IMFMediaEngine::GetNetworkState +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the preload flag.

    +
    +

    Returns an enumeration value.

    + +

    This method corresponds to the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

    +
    + + hh447992 + MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine::GetPreload() + IMFMediaEngine::GetPreload +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the preload flag.

    +
    +

    An value equal to the preload flag.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

    +
    + + hh448016 + HRESULT IMFMediaEngine::SetPreload([In] MF_MEDIA_ENGINE_PRELOAD Preload) + IMFMediaEngine::SetPreload +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries how much resource data the media engine has buffered.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the buffered attribute of the HTMLMediaElement interface in HTML5.

    The returned interface represents a list of time ranges. The time ranges indicate which portions of the media resource have been downloaded. The time range list can be empty.

    +
    + + hh447980 + HRESULT IMFMediaEngine::GetBuffered([Out] IMFMediaTimeRange** ppBuffered) + IMFMediaEngine::GetBuffered +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Loads the current media source.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The main purpose of this method is to reload a list of source elements after updating the list. For more information, see SetSourceElements. Otherwise, calling this method is generally not required. To load a new media source, call or .

    The Load method explictly invokes the Media Engine's media resource loading algorithm. Before calling this method, you must set the media resource by calling or .

    This method completes asynchronously. When the Load operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

    If the Media Engine is unable to load the file, the Media Engine sends an event.

    For more information about event handling in the Media Engine, see .

    This method corresponds to the load method of the HTMLMediaElement interface in HTML5.

    +
    + + hh448005 + HRESULT IMFMediaEngine::Load() + IMFMediaEngine::Load +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries how likely it is that the Media Engine can play a specified type of media resource.

    +
    +

    A string that contains a MIME type with an optional codecs parameter, as defined in RFC 4281.

    +

    Receives an enumeration value.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the canPlayType attribute of the HTMLMediaElement interface in HTML5.

    The canPlayType attribute defines the following values.

    ValueDescription
    "" (empty string)The user-agent cannot play the resource, or the resource type is "application/octet-stream".
    "probably"The user-agent probably can play the resource.
    "maybe"Neither of the previous values applies.

    ?

    The value "probably" is used because a MIME type for a media resource is generally not a complete description of the resource. For example, "video/mp4" specifies an MP4 file with video, but does not describe the codec. Even with the optional codecs parameter, the MIME type omits some information, such as the actual coded bit rate. Therefore, it is usually impossible to be certain that playback is possible until the actual media resource is opened.

    +
    + + hh447978 + HRESULT IMFMediaEngine::CanPlayType([In] wchar_t* type,[Out] MF_MEDIA_ENGINE_CANPLAY* pAnswer) + IMFMediaEngine::CanPlayType +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the ready state, which indicates whether the current media resource can be rendered.

    +
    +

    Returns an enumeration value.

    + +

    This method corresponds to the readyState attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447993 + unsigned short IMFMediaEngine::GetReadyState() + IMFMediaEngine::GetReadyState +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine is currently seeking to a new playback position.

    +
    +

    Returns TRUE if the Media Engine is seeking, or otherwise.

    + +

    This method corresponds to the seeking attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448004 + BOOL IMFMediaEngine::IsSeeking() + IMFMediaEngine::IsSeeking +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current playback position.

    +
    +

    Returns the playback position, in seconds.

    + +

    This method corresponds to the currentTime attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447982 + double IMFMediaEngine::GetCurrentTime() + IMFMediaEngine::GetCurrentTime +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Seeks to a new playback position.

    +
    +

    The new playback position, in seconds.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the currentTime attribute of the HTMLMediaElement interface in HTML5.

    The method completes asynchronously. When the seek operation starts, the Media Engine sends an event. When the seek operation completes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

    +
    + + hh448010 + HRESULT IMFMediaEngine::SetCurrentTime([In] double seekTime) + IMFMediaEngine::SetCurrentTime +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the initial playback position.

    +
    +

    Returns the initial playback position, in seconds.

    + +

    This method corresponds to the initialTime attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447995 + double IMFMediaEngine::GetStartTime() + IMFMediaEngine::GetStartTime +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the duration of the media resource.

    +
    +

    Returns the duration, in seconds. If no media data is available, the method returns not-a-number (NaN). If the duration is unbounded, the method returns an infinite value.

    + +

    This method corresponds to the duration attribute of the HTMLMediaElement interface in HTML5.

    If the duration changes, the Media Engine sends an event. See .

    +
    + + hh447984 + double IMFMediaEngine::GetDuration() + IMFMediaEngine::GetDuration +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether playback is currently paused.

    +
    +

    Returns TRUE if playback is paused, or otherwise.

    + +

    This method corresponds to the paused attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448003 + BOOL IMFMediaEngine::IsPaused() + IMFMediaEngine::IsPaused +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the default playback rate.

    +
    +

    Returns the default playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

    + +

    This method corresponds to getting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

    The default playback rate is used for the next call to the method. To change the current playback rate, call .

    +
    + + hh447983 + double IMFMediaEngine::GetDefaultPlaybackRate() + IMFMediaEngine::GetDefaultPlaybackRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the default playback rate.

    +
    +

    The default playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448011 + HRESULT IMFMediaEngine::SetDefaultPlaybackRate([In] double Rate) + IMFMediaEngine::SetDefaultPlaybackRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current playback rate.

    +
    +

    Returns the playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

    + +

    This method corresponds to getting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447990 + double IMFMediaEngine::GetPlaybackRate() + IMFMediaEngine::GetPlaybackRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the current playback rate.

    +
    +

    The playback rate, as a multiple of normal (1?) playback. A negative value indicates reverse playback.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448015 + HRESULT IMFMediaEngine::SetPlaybackRate([In] double Rate) + IMFMediaEngine::SetPlaybackRate +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time ranges that have been rendered.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the played attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447991 + HRESULT IMFMediaEngine::GetPlayed([Out] IMFMediaTimeRange** ppPlayed) + IMFMediaEngine::GetPlayed +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time ranges to which the Media Engine can currently seek.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the seekable attribute of the HTMLMediaElement interface in HTML5.

    To find out whether the media source supports seeking, call .

    +
    + + hh447994 + HRESULT IMFMediaEngine::GetSeekable([Out] IMFMediaTimeRange** ppSeekable) + IMFMediaEngine::GetSeekable +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether playback has ended.

    +
    +

    Returns TRUE if the direction of playback is forward and playback has reached the end of the media resource. Returns otherwise.

    + +

    This method corresponds to the ended attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448002 + BOOL IMFMediaEngine::IsEnded() + IMFMediaEngine::IsEnded +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine automatically begins playback.

    +
    +

    Returns TRUE if the Media Engine automatically begins playback, or otherwise.

    + +

    This method corresponds to the autoplay attribute of the HTMLMediaElement interface in HTML5.

    If this method returns TRUE, playback begins automatically after the method completes. Otherwise, playback begins when the application calls .

    +
    + + hh447979 + BOOL IMFMediaEngine::GetAutoPlay() + IMFMediaEngine::GetAutoPlay +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies whether the Media Engine automatically begins playback.

    +
    +

    If TRUE, the Media Engine automatically begins playback after it loads a media source. Otherwise, playback does not begin until the application calls .

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to setting the autoplay attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448009 + HRESULT IMFMediaEngine::SetAutoPlay([In] BOOL AutoPlay) + IMFMediaEngine::SetAutoPlay +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine will loop playback.

    +
    +

    Returns TRUE if looping is enabled, or otherwise.

    + +

    This method corresponds to getting the loop attribute of the HTMLMediaElement interface in HTML5.

    If looping is enabled, the Media Engine seeks to the start of the content when playback reaches the end.

    +
    + + hh447986 + BOOL IMFMediaEngine::GetLoop() + IMFMediaEngine::GetLoop +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies whether the Media Engine loops playback.

    +
    +

    Specify TRUE to enable looping, or to disable looping.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If Loop is TRUE, playback loops back to the beginning when it reaches the end of the source.

    This method corresponds to setting the loop attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448013 + HRESULT IMFMediaEngine::SetLoop([In] BOOL Loop) + IMFMediaEngine::SetLoop +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Starts playback.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the play method of the HTMLMediaElement interface in HTML5.

    The method completes asynchronously. When the operation starts, the Media Engine sends an event. When playback is under way, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

    +
    + + hh448008 + HRESULT IMFMediaEngine::Play() + IMFMediaEngine::Play +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Pauses playback.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the pause method of the HTMLMediaElement interface in HTML5.

    The method completes asynchronously. When the transition to paused is complete, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

    +
    + + hh448007 + HRESULT IMFMediaEngine::Pause() + IMFMediaEngine::Pause +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the audio is muted.

    +
    +

    Returns TRUE if the audio is muted, or otherwise.

    + + hh447987 + BOOL IMFMediaEngine::GetMuted() + IMFMediaEngine::GetMuted +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Mutes or unmutes the audio.

    +
    +

    Specify TRUE to mute the audio, or to unmute the audio.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448014 + HRESULT IMFMediaEngine::SetMuted([In] BOOL Muted) + IMFMediaEngine::SetMuted +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the audio volume level.

    +
    +

    Returns the volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).

    + + hh447997 + double IMFMediaEngine::GetVolume() + IMFMediaEngine::GetVolume +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the audio volume level.

    +
    +

    The volume level. Volume is expressed as an attenuation level, where 0.0 indicates silence and 1.0 indicates full volume (no attenuation).

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When the audio balance changes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

    +
    + + hh448019 + HRESULT IMFMediaEngine::SetVolume([In] double Volume) + IMFMediaEngine::SetVolume +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the current media resource contains a video stream.

    +
    +

    Returns TRUE if the current media resource contains a video stream. Returns if there is no media resource or the media resource does not contain a video stream.

    + + hh448001 + BOOL IMFMediaEngine::HasVideo() + IMFMediaEngine::HasVideo +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the current media resource contains an audio stream.

    +
    +

    Returns TRUE if the current media resource contains an audio stream. Returns if there is no media resource or the media resource does not contain an audio stream.

    + + hh447998 + BOOL IMFMediaEngine::HasAudio() + IMFMediaEngine::HasAudio +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the size of the video frame, adjusted for aspect ratio.

    +
    +

    Receives the width in pixels.

    +

    Receives the height in pixels.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method adjusts for the correct picture aspect ratio. + For example, if the encoded frame is 720 ? 420 and the picture aspect ratio is 4:3, the method will return a size equal to 640 ? 480 pixels.

    +
    + + hh447988 + HRESULT IMFMediaEngine::GetNativeVideoSize([Out, Optional] unsigned int* cx,[Out, Optional] unsigned int* cy) + IMFMediaEngine::GetNativeVideoSize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the picture aspect ratio of the video stream.

    +
    +

    Receives the x component of the aspect ratio.

    +

    Receives the y component of the aspect ratio.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The Media Engine automatically converts the pixel aspect ratio to 1:1 (square pixels).

    +
    + + hh447996 + HRESULT IMFMediaEngine::GetVideoAspectRatio([Out, Optional] unsigned int* cx,[Out, Optional] unsigned int* cy) + IMFMediaEngine::GetVideoAspectRatio +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Shuts down the Media Engine and releases the resources it is using.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448020 + HRESULT IMFMediaEngine::Shutdown() + IMFMediaEngine::Shutdown +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Copies the current video frame to a DXGI surface or WIC bitmap.

    +
    +

    A reference to the interface of the destination surface.

    +

    A reference to an structure that specifies the source rectangle.

    +

    A reference to a structure that specifies the destination rectangle.

    +

    A reference to an structure that specifies the border color.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    In frame-server mode, call this method to blit the video frame to a DXGI or WIC surface. The application can call this method at any time after the Media Engine loads a video resource. Typically, however, the application calls first, to determine whether a new frame is available. If OnVideoStreamTick returns , the application then calls TransferVideoFrame.

    The Media Engine scales and letterboxes the video to fit the destination rectangle. It fills the letterbox area with the border color.

    For protected content, call the IMFMediaEngineProtectedContent::TransferVideoFrame method instead of this method.

    +
    + + hh448021 + HRESULT IMFMediaEngine::TransferVideoFrame([In] IUnknown* pDstSurf,[In, Optional] const MFVideoNormalizedRect* pSrc,[In] const RECT* pDst,[In, Optional] const MFARGB* pBorderClr) + IMFMediaEngine::TransferVideoFrame +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the Media Engine to find out whether a new video frame is ready.

    +
    +

    If a new frame is ready, receives the presentation time of the frame.

    +

    This method can return one of these values.

    Return codeDescription
    S_FALSE

    The method succeeded, but the Media Engine does not have a new frame.

    A new video frame is ready for display.

    ?

    + +

    In frame-server mode, the application should call this method whenever a vertical blank occurs in the display device. If the method returns , call to blit the frame to the render target. If the method returns S_FALSE, wait for the next vertical blank and call the method again.

    Do not call this method in rendering mode or audio-only mode.

    +
    + + hh448006 + HRESULT IMFMediaEngine::OnVideoStreamTick([Out] longlong* pPts) + IMFMediaEngine::OnVideoStreamTick +
    + + + Initializes an instance of the class. + + + + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the Media Engine to find out whether a new video frame is ready.

    +
    +

    If a new frame is ready, receives the presentation time of the frame.

    + true if new video frame is ready for display. + +

    In frame-server mode, the application should call this method whenever a vertical blank occurs in the display device. If the method returns , call to blit the frame to the render target. If the method returns S_FALSE, wait for the next vertical blank and call the method again.

    Do not call this method in rendering mode or audio-only mode.

    +
    + hh448006 + HRESULT IMFMediaEngine::OnVideoStreamTick([Out] longlong* pPts) + IMFMediaEngine::OnVideoStreamTick +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the most recent error status.

    +
    + +

    This method returns the last error status, if any, that resulted from loading the media source. If there has not been an error, ppError receives the value null.

    This method corresponds to the error attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447985 + GetError + GetError + HRESULT IMFMediaEngine::GetError([Out] IMFMediaError** ppError) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the current error code.

    +
    + + hh448012 + SetErrorCode + SetErrorCode + HRESULT IMFMediaEngine::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets a list of media sources.

    +
    + +

    This method corresponds to adding a list of source elements to a media element in HTML5.

    The Media Engine tries to load each item in the pSrcElements list, until it finds one that loads successfully. After this method is called, the application can use the interface to update the list at any time. To reload the list, call .

    This method completes asynchronously. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

    If the Media Engine is unable to load a URL, it sends an event.

    For more information about event handling in the Media Engine, see .

    If the application also calls , the URL passed to SetSource takes precedence over the list given to SetSourceElements.

    +
    + + hh448018 + SetSourceElements + SetSourceElements + HRESULT IMFMediaEngine::SetSourceElements([In] IMFMediaEngineSrcElements* pSrcElements) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the URL of a media resource.

    +
    + +

    This method corresponds to setting the src attribute of the HTMLMediaElement interface in HTML5.

    The URL specified by this method takes precedence over media resources specified in the method. To load the URL, call .

    This method asynchronously loads the URL. When the operation starts, the Media Engine sends an event. If no errors occur during the Load operation, several other events are generated, including the following.

    If the Media Engine is unable to load the URL, the Media Engine sends an event.

    For more information about event handling in the Media Engine, see .

    +
    + + hh448017 + SetSource + SetSource + HRESULT IMFMediaEngine::SetSource([In] wchar_t* pUrl) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current network state of the media engine.

    +
    + +

    This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447989 + GetNetworkState + GetNetworkState + unsigned short IMFMediaEngine::GetNetworkState() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the preload flag.

    +
    + +

    This method corresponds to the preload attribute of the HTMLMediaElement interface in HTML5. The value is a hint to the user-agent whether to preload the media resource.

    +
    + + hh447992 + GetPreload / SetPreload + GetPreload + MF_MEDIA_ENGINE_PRELOAD IMFMediaEngine::GetPreload() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries how much resource data the media engine has buffered.

    +
    + +

    This method corresponds to the buffered attribute of the HTMLMediaElement interface in HTML5.

    The returned interface represents a list of time ranges. The time ranges indicate which portions of the media resource have been downloaded. The time range list can be empty.

    +
    + + hh447980 + GetBuffered + GetBuffered + HRESULT IMFMediaEngine::GetBuffered([Out] IMFMediaTimeRange** ppBuffered) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the ready state, which indicates whether the current media resource can be rendered.

    +
    + +

    This method corresponds to the readyState attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447993 + GetReadyState + GetReadyState + unsigned short IMFMediaEngine::GetReadyState() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine is currently seeking to a new playback position.

    +
    + +

    This method corresponds to the seeking attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448004 + IsSeeking + IsSeeking + BOOL IMFMediaEngine::IsSeeking() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current playback position.

    +
    + +

    This method corresponds to the currentTime attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447982 + GetCurrentTime / SetCurrentTime + GetCurrentTime + double IMFMediaEngine::GetCurrentTime() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the initial playback position.

    +
    + +

    This method corresponds to the initialTime attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447995 + GetStartTime + GetStartTime + double IMFMediaEngine::GetStartTime() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the duration of the media resource.

    +
    + +

    This method corresponds to the duration attribute of the HTMLMediaElement interface in HTML5.

    If the duration changes, the Media Engine sends an event. See .

    +
    + + hh447984 + GetDuration + GetDuration + double IMFMediaEngine::GetDuration() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether playback is currently paused.

    +
    + +

    This method corresponds to the paused attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448003 + IsPaused + IsPaused + BOOL IMFMediaEngine::IsPaused() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the default playback rate.

    +
    + +

    This method corresponds to getting the defaultPlaybackRate attribute of the HTMLMediaElement interface in HTML5.

    The default playback rate is used for the next call to the method. To change the current playback rate, call .

    +
    + + hh447983 + GetDefaultPlaybackRate / SetDefaultPlaybackRate + GetDefaultPlaybackRate + double IMFMediaEngine::GetDefaultPlaybackRate() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current playback rate.

    +
    + +

    This method corresponds to getting the playbackRate attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447990 + GetPlaybackRate / SetPlaybackRate + GetPlaybackRate + double IMFMediaEngine::GetPlaybackRate() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time ranges that have been rendered.

    +
    + +

    This method corresponds to the played attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447991 + GetPlayed + GetPlayed + HRESULT IMFMediaEngine::GetPlayed([Out] IMFMediaTimeRange** ppPlayed) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time ranges to which the Media Engine can currently seek.

    +
    + +

    This method corresponds to the seekable attribute of the HTMLMediaElement interface in HTML5.

    To find out whether the media source supports seeking, call .

    +
    + + hh447994 + GetSeekable + GetSeekable + HRESULT IMFMediaEngine::GetSeekable([Out] IMFMediaTimeRange** ppSeekable) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether playback has ended.

    +
    + +

    This method corresponds to the ended attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh448002 + IsEnded + IsEnded + BOOL IMFMediaEngine::IsEnded() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine automatically begins playback.

    +
    + +

    This method corresponds to the autoplay attribute of the HTMLMediaElement interface in HTML5.

    If this method returns TRUE, playback begins automatically after the method completes. Otherwise, playback begins when the application calls .

    +
    + + hh447979 + GetAutoPlay / SetAutoPlay + GetAutoPlay + BOOL IMFMediaEngine::GetAutoPlay() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine will loop playback.

    +
    + +

    This method corresponds to getting the loop attribute of the HTMLMediaElement interface in HTML5.

    If looping is enabled, the Media Engine seeks to the start of the content when playback reaches the end.

    +
    + + hh447986 + GetLoop / SetLoop + GetLoop + BOOL IMFMediaEngine::GetLoop() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the audio is muted.

    +
    + + hh447987 + GetMuted / SetMuted + GetMuted + BOOL IMFMediaEngine::GetMuted() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the audio volume level.

    +
    + + hh447997 + GetVolume / SetVolume + GetVolume + double IMFMediaEngine::GetVolume() +
    + + + Media engine playback event. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Notifies the application when a playback event occurs.

    +
    + + hh447963 + IMFMediaEngineNotify + IMFMediaEngineNotify +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Notifies the application when a playback event occurs.

    +
    +

    A member of the enumeration that specifies the event.

    +

    The first event parameter. The meaning of this parameter depends on the event code.

    +

    The second event parameter. The meaning of this parameter depends on the event code.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + hh447963 + HRESULT IMFMediaEngineNotify::EventNotify([In] unsigned int event,[In] ULONG_PTR param1,[In] unsigned int param2) + IMFMediaEngineNotify::EventNotify +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Opens a media resource from a byte stream.

    +
    +

    A reference to the interface of the byte stream.

    +

    The URL of the byte stream.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + hh447956 + HRESULT IMFMediaEngineEx::SetSourceFromByteStream([In] IMFByteStream* pByteStream,[In] wchar_t* pURL) + IMFMediaEngineEx::SetSourceFromByteStream +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Opens a media resource from a byte stream.

    +
    +

    A reference to the interface of the byte stream.

    +

    The URL of the byte stream.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447956 + HRESULT IMFMediaEngineEx::SetSourceFromByteStream([In] IMFByteStream* pByteStream,[In] void* pURL) + IMFMediaEngineEx::SetSourceFromByteStream +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a playback statistic from the Media Engine.

    +
    +

    A member of the enumeration that identifies the statistic to get.

    +

    A reference to a that receives the statistic. The data type and meaning of this value depends on the value of StatisticID. The caller must free the by calling PropVariantClear.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447940 + HRESULT IMFMediaEngineEx::GetStatistics([In] MF_MEDIA_ENGINE_STATISTIC StatisticID,[Out] PROPVARIANT* pStatistic) + IMFMediaEngineEx::GetStatistics +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Updates the source rectangle, destination rectangle, and border color for the video.

    +
    +

    A reference to an structure that specifies the source rectangle. The source rectangle defines the area of the video frame that is displayed. If this parameter is null, the entire video frame is displayed.

    +

    A reference to a structure that specifies the destination rectangle. The destination rectangle defines the area of the window or DirectComposition visual where the video is drawn.

    +

    A reference to an structure that specifies the border color.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    In rendering mode, call this method to reposition the video, update the border color, or repaint the video frame. If all of the parameters are null, the method repaints the most recent video frame.

    In frame-server mode, this method has no effect.

    +
    + + hh447961 + HRESULT IMFMediaEngineEx::UpdateVideoStream([In, Optional] const MFVideoNormalizedRect* pSrc,[In, Optional] const RECT* pDst,[In, Optional] const MFARGB* pBorderClr) + IMFMediaEngineEx::UpdateVideoStream +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the audio balance.

    +
    +

    Returns the balance. The value can be any number in the following range (inclusive).

    Return valueDescription
    -1

    The left channel is at full volume; the right channel is silent.

    1

    The right channel is at full volume; the left channel is silent.

    ?

    If the value is zero, the left and right channels are at equal volumes. The default value is zero.

    + + hh447934 + double IMFMediaEngineEx::GetBalance() + IMFMediaEngineEx::GetBalance +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the audio balance.

    +
    +

    The audio balance. The value can be any number in the following range (inclusive).

    ValueMeaning
    -1

    The left channel is at full volume; the right channel is silent.

    1

    The right channel is at full volume; the left channel is silent.

    ?

    If the value is zero, the left and right channels are at equal volumes. The default value is zero.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When the audio balance changes, the Media Engine sends an event. See IMFMediaEventNotify::EventNotify.

    +
    + + hh447954 + HRESULT IMFMediaEngineEx::SetBalance([In] double balance) + IMFMediaEngineEx::SetBalance +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Engine can play at a specified playback rate.

    +
    +

    The requested playback rate.

    +

    Returns TRUE if the playback rate is supported, or otherwise.

    + +

    Playback rates are expressed as a ratio of the current rate to the normal rate. For example, 1.0 is normal playback speed, 0.5 is half speed, and 2.0 is 2? speed. Positive values mean forward playback, and negative values mean reverse playback.

    The results of this method can vary depending on the media resource that is currently loaded. Some media formats might support faster playback rates than others. Also, some formats might not support reverse play.

    +
    + + hh447949 + BOOL IMFMediaEngineEx::IsPlaybackRateSupported([In] double rate) + IMFMediaEngineEx::IsPlaybackRateSupported +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Steps forward or backward one frame.

    +
    +

    Specify TRUE to step forward or to step backward.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The frame-step direction is independent of the current playback direction.

    This method completes asynchronously. When the operation completes, the Media Engine sends an event and enters the paused state.

    +
    + + hh447933 + HRESULT IMFMediaEngineEx::FrameStep([In] BOOL Forward) + IMFMediaEngineEx::FrameStep +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets various flags that describe the media resource.

    +
    +

    Receives a bitwise OR of zero or more flags. The following flags are defined.

    ValueMeaning
    0x00000001

    The media resource represents a live data source, such as a video camera. If playback is stopped and then restarted, there will be a gap in the content.

    0x00000002

    The media resource supports seeking. To get the seekable range, call .

    0x00000003

    The media resource can be paused.

    0x00000004

    Seeking this resource can take a long time. For example, it might download through HTTP.

    ?

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447939 + HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] RESOURCE_CHARACTERISTICS* pCharacteristics) + IMFMediaEngineEx::GetResourceCharacteristics +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a presentation attribute from the media resource.

    +
    +

    The attribute to query. For a list of presentation attributes, see Presentation Descriptor Attributes.

    +

    A reference to a that receives the value. The method fills the with a copy of the stored value. The caller must free the by calling PropVariantClear.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447938 + HRESULT IMFMediaEngineEx::GetPresentationAttribute([In] const GUID& guidMFAttribute,[Out] PROPVARIANT* pvValue) + IMFMediaEngineEx::GetPresentationAttribute +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of streams in the media resource.

    +
    +

    Receives the number of streams.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447937 + HRESULT IMFMediaEngineEx::GetNumberOfStreams([Out] unsigned int* pdwStreamCount) + IMFMediaEngineEx::GetNumberOfStreams +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets a stream-level attribute from the media resource.

    +
    +

    The zero-based index of the stream. To get the number of streams, call .

    +

    The attribute to query. Possible values are listed in the following topics:

    • Stream Descriptor Attributes
    • Media Type Attributes
    +

    A reference to a that receives the value. The method fills the with a copy of the stored value. Call PropVariantClear to free the memory allocated by the method.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447943 + HRESULT IMFMediaEngineEx::GetStreamAttribute([In] unsigned int dwStreamIndex,[In] const GUID& guidMFAttribute,[Out] PROPVARIANT* pvValue) + IMFMediaEngineEx::GetStreamAttribute +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether a stream is selected to play.

    +
    +

    The zero-based index of the stream. To get the number of streams, call .

    +

    Receives a Boolean value.

    ValueMeaning
    TRUE

    The stream is selected. During playback, this stream will play.

    The stream is not selected. During playback, this stream will not play.

    ?

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447944 + HRESULT IMFMediaEngineEx::GetStreamSelection([In] unsigned int dwStreamIndex,[Out] BOOL* pEnabled) + IMFMediaEngineEx::GetStreamSelection +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Selects or deselects a stream for playback.

    +
    +

    The zero-based index of the stream. To get the number of streams, call .

    +

    Specifies whether to select or deselect the stream.

    ValueMeaning
    TRUE

    The stream is selected. During playback, this stream will play.

    The stream is not selected. During playback, this stream will not play.

    ?

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447959 + HRESULT IMFMediaEngineEx::SetStreamSelection([In] unsigned int dwStreamIndex,[In] BOOL Enabled) + IMFMediaEngineEx::SetStreamSelection +
    + + + No documentation. + + No documentation. + + HRESULT IMFMediaEngineEx::ApplyStreamSelections() + IMFMediaEngineEx::ApplyStreamSelections + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the media resource contains protected content.

    +
    +

    Receives the value TRUE if the media resource contains protected content, or otherwise.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447950 + HRESULT IMFMediaEngineEx::IsProtected([Out] BOOL* pProtected) + IMFMediaEngineEx::IsProtected +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Inserts a video effect.

    +
    +

    One of the following:

    • A reference to the interface of a Media Foundation transform (MFT) that implements the video effect.
    • A reference to the interface of an activation object. The activation object must create an MFT for the video effect.
    +

    Specifies whether the effect is optional.

    ValueMeaning
    TRUE

    The effect is optional. If the Media Engine cannot add the effect, it ignores the effect and continues playback.

    The effect is required. If the Media Engine object cannot add the effect, a playback error occurs.

    ?

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    MF_E_INVALIDREQUEST

    The maximum number of video effects was reached.

    ?

    + +

    The effect is applied when the next media resource is loaded.

    +
    + + hh447948 + HRESULT IMFMediaEngineEx::InsertVideoEffect([In] IUnknown* pEffect,[In] BOOL fOptional) + IMFMediaEngineEx::InsertVideoEffect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Inserts an audio effect.

    +
    +

    One of the following:

    • A reference to the interface of a Media Foundation transform (MFT) that implements the audio effect.
    • A reference to the interface of an activation object. The activation object must create an MFT for the audio effect.
    +

    Specifies whether the effect is optional.

    ValueMeaning
    TRUE

    The effect is optional. If the Media Engine cannot add the effect, it ignores the effect and continues playback.

    The effect is required. If the Media Engine object cannot add the effect, a playback error occurs.

    ?

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    MF_E_INVALIDREQUEST

    The maximum number of audio effects was reached.

    ?

    + +

    The effect is applied when the next media resource is loaded.

    +
    + + hh447947 + HRESULT IMFMediaEngineEx::InsertAudioEffect([In] IUnknown* pEffect,[In] BOOL fOptional) + IMFMediaEngineEx::InsertAudioEffect +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Removes all audio and effects.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method to remove all of the effects that were added with the IMFMediaEngineEx::InsertEffect method.

    +
    + + hh447952 + HRESULT IMFMediaEngineEx::RemoveAllEffects() + IMFMediaEngineEx::RemoveAllEffects +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies a presentation time when the Media Engine will send a marker event.

    +
    +

    The presentation time for the marker event, in seconds.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When playback reaches the time specified by timeToFire, the Media Engine sends an event through the method. Calling this method cancels any previous marker that is still pending.

    If the application seeks past the marker point, the Media Engine cancels the marker and does not send the event.

    During forward playback, set timeToFire to a value greater than the current playback position. During reverse playback, set timeToFire to a value less than the playback position.

    To cancel a marker, call .

    +
    + + hh447960 + HRESULT IMFMediaEngineEx::SetTimelineMarkerTimer([In] double timeToFire) + IMFMediaEngineEx::SetTimelineMarkerTimer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time of the next timeline marker, if any.

    +
    +

    Receives the marker time, in seconds. If no marker is set, this parameter receives the value NaN.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447945 + HRESULT IMFMediaEngineEx::GetTimelineMarkerTimer([Out] double* pTimeToFire) + IMFMediaEngineEx::GetTimelineMarkerTimer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Cancels the next pending timeline marker.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method to cancel the method.

    +
    + + hh447929 + HRESULT IMFMediaEngineEx::CancelTimelineMarkerTimer() + IMFMediaEngineEx::CancelTimelineMarkerTimer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the media resource contains stereoscopic 3D video.

    +
    +

    Returns TRUE if the media resource contains 3D video, or otherwise.

    + + hh447951 + BOOL IMFMediaEngineEx::IsStereo3D() + IMFMediaEngineEx::IsStereo3D +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, gets the layout of the two views within a video frame.

    +
    +

    Receives a member of the enumeration.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447941 + HRESULT IMFMediaEngineEx::GetStereo3DFramePackingMode([Out] MF_MEDIA_ENGINE_S3D_PACKING_MODE* packMode) + IMFMediaEngineEx::GetStereo3DFramePackingMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, sets the layout of the two views within a video frame.

    +
    +

    A member of the enumeration that specifies the layout. The two views can be arranged side-by-side, or top-to-bottom.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447957 + HRESULT IMFMediaEngineEx::SetStereo3DFramePackingMode([In] MF_MEDIA_ENGINE_S3D_PACKING_MODE packMode) + IMFMediaEngineEx::SetStereo3DFramePackingMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, queries how the Media Engine renders the 3D video content.

    +
    +

    Receives a member of the enumeration.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447942 + HRESULT IMFMediaEngineEx::GetStereo3DRenderMode([Out] MF3DVideoOutputType* outputType) + IMFMediaEngineEx::GetStereo3DRenderMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, specifies how the Media Engine renders the 3D video content.

    +
    +

    A member of the enumeration that specifies the 3D video rendering mode.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447958 + HRESULT IMFMediaEngineEx::SetStereo3DRenderMode([In] MF3DVideoOutputType outputType) + IMFMediaEngineEx::SetStereo3DRenderMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Enables or disables windowless swap-chain mode.

    +
    +

    If TRUE, windowless swap-chain mode is enabled.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    In windowless swap-chain mode, the Media Engine creates a windowless swap chain and presents video frames to the swap chain. To render the video, call to get a handle to the swap chain, and then associate the handle with a Microsoft DirectComposition visual.

    +
    + + hh447932 + HRESULT IMFMediaEngineEx::EnableWindowlessSwapchainMode([In] BOOL fEnable) + IMFMediaEngineEx::EnableWindowlessSwapchainMode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the windowless swap chain.

    +
    +

    Receives a handle to the swap chain.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    To enable windowless swap-chain mode, call .

    +
    + + hh447946 + HRESULT IMFMediaEngineEx::GetVideoSwapchainHandle([Out] void** phSwapchain) + IMFMediaEngineEx::GetVideoSwapchainHandle +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Enables or disables mirroring of the video.

    +
    +

    If TRUE, the video is mirrored horizontally. Otherwise, the video is displayed normally.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447931 + HRESULT IMFMediaEngineEx::EnableHorizontalMirrorMode([In] BOOL fEnable) + IMFMediaEngineEx::EnableHorizontalMirrorMode +
    + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::GetAudioStreamCategory([Out] unsigned int* pCategory) + IMFMediaEngineEx::GetAudioStreamCategory + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::SetAudioStreamCategory([In] unsigned int category) + IMFMediaEngineEx::SetAudioStreamCategory + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::GetAudioEndpointRole([Out] unsigned int* pRole) + IMFMediaEngineEx::GetAudioEndpointRole + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::SetAudioEndpointRole([In] unsigned int role) + IMFMediaEngineEx::SetAudioEndpointRole + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::GetRealTimeMode([Out] BOOL* pfEnabled) + IMFMediaEngineEx::GetRealTimeMode + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::SetRealTimeMode([In] BOOL fEnable) + IMFMediaEngineEx::SetRealTimeMode + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::SetCurrentTimeEx([In] double seekTime,[In] MF_MEDIA_ENGINE_SEEK_MODE seekMode) + IMFMediaEngineEx::SetCurrentTimeEx + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFMediaEngineEx::EnableTimeUpdateTimer([In] BOOL fEnableTimer) + IMFMediaEngineEx::EnableTimeUpdateTimer + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the audio balance.

    +
    + + hh447934 + GetBalance / SetBalance + GetBalance + double IMFMediaEngineEx::GetBalance() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets various flags that describe the media resource.

    +
    + + hh447939 + GetResourceCharacteristics + GetResourceCharacteristics + HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] RESOURCE_CHARACTERISTICS* pCharacteristics) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of streams in the media resource.

    +
    + + hh447937 + GetNumberOfStreams + GetNumberOfStreams + HRESULT IMFMediaEngineEx::GetNumberOfStreams([Out] unsigned int* pdwStreamCount) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the media resource contains protected content.

    +
    + + hh447950 + IsProtected + IsProtected + HRESULT IMFMediaEngineEx::IsProtected([Out] BOOL* pProtected) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the time of the next timeline marker, if any.

    +
    + + hh447945 + GetTimelineMarkerTimer / SetTimelineMarkerTimer + GetTimelineMarkerTimer + HRESULT IMFMediaEngineEx::GetTimelineMarkerTimer([Out] double* pTimeToFire) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether the media resource contains stereoscopic 3D video.

    +
    + + hh447951 + IsStereo3D + IsStereo3D + BOOL IMFMediaEngineEx::IsStereo3D() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, gets the layout of the two views within a video frame.

    +
    + + hh447941 + GetStereo3DFramePackingMode / SetStereo3DFramePackingMode + GetStereo3DFramePackingMode + HRESULT IMFMediaEngineEx::GetStereo3DFramePackingMode([Out] MF_MEDIA_ENGINE_S3D_PACKING_MODE* packMode) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    For stereoscopic 3D video, queries how the Media Engine renders the 3D video content.

    +
    + + hh447942 + GetStereo3DRenderMode / SetStereo3DRenderMode + GetStereo3DRenderMode + HRESULT IMFMediaEngineEx::GetStereo3DRenderMode([Out] MF3DVideoOutputType* outputType) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets a handle to the windowless swap chain.

    +
    + +

    To enable windowless swap-chain mode, call .

    +
    + + hh447946 + GetVideoSwapchainHandle + GetVideoSwapchainHandle + HRESULT IMFMediaEngineEx::GetVideoSwapchainHandle([Out] void** phSwapchain) +
    + + + No documentation. + + + GetAudioStreamCategory / SetAudioStreamCategory + GetAudioStreamCategory + HRESULT IMFMediaEngineEx::GetAudioStreamCategory([Out] unsigned int* pCategory) + + + + No documentation. + + + GetAudioEndpointRole / SetAudioEndpointRole + GetAudioEndpointRole + HRESULT IMFMediaEngineEx::GetAudioEndpointRole([Out] unsigned int* pRole) + + + + No documentation. + + + GetRealTimeMode / SetRealTimeMode + GetRealTimeMode + HRESULT IMFMediaEngineEx::GetRealTimeMode([Out] BOOL* pfEnabled) + + + + Internal MediaEngineNotify Callback + + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + HRESULT IMFMediaEngineNotify::EventNotify([In] unsigned int event,[In] ULONG_PTR param1,[In] unsigned int param2) + + + +

    Applies to: desktop apps only

    Defines flags for serializing and deserializing attribute stores.

    +
    + + ms704675 + MF_ATTRIBUTE_SERIALIZE_OPTIONS + MF_ATTRIBUTE_SERIALIZE_OPTIONS +
    + + +

    If this flag is set, references in the attribute store are marshaled to and from the stream. If this flag is absent, references in the attribute store are not marshaled or serialized.

    +
    + + ms704675 + MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF + MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF +
    + + +

    Applies to: desktop apps | Metro style apps

    Specifies how to compare the attributes on two objects.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_TYPE + MF_ATTRIBUTES_MATCH_TYPE +
    + + +

    Check whether all the attributes in pThis exist in pTheirs and have the same data, where pThis is the object whose Compare method is being called and pTheirs is the object given in the pTheirs parameter.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_OUR_ITEMS + MF_ATTRIBUTES_MATCH_OUR_ITEMS +
    + + +

    Check whether all the attributes in pTheirs exist in pThis and have the same data, where pThis is the object whose Compare method is being called and pTheirs is the object given in the pTheirs parameter.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_THEIR_ITEMS + MF_ATTRIBUTES_MATCH_THEIR_ITEMS +
    + + +

    Check whether both objects have identical attributes with the same data.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_ALL_ITEMS + MF_ATTRIBUTES_MATCH_ALL_ITEMS +
    + + +

    Check whether the attributes that exist in both objects have the same data.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_INTERSECTION + MF_ATTRIBUTES_MATCH_INTERSECTION +
    + + +

    Find the object with the fewest number of attributes, and check if those attributes exist in the other object and have the same data.

    +
    + + ms703793 + MF_ATTRIBUTES_MATCH_SMALLER + MF_ATTRIBUTES_MATCH_SMALLER +
    + + +

    Applies to: desktop apps | Metro style apps

    Defines the data type for a key/value pair.

    +
    + + ms694854 + MF_ATTRIBUTE_TYPE + MF_ATTRIBUTE_TYPE +
    + + +

    Unsigned 32-bit integer.

    +
    + + ms694854 + MF_ATTRIBUTE_UINT32 + MF_ATTRIBUTE_UINT32 +
    + + +

    Unsigned 64-bit integer.

    +
    + + ms694854 + MF_ATTRIBUTE_UINT64 + MF_ATTRIBUTE_UINT64 +
    + + +

    Floating-point number.

    +
    + + ms694854 + MF_ATTRIBUTE_DOUBLE + MF_ATTRIBUTE_DOUBLE +
    + + +

    value.

    +
    + + ms694854 + MF_ATTRIBUTE_GUID + MF_ATTRIBUTE_GUID +
    + + +

    null-terminated wide-character string.

    +
    + + ms694854 + MF_ATTRIBUTE_STRING + MF_ATTRIBUTE_STRING +
    + + +

    Byte array.

    +
    + + ms694854 + MF_ATTRIBUTE_BLOB + MF_ATTRIBUTE_BLOB +
    + + +

    reference.

    +
    + + ms694854 + MF_ATTRIBUTE_IUNKNOWN + MF_ATTRIBUTE_IUNKNOWN +
    + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MF2DBuffer_LockFlags + MF2DBuffer_LockFlags +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MF2DBuffer_LockFlags_LockTypeMask + MF2DBuffer_LockFlags_LockTypeMask +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MF2DBuffer_LockFlags_Read + MF2DBuffer_LockFlags_Read +
    + + + No documentation. + + + MF2DBuffer_LockFlags_Write + MF2DBuffer_LockFlags_Write + + + + No documentation. + + + MF2DBuffer_LockFlags_ReadWrite + MF2DBuffer_LockFlags_ReadWrite + + + +

    Applies to: desktop apps | Metro style apps

    Specifies the origin for a seek request.

    +
    + + ms702091 + MFBYTESTREAM_SEEK_ORIGIN + MFBYTESTREAM_SEEK_ORIGIN +
    + + +

    The seek position is specified relative to the start of the stream.

    +
    + + ms702091 + msoBegin + msoBegin +
    + + +

    The seek position is specified relative to the current read/write position in the stream.

    +
    + + ms702091 + msoCurrent + msoCurrent +
    + + + No documentation. + + + _DMO_INPUT_DATA_BUFFER_FLAGS + _DMO_INPUT_DATA_BUFFER_FLAGS + + + + No documentation. + + + DMO_INPUT_DATA_BUFFERF_SYNCPOINT + DMO_INPUT_DATA_BUFFERF_SYNCPOINT + + + + No documentation. + + + DMO_INPUT_DATA_BUFFERF_TIME + DMO_INPUT_DATA_BUFFERF_TIME + + + + No documentation. + + + DMO_INPUT_DATA_BUFFERF_TIMELENGTH + DMO_INPUT_DATA_BUFFERF_TIMELENGTH + + + + No documentation. + + + DMO_INPUT_DATA_BUFFERF_DISCONTINUITY + DMO_INPUT_DATA_BUFFERF_DISCONTINUITY + + + + None. + + + None + None + + + +

    Media Foundation transforms (MFTs) are an evolution of the transform model first introduced with DirectX Media Objects (DMOs). This topic summarizes the main ways in which MFTs differ from DMOs. Read this topic if you are already familiar with the DMO interfaces, or if you want to convert an existing DMO into an MFT.

    This topic contains the following sections:

    • Number
    • Format
    • Streaming
      • Allocating Resources
      • Processing Data
      • Flushing
      • Stream Discontinuities
    • Miscellaneous
    • Flags
      • ProcessInput Flags
      • ProcessOutput Flags
      • GetInputStatus Flags
      • GetOutputStatus Flags
      • GetInputStreamInfo Flags
      • GetOutputStreamInfo Flags
      • SetInputType/SetOutputType Flags
    • Error
    • Creating
    • Related
    +
    + + bb250374 + _DMO_INPUT_STATUS_FLAGS + _DMO_INPUT_STATUS_FLAGS +
    + + + No documentation. + + + DMO_INPUT_STATUSF_ACCEPT_DATA + DMO_INPUT_STATUSF_ACCEPT_DATA + + + + None. + + + None + None + + + + No documentation. + + + _DMO_INPUT_STREAM_INFO_FLAGS + _DMO_INPUT_STREAM_INFO_FLAGS + + + + No documentation. + + + DMO_INPUT_STREAMF_WHOLE_SAMPLES + DMO_INPUT_STREAMF_WHOLE_SAMPLES + + + + No documentation. + + + DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER + DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER + + + + No documentation. + + + DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE + DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE + + + + No documentation. + + + DMO_INPUT_STREAMF_HOLDS_BUFFERS + DMO_INPUT_STREAMF_HOLDS_BUFFERS + + + + None. + + + None + None + + + + No documentation. + + + _DMO_OUTPUT_DATA_BUFFER_FLAGS + _DMO_OUTPUT_DATA_BUFFER_FLAGS + + + + No documentation. + + + DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT + DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT + + + + No documentation. + + + DMO_OUTPUT_DATA_BUFFERF_TIME + DMO_OUTPUT_DATA_BUFFERF_TIME + + + + No documentation. + + + DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH + DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH + + + + No documentation. + + + DMO_OUTPUT_DATA_BUFFERF_DISCONTINUITY + DMO_OUTPUT_DATA_BUFFERF_DISCONTINUITY + + + + No documentation. + + + DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE + DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE + + + + None. + + + None + None + + + + No documentation. + + + _DMO_OUTPUT_STREAM_INFO_FLAGS + _DMO_OUTPUT_STREAM_INFO_FLAGS + + + + No documentation. + + + DMO_OUTPUT_STREAMF_WHOLE_SAMPLES + DMO_OUTPUT_STREAMF_WHOLE_SAMPLES + + + + No documentation. + + + DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER + DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER + + + + No documentation. + + + DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE + DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE + + + + No documentation. + + + DMO_OUTPUT_STREAMF_DISCARDABLE + DMO_OUTPUT_STREAMF_DISCARDABLE + + + + No documentation. + + + DMO_OUTPUT_STREAMF_OPTIONAL + DMO_OUTPUT_STREAMF_OPTIONAL + + + + None. + + + None + None + + + + No documentation. + + + _DMO_PROCESS_OUTPUT_FLAGS + _DMO_PROCESS_OUTPUT_FLAGS + + + + No documentation. + + + DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER + DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER + + + + None. + + + None + None + + + + No documentation. + + + _DMO_SET_TYPE_FLAGS + _DMO_SET_TYPE_FLAGS + + + + No documentation. + + + DMO_SET_TYPEF_TEST_ONLY + DMO_SET_TYPEF_TEST_ONLY + + + + No documentation. + + + DMO_SET_TYPEF_CLEAR + DMO_SET_TYPEF_CLEAR + + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries how likely it is that the Media Engine can play a specified type of media resource.

    +
    + +

    This method corresponds to the canPlayType attribute of the HTMLMediaElement interface in HTML5.

    The canPlayType attribute defines the following values.

    ValueDescription
    "" (empty string)The user-agent cannot play the resource, or the resource type is "application/octet-stream".
    "probably"The user-agent probably can play the resource.
    "maybe"Neither of the previous values applies.

    ?

    The value "probably" is used because a MIME type for a media resource is generally not a complete description of the resource. For example, "video/mp4" specifies an MP4 file with video, but does not describe the codec. Even with the optional codecs parameter, the MIME type omits some information, such as the actual coded bit rate. Therefore, it is usually impossible to be certain that playback is possible until the actual media resource is opened.

    +
    + + hh447978 + MF_MEDIA_ENGINE_CANPLAY + MF_MEDIA_ENGINE_CANPLAY +
    + + +

    A string that contains a MIME type with an optional codecs parameter, as defined in RFC 4281.

    +
    + + hh447978 + MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED + MF_MEDIA_ENGINE_CANPLAY_NOT_SUPPORTED +
    + + +

    Receives an enumeration value.

    +
    + + hh447978 + MF_MEDIA_ENGINE_CANPLAY_MAYBE + MF_MEDIA_ENGINE_CANPLAY_MAYBE +
    + + + No documentation. + + + MF_MEDIA_ENGINE_CANPLAY_PROBABLY + MF_MEDIA_ENGINE_CANPLAY_PROBABLY + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains flags for the method.

    +
    + + hh162839 + MF_MEDIA_ENGINE_CREATEFLAGS + MF_MEDIA_ENGINE_CREATEFLAGS +
    + + + No documentation. + + + MF_MEDIA_ENGINE_AUDIOONLY + MF_MEDIA_ENGINE_AUDIOONLY + + + + No documentation. + + + MF_MEDIA_ENGINE_WAITFORSTABLE_STATE + MF_MEDIA_ENGINE_WAITFORSTABLE_STATE + + + + No documentation. + + + MF_MEDIA_ENGINE_FORCEMUTE + MF_MEDIA_ENGINE_FORCEMUTE + + + + No documentation. + + + MF_MEDIA_ENGINE_REAL_TIME_MODE + MF_MEDIA_ENGINE_REAL_TIME_MODE + + + + No documentation. + + + MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS + MF_MEDIA_ENGINE_DISABLE_LOCAL_PLUGINS + + + + No documentation. + + + MF_MEDIA_ENGINE_CREATEFLAGS_MASK + MF_MEDIA_ENGINE_CREATEFLAGS_MASK + + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Defines error status codes for the Media Engine.

    +
    + +

    The values greater than zero correspond to error codes defined for the MediaError object in HTML5.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR + MF_MEDIA_ENGINE_ERR +
    + + +

    No error.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR_NOERROR + MF_MEDIA_ENGINE_ERR_NOERROR +
    + + +

    The process of fetching the media resource was stopped at the user's request.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR_ABORTED + MF_MEDIA_ENGINE_ERR_ABORTED +
    + + +

    A network error occurred while fetching the media resource.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR_NETWORK + MF_MEDIA_ENGINE_ERR_NETWORK +
    + + +

    An error occurred while decoding the media resource.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR_DECODE + MF_MEDIA_ENGINE_ERR_DECODE +
    + + +

    The media resource is not supported.

    +
    + + hh162841 + MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED + MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines event codes for the Media Engine.

    +
    + +

    The application receives Media Engine events through the method. The EventNotify method includes two event parameters, param1 and param2. The meaning of the parameters depends on the event code. If the event description does not list any parameters, ignore the values of param1 and param2.

    Values below 1000 correspond to events defined in HTML 5 for media elements.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT + MF_MEDIA_ENGINE_EVENT +
    + + +

    The Media Engine has started to load the source. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_LOADSTART + MF_MEDIA_ENGINE_EVENT_LOADSTART +
    + + +

    The Media Engine is loading the source.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_PROGRESS + MF_MEDIA_ENGINE_EVENT_PROGRESS +
    + + +

    The Media Engine has suspended a load operation.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_SUSPEND + MF_MEDIA_ENGINE_EVENT_SUSPEND +
    + + +

    The Media Engine cancelled a load operation that was in progress.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_ABORT + MF_MEDIA_ENGINE_EVENT_ABORT +
    + + +

    An error occurred.

    Event ParameterDescription
    param1A member of the enumeration.
    param2An error code, or zero.

    ?

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_ERROR + MF_MEDIA_ENGINE_EVENT_ERROR +
    + + +

    The Media Engine has switched to the state. This can occur when the method is called, or if an error occurs during the Load method. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_EMPTIED + MF_MEDIA_ENGINE_EVENT_EMPTIED +
    + + +

    The Load algorithm is stalled, waiting for data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_STALLED + MF_MEDIA_ENGINE_EVENT_STALLED +
    + + +

    The Media Engine is switching to the playing state. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_PLAY + MF_MEDIA_ENGINE_EVENT_PLAY +
    + + +

    The media engine has paused. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_PAUSE + MF_MEDIA_ENGINE_EVENT_PAUSE +
    + + +

    The Media Engine has loaded enough source data to determine the duration and dimensions of the source.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA + MF_MEDIA_ENGINE_EVENT_LOADEDMETADATA +
    + + +

    The Media Engine has loaded enough data to render some content (for example, a video frame).

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_LOADEDDATA + MF_MEDIA_ENGINE_EVENT_LOADEDDATA +
    + + +

    Playback has stopped because the next frame is not available.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_WAITING + MF_MEDIA_ENGINE_EVENT_WAITING +
    + + +

    Playback has started. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_PLAYING + MF_MEDIA_ENGINE_EVENT_PLAYING +
    + + +

    Playback can start, but the Media Engine might need to stop to buffer more data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_CANPLAY + MF_MEDIA_ENGINE_EVENT_CANPLAY +
    + + +

    The Media Engine can probably play through to the end of the resource, without stopping to buffer data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH + MF_MEDIA_ENGINE_EVENT_CANPLAYTHROUGH +
    + + +

    The Media Engine has started seeking to a new playback position. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_SEEKING + MF_MEDIA_ENGINE_EVENT_SEEKING +
    + + +

    The Media Engine has seeked to a new playback position. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_SEEKED + MF_MEDIA_ENGINE_EVENT_SEEKED +
    + + +

    The playback position has changed. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_TIMEUPDATE + MF_MEDIA_ENGINE_EVENT_TIMEUPDATE +
    + + +

    Playback has reached the end of the source. This event is not sent if the GetLoopis TRUE.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_ENDED + MF_MEDIA_ENGINE_EVENT_ENDED +
    + + +

    The playback rate has changed. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_RATECHANGE + MF_MEDIA_ENGINE_EVENT_RATECHANGE +
    + + +

    The duration of the media source has changed. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE + MF_MEDIA_ENGINE_EVENT_DURATIONCHANGE +
    + + +

    The audio volume changed. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE + MF_MEDIA_ENGINE_EVENT_VOLUMECHANGE +
    + + +

    The output format of the media source has changed.

    Event ParameterDescription
    param1Zero if the video format changed, 1 if the audio format changed.
    param2Zero.

    ?

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_FORMATCHANGE + MF_MEDIA_ENGINE_EVENT_FORMATCHANGE +
    + + +

    The Media Engine flushed any pending events from its queue.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS + MF_MEDIA_ENGINE_EVENT_PURGEQUEUEDEVENTS +
    + + +

    The playback position reached a timeline marker. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER + MF_MEDIA_ENGINE_EVENT_TIMELINE_MARKER +
    + + +

    The audio balance changed. See .

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_BALANCECHANGE + MF_MEDIA_ENGINE_EVENT_BALANCECHANGE +
    + + +

    The Media Engine has finished downloading the source data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE + MF_MEDIA_ENGINE_EVENT_DOWNLOADCOMPLETE +
    + + +

    The media source has started to buffer data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED + MF_MEDIA_ENGINE_EVENT_BUFFERINGSTARTED +
    + + +

    The media source has stopped buffering data.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED + MF_MEDIA_ENGINE_EVENT_BUFFERINGENDED +
    + + +

    The method completed.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED + MF_MEDIA_ENGINE_EVENT_FRAMESTEPCOMPLETED +
    + + +

    The Media Engine's Load algorithm is waiting to start.

    Event ParameterDescription
    param1A handle to a waitable event, of type HANDLE.
    param2Zero.

    ?

    If Media Engine is created with the flag, the Media Engine sends the event at the start of the Load algorithm. The param1 parameter is a handle to a waitable event. The Load thread waits for the application to signal the event by calling SetEvent.

    If the Media Engine is not created with the , it does not send this event, and the Load thread does not wait to be signalled.

    +
    + + hh162842 + MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE + MF_MEDIA_ENGINE_EVENT_NOTIFYSTABLESTATE +
    + + + No documentation. + + + MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY + MF_MEDIA_ENGINE_EVENT_FIRSTFRAMEREADY + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the current network state of the media engine.

    +
    + +

    This method corresponds to the networkState attribute of the HTMLMediaElement interface in HTML5.

    +
    + + hh447989 + MF_MEDIA_ENGINE_NETWORK + MF_MEDIA_ENGINE_NETWORK +
    + + + No documentation. + + + MF_MEDIA_ENGINE_NETWORK_EMPTY + MF_MEDIA_ENGINE_NETWORK_EMPTY + + + + No documentation. + + + MF_MEDIA_ENGINE_NETWORK_IDLE + MF_MEDIA_ENGINE_NETWORK_IDLE + + + + No documentation. + + + MF_MEDIA_ENGINE_NETWORK_LOADING + MF_MEDIA_ENGINE_NETWORK_LOADING + + + + No documentation. + + + MF_MEDIA_ENGINE_NETWORK_NO_SOURCE + MF_MEDIA_ENGINE_NETWORK_NO_SOURCE + + + +

    Applies to: desktop apps only

    Describes the conversion matrices between Y'PbPr (component video) and studio R'G'B'. These flags are used in the DXVA2_ExtendedFormat structure.

    +
    + +

    The transfer matrices are defined as follows.

    BT.709 transfer matrices:

    Y' 0.212600 0.715200 0.072200 R' + Pb = -0.114572 -0.385428 0.500000 x G' + Pr 0.500000 -0.454153 -0.045847 B' R' 1.000000 0.000000 1.574800 Y' + G' = 1.000000 -0.187324 -0.468124 x Pb + B' 1.000000 1.855600 0.000000 Pr +

    BT.601 transfer matrices:

    Y' 0.299000 0.587000 0.114000 R' + Pb = -0.168736 -0.331264 0.500000 x G' + Pr 0.500000 -0.418688 -0.081312 B' R' 1.000000 0.000000 1.402000 Y' + G' = 1.000000 -0.344136 -0.714136 x Pb + B' 1.000000 1.772000 0.000000 Pr +

    SMPTE 240M (SMPTE RP 145) transfer matrices:

    Y' 0.212000 0.701000 0.087000 R' + Pb = -0.116000 -0.384000 0.500000 x G' + Pr 0.500000 -0.445000 -0.055000 B' R' 1.000000 -0.000000 1.576000 Y' + G' = 1.000000 -0.227000 -0.477000 x Pb + B' 1.000000 1.826000 0.000000 Pr +

    This enumeration is equivalent to the DXVA_VideoTransferMatrix enumeration used in DXVA 1.0.

    If you are using the interface to describe the video format, the video transfer matrix is specified in the attribute.

    +
    + + ms698715 + MF_MEDIA_ENGINE_PRELOAD + MF_MEDIA_ENGINE_PRELOAD +
    + + + No documentation. + + + MF_MEDIA_ENGINE_PRELOAD_MISSING + MF_MEDIA_ENGINE_PRELOAD_MISSING + + + + No documentation. + + + MF_MEDIA_ENGINE_PRELOAD_EMPTY + MF_MEDIA_ENGINE_PRELOAD_EMPTY + + + + No documentation. + + + MF_MEDIA_ENGINE_PRELOAD_NONE + MF_MEDIA_ENGINE_PRELOAD_NONE + + + + No documentation. + + + MF_MEDIA_ENGINE_PRELOAD_METADATA + MF_MEDIA_ENGINE_PRELOAD_METADATA + + + + No documentation. + + + MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC + MF_MEDIA_ENGINE_PRELOAD_AUTOMATIC + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Contains flags that specify whether the Media Engine will play protected content, and whether the Media Engine will use the Protected Media Path (PMP).

    +
    + +

    These flags are used with the attribute.

    +
    + + hh162852 + MF_MEDIA_ENGINE_PROTECTION_FLAGS + MF_MEDIA_ENGINE_PROTECTION_FLAGS +
    + + + No documentation. + + + MF_MEDIA_ENGINE_ENABLE_PROTECTED_CONTENT + MF_MEDIA_ENGINE_ENABLE_PROTECTED_CONTENT + + + + No documentation. + + + MF_MEDIA_ENGINE_USE_PMP_FOR_ALL_CONTENT + MF_MEDIA_ENGINE_USE_PMP_FOR_ALL_CONTENT + + + + No documentation. + + + MF_MEDIA_ENGINE_USE_UNPROTECTED_PMP + MF_MEDIA_ENGINE_USE_UNPROTECTED_PMP + + + + None. + + + None + None + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Defines ready-state values for the Media Engine.

    +
    + +

    These values correspond to constants defined for the HTMLMediaElement.readyState attribute in HTML5.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY + MF_MEDIA_ENGINE_READY +
    + + +

    No data is available.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY_HAVE_NOTHING + MF_MEDIA_ENGINE_READY_HAVE_NOTHING +
    + + +

    Some metadata is available, including the duration and, for video files, the video dimensions. No media data is available.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY_HAVE_METADATA + MF_MEDIA_ENGINE_READY_HAVE_METADATA +
    + + +

    There is media data for the current playback position, but not enough data for playback or seeking.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA + MF_MEDIA_ENGINE_READY_HAVE_CURRENT_DATA +
    + + +

    There is enough media data to enable some playback or seeking. The amount of data might be a little as the next video frame.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA + MF_MEDIA_ENGINE_READY_HAVE_FUTURE_DATA +
    + + +

    There is enough data to play the resource, based on the current rate at which the resource is being fetched.

    +
    + + hh162853 + MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA + MF_MEDIA_ENGINE_READY_HAVE_ENOUGH_DATA +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Specifies the layout for a packed 3D video frame.

    +
    + + hh162854 + MF_MEDIA_ENGINE_S3D_PACKING_MODE + MF_MEDIA_ENGINE_S3D_PACKING_MODE +
    + + +

    None.

    +
    + + hh162854 + MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE + MF_MEDIA_ENGINE_S3D_PACKING_MODE_NONE +
    + + +

    The views are packed side-by-side in a single frame.

    +
    + + hh162854 + MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE + MF_MEDIA_ENGINE_S3D_PACKING_MODE_SIDE_BY_SIDE +
    + + +

    The views are packed top-to-bottom in a single frame.

    +
    + + hh162854 + MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM + MF_MEDIA_ENGINE_S3D_PACKING_MODE_TOP_BOTTOM +
    + + + No documentation. + + + MF_MEDIA_ENGINE_SEEK_MODE + MF_MEDIA_ENGINE_SEEK_MODE + + + + No documentation. + + + MF_MEDIA_ENGINE_SEEK_MODE_NORMAL + MF_MEDIA_ENGINE_SEEK_MODE_NORMAL + + + + No documentation. + + + MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE + MF_MEDIA_ENGINE_SEEK_MODE_APPROXIMATE + + + +

    Applies to: desktop apps only

    Describes the conversion matrices between Y'PbPr (component video) and studio R'G'B'. These flags are used in the DXVA2_ExtendedFormat structure.

    +
    + +

    The transfer matrices are defined as follows.

    BT.709 transfer matrices:

    Y' 0.212600 0.715200 0.072200 R' + Pb = -0.114572 -0.385428 0.500000 x G' + Pr 0.500000 -0.454153 -0.045847 B' R' 1.000000 0.000000 1.574800 Y' + G' = 1.000000 -0.187324 -0.468124 x Pb + B' 1.000000 1.855600 0.000000 Pr +

    BT.601 transfer matrices:

    Y' 0.299000 0.587000 0.114000 R' + Pb = -0.168736 -0.331264 0.500000 x G' + Pr 0.500000 -0.418688 -0.081312 B' R' 1.000000 0.000000 1.402000 Y' + G' = 1.000000 -0.344136 -0.714136 x Pb + B' 1.000000 1.772000 0.000000 Pr +

    SMPTE 240M (SMPTE RP 145) transfer matrices:

    Y' 0.212000 0.701000 0.087000 R' + Pb = -0.116000 -0.384000 0.500000 x G' + Pr 0.500000 -0.445000 -0.055000 B' R' 1.000000 -0.000000 1.576000 Y' + G' = 1.000000 -0.227000 -0.477000 x Pb + B' 1.000000 1.826000 0.000000 Pr +

    This enumeration is equivalent to the DXVA_VideoTransferMatrix enumeration used in DXVA 1.0.

    If you are using the interface to describe the video format, the video transfer matrix is specified in the attribute.

    +
    + + ms698715 + MF_MEDIA_ENGINE_STATISTIC + MF_MEDIA_ENGINE_STATISTIC +
    + + + No documentation. + + + MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED + MF_MEDIA_ENGINE_STATISTIC_FRAMES_RENDERED + + + + No documentation. + + + MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED + MF_MEDIA_ENGINE_STATISTIC_FRAMES_DROPPED + + + + No documentation. + + + MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED + MF_MEDIA_ENGINE_STATISTIC_BYTES_DOWNLOADED + + + + No documentation. + + + MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS + MF_MEDIA_ENGINE_STATISTIC_BUFFER_PROGRESS + + + + No documentation. + + + MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND + MF_MEDIA_ENGINE_STATISTIC_FRAMES_PER_SECOND + + + + No documentation. + + + __MIDL___MIDL_itf_mfobjects_0000_0012_0001 + __MIDL___MIDL_itf_mfobjects_0000_0012_0001 + + + + No documentation. + + + MEUnknown + MEUnknown + + + + No documentation. + + + MEError + MEError + + + + No documentation. + + + MEExtendedType + MEExtendedType + + + + No documentation. + + + MENonFatalError + MENonFatalError + + + + No documentation. + + + MEGenericV1Anchor + MEGenericV1Anchor + + + + No documentation. + + + MESessionUnknown + MESessionUnknown + + + + No documentation. + + + MESessionTopologySet + MESessionTopologySet + + + + No documentation. + + + MESessionTopologiesCleared + MESessionTopologiesCleared + + + + No documentation. + + + MESessionStarted + MESessionStarted + + + + No documentation. + + + MESessionPaused + MESessionPaused + + + + No documentation. + + + MESessionStopped + MESessionStopped + + + + No documentation. + + + MESessionClosed + MESessionClosed + + + + No documentation. + + + MESessionEnded + MESessionEnded + + + + No documentation. + + + MESessionRateChanged + MESessionRateChanged + + + + No documentation. + + + MESessionScrubSampleComplete + MESessionScrubSampleComplete + + + + No documentation. + + + MESessionCapabilitiesChanged + MESessionCapabilitiesChanged + + + + No documentation. + + + MESessionTopologyStatus + MESessionTopologyStatus + + + + No documentation. + + + MESessionNotifyPresentationTime + MESessionNotifyPresentationTime + + + + No documentation. + + + MENewPresentation + MENewPresentation + + + + No documentation. + + + MELicenseAcquisitionStart + MELicenseAcquisitionStart + + + + No documentation. + + + MELicenseAcquisitionCompleted + MELicenseAcquisitionCompleted + + + + No documentation. + + + MEIndividualizationStart + MEIndividualizationStart + + + + No documentation. + + + MEIndividualizationCompleted + MEIndividualizationCompleted + + + + No documentation. + + + MEEnablerProgress + MEEnablerProgress + + + + No documentation. + + + MEEnablerCompleted + MEEnablerCompleted + + + + No documentation. + + + MEPolicyError + MEPolicyError + + + + No documentation. + + + MEPolicyReport + MEPolicyReport + + + + No documentation. + + + MEBufferingStarted + MEBufferingStarted + + + + No documentation. + + + MEBufferingStopped + MEBufferingStopped + + + + No documentation. + + + MEConnectStart + MEConnectStart + + + + No documentation. + + + MEConnectEnd + MEConnectEnd + + + + No documentation. + + + MEReconnectStart + MEReconnectStart + + + + No documentation. + + + MEReconnectEnd + MEReconnectEnd + + + + No documentation. + + + MERendererEvent + MERendererEvent + + + + No documentation. + + + MESessionStreamSinkFormatChanged + MESessionStreamSinkFormatChanged + + + + No documentation. + + + MESessionV1Anchor + MESessionV1Anchor + + + + No documentation. + + + MESourceUnknown + MESourceUnknown + + + + No documentation. + + + MESourceStarted + MESourceStarted + + + + No documentation. + + + MEStreamStarted + MEStreamStarted + + + + No documentation. + + + MESourceSeeked + MESourceSeeked + + + + No documentation. + + + MEStreamSeeked + MEStreamSeeked + + + + No documentation. + + + MENewStream + MENewStream + + + + No documentation. + + + MEUpdatedStream + MEUpdatedStream + + + + No documentation. + + + MESourceStopped + MESourceStopped + + + + No documentation. + + + MEStreamStopped + MEStreamStopped + + + + No documentation. + + + MESourcePaused + MESourcePaused + + + + No documentation. + + + MEStreamPaused + MEStreamPaused + + + + No documentation. + + + MEEndOfPresentation + MEEndOfPresentation + + + + No documentation. + + + MEEndOfStream + MEEndOfStream + + + + No documentation. + + + MEMediaSample + MEMediaSample + + + + No documentation. + + + MEStreamTick + MEStreamTick + + + + No documentation. + + + MEStreamThinMode + MEStreamThinMode + + + + No documentation. + + + MEStreamFormatChanged + MEStreamFormatChanged + + + + No documentation. + + + MESourceRateChanged + MESourceRateChanged + + + + No documentation. + + + MEEndOfPresentationSegment + MEEndOfPresentationSegment + + + + No documentation. + + + MESourceCharacteristicsChanged + MESourceCharacteristicsChanged + + + + No documentation. + + + MESourceRateChangeRequested + MESourceRateChangeRequested + + + + No documentation. + + + MESourceMetadataChanged + MESourceMetadataChanged + + + + No documentation. + + + MESequencerSourceTopologyUpdated + MESequencerSourceTopologyUpdated + + + + No documentation. + + + MESourceV1Anchor + MESourceV1Anchor + + + + No documentation. + + + MESinkUnknown + MESinkUnknown + + + + No documentation. + + + MEStreamSinkStarted + MEStreamSinkStarted + + + + No documentation. + + + MEStreamSinkStopped + MEStreamSinkStopped + + + + No documentation. + + + MEStreamSinkPaused + MEStreamSinkPaused + + + + No documentation. + + + MEStreamSinkRateChanged + MEStreamSinkRateChanged + + + + No documentation. + + + MEStreamSinkRequestSample + MEStreamSinkRequestSample + + + + No documentation. + + + MEStreamSinkMarker + MEStreamSinkMarker + + + + No documentation. + + + MEStreamSinkPrerolled + MEStreamSinkPrerolled + + + + No documentation. + + + MEStreamSinkScrubSampleComplete + MEStreamSinkScrubSampleComplete + + + + No documentation. + + + MEStreamSinkFormatChanged + MEStreamSinkFormatChanged + + + + No documentation. + + + MEStreamSinkDeviceChanged + MEStreamSinkDeviceChanged + + + + No documentation. + + + MEQualityNotify + MEQualityNotify + + + + No documentation. + + + MESinkInvalidated + MESinkInvalidated + + + + No documentation. + + + MEAudioSessionNameChanged + MEAudioSessionNameChanged + + + + No documentation. + + + MEAudioSessionVolumeChanged + MEAudioSessionVolumeChanged + + + + No documentation. + + + MEAudioSessionDeviceRemoved + MEAudioSessionDeviceRemoved + + + + No documentation. + + + MEAudioSessionServerShutdown + MEAudioSessionServerShutdown + + + + No documentation. + + + MEAudioSessionGroupingParamChanged + MEAudioSessionGroupingParamChanged + + + + No documentation. + + + MEAudioSessionIconChanged + MEAudioSessionIconChanged + + + + No documentation. + + + MEAudioSessionFormatChanged + MEAudioSessionFormatChanged + + + + No documentation. + + + MEAudioSessionDisconnected + MEAudioSessionDisconnected + + + + No documentation. + + + MEAudioSessionExclusiveModeOverride + MEAudioSessionExclusiveModeOverride + + + + No documentation. + + + MESinkV1Anchor + MESinkV1Anchor + + + + No documentation. + + + MECaptureAudioSessionVolumeChanged + MECaptureAudioSessionVolumeChanged + + + + No documentation. + + + MECaptureAudioSessionDeviceRemoved + MECaptureAudioSessionDeviceRemoved + + + + No documentation. + + + MECaptureAudioSessionFormatChanged + MECaptureAudioSessionFormatChanged + + + + No documentation. + + + MECaptureAudioSessionDisconnected + MECaptureAudioSessionDisconnected + + + + No documentation. + + + MECaptureAudioSessionExclusiveModeOverride + MECaptureAudioSessionExclusiveModeOverride + + + + No documentation. + + + MECaptureAudioSessionServerShutdown + MECaptureAudioSessionServerShutdown + + + + No documentation. + + + MESinkV2Anchor + MESinkV2Anchor + + + + No documentation. + + + METrustUnknown + METrustUnknown + + + + No documentation. + + + MEPolicyChanged + MEPolicyChanged + + + + No documentation. + + + MEContentProtectionMessage + MEContentProtectionMessage + + + + No documentation. + + + MEPolicySet + MEPolicySet + + + + No documentation. + + + METrustV1Anchor + METrustV1Anchor + + + + No documentation. + + + MEWMDRMLicenseBackupCompleted + MEWMDRMLicenseBackupCompleted + + + + No documentation. + + + MEWMDRMLicenseBackupProgress + MEWMDRMLicenseBackupProgress + + + + No documentation. + + + MEWMDRMLicenseRestoreCompleted + MEWMDRMLicenseRestoreCompleted + + + + No documentation. + + + MEWMDRMLicenseRestoreProgress + MEWMDRMLicenseRestoreProgress + + + + No documentation. + + + MEWMDRMLicenseAcquisitionCompleted + MEWMDRMLicenseAcquisitionCompleted + + + + No documentation. + + + MEWMDRMIndividualizationCompleted + MEWMDRMIndividualizationCompleted + + + + No documentation. + + + MEWMDRMIndividualizationProgress + MEWMDRMIndividualizationProgress + + + + No documentation. + + + MEWMDRMProximityCompleted + MEWMDRMProximityCompleted + + + + No documentation. + + + MEWMDRMLicenseStoreCleaned + MEWMDRMLicenseStoreCleaned + + + + No documentation. + + + MEWMDRMRevocationDownloadCompleted + MEWMDRMRevocationDownloadCompleted + + + + No documentation. + + + MEWMDRMV1Anchor + MEWMDRMV1Anchor + + + + No documentation. + + + METransformUnknown + METransformUnknown + + + + No documentation. + + + METransformNeedInput + METransformNeedInput + + + + No documentation. + + + METransformHaveOutput + METransformHaveOutput + + + + No documentation. + + + METransformDrainComplete + METransformDrainComplete + + + + No documentation. + + + METransformMarker + METransformMarker + + + + No documentation. + + + MEByteStreamCharacteristicsChanged + MEByteStreamCharacteristicsChanged + + + + No documentation. + + + MEVideoCaptureDeviceRemoved + MEVideoCaptureDeviceRemoved + + + + No documentation. + + + MEVideoCaptureDevicePreempted + MEVideoCaptureDevicePreempted + + + + No documentation. + + + MEReservedMax + MEReservedMax + + + +

    Applies to: desktop apps only

    Defines messages for an enhanced video renderer (EVR) presenter. This enumeration is used with the IMFVideoPresenter::ProcessMessage method.

    +
    + + ms698964 + _MFT_DRAIN_TYPE + _MFT_DRAIN_TYPE +
    + + + No documentation. + + + MFT_DRAIN_PRODUCE_TAILS + MFT_DRAIN_PRODUCE_TAILS + + + + No documentation. + + + MFT_DRAIN_NO_TAILS + MFT_DRAIN_NO_TAILS + + + +

    Applies to: desktop apps only

    Defines flags for the method.

    +
    + +

    The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

    // Correct. + if (Buffer.dwStatus == ) + { ... + } // Incorrect. + if ((Buffer.dwStatus & ) != 0) + { ... + } + +
    + + ms702281 + _MFT_INPUT_DATA_BUFFER_FLAGS + _MFT_INPUT_DATA_BUFFER_FLAGS +
    + + + No documentation. + + + MFT_INPUT_DATA_BUFFER_PLACEHOLDER + MFT_INPUT_DATA_BUFFER_PLACEHOLDER + + + + None. + + + None + None + + + +

    Applies to: desktop apps | Metro style apps

    Describes the current status of a call to the IMFShutdown::Shutdown method.

    +
    + + ms701630 + _MFT_INPUT_STATUS_FLAGS + _MFT_INPUT_STATUS_FLAGS +
    + + + No documentation. + + + MFT_INPUT_STATUS_ACCEPT_DATA + MFT_INPUT_STATUS_ACCEPT_DATA + + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Defines flags for the method.

    +
    + +

    The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

    // Correct. + if (Buffer.dwStatus == ) + { ... + } // Incorrect. + if ((Buffer.dwStatus & ) != 0) + { ... + } + +
    + + ms702281 + _MFT_INPUT_STREAM_INFO_FLAGS + _MFT_INPUT_STREAM_INFO_FLAGS +
    + + + No documentation. + + + MFT_INPUT_STREAM_WHOLE_SAMPLES + MFT_INPUT_STREAM_WHOLE_SAMPLES + + + + No documentation. + + + MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER + MFT_INPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER + + + + No documentation. + + + MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE + MFT_INPUT_STREAM_FIXED_SAMPLE_SIZE + + + + No documentation. + + + MFT_INPUT_STREAM_HOLDS_BUFFERS + MFT_INPUT_STREAM_HOLDS_BUFFERS + + + + No documentation. + + + MFT_INPUT_STREAM_DOES_NOT_ADDREF + MFT_INPUT_STREAM_DOES_NOT_ADDREF + + + + No documentation. + + + MFT_INPUT_STREAM_REMOVABLE + MFT_INPUT_STREAM_REMOVABLE + + + + No documentation. + + + MFT_INPUT_STREAM_OPTIONAL + MFT_INPUT_STREAM_OPTIONAL + + + + No documentation. + + + MFT_INPUT_STREAM_PROCESSES_IN_PLACE + MFT_INPUT_STREAM_PROCESSES_IN_PLACE + + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Defines flags for the method.

    +
    + +

    The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

    // Correct. + if (Buffer.dwStatus == ) + { ... + } // Incorrect. + if ((Buffer.dwStatus & ) != 0) + { ... + } + +
    + + ms702281 + _MFT_OUTPUT_DATA_BUFFER_FLAGS + _MFT_OUTPUT_DATA_BUFFER_FLAGS +
    + + + No documentation. + + + MFT_OUTPUT_DATA_BUFFER_INCOMPLETE + MFT_OUTPUT_DATA_BUFFER_INCOMPLETE + + + + No documentation. + + + MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE + MFT_OUTPUT_DATA_BUFFER_FORMAT_CHANGE + + + + No documentation. + + + MFT_OUTPUT_DATA_BUFFER_STREAM_END + MFT_OUTPUT_DATA_BUFFER_STREAM_END + + + + No documentation. + + + MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE + MFT_OUTPUT_DATA_BUFFER_NO_SAMPLE + + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Indicates whether a Media Foundation transform (MFT) can produce output data.

    +
    + + ms701553 + _MFT_OUTPUT_STATUS_FLAGS + _MFT_OUTPUT_STATUS_FLAGS +
    + + +

    There is a sample available for at least one output stream. To retrieve the available output samples, call .

    +
    + + ms701553 + MFT_OUTPUT_STATUS_SAMPLE_READY + MFT_OUTPUT_STATUS_SAMPLE_READY +
    + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Describes an output stream on a Media Foundation transform (MFT).

    +
    + +

    Before the client sets the media types on the MFT, the only flag guaranteed to be accurate is the flag. For all other flags, the client should first set the media type on every non-optional stream.

    The and flags define different behaviors for how the MFT can discard output data.

    • MFT_OUTPUT_STREAM_DISCARDABLE: The MFT discards output data only if the client calls ProcessOutput with the flag. The MFT never discards data when the client calls ProcessInput.

    • MFT_OUTPUT_STREAM_LAZY_READ: If the client continues to call ProcessInput without collecting the output from this stream, the MFT eventually discards the output. If all output streams have the flag, the MFT never refuses more input data.

    If neither of these flags is set, the MFT never discards output data.

    +
    + + ms705618 + _MFT_OUTPUT_STREAM_INFO_FLAGS + _MFT_OUTPUT_STREAM_INFO_FLAGS +
    + + +

    Each media sample ( interface) of output data from the MFT contains complete, unbroken units of data. The definition of a unit of data depends on the media type: For uncompressed video, a video frame; for compressed data, a compressed packet; for uncompressed audio, a single audio frame.

    For uncompressed audio formats, this flag is always implied. (It is valid to set the flag, but not required.) An uncompressed audio frame should never span more than one media sample.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_WHOLE_SAMPLES + MFT_OUTPUT_STREAM_WHOLE_SAMPLES +
    + + +

    Each output sample contains exactly one unit of data, as defined for the flag.

    If this flag is present, the flag must also be present.

    An MFT that outputs uncompressed audio should not set this flag. For efficiency, it should output more than one audio frame at a time.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER + MFT_OUTPUT_STREAM_SINGLE_SAMPLE_PER_BUFFER +
    + + +

    All output samples are the same size.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE + MFT_OUTPUT_STREAM_FIXED_SAMPLE_SIZE +
    + + +

    The MFT can discard the output data from this output stream, if requested by the client. To discard the output, set the flag in the method.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_DISCARDABLE + MFT_OUTPUT_STREAM_DISCARDABLE +
    + + +

    This output stream is optional. The client can deselect the stream by not setting a media type or by setting a null media type. When an optional stream is deselected, it does not produce any output data.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_OPTIONAL + MFT_OUTPUT_STREAM_OPTIONAL +
    + + +

    The MFT provides the output samples for this stream, either by allocating them internally or by operating directly on the input samples. The MFT cannot use output samples provided by the client for this stream.

    If this flag is not set, the MFT must set cbSize to a nonzero value in the structure, so that the client can allocate the correct buffer size. For more information, see . This flag cannot be combined with the flag.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_PROVIDES_SAMPLES + MFT_OUTPUT_STREAM_PROVIDES_SAMPLES +
    + + +

    The MFT can either provide output samples for this stream or it can use samples that the client allocates. This flag cannot be combined with the flag.

    If the MFT does not set this flag or the flag, the client must allocate the samples for this output stream. The MFT will not provide its own samples.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES + MFT_OUTPUT_STREAM_CAN_PROVIDE_SAMPLES +
    + + +

    The MFT does not require the client to process the output for this stream. If the client continues to send input data without getting the output from this stream, the MFT simply discards the previous input.

    +
    + + ms705618 + MFT_OUTPUT_STREAM_LAZY_READ + MFT_OUTPUT_STREAM_LAZY_READ +
    + + +

    The MFT might remove this output stream during streaming. This flag typically applies to demultiplexers, where the input data contains multiple streams that can start and stop during streaming. For more information, see .

    +
    + + ms705618 + MFT_OUTPUT_STREAM_REMOVABLE + MFT_OUTPUT_STREAM_REMOVABLE +
    + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Defines flags for the method.

    +
    + +

    The values in this enumeration are not bit flags, so they should not be combined with a bitwise OR. Also, the caller should test for these flags with the equality operator, not a bitwise AND:

    // Correct. + if (Buffer.dwStatus == ) + { ... + } // Incorrect. + if ((Buffer.dwStatus & ) != 0) + { ... + } + +
    + + ms702281 + _MFT_PROCESS_OUTPUT_FLAGS + _MFT_PROCESS_OUTPUT_FLAGS +
    + + + No documentation. + + + MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER + MFT_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER + + + + No documentation. + + + MFT_PROCESS_OUTPUT_REGENERATE_LAST_OUTPUT + MFT_PROCESS_OUTPUT_REGENERATE_LAST_OUTPUT + + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Indicates the status of a call to .

    +
    + +

    If the MFT sets this flag, the ProcessOutput method returns MF_E_TRANSFORM_STREAM_CHANGE and no output data is produced. The client should respond as follows:

    1. Call to get the new number of streams.

    2. Call to get the new stream identifiers.

    3. Call and to set the media types on the new streams.

    Until these steps are completed, all further calls to ProcessOutput return MF_E_TRANSFORM_STREAM_CHANGE.

    +
    + + ms699875 + _MFT_PROCESS_OUTPUT_STATUS + _MFT_PROCESS_OUTPUT_STATUS +
    + + + No documentation. + + + MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS + MFT_PROCESS_OUTPUT_STATUS_NEW_STREAMS + + + +

    Applies to: desktop apps only

    Defines flags for the setting or testing the media type on a Media Foundation transform (MFT).

    +
    + + ms704051 + _MFT_SET_TYPE_FLAGS + _MFT_SET_TYPE_FLAGS +
    + + +

    Test the proposed media type, but do not set it.

    +
    + + ms704051 + MFT_SET_TYPE_TEST_ONLY + MFT_SET_TYPE_TEST_ONLY +
    + + + None. + + + None + None + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFNominalRange + MFNominalRange +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFNominalRange_Unknown + MFNominalRange_Unknown +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFNominalRange_Normal + MFNominalRange_Normal +
    + + + No documentation. + + + MFNominalRange_Wide + MFNominalRange_Wide + + + + No documentation. + + + MFNominalRange_0_255 + MFNominalRange_0_255 + + + + No documentation. + + + MFNominalRange_16_235 + MFNominalRange_16_235 + + + + No documentation. + + + MFNominalRange_48_208 + MFNominalRange_48_208 + + + + No documentation. + + + MFNominalRange_64_127 + MFNominalRange_64_127 + + + + No documentation. + + + MFNominalRange_Last + MFNominalRange_Last + + + + No documentation. + + + MFNominalRange_ForceDWORD + MFNominalRange_ForceDWORD + + + +

    Applies to: desktop apps | Metro style apps

    Defines the object types that are created by the source resolver.

    +
    + + ms704771 + MF_OBJECT_TYPE + MF_OBJECT_TYPE +
    + + +

    Media source. You can query the object for the IMFMediaSource interface.

    +
    + + ms704771 + MF_OBJECT_MEDIASOURCE + MF_OBJECT_MEDIASOURCE +
    + + +

    Byte stream. You can query the object for the interface.

    +
    + + ms704771 + MF_OBJECT_BYTESTREAM + MF_OBJECT_BYTESTREAM +
    + + +

    Invalid type.

    +
    + + ms704771 + MF_OBJECT_INVALID + MF_OBJECT_INVALID +
    + + + No documentation. + + + __MIDL___MIDL_itf_mfidl_0000_0001_0001 + __MIDL___MIDL_itf_mfidl_0000_0001_0001 + + + + No documentation. + + + MF_RESOLUTION_MEDIASOURCE + MF_RESOLUTION_MEDIASOURCE + + + + No documentation. + + + MF_RESOLUTION_BYTESTREAM + MF_RESOLUTION_BYTESTREAM + + + + No documentation. + + + MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE + MF_RESOLUTION_CONTENT_DOES_NOT_HAVE_TO_MATCH_EXTENSION_OR_MIME_TYPE + + + + No documentation. + + + MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL + MF_RESOLUTION_KEEP_BYTE_STREAM_ALIVE_ON_FAIL + + + + No documentation. + + + MF_RESOLUTION_DISABLE_LOCAL_PLUGINS + MF_RESOLUTION_DISABLE_LOCAL_PLUGINS + + + + No documentation. + + + MF_RESOLUTION_PLUGIN_CONTROL_POLICY_APPROVED_ONLY + MF_RESOLUTION_PLUGIN_CONTROL_POLICY_APPROVED_ONLY + + + + No documentation. + + + MF_RESOLUTION_PLUGIN_CONTROL_POLICY_WEB_ONLY + MF_RESOLUTION_PLUGIN_CONTROL_POLICY_WEB_ONLY + + + + No documentation. + + + MF_RESOLUTION_READ + MF_RESOLUTION_READ + + + + No documentation. + + + MF_RESOLUTION_WRITE + MF_RESOLUTION_WRITE + + + + None. + + + None + None + + + +

    Applies to: desktop apps | Metro style apps

    Sends a message to the Media Foundation transform (MFT).

    +
    + +

    Before calling this method, set the media types on all input and output streams.

    The MFT might ignore certain message types. If so, the method returns . An error code indicates that the transform handles this message type but was unable to process the message in this instance.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessMessage. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms701863 + MFT_MESSAGE_TYPE + MFT_MESSAGE_TYPE +
    + + +

    The message to send, specified as a member of the enumeration.

    +
    + + ms701863 + MFT_MESSAGE_COMMAND_FLUSH + MFT_MESSAGE_COMMAND_FLUSH +
    + + +

    Message parameter. The meaning of this parameter depends on the message type.

    +
    + + ms701863 + MFT_MESSAGE_COMMAND_DRAIN + MFT_MESSAGE_COMMAND_DRAIN +
    + + + No documentation. + + + MFT_MESSAGE_SET_D3D_MANAGER + MFT_MESSAGE_SET_D3D_MANAGER + + + + No documentation. + + + MFT_MESSAGE_DROP_SAMPLES + MFT_MESSAGE_DROP_SAMPLES + + + + No documentation. + + + MFT_MESSAGE_COMMAND_TICK + MFT_MESSAGE_COMMAND_TICK + + + + No documentation. + + + MFT_MESSAGE_NOTIFY_BEGIN_STREAMING + MFT_MESSAGE_NOTIFY_BEGIN_STREAMING + + + + No documentation. + + + MFT_MESSAGE_NOTIFY_END_STREAMING + MFT_MESSAGE_NOTIFY_END_STREAMING + + + + No documentation. + + + MFT_MESSAGE_NOTIFY_END_OF_STREAM + MFT_MESSAGE_NOTIFY_END_OF_STREAM + + + + No documentation. + + + MFT_MESSAGE_NOTIFY_START_OF_STREAM + MFT_MESSAGE_NOTIFY_START_OF_STREAM + + + + No documentation. + + + MFT_MESSAGE_COMMAND_MARKER + MFT_MESSAGE_COMMAND_MARKER + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideo3DFormat + MFVideo3DFormat +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideo3DSampleFormat_BaseView + MFVideo3DSampleFormat_BaseView +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideo3DSampleFormat_MultiView + MFVideo3DSampleFormat_MultiView +
    + + + No documentation. + + + MFVideo3DSampleFormat_Packed_LeftRight + MFVideo3DSampleFormat_Packed_LeftRight + + + + No documentation. + + + MFVideo3DSampleFormat_Packed_TopBottom + MFVideo3DSampleFormat_Packed_TopBottom + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    The video processor MFT is a Microsoft Media Foundation transform (MFT) that performs colorspace conversion, video resizing, deinterlacing, frame rate conversion, rotation, cropping, spatial left and right view unpacking, and mirroring.

    +
    + +

    An instance of the video processor can be created in one of the following ways:

    • By calling MFTEnumEx. The video processor is registered under the MFT_CATEGORY_VIDEO_PROCESSOR category.
    • By calling the COM function CoCreateInstance passing it the CLSID CLSID_VideoProcessorMFT.

    The video processor supports GPU-accelerated video processing, using Microsoft Direct3D?11. For more information, see .

    Stereoscopic Video

    The video processor supports the view unpacking operation on 3D video frames:

    If the input frame contains two views packed in the same frame, the video processor can split the views into separate buffers, or extract the base view and discard the second view. To enable view unpacking, set the attribute to or .

    +
    + + hh162913 + MF3DVideoOutputType + MF3DVideoOutputType +
    + + + No documentation. + + + MF3DVideoOutputType_BaseView + MF3DVideoOutputType_BaseView + + + + No documentation. + + + MF3DVideoOutputType_Stereo + MF3DVideoOutputType_Stereo + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideo3DSampleFormat + MFVideo3DSampleFormat +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFSampleExtension_3DVideo_MultiView + MFSampleExtension_3DVideo_MultiView +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFSampleExtension_3DVideo_Packed + MFSampleExtension_3DVideo_Packed +
    + + +

    Applies to: desktop apps only

    Contains flags that define the chroma encoding scheme for Y'Cb'Cr' data.

    +
    + +

    These flags are used with the attribute.

    For more information about these values, see the remarks for the DXVA2_VideoChromaSubSampling enumeration, which is the DirectX Video Acceleration (DXVA) equivalent of this enumeration.

    +
    + + ms698989 + MFVideoChromaSubsampling + MFVideoChromaSubsampling +
    + + +

    Unknown encoding scheme.

    +
    + + ms698989 + MFVideoChromaSubsampling_Unknown + MFVideoChromaSubsampling_Unknown +
    + + +

    Chroma should be reconstructed as if the underlying video was progressive content, rather than skipping fields or applying chroma filtering to minimize artifacts from reconstructing 4:2:0 interlaced chroma.

    +
    + + ms698989 + MFVideoChromaSubsampling_ProgressiveChroma + MFVideoChromaSubsampling_ProgressiveChroma +
    + + +

    Chroma samples are aligned horizontally with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel to the right of the corresponding luma sample.

    +
    + + ms698989 + MFVideoChromaSubsampling_Horizontally_Cosited + MFVideoChromaSubsampling_Horizontally_Cosited +
    + + +

    Chroma samples are aligned vertically with the luma samples, or with multiples of the luma samples. If this flag is not set, chroma samples are located 1/2 pixel down from the corresponding luma sample.

    +
    + + ms698989 + MFVideoChromaSubsampling_Vertically_Cosited + MFVideoChromaSubsampling_Vertically_Cosited +
    + + +

    The U and V planes are aligned vertically. If this flag is not set, the chroma planes are assumed to be out of phase by 1/2 chroma sample, alternating between a line of U followed by a line of V.

    +
    + + ms698989 + MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes + MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes +
    + + +

    Specifies the chroma encoding scheme for MPEG-2 video. Chroma samples are aligned horizontally with the luma samples, but are not aligned vertically. The U and V planes are aligned vertically.

    +
    + + ms698989 + MFVideoChromaSubsampling_MPEG2 + MFVideoChromaSubsampling_MPEG2 +
    + + +

    Specifies the chroma encoding scheme for MPEG-1 video.

    +
    + + ms698989 + MFVideoChromaSubsampling_MPEG1 + MFVideoChromaSubsampling_MPEG1 +
    + + +

    Specifies the chroma encoding scheme for PAL DV video.

    +
    + + ms698989 + MFVideoChromaSubsampling_DV_PAL + MFVideoChromaSubsampling_DV_PAL +
    + + +

    Chroma samples are aligned vertically and horizontally with the luma samples. YUV formats such as 4:4:4, 4:2:2, and 4:1:1 are always cosited in both directions and should use this flag.

    +
    + + ms698989 + MFVideoChromaSubsampling_Cosited + MFVideoChromaSubsampling_Cosited +
    + + +

    Reserved.

    +
    + + ms698989 + MFVideoChromaSubsampling_Last + MFVideoChromaSubsampling_Last +
    + + +

    Reserved. This member forces the enumeration type to compile as a DWORD value.

    +
    + + ms698989 + MFVideoChromaSubsampling_ForceDWORD + MFVideoChromaSubsampling_ForceDWORD +
    + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoDRMFlags + MFVideoDRMFlags +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoDRMFlag_None + MFVideoDRMFlag_None +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoDRMFlag_AnalogProtected + MFVideoDRMFlag_AnalogProtected +
    + + + No documentation. + + + MFVideoDRMFlag_DigitallyProtected + MFVideoDRMFlag_DigitallyProtected + + + +

    Applies to: desktop apps only

    Specifies how a video stream is interlaced.

    In the descriptions that follow, upper field refers to the field that contains the leading half scan line. Lower field refers to the field that contains the first full scan line.

    +
    + +

    Scan lines in the lower field are 0.5 scan line lower than those in the upper field. In NTSC television, a frame consists of a lower field followed by an upper field. In PAL television, a frame consists of an upper field followed by a lower field.

    The upper field is also called the even field, the top field, or field 2. The lower field is also called the odd field, the bottom field, or field 1.

    If the interlace mode is or , each sample contains a single field, so each buffer contains only half the number of field lines given in the media type.

    +
    + + ms694269 + MFVideoInterlaceMode + MFVideoInterlaceMode +
    + + +

    The type of interlacing is not known.

    +
    + + ms694269 + MFVideoInterlace_Unknown + MFVideoInterlace_Unknown +
    + + +

    Progressive frames.

    +
    + + ms694269 + MFVideoInterlace_Progressive + MFVideoInterlace_Progressive +
    + + +

    Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the upper field appearing on the first line.

    +
    + + ms694269 + MFVideoInterlace_FieldInterleavedUpperFirst + MFVideoInterlace_FieldInterleavedUpperFirst +
    + + +

    Interlaced frames. Each frame contains two fields. The field lines are interleaved, with the lower field appearing on the first line.

    +
    + + ms694269 + MFVideoInterlace_FieldInterleavedLowerFirst + MFVideoInterlace_FieldInterleavedLowerFirst +
    + + +

    Interlaced frames. Each frame contains one field, with the upper field appearing first.

    +
    + + ms694269 + MFVideoInterlace_FieldSingleUpper + MFVideoInterlace_FieldSingleUpper +
    + + +

    Interlaced frames. Each frame contains one field, with the lower field appearing first.

    +
    + + ms694269 + MFVideoInterlace_FieldSingleLower + MFVideoInterlace_FieldSingleLower +
    + + +

    The stream contains a mix of interlaced and progressive modes.

    +
    + + ms694269 + MFVideoInterlace_MixedInterlaceOrProgressive + MFVideoInterlace_MixedInterlaceOrProgressive +
    + + +

    Reserved.

    +
    + + ms694269 + MFVideoInterlace_Last + MFVideoInterlace_Last +
    + + +

    Reserved. This member forces the enumeration type to compile as a DWORD value.

    +
    + + ms694269 + MFVideoInterlace_ForceDWORD + MFVideoInterlace_ForceDWORD +
    + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoLighting + MFVideoLighting +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoLighting_Unknown + MFVideoLighting_Unknown +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoLighting_bright + MFVideoLighting_bright +
    + + + No documentation. + + + MFVideoLighting_office + MFVideoLighting_office + + + + No documentation. + + + MFVideoLighting_dim + MFVideoLighting_dim + + + + No documentation. + + + MFVideoLighting_dark + MFVideoLighting_dark + + + + No documentation. + + + MFVideoLighting_Last + MFVideoLighting_Last + + + + No documentation. + + + MFVideoLighting_ForceDWORD + MFVideoLighting_ForceDWORD + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoPadFlags + MFVideoPadFlags +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoPadFlag_PAD_TO_None + MFVideoPadFlag_PAD_TO_None +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoPadFlag_PAD_TO_4x3 + MFVideoPadFlag_PAD_TO_4x3 +
    + + + No documentation. + + + MFVideoPadFlag_PAD_TO_16x9 + MFVideoPadFlag_PAD_TO_16x9 + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoPrimaries + MFVideoPrimaries +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoPrimaries_Unknown + MFVideoPrimaries_Unknown +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoPrimaries_reserved + MFVideoPrimaries_reserved +
    + + + No documentation. + + + MFVideoPrimaries_BT709 + MFVideoPrimaries_BT709 + + + + No documentation. + + + MFVideoPrimaries_BT470_2_SysM + MFVideoPrimaries_BT470_2_SysM + + + + No documentation. + + + MFVideoPrimaries_BT470_2_SysBG + MFVideoPrimaries_BT470_2_SysBG + + + + No documentation. + + + MFVideoPrimaries_SMPTE170M + MFVideoPrimaries_SMPTE170M + + + + No documentation. + + + MFVideoPrimaries_SMPTE240M + MFVideoPrimaries_SMPTE240M + + + + No documentation. + + + MFVideoPrimaries_EBU3213 + MFVideoPrimaries_EBU3213 + + + + No documentation. + + + MFVideoPrimaries_SMPTE_C + MFVideoPrimaries_SMPTE_C + + + + No documentation. + + + MFVideoPrimaries_Last + MFVideoPrimaries_Last + + + + No documentation. + + + MFVideoPrimaries_ForceDWORD + MFVideoPrimaries_ForceDWORD + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoRotationFormat + MFVideoRotationFormat +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoRotationFormat_0 + MFVideoRotationFormat_0 +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoRotationFormat_90 + MFVideoRotationFormat_90 +
    + + + No documentation. + + + MFVideoRotationFormat_180 + MFVideoRotationFormat_180 + + + + No documentation. + + + MFVideoRotationFormat_270 + MFVideoRotationFormat_270 + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoSrcContentHintFlags + MFVideoSrcContentHintFlags +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoSrcContentHintFlag_None + MFVideoSrcContentHintFlag_None +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoSrcContentHintFlag_16x9 + MFVideoSrcContentHintFlag_16x9 +
    + + + No documentation. + + + MFVideoSrcContentHintFlag_235_1 + MFVideoSrcContentHintFlag_235_1 + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoTransferFunction + MFVideoTransferFunction +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoTransFunc_Unknown + MFVideoTransFunc_Unknown +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoTransFunc_10 + MFVideoTransFunc_10 +
    + + + No documentation. + + + MFVideoTransFunc_18 + MFVideoTransFunc_18 + + + + No documentation. + + + MFVideoTransFunc_20 + MFVideoTransFunc_20 + + + + No documentation. + + + MFVideoTransFunc_22 + MFVideoTransFunc_22 + + + + No documentation. + + + MFVideoTransFunc_709 + MFVideoTransFunc_709 + + + + No documentation. + + + MFVideoTransFunc_240M + MFVideoTransFunc_240M + + + + No documentation. + + + MFVideoTransFunc_sRGB + MFVideoTransFunc_sRGB + + + + No documentation. + + + MFVideoTransFunc_28 + MFVideoTransFunc_28 + + + + No documentation. + + + MFVideoTransFunc_Log_100 + MFVideoTransFunc_Log_100 + + + + No documentation. + + + MFVideoTransFunc_Log_316 + MFVideoTransFunc_Log_316 + + + + No documentation. + + + MFVideoTransFunc_709_sym + MFVideoTransFunc_709_sym + + + + No documentation. + + + MFVideoTransFunc_Last + MFVideoTransFunc_Last + + + + No documentation. + + + MFVideoTransFunc_ForceDWORD + MFVideoTransFunc_ForceDWORD + + + +

    Applies to: desktop apps only

    Specifies how the credential manager should obtain user credentials.

    +
    + +

    The application implements the credential manager, which must expose the IMFNetCredentialManager interface. If the REQUIRE_PROMPT flag is set, the credential manager should prompt the user for his or her name and password.

    The credential cache object sets the REQUIRE_PROMPT flag if the cache does not yet contain valid credentials. It also sets this flag if the credentials will be sent as plain text, unless the credential manager previously set the MFNET_CREDENTIAL_ALLOW_CLEAR_TEXT option. (See IMFNetCredentialCache::SetUserOptions.)

    +
    + + ms700813 + MFVideoTransferMatrix + MFVideoTransferMatrix +
    + + +

    The credential manager should prompt the user to provide the credentials.

    +
    + + ms700813 + MFVideoTransferMatrix_Unknown + MFVideoTransferMatrix_Unknown +
    + + +

    Note??Requires Windows?7 or later.

    The credentials are saved to persistent storage. This flag acts as a hint for the application's UI. If the application prompts the user for credentials, the UI can indicate that the credentials have already been saved.

    +
    + + ms700813 + MFVideoTransferMatrix_BT709 + MFVideoTransferMatrix_BT709 +
    + + + No documentation. + + + MFVideoTransferMatrix_BT601 + MFVideoTransferMatrix_BT601 + + + + No documentation. + + + MFVideoTransferMatrix_SMPTE240M + MFVideoTransferMatrix_SMPTE240M + + + + No documentation. + + + MFVideoTransferMatrix_Last + MFVideoTransferMatrix_Last + + + + No documentation. + + + MFVideoTransferMatrix_ForceDWORD + MFVideoTransferMatrix_ForceDWORD + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant MultisampledP1. + MFAudioFormat_MSP1 + + + Constant Drm. + MFAudioFormat_DRM + + + Constant Dts. + MFAudioFormat_DTS + + + Constant Float. + MFAudioFormat_Float + + + Constant WMAudioV9. + MFAudioFormat_WMAudioV9 + + + Constant DolbyDDPlus. + MFAudioFormat_Dolby_DDPlus + + + Constant Pcm. + MFAudioFormat_PCM + + + Constant Base. + MFAudioFormat_Base + + + Constant Mp3. + MFAudioFormat_MP3 + + + Constant DolbyAc3. + MFAudioFormat_Dolby_AC3 + + + Constant Wmaspdif. + MFAudioFormat_WMASPDIF + + + Constant WMAudioLossless. + MFAudioFormat_WMAudio_Lossless + + + Constant Mpeg. + MFAudioFormat_MPEG + + + Constant DolbyAc3Spdif. + MFAudioFormat_Dolby_AC3_SPDIF + + + Constant Aac. + MFAudioFormat_AAC + + + Constant Adts. + MFAudioFormat_ADTS + + + Constant WMAudioV8. + MFAudioFormat_WMAudioV8 + + + + Functions + + + + + + Functions + + + + + Constant ContentType. + MF_BYTESTREAM_CONTENT_TYPE + + + Constant Duration. + MF_BYTESTREAM_DURATION + + + Constant EffectiveUrl. + MF_BYTESTREAM_EFFECTIVE_URL + + + Constant IfoFileUri. + MF_BYTESTREAM_IFO_FILE_URI + + + Constant LastModifiedTime. + MF_BYTESTREAM_LAST_MODIFIED_TIME + + + Constant OriginName. + MF_BYTESTREAM_ORIGIN_NAME + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant TransformContext. + MF_EVENT_MFT_CONTEXT + + + Constant TransformInputStreamId. + MF_EVENT_MFT_INPUT_STREAM_ID + + + + Functions + + + + + Constant SaRequiredSampleCount. + MF_SA_REQUIRED_SAMPLE_COUNT + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant LocalPluginControlPolicy. + MF_LOCAL_PLUGIN_CONTROL_POLICY + + + + Functions + + + + + Constant AudioCategory. + MF_MEDIA_ENGINE_AUDIO_CATEGORY + + + Constant AudioEndpointRole. + MF_MEDIA_ENGINE_AUDIO_ENDPOINT_ROLE + + + Constant Callback. + MF_MEDIA_ENGINE_CALLBACK + + + Constant ContentProtectionFlags. + MF_MEDIA_ENGINE_CONTENT_PROTECTION_FLAGS + + + Constant ContentProtectionManager. + MF_MEDIA_ENGINE_CONTENT_PROTECTION_MANAGER + + + Constant DxgiManager. + MF_MEDIA_ENGINE_DXGI_MANAGER + + + Constant Extension. + MF_MEDIA_ENGINE_EXTENSION + + + Constant VideoOutputFormat. + MF_MEDIA_ENGINE_VIDEO_OUTPUT_FORMAT + + + + Functions + + + + + Constant Version. + MF_VERSION + + + +

    Applies to: desktop apps | Metro style apps

    Initializes Microsoft Media Foundation.

    +
    +

    Version number. Use the value , defined in mfapi.h.

    +

    This parameter is optional when using C++ but required in C. The value must be one of the following flags:

    ValueMeaning
    MFSTARTUP_NOSOCKET

    Do not initialize the sockets library.

    MFSTARTUP_LITE

    Equivalent to MFSTARTUP_NOSOCKET.

    MFSTARTUP_FULL

    Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

    ?

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_BAD_STARTUP_VERSION

    The Version parameter requires a newer version of Media Foundation than the version that is running.

    MF_E_DISABLED_IN_SAFEMODE

    The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

    ?

    + +

    An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

    Do not call or from work queue threads. For more information about work queues, see Work Queues.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702238 + HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags) + MFStartup +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates a media buffer that wraps an existing media buffer. The new media buffer points to the same memory as the original media buffer, or to an offset from the start of the memory.

    +
    +

    A reference to the interface of the original media buffer.

    +

    The start of the new buffer, as an offset in bytes from the start of the original buffer.

    +

    The size of the new buffer. The value of cbOffset + dwLength must be less than or equal to the size of valid data the original buffer. (The size of the valid data is returned by the method.)

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    E_INVALIDARG

    The requested offset or the requested length is not valid.

    ?

    + +

    The maximum size of the wrapper buffer is limited to the size of the valid data in the original buffer. This might be less than the allocated size of the original buffer. To set the size of the valid data, call .

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + aa370450 + HRESULT MFCreateMediaBufferWrapper([In] IMFMediaBuffer* pBuffer,[In] unsigned int cbOffset,[In] unsigned int dwLength,[Out] IMFMediaBuffer** ppBuffer) + MFCreateMediaBufferWrapper +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the size of the buffer needed for the function.

    +
    + No documentation. + No documentation. +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    Use this function to find the size of the array that is needed for the function.

    +
    + + ms697064 + HRESULT MFGetAttributesAsBlobSize([In] IMFAttributes* pAttributes,[Out] unsigned int* pcbBufSize) + MFGetAttributesAsBlobSize +
    + + +

    Applies to: desktop apps | Metro style apps

    Unlocks the Media Foundation platform after it was locked by a call to the function.

    +
    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    The application must call once for every call to .

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703879 + HRESULT MFUnlockPlatform() + MFUnlockPlatform +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates an empty media sample.

    +
    +

    Receives a reference to the interface of the media sample. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    Initially the sample does not contain any media buffers.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702276 + HRESULT MFCreateSample([Out] IMFSample** ppIMFSample) + MFCreateSample +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates an empty attribute store.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The initial number of elements allocated for the attribute store. The attribute store grows as needed.

    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.

    For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.

    +
    + + ms701878 + HRESULT MFCreateAttributes([Out, Fast] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize) + MFCreateAttributes +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates an asynchronous result object. Use this function if you are implementing an asynchronous method.

    +
    +

    Pointer to the object stored in the asynchronous result. This reference is returned by the method. This parameter can be null.

    +

    Pointer to the interface. This interface is implemented by the caller of the asynchronous method.

    +

    Pointer to the interface of a state object. This value is provided by the caller of the asynchronous method. This parameter can be null.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    To invoke the callback specified in pCallback, call the function.

    +
    + + ms698952 + HRESULT MFCreateAsyncResult([In] IUnknown* punkObject,[In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState,[Out] IMFAsyncResult** ppAsyncResult) + MFCreateAsyncResult +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates an object that allocates video samples that are compatible with Microsoft DirectX Graphics Infrastructure (DXGI).

    +
    +

    The identifier of the interface to retrieve. Specify one of the following values.

    ValueMeaning
    IID_IUnknown

    Retrieve an reference.

    IID_IMFVideoSampleAllocator

    Retrieve an IMFVideoSampleAllocator reference.

    IID_IMFVideoSampleAllocatorEx

    Retrieve an IMFVideoSampleAllocatorEx reference.

    IID_IMFVideoSampleAllocatorCallback

    Retrieve an IMFVideoSampleAllocatorCallback reference.

    ?

    +

    Receives a reference to the requested interface. The caller must release the interface.

    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    This function creates an allocator for DXGI video surfaces. The buffers created by this allocator expose the interface. To create an allocator for Microsoft Direct3D?9 video surfaces, call MFCreateVideoSampleAllocator.

    +
    + + hh162763 + HRESULT MFCreateVideoSampleAllocatorEx([In] const GUID& riid,[Out] void** ppSampleAllocator) + MFCreateVideoSampleAllocatorEx +
    + + +

    Applies to: desktop apps | Metro style apps

    Invokes a callback method to complete an asynchronous operation.

    +
    +

    Pointer to the interface. To create this object, call .

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    MF_E_INVALID_WORKQUEUE

    Invalid work queue. For more information, see .

    MF_E_SHUTDOWN

    The function was called to shut down the Media Foundation platform.

    ?

    + +

    If you are implementing an asynchronous method, use this function to invoke the caller's method.

    The callback is invoked from a Media Foundation work queue. For more information, see Writing an Asynchronous Method.

    The function shuts down the work queue threads, so the callback is not guaranteed to be invoked after is called.

    +
    + + ms695400 + HRESULT MFInvokeCallback([In] IMFAsyncResult* pAsyncResult) + MFInvokeCallback +
    + + +

    Applies to: desktop apps | Metro style apps

    Shuts down the Microsoft Media Foundation platform. Call this function once for every call to . Do not call this function from work queue threads.

    +
    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms694273 + HRESULT MFShutdown() + MFShutdown +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the size of the buffer needed for the function.

    +
    + No documentation. + No documentation. + No documentation. +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    Use this function to find the size of the array that is needed for the function.

    +
    + + ms697064 + HRESULT MFGetAttributesAsBlob([In] IMFAttributes* pAttributes,[Out, Buffer] unsigned char* pBuf,[In] unsigned int cbBufSize) + MFGetAttributesAsBlob +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unlocks the shared Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

    +
    + No documentation. + No documentation. +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this function after a successful call to the function.

    +
    + + hh162800 + HRESULT MFLockDXGIDeviceManager([Out, Optional] unsigned int* pResetToken,[Out] IMFDXGIDeviceManager** ppManager) + MFLockDXGIDeviceManager +
    + + +

    Applies to: desktop apps | Metro style apps

    Allocates system memory with a specified byte alignment and creates a media buffer to manage the memory.

    +
    +

    Size of the buffer, in bytes.

    +

    Specifies the memory alignment for the buffer. Use one of the following constants.

    ValueMeaning
    MF_1_BYTE_ALIGNMENT
    0x00000000

    Align to 1 bytes.

    MF_2_BYTE_ALIGNMENT
    0x00000001

    Align to 2 bytes.

    MF_4_BYTE_ALIGNMENT
    0x00000003

    Align to 4 bytes.

    MF_8_BYTE_ALIGNMENT
    0x00000007

    Align to 8 bytes.

    MF_16_BYTE_ALIGNMENT
    0x0000000F

    Align to 16 bytes.

    MF_32_BYTE_ALIGNMENT
    0x0000001F

    Align to 32 bytes.

    MF_64_BYTE_ALIGNMENT
    0x0000003F

    Align to 64 bytes.

    MF_128_BYTE_ALIGNMENT
    0x0000007F

    Align to 128 bytes.

    MF_256_BYTE_ALIGNMENT
    0x000000FF

    Align to 256 bytes.

    MF_512_BYTE_ALIGNMENT
    0x000001FF

    Align to 512 bytes.

    ?

    +

    Receives a reference to the interface of the media buffer. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    When the media buffer object is destroyed, it releases the allocated memory.

    +
    + + bb970523 + HRESULT MFCreateAlignedMemoryBuffer([In] unsigned int cbMaxLength,[In] unsigned int cbAligment,[Out] IMFMediaBuffer** ppBuffer) + MFCreateAlignedMemoryBuffer +
    + + +

    Applies to: desktop apps only

    Creates an empty collection object.

    +
    +

    Receives a reference to the collection object's interface. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms698852 + HRESULT MFCreateCollection([Out] IMFCollection** ppIMFCollection) + MFCreateCollection +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates an instance of the Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

    +
    +

    Receives a token that identifies this instance of the DXGI Device Manager. Use this token when calling .

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + + hh162750 + HRESULT MFCreateDXGIDeviceManager([Out] unsigned int* resetToken,[Out, Fast] IMFDXGIDeviceManager** ppDeviceManager) + MFCreateDXGIDeviceManager +
    + + +

    Applies to: desktop apps | Metro style apps

    Blocks the function.

    +
    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    ?

    + +

    This function prevents work queue threads from being shut down when is called. Use this function to ensure that asynchronous operations complete gracefully before the platform shuts down.

    This function holds a lock on the Media Foundation platform. To unlock the platform, call . The application must call once for every call to .

    The function blocks until the platform is unlocked, or until a fixed wait period has elapsed. (The wait period is a few seconds.) To avoid memory leaks, the application should unlock the platform before the wait period ends. For example, cancel any asynchronous operations that are waiting to complete and are holding a lock on the platform.

    The default implementation of the interface automatically locks the Media Foundation platform when the result object is created. Releasing the interface unlocks the platform. Therefore, in most cases your application does not need to lock the platform directly. For more information, see Work Queues.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms693588 + HRESULT MFLockPlatform() + MFLockPlatform +
    + + +

    Applies to: desktop apps | Metro style apps

    Allocates system memory and creates a media buffer to manage it.

    +
    +

    Size of the buffer, in bytes.

    +

    Receives a reference to the interface of the media buffer. The caller must release the interface.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The function succeeded.

    E_OUTOFMEMORY

    Insufficient memory.

    ?

    + +

    The function allocates a buffer with a 1-byte memory alignment. To allocate a buffer that is aligned to a larger memory boundary, call .

    When the media buffer object is destroyed, it releases the allocated memory.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms695212 + HRESULT MFCreateMemoryBuffer([In] unsigned int cbMaxLength,[Out] IMFMediaBuffer** ppBuffer) + MFCreateMemoryBuffer +
    + + +

    Applies to: desktop apps | Metro style apps

    Initializes Microsoft Media Foundation.

    +
    +

    Version number. Use the value , defined in mfapi.h.

    +

    This parameter is optional when using C++ but required in C. The value must be one of the following flags:

    ValueMeaning
    MFSTARTUP_NOSOCKET

    Do not initialize the sockets library.

    MFSTARTUP_LITE

    Equivalent to MFSTARTUP_NOSOCKET.

    MFSTARTUP_FULL

    Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

    ?

    + No documentation. + No documentation. + No documentation. +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_BAD_STARTUP_VERSION

    The Version parameter requires a newer version of Media Foundation than the version that is running.

    MF_E_DISABLED_IN_SAFEMODE

    The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

    ?

    + +

    An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

    Do not call or from work queue threads. For more information about work queues, see Work Queues.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702238 + HRESULT MFCreateMediaBufferFromMediaType([In] IMFMediaType* pMediaType,[In] longlong llDuration,[In] unsigned int dwMinLength,[In] unsigned int dwMinAlignment,[Out] IMFMediaBuffer** ppBuffer) + MFCreateMediaBufferFromMediaType +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a system-memory buffer object to hold 2D image data.

    +
    +

    Width of the image, in pixels.

    +

    Height of the image, in pixels.

    +

    A FOURCC code or D3DFORMAT value that specifies the video format. If you have a video subtype , you can use the first DWORD of the subtype.

    +

    If TRUE, the buffer's method copies the buffer into a bottom-up format. The bottom-up format is compatible with GDI for uncompressed RGB images. If this parameter is , the ContiguousCopyTo method copies the buffer into a top-down format, which is compatible with DirectX.

    For more information about top-down versus bottom-up images, see Image Stride.

    +

    Receives a reference to the interface.

    +

    This function can return one of these values.

    Return codeDescription

    Success.

    MF_E_INVALIDMEDIATYPE

    Unrecognized video format.

    ?

    + +

    The returned buffer object also exposes the interface.

    +
    + + hh162746 + HRESULT MFCreate2DMediaBuffer([In] unsigned int dwWidth,[In] unsigned int dwHeight,[In] unsigned int dwFourCC,[In] BOOL fBottomUp,[Out] IMFMediaBuffer** ppBuffer) + MFCreate2DMediaBuffer +
    + + +

    Applies to: desktop apps | Metro style apps

    Calculates ((a * b) + d) / c, where each term is a 64-bit signed value.

    +
    +

    A multiplier.

    +

    Another multiplier.

    +

    The divisor.

    +

    The rounding factor.

    +

    Returns the result of the calculation. If numeric overflow occurs, the function returns _I64_MAX (positive overflow) or LLONG_MIN (negative overflow). If Mfplat.dll cannot be loaded, the function returns _I64_MAX.

    + +

    Note??A previous version of this topic described the parameters incorrectly. The divisor is c and the rounding factor is d.

    +
    + + dd388510 + longlong MFllMulDiv([In] longlong a,[In] longlong b,[In] longlong c,[In] longlong d) + MFllMulDiv +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a media buffer to manage a Microsoft DirectX Graphics Infrastructure (DXGI) surface.

    +
    +

    Identifies the type of DXGI surface. This value must be IID_ID3D11Texture2D.

    +

    A reference to the interface of the DXGI surface.

    +

    The zero-based index of a subresource of the surface. The media buffer object is associated with this subresource.

    +

    If TRUE, the buffer's method copies the buffer into a bottom-up format. The bottom-up format is compatible with GDI for uncompressed RGB images. If this parameter is , the ContiguousCopyTo method copies the buffer into a top-down format, which is compatible with Direct3D.

    For more information about top-down versus bottom-up images, see Image Stride.

    +

    Receives a reference to the interface. The caller must release the buffer.

    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    The returned buffer object supports the following interfaces:

    +
    + + hh162751 + HRESULT MFCreateDXGISurfaceBuffer([In] const GUID& riid,[In] IUnknown* punkSurface,[In] unsigned int uSubresourceIndex,[In] BOOL fBottomUpWhenLinear,[Out] IMFMediaBuffer** ppBuffer) + MFCreateDXGISurfaceBuffer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Unlocks the shared Microsoft DirectX Graphics Infrastructure (DXGI) Device Manager.

    +
    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this function after a successful call to the function.

    +
    + + hh162800 + HRESULT MFUnlockDXGIDeviceManager() + MFUnlockDXGIDeviceManager +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Creates a Microsoft Media Foundation byte stream that wraps an IRandomAccessStream object.

    +
    + No documentation. + No documentation. +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + + hh162754 + HRESULT MFCreateMFByteStreamOnStreamEx([In] IUnknown* punkStream,[Out, Fast] IMFByteStream** ppByteStream) + MFCreateMFByteStreamOnStreamEx +
    + + +

    Applies to: desktop apps | Metro style apps

    Initializes Microsoft Media Foundation.

    +
    +

    Version number. Use the value , defined in mfapi.h.

    +

    This parameter is optional when using C++ but required in C. The value must be one of the following flags:

    ValueMeaning
    MFSTARTUP_NOSOCKET

    Do not initialize the sockets library.

    MFSTARTUP_LITE

    Equivalent to MFSTARTUP_NOSOCKET.

    MFSTARTUP_FULL

    Initialize the entire Media Foundation platform. This is the default value when dwFlags is not specified.

    ?

    + No documentation. +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_BAD_STARTUP_VERSION

    The Version parameter requires a newer version of Media Foundation than the version that is running.

    MF_E_DISABLED_IN_SAFEMODE

    The Media Foundation platform is disabled because the system was started in "Safe Mode" (fail-safe boot).

    ?

    + +

    An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

    Do not call or from work queue threads. For more information about work queues, see Work Queues.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702238 + HRESULT MFCreateStreamOnMFByteStreamEx([In] IMFByteStream* pByteStream,[In] const GUID& riid,[Out] void** ppv) + MFCreateStreamOnMFByteStreamEx +
    + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT MFCreatePropertiesFromMediaType([In] IMFMediaType* pMediaType,[In] const GUID& riid,[Out] void** ppv) + MFCreatePropertiesFromMediaType + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT MFCreateMediaTypeFromProperties([In] IUnknown* punkStream,[Out] IMFMediaType** ppMediaType) + MFCreateMediaTypeFromProperties + + + +

    Applies to: desktop apps | Metro style apps

    Loads attributes from a stream into an attribute store.

    +
    +

    Pointer to the interface of the attribute store.

    +

    Bitwise OR of zero or more flags from the enumeration.

    +

    Pointer to the interface of the stream from which to read the attributes.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Use this function to deserialize an attribute store that was serialized with the function.

    If dwOptions contains the flag, the function deserializes references from the stream, as follows:

    • If the reference exposes the IMFObjectReferenceStream interface (through QueryInterface), the function calls IMFObjectReferenceStream::LoadReference to deserialize each reference.

    • Otherwise, the function calls CoUnmarshalInterface to deserialize a proxy for the object.

    This function deletes any attributes that were previously stored in pAttr.

    +
    + + ms703162 + HRESULT MFDeserializeAttributesFromStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm) + MFDeserializeAttributesFromStream +
    + + +

    Applies to: desktop apps | Metro style apps

    Loads attributes from a stream into an attribute store.

    +
    +

    Pointer to the interface of the attribute store.

    +

    Bitwise OR of zero or more flags from the enumeration.

    +

    Pointer to the interface of the stream from which to read the attributes.

    +

    The function returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Use this function to deserialize an attribute store that was serialized with the function.

    If dwOptions contains the flag, the function deserializes references from the stream, as follows:

    • If the reference exposes the IMFObjectReferenceStream interface (through QueryInterface), the function calls IMFObjectReferenceStream::LoadReference to deserialize each reference.

    • Otherwise, the function calls CoUnmarshalInterface to deserialize a proxy for the object.

    This function deletes any attributes that were previously stored in pAttr.

    +
    + + ms703162 + HRESULT MFSerializeAttributesToStream([In] IMFAttributes* pAttr,[In] unsigned int dwOptions,[In] IStream* pStm) + MFSerializeAttributesToStream +
    + + + Functions + + + + + + Functions + + + + + Constant AacAudioProfileLevelIndication. + MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION + + + Constant AacPayloadType. + MF_MT_AAC_PAYLOAD_TYPE + + + Constant AllSamplesIndependent. + MF_MT_ALL_SAMPLES_INDEPENDENT + + + Constant AudioAvgBytesPerSecond. + MF_MT_AUDIO_AVG_BYTES_PER_SECOND + + + Constant AudioBitsPerSample. + MF_MT_AUDIO_BITS_PER_SAMPLE + + + Constant AudioBlockAlignment. + MF_MT_AUDIO_BLOCK_ALIGNMENT + + + Constant AudioChannelMask. + MF_MT_AUDIO_CHANNEL_MASK + + + Constant AudioFloatSamplesPerSecond. + MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND + + + Constant AudioFolddownMatrix. + MF_MT_AUDIO_FOLDDOWN_MATRIX + + + Constant AudioNumChannels. + MF_MT_AUDIO_NUM_CHANNELS + + + Constant AudioPreferWaveformatex. + MF_MT_AUDIO_PREFER_WAVEFORMATEX + + + Constant AudioSamplesPerBlock. + MF_MT_AUDIO_SAMPLES_PER_BLOCK + + + Constant AudioSamplesPerSecond. + MF_MT_AUDIO_SAMPLES_PER_SECOND + + + Constant AudioValidBitsPerSample. + MF_MT_AUDIO_VALID_BITS_PER_SAMPLE + + + Constant AudioWmadrcAvgref. + MF_MT_AUDIO_WMADRC_AVGREF + + + Constant AudioWmadrcAvgtarget. + MF_MT_AUDIO_WMADRC_AVGTARGET + + + Constant AudioWmadrcPeakref. + MF_MT_AUDIO_WMADRC_PEAKREF + + + Constant AudioWmadrcPeaktarget. + MF_MT_AUDIO_WMADRC_PEAKTARGET + + + Constant AvgBitErrorRate. + MF_MT_AVG_BIT_ERROR_RATE + + + Constant AvgBitrate. + MF_MT_AVG_BITRATE + + + Constant Compressed. + MF_MT_COMPRESSED + + + Constant DefaultStride. + MF_MT_DEFAULT_STRIDE + + + Constant DrmFlags. + MF_MT_DRM_FLAGS + + + Constant DvAauxCtrlPack0. + MF_MT_DV_AAUX_CTRL_PACK_0 + + + Constant DvAauxCtrlPack1. + MF_MT_DV_AAUX_CTRL_PACK_1 + + + Constant DvAauxSrcPack0. + MF_MT_DV_AAUX_SRC_PACK_0 + + + Constant DvAauxSrcPack1. + MF_MT_DV_AAUX_SRC_PACK_1 + + + Constant DvVauxCtrlPack. + MF_MT_DV_VAUX_CTRL_PACK + + + Constant DvVauxSrcPack. + MF_MT_DV_VAUX_SRC_PACK + + + Constant FixedSizeSamples. + MF_MT_FIXED_SIZE_SAMPLES + + + Constant FrameRate. + MF_MT_FRAME_RATE + + + Constant FrameRateRangeMax. + MF_MT_FRAME_RATE_RANGE_MAX + + + Constant FrameRateRangeMin. + MF_MT_FRAME_RATE_RANGE_MIN + + + Constant FrameSize. + MF_MT_FRAME_SIZE + + + Constant GeometricAperture. + MF_MT_GEOMETRIC_APERTURE + + + Constant H264Capabilities. + MF_MT_H264_CAPABILITIES + + + Constant H264MaxCodecConfigDelay. + MF_MT_H264_MAX_CODEC_CONFIG_DELAY + + + Constant H264MaxMbPerSec. + MF_MT_H264_MAX_MB_PER_SEC + + + Constant H264RateControlModes. + MF_MT_H264_RATE_CONTROL_MODES + + + Constant H264SimulcastSupport. + MF_MT_H264_SIMULCAST_SUPPORT + + + Constant H264SupportedRateControlModes. + MF_MT_H264_SUPPORTED_RATE_CONTROL_MODES + + + Constant H264SupportedSliceModes. + MF_MT_H264_SUPPORTED_SLICE_MODES + + + Constant H264SupportedSyncFrameTypes. + MF_MT_H264_SUPPORTED_SYNC_FRAME_TYPES + + + Constant H264SupportedUsages. + MF_MT_H264_SUPPORTED_USAGES + + + Constant H264SvcCapabilities. + MF_MT_H264_SVC_CAPABILITIES + + + Constant H264Usage. + MF_MT_H264_USAGE + + + Constant ImageLossTolerant. + MF_MT_IMAGE_LOSS_TOLERANT + + + Constant InterlaceMode. + MF_MT_INTERLACE_MODE + + + Constant MajorType. + MF_MT_MAJOR_TYPE + + + Constant MaxKeyframeSpacing. + MF_MT_MAX_KEYFRAME_SPACING + + + Constant MinimumDisplayAperture. + MF_MT_MINIMUM_DISPLAY_APERTURE + + + Constant MpegSequenceHeader. + MF_MT_MPEG_SEQUENCE_HEADER + + + Constant MpegStartTimeCode. + MF_MT_MPEG_START_TIME_CODE + + + Constant Mpeg2ContentPACKET. + MF_MT_MPEG2_CONTENT_PACKET + + + Constant Mpeg2Flags. + MF_MT_MPEG2_FLAGS + + + Constant Mpeg2Level. + MF_MT_MPEG2_LEVEL + + + Constant Mpeg2Profile. + MF_MT_MPEG2_PROFILE + + + Constant Mpeg2STANDARD. + MF_MT_MPEG2_STANDARD + + + Constant Mpeg2TIMECODE. + MF_MT_MPEG2_TIMECODE + + + Constant Mpeg4CurrentSampleEntry. + MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY + + + Constant Mpeg4SampleDescription. + MF_MT_MPEG4_SAMPLE_DESCRIPTION + + + Constant PadControlFlags. + MF_MT_PAD_CONTROL_FLAGS + + + Constant Palette. + MF_MT_PALETTE + + + Constant PanScanAperture. + MF_MT_PAN_SCAN_APERTURE + + + Constant PanScanEnabled. + MF_MT_PAN_SCAN_ENABLED + + + Constant PixelAspectRatio. + MF_MT_PIXEL_ASPECT_RATIO + + + Constant SampleSize. + MF_MT_SAMPLE_SIZE + + + Constant SourceContentHint. + MF_MT_SOURCE_CONTENT_HINT + + + Constant Subtype. + MF_MT_SUBTYPE + + + Constant TimestampCanBeDTS. + MF_MT_TIMESTAMP_CAN_BE_DTS + + + Constant TransferFunction. + MF_MT_TRANSFER_FUNCTION + + + Constant UserData. + MF_MT_USER_DATA + + + Constant Video3d. + MF_MT_VIDEO_3D + + + Constant Video3dFirstIsLeft. + MF_MT_VIDEO_3D_FIRST_IS_LEFT + + + Constant Video3dFormat. + MF_MT_VIDEO_3D_FORMAT + + + Constant Video3dLeftIsBase. + MF_MT_VIDEO_3D_LEFT_IS_BASE + + + Constant Video3dNumViews. + MF_MT_VIDEO_3D_NUM_VIEWS + + + Constant VideoChromaSiting. + MF_MT_VIDEO_CHROMA_SITING + + + Constant VideoLighting. + MF_MT_VIDEO_LIGHTING + + + Constant VideoNominalRange. + MF_MT_VIDEO_NOMINAL_RANGE + + + Constant VideoPrimaries. + MF_MT_VIDEO_PRIMARIES + + + Constant VideoRotation. + MF_MT_VIDEO_ROTATION + + + Constant WrappedType. + MF_MT_WRAPPED_TYPE + + + Constant YuvMatrix. + MF_MT_YUV_MATRIX + + + + Functions + + + + + Constant Protected. + MFMediaType_Protected + + + Constant Audio. + MFMediaType_Audio + + + Constant FileTransfer. + MFMediaType_FileTransfer + + + Constant Image. + MFMediaType_Image + + + Constant Html. + MFMediaType_HTML + + + Constant Binary. + MFMediaType_Binary + + + Constant Video. + MFMediaType_Video + + + Constant Sami. + MFMediaType_SAMI + + + Constant Default. + MFMediaType_Default + + + Constant Script. + MFMediaType_Script + + + Constant Stream. + MFMediaType_Stream + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant GraphicsTransferAesEncryption. + MFPROTECTION_GRAPHICS_TRANSFER_AES_ENCRYPTION + + + + Functions + + + + + Constant Video3D. + MFSampleExtension_3DVideo + + + Constant Video3DSampleFormat. + MFSampleExtension_3DVideo_SampleFormat + + + Constant BottomFieldFirst. + MFSampleExtension_BottomFieldFirst + + + Constant CleanPoint. + MFSampleExtension_CleanPoint + + + Constant DecodeTimestamp. + MFSampleExtension_DecodeTimestamp + + + Constant DerivedFromTopField. + MFSampleExtension_DerivedFromTopField + + + Constant Discontinuity. + MFSampleExtension_Discontinuity + + + Constant FrameCorruption. + MFSampleExtension_FrameCorruption + + + Constant Interlaced. + MFSampleExtension_Interlaced + + + Constant PacketCrossOffsets. + MFSampleExtension_PacketCrossOffsets + + + Constant RepeatFirstField. + MFSampleExtension_RepeatFirstField + + + Constant SingleField. + MFSampleExtension_SingleField + + + Constant Token. + MFSampleExtension_Token + + + Constant VideoEncodePictureType. + MFSampleExtension_VideoEncodePictureType + + + Constant VideoEncodeQP. + MFSampleExtension_VideoEncodeQP + + + + Functions + + + + + + Functions + + + + + Constant LowLatency. + MF_LOW_LATENCY + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant DXVAMode. + MF_TOPOLOGY_DXVA_MODE + + + Constant NoMarkinMarkout. + MF_TOPOLOGY_NO_MARKIN_MARKOUT + + + Constant PlaybackMaxDimensions. + MF_TOPOLOGY_PLAYBACK_MAX_DIMS + + + Constant ProjectStart. + MF_TOPOLOGY_PROJECTSTART + + + Constant ProjectStop. + MF_TOPOLOGY_PROJECTSTOP + + + Constant StaticPlaybackOptimizations. + MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS + + + + Functions + + + + + + Functions + + + + + + Functions + + + + + Constant DisableLocallyRegisteredPlugins. + MF_DISABLE_LOCALLY_REGISTERED_PLUGINS + + + Constant Enable3dvideoOutput. + MF_ENABLE_3DVIDEO_OUTPUT + + + Constant BuffersPerSample. + MF_SA_BUFFERS_PER_SAMPLE + + + Constant D3DAware. + MF_SA_D3D_AWARE + + + Constant D3D11Aware. + MF_SA_D3D11_AWARE + + + Constant D3D11Bindflags. + MF_SA_D3D11_BINDFLAGS + + + Constant D3D11Usage. + MF_SA_D3D11_USAGE + + + Constant TransformAsync. + MF_TRANSFORM_ASYNC + + + Constant TransformAsyncUnlock. + MF_TRANSFORM_ASYNC_UNLOCK + + + Constant TransformCategoryAttribute. + MF_TRANSFORM_CATEGORY_Attribute + + + Constant TransformFlagsAttribute. + MF_TRANSFORM_FLAGS_Attribute + + + Constant MftCodecMeritAttribute. + MFT_CODEC_MERIT_Attribute + + + Constant MftConnectedStreamAttribute. + MFT_CONNECTED_STREAM_ATTRIBUTE + + + Constant MftConnectedToHwStream. + MFT_CONNECTED_TO_HW_STREAM + + + Constant MftDecoderExposeOutputTypesInNativeOrder. + MFT_DECODER_EXPOSE_OUTPUT_TYPES_IN_NATIVE_ORDER + + + Constant MftDecoderFinalVideoResolutionHint. + MFT_DECODER_FINAL_VIDEO_RESOLUTION_HINT + + + Constant MftEnumHardwareUrlAttribute. + MFT_ENUM_HARDWARE_URL_Attribute + + + Constant MftEnumHardwareVendorIdAttribute. + MFT_ENUM_HARDWARE_VENDOR_ID_Attribute + + + Constant MftEnumTranscodeOnlyAttribute. + MFT_ENUM_TRANSCODE_ONLY_ATTRIBUTE + + + Constant MftFieldofuseUnlockAttribute. + MFT_FIELDOFUSE_UNLOCK_Attribute + + + Constant MftFriendlyNameAttribute. + MFT_FRIENDLY_NAME_Attribute + + + Constant MftHwTimestampWithQpcAttribute. + MFT_HW_TIMESTAMP_WITH_QPC_Attribute + + + Constant MftInputTypesAttributes. + MFT_INPUT_TYPES_Attributes + + + Constant MftOutputTypesAttributes. + MFT_OUTPUT_TYPES_Attributes + + + Constant MftPreferredEncoderProfile. + MFT_PREFERRED_ENCODER_PROFILE + + + Constant MftPreferredOutputtypeAttribute. + MFT_PREFERRED_OUTPUTTYPE_Attribute + + + Constant MftProcessLocalAttribute. + MFT_PROCESS_LOCAL_Attribute + + + Constant MftSupport3dvideo. + MFT_SUPPORT_3DVIDEO + + + Constant MftSupportDynamicFormatChange. + MFT_SUPPORT_DYNAMIC_FORMAT_CHANGE + + + Constant MftTransformClsidAttribute. + MFT_TRANSFORM_CLSID_Attribute + + + +

    Applies to: desktop apps | Metro style apps

    Creates the object associated with this activation object.

    +
    + +

    Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in ppv. To shut down the object, do one of the following:

    • Call on the activation object, or
    • Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:
      • Media sources: Call IMFMediaSource::Shutdown.
      • Media sinks: Call IMFMediaSink::Shutdown.
      • Any object that supports the IMFShutdown interface: Call IMFShutdown::Shutdown.

    The method is generic to all object types. If the object does not require a shutdown method, ShutdownObject succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call .

    After the first call to ActivateObject, subsequent calls return a reference to the same instance, until the client calls either ShutdownObject or .

    +
    + + ms694292 + IMFActivate + IMFActivate +
    + + +

    Applies to: desktop apps | Metro style apps

    Provides a generic way to store key/value pairs on an object. The keys are s, and the values can be any of the following data types: UINT32, UINT64, double, , wide-character string, byte array, or reference. The standard implementation of this interface holds a thread lock while values are added, deleted, or retrieved.

    For a list of predefined attribute s, see Media Foundation Attributes. Each attribute has an expected data type. The various "set" methods in do not validate the type against the attribute . It is the application's responsibility to set the correct type for the attribute.

    To create an empty attribute store, call .

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704598 + IMFAttributes + IMFAttributes +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) + IMFAttributes::GetItem + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IMFAttributes::GetItemType([In] const GUID& guidKey,[Out] MF_ATTRIBUTE_TYPE* pType) + IMFAttributes::GetItemType + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IMFAttributes::CompareItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value,[Out] BOOL* pbResult) + IMFAttributes::CompareItem + + + +

    Applies to: desktop apps | Metro style apps

    Compares the attributes on this object with the attributes on another object.

    +
    +

    Pointer to the interface of the object to compare with this object.

    +

    Member of the enumeration, specifying the type of comparison to make.

    +

    Receives a Boolean value. The value is TRUE if the two sets of attributes match in the way specified by the MatchType parameter. Otherwise, the value is .

    + +

    If pThis is the object whose Compare method is called, and pTheirs is the object passed in as the pTheirs parameter, the following comparisons are defined by MatchType.

    Match typeReturns TRUE if and only if
    For every attribute in pThis, an attribute with the same key and value exists in pTheirs.
    For every attribute in pTheirs, an attribute with the same key and value exists in pThis.
    The key/value pairs are identical in both objects.
    Take the intersection of the keys in pThis and the keys in pTheirs. The values associated with those keys are identical in both pThis and pTheirs.
    Take the object with the smallest number of attributes. For every attribute in that object, an attribute with the same key and value exists in the other object.

    ?

    The pTheirs and pbResult parameters must not be null. If either parameter is null, an access violation occurs.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970349 + HRESULT IMFAttributes::Compare([In, Optional] IMFAttributes* pTheirs,[In] MF_ATTRIBUTES_MATCH_TYPE MatchType,[Out] BOOL* pbResult) + IMFAttributes::Compare +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a UINT32 value associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Receives a UINT32 value. If the key is found and the data type is UINT32, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970551 + HRESULT IMFAttributes::GetUINT32([In] const GUID& guidKey,[Out] unsigned int* punValue) + IMFAttributes::GetUINT32 +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a UINT64 value associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Receives a UINT64 value. If the key is found and the data type is UINT64, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970569 + HRESULT IMFAttributes::GetUINT64([In] const GUID& guidKey,[Out] unsigned longlong* punValue) + IMFAttributes::GetUINT64 +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a double value associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Receives a double value. If the key is found and the data type is double, the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970418 + HRESULT IMFAttributes::GetDouble([In] const GUID& guidKey,[Out] double* pfValue) + IMFAttributes::GetDouble +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a value associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Receives a value. If the key is found and the data type is , the method copies the value into this parameter. Otherwise, the original value of this parameter is not changed.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970426 + HRESULT IMFAttributes::GetGUID([In] const GUID& guidKey,[Out] GUID* pguidValue) + IMFAttributes::GetGUID +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of a string value associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    If the key is found and the value is a string type, this parameter receives the number of characters in the string, not including the terminating null character. To get the string value, call .

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970425 + HRESULT IMFAttributes::GetStringLength([In] const GUID& guidKey,[Out] unsigned int* pcchLength) + IMFAttributes::GetStringLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a wide-character string associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Pointer to a wide-character array allocated by the caller. The array must be large enough to hold the string, including the terminating null character. If the key is found and the value is a string type, the method copies the string into this buffer. To find the length of the string, call .

    +

    The size of the pwszValue array, in characters. This value includes the terminating null character.

    +

    Receives the number of characters in the string, excluding the terminating null character. This parameter can be null.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_OUTOFMEMORY

    The length of the string is too large to fit in a UINT32 value.

    E_NOT_SUFFICIENT_BUFFER

    The buffer is not large enough to hold the string.

    MF_E_ATTRIBUTENOTFOUND

    The specified key was not found.

    MF_E_INVALIDTYPE

    The attribute value is not a string.

    ?

    + +

    You can also use the method, which allocates the buffer to hold the string.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970430 + HRESULT IMFAttributes::GetString([In] const GUID& guidKey,[Out, Buffer] wchar_t* pwszValue,[In] unsigned int cchBufSize,[InOut, Optional] unsigned int* pcchLength) + IMFAttributes::GetString +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets a wide-character string associated with a key. This method allocates the memory for the string.

    +
    +

    A that identifies which value to retrieve. The attribute type must be .

    +

    If the key is found and the value is a string type, this parameter receives a copy of the string. The caller must free the memory for the string by calling CoTaskMemFree.

    +

    Receives the number of characters in the string, excluding the terminating null character. This parameter must not be null.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_ATTRIBUTENOTFOUND

    The specified key was not found.

    MF_E_INVALIDTYPE

    The attribute value is not a string.

    ?

    + +

    To copy a string value into a caller-allocated buffer, use the method.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.

    Note??An earlier version of the documentation incorrectly stated that the pcchLength parameter can be null. Setting this parameter to null might succeed in some cases, but is not guaranteed. The caller must pass a non-null reference for this parameter.

    +
    + + bb970406 + HRESULT IMFAttributes::GetAllocatedString([In] const GUID& guidKey,[Out, Buffer, Optional] wchar_t** ppwszValue,[Out] unsigned int* pcchLength) + IMFAttributes::GetAllocatedString +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of a byte array associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    If the key is found and the value is a byte array, this parameter receives the size of the array, in bytes.

    + +

    To get the byte array, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970459 + HRESULT IMFAttributes::GetBlobSize([In] const GUID& guidKey,[Out] unsigned int* pcbBlobSize) + IMFAttributes::GetBlobSize +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a byte array associated with a key. This method copies the array into a caller-allocated buffer.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Pointer to a buffer allocated by the caller. If the key is found and the value is a byte array, the method copies the array into this buffer. To find the required size of the buffer, call .

    +

    The size of the pBuf buffer, in bytes.

    +

    Receives the size of the byte array. This parameter can be null.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOT_SUFFICIENT_BUFFER

    The buffer is not large enough to the array.

    MF_E_ATTRIBUTENOTFOUND

    The specified key was not found.

    MF_E_INVALIDTYPE

    The attribute value is not a byte array.

    ?

    + +

    You can also use the method, which allocates the buffer to hold the byte array.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970421 + HRESULT IMFAttributes::GetBlob([In] const GUID& guidKey,[In] void* pBuf,[In] unsigned int cbBufSize,[InOut, Optional] unsigned int* pcbBlobSize) + IMFAttributes::GetBlob +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a byte array associated with a key. This method allocates the memory for the array.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    If the key is found and the value is a byte array, this parameter receives a copy of the array. The caller must free the memory for the array by calling CoTaskMemFree.

    +

    Receives the size of the array, in bytes.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_ATTRIBUTENOTFOUND

    The specified key was not found.

    MF_E_INVALIDTYPE

    The attribute value is not a byte array.

    ?

    + +

    To copy a byte array value into a caller-allocated buffer, use the method.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970382 + HRESULT IMFAttributes::GetAllocatedBlob([In] const GUID& guidKey,[Out, Buffer, Optional] unsigned char** ppBuf,[Out] unsigned int* pcbSize) + IMFAttributes::GetAllocatedBlob +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an interface reference associated with a key.

    +
    +

    that identifies which value to retrieve. The attribute type must be .

    +

    Interface identifier (IID) of the interface to retrieve.

    +

    Receives a reference to the requested interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOINTERFACE

    The attribute value is an reference but does not support requested interface.

    MF_E_ATTRIBUTENOTFOUND

    The specified key was not found.

    MF_E_INVALIDTYPE

    The attribute value is not an reference.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970481 + HRESULT IMFAttributes::GetUnknown([In] const GUID& guidKey,[In] const GUID& riid,[Out] void** ppv) + IMFAttributes::GetUnknown +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds an attribute value with a specified key.

    +
    +

    A that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_OUTOFMEMORY

    Insufficient memory.

    MF_E_INVALIDTYPE

    Invalid attribute type.

    ?

    + +

    This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970346 + HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) + IMFAttributes::SetItem +
    + + +

    Removes a key/value pair from the object's attribute list.

    DeleteItem( REFGUID guidKey + ); +

    Parameters

    guidKey

    [in] that identifies the value to delete.

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return code Description

    The method succeeded.

    If the specified key does not exist, the method returns .

    Client: Requires Windows Vista.

    Header: Defined in mfobjects.h; include mfidl.h.

    Library: Use mfuuid.lib.

    ReferenceIMFAttributes Interface +
    + No documentation. + No documentation. + + ms701993 + HRESULT IMFAttributes::DeleteItem([In] const GUID& guidKey) + IMFAttributes::DeleteItem +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes all key/value pairs from the object's attribute list.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms700200 + HRESULT IMFAttributes::DeleteAllItems() + IMFAttributes::DeleteAllItems +
    + + +

    Applies to: desktop apps | Metro style apps

    Associates a UINT32 value with a key.

    +
    +

    that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    New value for this key.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To retrieve the UINT32 value, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970467 + HRESULT IMFAttributes::SetUINT32([In] const GUID& guidKey,[In] unsigned int unValue) + IMFAttributes::SetUINT32 +
    + + +

    Applies to: desktop apps | Metro style apps

    Associates a UINT64 value with a key.

    +
    +

    that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    New value for this key.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To retrieve the UINT64 value, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970439 + HRESULT IMFAttributes::SetUINT64([In] const GUID& guidKey,[In] unsigned longlong unValue) + IMFAttributes::SetUINT64 +
    + + +

    Applies to: desktop apps | Metro style apps

    Associates a double value with a key.

    +
    +

    that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    New value for this key.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To retrieve the double value, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970505 + HRESULT IMFAttributes::SetDouble([In] const GUID& guidKey,[In] double fValue) + IMFAttributes::SetDouble +
    + + +

    Applies to: desktop apps | Metro style apps

    Associates a value with a key.

    +
    +

    that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    New value for this key.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_OUTOFMEMORY

    Insufficient memory.

    ?

    + +

    To retrieve the value, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970530 + HRESULT IMFAttributes::SetGUID([In] const GUID& guidKey,[In] const GUID& guidValue) + IMFAttributes::SetGUID +
    + + +

    Applies to: desktop apps | Metro style apps

    Associates a wide-character string with a key.

    +
    +

    that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    Null-terminated wide-character string to associate with this key. The method stores a copy of the string.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To retrieve the string, call or .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970404 + HRESULT IMFAttributes::SetString([In] const GUID& guidKey,[In] const wchar_t* wszValue) + IMFAttributes::SetString +
    + + +

    Associates a byte array with a key.

    SetString( REFGUID guidKey, const UINT8* pBuf, UINT32 cbBufSize + );

    Parameters

    guidKey

    [in] that identifies the value to set. If this key already exists, the method overwrites the old value.

    pBuf

    [in] Pointer to a byte array to associate with this key. The method stores a copy of the array.

    cbBufSize

    [in] Size of the array, in bytes.

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return code Description

    E_OUTOFMEMORY

    Insufficient memory.

    The method succeeded.

    Client: Requires Windows Vista.

    Header: Defined in mfobjects.h; include mfidl.h.

    Library: Use mfuuid.lib.

    ReferenceIMFAttributes Interface +
    + No documentation. + No documentation. + No documentation. + No documentation. + + ms694230 + HRESULT IMFAttributes::SetBlob([In] const GUID& guidKey,[In] const void* pBuf,[In] unsigned int cbBufSize) + IMFAttributes::SetBlob +
    + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IMFAttributes::SetUnknown([In] const GUID& guidKey,[In, Optional] IUnknown* pUnknown) + IMFAttributes::SetUnknown + + + +

    Applies to: desktop apps | Metro style apps

    Locks the attribute store so that no other thread can access it. If the attribute store is already locked by another thread, this method blocks until the other thread unlocks the object. After calling this method, call to unlock the object.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This method can cause a deadlock if a thread that calls LockStore waits on a thread that calls any other methods on the same object.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698926 + HRESULT IMFAttributes::LockStore() + IMFAttributes::LockStore +
    + + +

    Applies to: desktop apps | Metro style apps

    Unlocks the attribute store after a call to the method. While the object is unlocked, multiple threads can access the object's attributes.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697545 + HRESULT IMFAttributes::UnlockStore() + IMFAttributes::UnlockStore +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of attributes that are set on this object.

    +
    +

    Receives the number of attributes. This parameter must not be null. If this parameter is null, an access violation occurs.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To enumerate all of the attributes, call for each index value.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970413 + HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems) + IMFAttributes::GetCount +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an attribute at the specified index.

    +
    +

    Index of the attribute to retrieve. To get the number of attributes, call .

    +

    Receives the that identifies this attribute.

    +

    Pointer to a that receives the value. This parameter can be null. If it is not null, the method fills the with a copy of the attribute value. Call PropVariantClear to free the memory allocated by this method.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    Invalid index.

    ?

    + +

    To enumerate all of an object's attributes in a thread-safe way, do the following:

    1. Call to prevent another thread from adding or deleting attributes.

    2. Call to find the number of attributes.

    3. Call GetItemByIndex to get each attribute by index.

    4. Call to unlock the attribute store.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970331 + HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue) + IMFAttributes::GetItemByIndex +
    + + +

    Applies to: desktop apps | Metro style apps

    Copies all of the attributes from this object into another attribute store.

    +
    +

    A reference to the interface of the attribute store that receives the copy.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method deletes all of the attributes originally stored in pDest.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970330 + HRESULT IMFAttributes::CopyAllItems([In, Optional] IMFAttributes* pDest) + IMFAttributes::CopyAllItems +
    + + + Initializes a new instance of the class. + + The initial number of elements allocated for the attribute store. The attribute store grows as needed. Default is 0 + +

    Attributes are used throughout Microsoft Media Foundation to configure objects, describe media formats, query object properties, and other purposes. For more information, see Attributes in Media Foundation.

    For a complete list of all the defined attribute GUIDs in Media Foundation, see Media Foundation Attributes.

    +
    + ms701878 + HRESULT MFCreateAttributes([Out] IMFAttributes** ppMFAttributes,[In] unsigned int cInitialSize) + MFCreateAttributes +
    + + + Gets an item value + + GUID of the key. + The value associated to this key. + ms704598 + HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) + IMFAttributes::GetItem + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an attribute at the specified index.

    +
    +

    Index of the attribute to retrieve. To get the number of attributes, call .

    +

    Receives the that identifies this attribute.

    + The value associated to this index + +

    To enumerate all of an object's attributes in a thread-safe way, do the following:

    1. Call to prevent another thread from adding or deleting attributes.

    2. Call to find the number of attributes.

    3. Call GetItemByIndex to get each attribute by index.

    4. Call to unlock the attribute store.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + bb970331 + HRESULT IMFAttributes::GetItemByIndex([In] unsigned int unIndex,[Out] GUID* pguidKey,[InOut, Optional] PROPVARIANT* pValue) + IMFAttributes::GetItemByIndex +
    + + + Gets an item value + + GUID of the key. + The value associated to this key. + ms704598 + HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) + IMFAttributes::GetItem + + + + Gets an item value + + GUID of the key. + The value associated to this key. + ms704598 + HRESULT IMFAttributes::GetItem([In] const GUID& guidKey,[In] void* pValue) + IMFAttributes::GetItem + + + +

    Applies to: desktop apps | Metro style apps

    Adds an attribute value with a specified key.

    +
    +

    A that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_OUTOFMEMORY

    Insufficient memory.

    MF_E_INVALIDTYPE

    Invalid attribute type.

    ?

    + +

    This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + bb970346 + HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) + IMFAttributes::SetItem +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds an attribute value with a specified key.

    +
    +

    A that identifies the value to set. If this key already exists, the method overwrites the old value.

    +

    A that contains the attribute value. The method copies the value. The type must be one of the types listed in the enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_OUTOFMEMORY

    Insufficient memory.

    MF_E_INVALIDTYPE

    Invalid attribute type.

    ?

    + +

    This method checks whether the type is one of the attribute types defined in , and fails if an unsupported type is used. However, this method does not check whether the is the correct type for the specified attribute . (There is no programmatic way to associate attribute GUIDs with property types.) For a list of Media Foundation attributes and their data types, see Media Foundation Attributes.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + bb970346 + HRESULT IMFAttributes::SetItem([In] const GUID& guidKey,[In] const PROPVARIANT& Value) + IMFAttributes::SetItem +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of attributes that are set on this object.

    +
    + +

    To enumerate all of the attributes, call for each index value.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970413 + GetCount + GetCount + HRESULT IMFAttributes::GetCount([Out] unsigned int* pcItems) +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Creates the object associated with this activation object.

    +
    +

    Interface identifier (IID) of the requested interface.

    +

    Receives a reference to the requested interface. The caller must release the interface.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Some Microsoft Media Foundation objects must be shut down before being released. If so, the caller is responsible for shutting down the object that is returned in ppv. To shut down the object, do one of the following:

    • Call on the activation object, or
    • Call the object-specific shutdown method. This method will depend on the type of object. Possibilities include:
      • Media sources: Call IMFMediaSource::Shutdown.
      • Media sinks: Call IMFMediaSink::Shutdown.
      • Any object that supports the IMFShutdown interface: Call IMFShutdown::Shutdown.

    The method is generic to all object types. If the object does not require a shutdown method, ShutdownObject succeeds and has no effect. If you do not know the specific shutdown method for the object (or do not know the object type), call .

    After the first call to ActivateObject, subsequent calls return a reference to the same instance, until the client calls either ShutdownObject or .

    +
    + + ms694292 + HRESULT IMFActivate::ActivateObject([In] const GUID& riid,[Out] void** ppv) + IMFActivate::ActivateObject +
    + + +

    Applies to: desktop apps | Metro style apps

    Shuts down the created object.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    If you create an object by calling , call ShutdownObject when you are done using the object.

    The component that calls ActivateObject?not the component that creates the activation object?is responsible for calling ShutdownObject. For example, in a typical playback application, the application creates activation objects for the media sinks, but the Media Session calls ActivateObject. Therefore the Media Session, not the application, calls ShutdownObject.

    After ShutdownObject is called, the activation object releases all of its internal references to the created object. If you call ActivateObject again, the activation object will create a new instance of the other object.

    +
    + + ms695228 + HRESULT IMFActivate::ShutdownObject() + IMFActivate::ShutdownObject +
    + + +

    Applies to: desktop apps | Metro style apps

    Detaches the created object from the activation object.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented.

    ?

    + +

    The activation object releases all of its internal references to the created object. If you call ActivateObject again, the activation object will create a new instance of the other object.

    The DetachObject method does not shut down the created object. If the DetachObject method succeeds, the client must shut down the created object. This rule applies only to objects that have a shutdown method or that support the IMFShutdown interface. See the remarks for .

    Implementation of this method is optional. If the activation object does not support this method, the method returns E_NOTIMPL.

    +
    + + aa367342 + HRESULT IMFActivate::DetachObject() + IMFActivate::DetachObject +
    + + +

    Applies to: desktop apps | Metro style apps

    Callback interface to notify the application when an asynchronous method completes.

    +
    + +

    For more information about asynchronous methods in Microsoft Media Foundation, see Asynchronous Callback Methods.

    This interface is also used to perform a work item in a Media Foundation work-queue. For more information, see Work Queues.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms699856 + IMFAsyncCallback + IMFAsyncCallback +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Provides configuration information to the dispatching thread for a callback.

    +
    +

    Receives a flag indicating the behavior of the callback object's method. The following values are defined. The default value is zero.

    ValueMeaning
    Zero

    The callback does not take a long time to complete, but has no specific restrictions on what system calls it makes. The callback generally takes less than 30 milliseconds to complete.

    MFASYNC_FAST_IO_PROCESSING_CALLBACK

    The callback does very minimal processing. It takes less than 1 millisecond to complete.

    The callback must be invoked from one of the following work queues:

    • MFASYNC_CALLBACK_QUEUE_IO
    • MFASYNC_CALLBACK_QUEUE_TIMER
    MFASYNC_SIGNAL_CALLBACK

    Implies MFASYNC_FAST_IO_PROCESSING_CALLBACK, with the additional restriction that the callback does no processing (less than 50 microseconds), and the only system call it makes is SetEvent.

    The callback must be invoked from one of the following work queues:

    • MFASYNC_CALLBACK_QUEUE_IO
    • MFASYNC_CALLBACK_QUEUE_TIMER
    MFASYNC_BLOCKING_CALLBACK

    Blocking callback.

    MFASYNC_REPLY_CALLBACK

    Reply callback.

    ?

    +

    Receives the identifier of the work queue on which the callback is dispatched.

    This value can specify one of the standard Media Foundation work queues, or a work queue created by the application. For list of standard Media Foundation work queues, see Work Queue Identifiers. To create a new work queue, call MFAllocateWorkQueue. The default value is MFASYNC_CALLBACK_QUEUE_STANDARD.

    If the work queue is not compatible with the value returned in pdwFlags, the Media Foundation platform returns MF_E_INVALID_WORKQUEUE when it tries to dispatch the callback. (See MFPutWorkItem.)

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented. Assume the default behavior.

    ?

    + +

    The GetParameters method returns information about the callback so that the dispatching thread can optimize the process that it uses to invoke the callback.

    If the method returns a value other than zero in the pdwFlags parameter, your Invoke method must meet the requirements described here. Otherwise, the callback might delay the pipeline.

    If you want default values for both parameters, return E_NOTIMPL. The default values are given in the parameter descriptions on this page.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970381 + HRESULT IMFAsyncCallback::GetParameters([Out] unsigned int* pdwFlags,[Out] unsigned int* pdwQueue) + IMFAsyncCallback::GetParameters +
    + + +

    Applies to: desktop apps | Metro style apps

    Called when an asynchronous operation is completed.

    +
    +

    Pointer to the interface. Pass this reference to the asynchronous End... method to complete the asynchronous call.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Within your implementation of Invoke, call the corresponding End... method.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970360 + HRESULT IMFAsyncCallback::Invoke([In, Optional] IMFAsyncResult* pAsyncResult) + IMFAsyncCallback::Invoke +
    + + +

    Applies to: desktop apps | Metro style apps

    Provides information about the result of an asynchronous operation.

    +
    + +

    Use this interface to complete an asynchronous operation. You get a reference to this interface when your callback object's method is called. To complete the operation, pass the reference to the End... method that corresponds to the Begin... method that starts the operation. For example, if the asynchronous method is named BeginRead, call the EndRead method. For more information, see Calling Asynchronous Methods.

    If you are implementing an asynchronous method, call to create an instance of this object. For more information, see Writing an Asynchronous Method.

    Any custom implementation of this interface must inherit the structure.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms700196 + IMFAsyncResult + IMFAsyncResult +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Returns the state object specified by the caller in the asynchronous Begin method.

    +
    +

    Receives a reference to the state object's interface. If the value is not null, the caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_POINTER

    There is no state object associated with this asynchronous result.

    ?

    + +

    The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be null. If the state object is null, GetState returns E_POINTER.

    If you are implementing an asynchronous method, set the state object on the through the punkState parameter of the function.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970576 + HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState) + IMFAsyncResult::GetState +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns the status of the asynchronous operation.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The operation completed successfully.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702095 + HRESULT IMFAsyncResult::GetStatus() + IMFAsyncResult::GetStatus +
    + + +

    Sets the status of the asynchronous operation.

    SetStatus( hrStatus + );

    Parameters

    hrStatus

    The status of the asynchronous operation.

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return code Description

    The method succeeded.

    If you implement an asynchronous method, call SetStatus to set the status code for the operation.

    Client: Requires Windows Vista.

    Header: Defined in mfobjects.h; include mfidl.h.

    Library: Use mfuuid.lib.

    ReferenceIMFAsyncResult InterfaceConceptsAsynchronous Callback Methods +
    + No documentation. + No documentation. + + ms697440 + HRESULT IMFAsyncResult::SetStatus([In] HRESULT hrStatus) + IMFAsyncResult::SetStatus +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.

    +
    +

    Receives a reference to the object's interface. If no object is associated with the operation, this parameter receives the value null. If the value is not null, the caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_POINTER

    There is no object associated with this asynchronous result.

    ?

    + +

    Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous End... method that completes the operation.

    If you are implementing an asynchronous method, you can set the object through the punkObject parameter of the function.

    If the asynchronous result object's internal reference is null, the method returns E_POINTER.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970500 + HRESULT IMFAsyncResult::GetObject([Out] IUnknown** ppObject) + IMFAsyncResult::GetObject +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns the state object specified by the caller in the asynchronous Begin method, without incrementing the object's reference count.

    +
    +

    Returns a reference to the state object's interface, or null if no object was set. This reference does not have an outstanding reference count. If you store this reference, you must call AddRef on the reference.

    + +

    This method cannot be called remotely.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696238 + IUnknown* IMFAsyncResult::GetStateNoAddRef() + IMFAsyncResult::GetStateNoAddRef +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns the state object specified by the caller in the asynchronous Begin method.

    +
    + +

    The caller of the asynchronous method specifies the state object, and can use it for any caller-defined purpose. The state object can be null. If the state object is null, GetState returns E_POINTER.

    If you are implementing an asynchronous method, set the state object on the through the punkState parameter of the function.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970576 + GetState + GetState + HRESULT IMFAsyncResult::GetState([Out] IUnknown** ppunkState) +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns the status of the asynchronous operation.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702095 + GetStatus / SetStatus + GetStatus + HRESULT IMFAsyncResult::GetStatus() +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns an object associated with the asynchronous operation. The type of object, if any, depends on the asynchronous method that was called.

    +
    + +

    Typically, this object is used by the component that implements the asynchronous method. It provides a way for the function that invokes the callback to pass information to the asynchronous End... method that completes the operation.

    If you are implementing an asynchronous method, you can set the object through the punkObject parameter of the function.

    If the asynchronous result object's internal reference is null, the method returns E_POINTER.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970500 + GetObject + GetObject + HRESULT IMFAsyncResult::GetObject([Out] IUnknown** ppObject) +
    + + +

    Applies to: desktop apps | Metro style apps

    Returns the state object specified by the caller in the asynchronous Begin method, without incrementing the object's reference count.

    +
    + +

    This method cannot be called remotely.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696238 + GetStateNoAddRef + GetStateNoAddRef + IUnknown* IMFAsyncResult::GetStateNoAddRef() +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents a buffer that contains a two-dimensional surface, such as a video frame.

    +
    + +

    To get a reference to this interface, call QueryInterface on the media buffer.

    To use a 2-D buffer, it is important to know the stride, which is the number of bytes needed to go from one row of pixels to the next. The stride may be larger than the image width, because the surface may contain padding bytes after each row of pixels. Stride can also be negative, if the pixels are oriented bottom-up in memory. For more information, see Image Stride.

    Every video format defines a contiguous or packed representation. This representation is compatible with the standard layout of a DirectX surface in system memory, with no additional padding. For RGB video, the contiguous representation has a pitch equal to the image width in bytes, rounded up to the nearest DWORD boundary. For YUV video, the layout of the contiguous representation depends on the YUV format. For planar YUV formats, the Y plane might have a different pitch than the U and V planes.

    If a media buffer supports the interface, the underlying buffer is not guaranteed to have a contiguous representation, because there might be additional padding bytes after each row of pixels. When a buffer is non-contiguous, the Lock and Lock2D methods have different behaviors:

    • The Lock2D method returns a reference to the underlying buffer. The buffer might not be contiguous.
    • The Lock method returns a buffer that is guaranteed to be contiguous. If the underlying buffer is not contiguous, the method copies the data into a new buffer, and the Unlock method copies it back into the original buffer.

    Call the Lock2D method to access the 2-D buffer in its native format. The native format might not be contiguous. The buffer's method returns a contiguous representation of the buffer. However, this might require an internal copy from the native format. For 2-D buffers, therefore, you should use the Lock2D method and avoid the Lock method. Because the Lock method might cause up to two buffer copies, the Lock2D method is generally more efficient and should be used when possible. To find out if the underlying buffer is contiguous, call .

    For uncompressed images, the amount of valid data in the buffer is determined by the width, height, and pixel layout of the image. For this reason, if you call Lock2D to access the buffer, do not rely on the values returned by or . Similarly, if you modify the data in the buffer, you do not have to call to update the size. Generally, you should avoid mixing calls to and methods on the same media buffer.

    +
    + + ms699894 + IMF2DBuffer + IMF2DBuffer +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Gives the caller access to the memory in the buffer.

    +
    +

    Receives a reference to the first byte of the top row of pixels in the image. The top row is defined as the top row when the image is presented to the viewer, and might not be the first row in memory.

    +

    Receives the surface stride, in bytes. The stride might be negative, indicating that the image is oriented from the bottom up in memory.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    D3DERR_INVALIDCALL

    Cannot lock the Direct3D surface.

    MF_E_INVALIDREQUEST

    The buffer cannot be locked at this time.

    ?

    + +

    If p is a reference to the first byte in a row of pixels, p + (*plPitch) points to the first byte in the next row of pixels. A buffer might contain padding after each row of pixels, so the stride might be wider than the width of the image in bytes. Do not access the memory that is reserved for padding bytes, because it might not be read-accessible or write-accessible. For more information, see Image Stride.

    The reference returned in pbScanline0 remains valid as long as the caller holds the lock. When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2D. After you unlock the buffer, the reference returned in pbScanline0 is no longer valid and should not be used. Generally, it is best to call Lock2D only when you need to access the buffer memory, and not earlier.

    The values returned by the and methods do not apply to the buffer that is returned by the Lock2D method. For the same reason, you do not need to call after manipulating the data in the buffer returned by the Lock2D method.

    The method fails while the Lock2D lock is held, and vice-versa. Applications should use only one of these methods at a time.

    When the underlying buffer is a Direct3D surface, the method fails if the surface is not lockable.

    +
    + + ms700182 + HRESULT IMF2DBuffer::Lock2D([Out, Buffer] unsigned char** ppbScanline0,[Out] int* plPitch) + IMF2DBuffer::Lock2D +
    + + +

    Applies to: desktop apps | Metro style apps

    Unlocks a buffer that was previously locked. Call this method once for each call to .

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms697066 + HRESULT IMF2DBuffer::Unlock2D() + IMF2DBuffer::Unlock2D +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves a reference to the buffer memory and the surface stride.

    +
    +

    Receives a reference to the first byte of the top row of pixels in the image.

    +

    Receives the stride, in bytes. For more information, see Image Stride.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    You must lock the buffer before calling this method.

    ?

    + +

    Before calling this method, you must lock the buffer by calling . The reference returned in plPitch is valid only while the buffer remains locked.

    +
    + + ms694042 + HRESULT IMF2DBuffer::GetScanline0AndPitch([Out] unsigned char** pbScanline0,[Out] int* plPitch) + IMF2DBuffer::GetScanline0AndPitch +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the buffer is contiguous in its native format.

    +
    +

    Receives a Boolean value. The value is TRUE if the buffer is contiguous, and otherwise.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface. For non-contiguous buffers, the method must perform an internal copy.

    +
    + + ms701629 + HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous) + IMF2DBuffer::IsContiguousFormat +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.

    +
    +

    Receives the number of bytes needed to store the contents of the buffer in contiguous format.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

    +
    + + ms696971 + HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength) + IMF2DBuffer::GetContiguousLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Copies this buffer into the caller's buffer, converting the data to contiguous format.

    +
    +

    Pointer to the destination buffer where the data will be copied. The caller allocates the buffer.

    +

    Size of the destination buffer, in bytes. To get the required size, call .

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    Invalid size specified in pbDestBuffer.

    ?

    + +

    If the original buffer is not contiguous, this method converts the contents into contiguous format during the copy. For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

    +
    + + ms696215 + HRESULT IMF2DBuffer::ContiguousCopyTo([Out, Buffer] unsigned char* pbDestBuffer,[In] unsigned int cbDestBuffer) + IMF2DBuffer::ContiguousCopyTo +
    + + +

    Applies to: desktop apps | Metro style apps

    Copies data to this buffer from a buffer that has a contiguous format.

    +
    +

    Pointer to the source buffer. The caller allocates the buffer.

    +

    Size of the source buffer, in bytes. To get the maximum size of the buffer, call .

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This method copies the contents of the source buffer into the buffer that is managed by this object. The source buffer must be in contiguous format. While copying, the method converts the contents into the destination buffer's native format, correcting for the buffer's pitch if necessary.

    For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in the interface topic.

    +
    + + ms700162 + HRESULT IMF2DBuffer::ContiguousCopyFrom([In, Buffer] const unsigned char* pbSrcBuffer,[In] unsigned int cbSrcBuffer) + IMF2DBuffer::ContiguousCopyFrom +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the buffer is contiguous in its native format.

    +
    + +

    For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface. For non-contiguous buffers, the method must perform an internal copy.

    +
    + + ms701629 + IsContiguousFormat + IsContiguousFormat + HRESULT IMF2DBuffer::IsContiguousFormat([Out] BOOL* pfIsContiguous) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of bytes needed to store the contents of the buffer in contiguous format.

    +
    + +

    For a definition of contiguous as it applies to 2-D buffers, see the Remarks section in interface.

    +
    + + ms696971 + GetContiguousLength + GetContiguousLength + HRESULT IMF2DBuffer::GetContiguousLength([Out] unsigned int* pcbLength) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives the caller access to the memory in the buffer.

    +
    + +

    When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2DSize.

    This method is equivalent to the method. However, Lock2DSize is preferred because it enables the caller to validate memory references, and because it supports read-only locks. A buffer is not guaranteed to support the interface. To access a buffer, you should try the following methods in the order listed:

    The ppbBufferStart and pcbBufferLength parameters receive the bounds of the buffer memory. Use these values to guard against buffer overruns. Use the values of ppbScanline0 and plPitch to access the image data. If the image is bottom-up in memory, ppbScanline0 will point to the last scan line in memory and plPitch will be negative. For more information, see Image Stride.

    The lockFlags parameter specifies whether the buffer is locked for read-only access, write-only access, or read/write access.

    • If the buffer is already locked for read-only access, it cannot be locked for write access.
    • If the buffer is already locked for write-only access, it cannot be locked for read access.
    • If the buffer is already locked for read/write acess, it can be locked for read or write acess.

    When possible, use a read-only or write-only lock, and avoid locking the buffer for read/write access. If the buffer represents a DirectX Graphics Infrastructure (DXGI) surface, a read/write lock can cause an extra copy between CPU memory and GPU memory.

    +
    + + hh447829 + IMF2DBuffer2 + IMF2DBuffer2 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gives the caller access to the memory in the buffer.

    +
    +

    A member of the enumeration that specifies whether to lock the buffer for reading, writing, or both.

    +

    Receives a reference to the first byte of the top row of pixels in the image. The top row is defined as the top row when the image is presented to the viewer, and might not be the first row in memory.

    +

    Receives the surface stride, in bytes. The stride might be negative, indicating that the image is oriented from the bottom up in memory.

    +

    Receives a reference to the start of the accessible buffer in memory.

    +

    Receives the length of the buffer, in bytes.

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    MF_E_INVALIDREQUEST

    Invalid request. The buffer might already be locked with an incompatible locking flag. See Remarks.

    ?

    + +

    When you are done accessing the memory, call to unlock the buffer. You must call Unlock2D once for each call to Lock2DSize.

    This method is equivalent to the method. However, Lock2DSize is preferred because it enables the caller to validate memory references, and because it supports read-only locks. A buffer is not guaranteed to support the interface. To access a buffer, you should try the following methods in the order listed:

    The ppbBufferStart and pcbBufferLength parameters receive the bounds of the buffer memory. Use these values to guard against buffer overruns. Use the values of ppbScanline0 and plPitch to access the image data. If the image is bottom-up in memory, ppbScanline0 will point to the last scan line in memory and plPitch will be negative. For more information, see Image Stride.

    The lockFlags parameter specifies whether the buffer is locked for read-only access, write-only access, or read/write access.

    • If the buffer is already locked for read-only access, it cannot be locked for write access.
    • If the buffer is already locked for write-only access, it cannot be locked for read access.
    • If the buffer is already locked for read/write acess, it can be locked for read or write acess.

    When possible, use a read-only or write-only lock, and avoid locking the buffer for read/write access. If the buffer represents a DirectX Graphics Infrastructure (DXGI) surface, a read/write lock can cause an extra copy between CPU memory and GPU memory.

    +
    + + hh447829 + HRESULT IMF2DBuffer2::Lock2DSize([In] MF2DBuffer_LockFlags lockFlags,[Out, Buffer] unsigned char** ppbScanline0,[Out] int* plPitch,[Out, Buffer] unsigned char** ppbBufferStart,[Out] unsigned int* pcbBufferLength) + IMF2DBuffer2::Lock2DSize +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Copies the buffer to another 2D buffer object.

    +
    +

    A reference to the interface of the destination buffer.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The destination buffer must be at least as large as the source buffer.

    +
    + + hh447828 + HRESULT IMF2DBuffer2::Copy2DTo([In] IMF2DBuffer2* pDestBuffer) + IMF2DBuffer2::Copy2DTo +
    + + +

    Applies to: desktop apps | Metro style apps

    Controls how a byte stream buffers data from a network.

    To get a reference to this interface, call QueryInterface on the byte stream object.

    +
    + +

    If a byte stream implements this interface, a media source can use it to control how the byte stream buffers data. This interface is designed for byte streams that read data from a network.

    A byte stream that implements this interface should also implement the interface. When the byte stream starts buffering, it sends an event. When it stops buffering, it sends an event.

    The byte stream must send a matching event for every event. The byte stream must not send events unless the media source has enabled buffering by calling EnableBuffering with the value TRUE.

    After the byte stream sends an event, it should send if any of the following occur:

    • The byte stream finishes buffering data.
    • The byte stream reaches the end of the stream.
    • The media source calls EnableBuffering with the value .
    • The media source calls StopBuffering.

    The byte stream should not send any more buffering events after it reaches the end of the file.

    If buffering is disabled, the byte stream does not send any buffering events. Internally, however, it might still buffer data while it waits for I/O requests to complete. Therefore, methods might take an indefinite length of time to complete.

    If the byte stream is buffering data internally and the media source calls EnableBuffering with the value TRUE, the byte stream can send immediately.

    After the presentation has started, the media source should forward and and events that it receives while started. The Media Session will pause the presentation clock while buffering is progress and restart the presentation clock when buffering completes. The media source should only forward these events while the presentation is playing. The purpose of sending these events to the Media Session is to pause the presentation time while the source buffers data.

    +
    + + aa372548 + IMFByteStreamBuffering + IMFByteStreamBuffering +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Sets the buffering parameters.

    +
    +

    Pointer to an structure that contains the buffering parameters. The byte stream uses this information to calculate how much data to buffer from the network.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + aa366520 + HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams) + IMFByteStreamBuffering::SetBufferingParams +
    + + +

    Applies to: desktop apps | Metro style apps

    Enables or disables buffering.

    +
    +

    Specifies whether the byte stream buffers data. If TRUE, buffering is enabled. If , buffering is disabled.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Before calling this method, call to set the buffering parameters on the byte stream.

    +
    + + aa369933 + HRESULT IMFByteStreamBuffering::EnableBuffering([In] BOOL fEnable) + IMFByteStreamBuffering::EnableBuffering +
    + + +

    Applies to: desktop apps | Metro style apps

    Stops any buffering that is in progress.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The byte stream successfully stopped buffering.

    S_FALSE

    No buffering was in progress.

    ?

    + +

    If the byte stream is currently buffering data, it stops and sends an event. If the byte stream is not currently buffering, this method has no effect.

    +
    + + aa375256 + HRESULT IMFByteStreamBuffering::StopBuffering() + IMFByteStreamBuffering::StopBuffering +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the buffering parameters.

    +
    + + aa366520 + SetBufferingParams + SetBufferingParams + HRESULT IMFByteStreamBuffering::SetBufferingParams([In] MFBYTESTREAM_BUFFERING_PARAMS* pParams) +
    + + +

    Applies to: desktop apps only

    Stops the background transfer of data to the local cache.

    +
    + +

    The byte stream resumes transferring data to the cache if the application does one of the following:

    • Reads data from the byte stream.
    • Calls the byte stream's method.
    +
    + + dd368786 + IMFByteStreamCacheControl + IMFByteStreamCacheControl +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps only

    Stops the background transfer of data to the local cache.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The byte stream resumes transferring data to the cache if the application does one of the following:

    • Reads data from the byte stream.
    • Calls the byte stream's method.
    +
    + + dd368786 + HRESULT IMFByteStreamCacheControl::StopBackgroundTransfer() + IMFByteStreamCacheControl::StopBackgroundTransfer +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Queries whether background transfer is active.

    +
    + +

    Background transfer might stop because the cache limit was reached (see ) or because the method was called.

    +
    + + hh447832 + IMFByteStreamCacheControl2 + IMFByteStreamCacheControl2 +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the ranges of bytes that are currently stored in the cache.

    +
    +

    Receives the number of ranges returned in the ppRanges array.

    +

    Receives an array of structures. Each structure specifies a range of bytes stored in the cache. The caller must free the array by calling CoTaskMemFree.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447831 + HRESULT IMFByteStreamCacheControl2::GetByteRanges([Out] unsigned int* pcRanges,[Out, Buffer, Optional] MF_BYTE_STREAM_CACHE_RANGE** ppRanges) + IMFByteStreamCacheControl2::GetByteRanges +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Limits the cache size.

    +
    +

    The maximum number of bytes to store in the cache, or ULONGLONG_MAX for no limit. The default value is no limit.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447833 + HRESULT IMFByteStreamCacheControl2::SetCacheLimit([In] unsigned longlong qwBytes) + IMFByteStreamCacheControl2::SetCacheLimit +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Queries whether background transfer is active.

    +
    +

    Receives the value TRUE if background transfer is currently active, or otherwise.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Background transfer might stop because the cache limit was reached (see ) or because the method was called.

    +
    + + hh447832 + HRESULT IMFByteStreamCacheControl2::IsBackgroundTransferActive([Out] BOOL* pfActive) + IMFByteStreamCacheControl2::IsBackgroundTransferActive +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Limits the cache size.

    +
    + + hh447833 + SetCacheLimit + SetCacheLimit + HRESULT IMFByteStreamCacheControl2::SetCacheLimit([In] unsigned longlong qwBytes) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Queries whether background transfer is active.

    +
    + +

    Background transfer might stop because the cache limit was reached (see ) or because the method was called.

    +
    + + hh447832 + IsBackgroundTransferActive + IsBackgroundTransferActive + HRESULT IMFByteStreamCacheControl2::IsBackgroundTransferActive([Out] BOOL* pfActive) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the result of a time-based seek.

    +
    + +

    This method returns the server response from a previous time-based seek.

    Note??This method normally cannot be invoked until some data is read from the byte stream, because the method does not send a server request immediately.

    +
    + + hh447837 + IMFByteStreamTimeSeek + IMFByteStreamTimeSeek +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Queries whether the byte stream supports time-based seeking.

    +
    +

    Receives the value TRUE if the byte stream supports time-based seeking, or otherwise.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447838 + HRESULT IMFByteStreamTimeSeek::IsTimeSeekSupported([Out] BOOL* pfTimeSeekIsSupported) + IMFByteStreamTimeSeek::IsTimeSeekSupported +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Seeks to a new position in the byte stream.

    +
    +

    The new position, in 100-nanosecond units.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the byte stream reads from a server, it might cache the seek request until the next read request. Therefore, the byte stream might not send a request to the server immediately.

    +
    + + hh447839 + HRESULT IMFByteStreamTimeSeek::TimeSeek([In] unsigned longlong qwTimePosition) + IMFByteStreamTimeSeek::TimeSeek +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Gets the result of a time-based seek.

    +
    +

    Receives the new position after the seek, in 100-nanosecond units.

    +

    Receives the stop time, in 100-nanosecond units. If the stop time is unknown, the value is zero.

    +

    Receives the total duration of the file, in 100-nanosecond units. If the duration is unknown, the value is ?1.

    +

    This method can return one of these values.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDREQUEST

    The byte stream does not support time-based seeking, or no data is available.

    ?

    + +

    This method returns the server response from a previous time-based seek.

    Note??This method normally cannot be invoked until some data is read from the byte stream, because the method does not send a server request immediately.

    +
    + + hh447837 + HRESULT IMFByteStreamTimeSeek::GetTimeSeekResult([Out] unsigned longlong* pqwStartTime,[Out] unsigned longlong* pqwStopTime,[Out] unsigned longlong* pqwDuration) + IMFByteStreamTimeSeek::GetTimeSeekResult +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Queries whether the byte stream supports time-based seeking.

    +
    + + hh447838 + IsTimeSeekSupported + IsTimeSeekSupported + HRESULT IMFByteStreamTimeSeek::IsTimeSeekSupported([Out] BOOL* pfTimeSeekIsSupported) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of objects in the collection.

    +
    + + ms697034 + IMFCollection + IMFCollection +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of objects in the collection.

    +
    +

    Receives the number of objects in the collection.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms697034 + HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements) + IMFCollection::GetElementCount +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an object in the collection.

    +
    +

    Zero-based index of the object to retrieve. Objects are indexed in the order in which they were added to the collection.

    +

    Receives a reference to the object's interface. The caller must release the interface. The retrieved reference value might be null.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method does not remove the object from the collection. To remove an object, call .

    +
    + + ms701793 + HRESULT IMFCollection::GetElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement) + IMFCollection::GetElement +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds an object to the collection.

    +
    +

    Pointer to the object's interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    If pUnkElement is null, a null reference is added to the collection.

    +
    + + ms695202 + HRESULT IMFCollection::AddElement([In, Optional] IUnknown* pUnkElement) + IMFCollection::AddElement +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes an object from the collection.

    +
    +

    Zero-based index of the object to remove. Objects are indexed in the order in which they were added to the collection.

    +

    Receives a reference to the interface of the object. The caller must release the interface. This parameter cannot be null, but the retrieved reference value might be null.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms697010 + HRESULT IMFCollection::RemoveElement([In] unsigned int dwElementIndex,[Out] IUnknown** ppUnkElement) + IMFCollection::RemoveElement +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds an object at the specified index in the collection.

    +
    +

    The zero-based index where the object will be added to the collection.

    +

    The object to insert.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms703963 + HRESULT IMFCollection::InsertElementAt([In] unsigned int dwIndex,[In, Optional] IUnknown* pUnknown) + IMFCollection::InsertElementAt +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes all items from the collection.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + + ms700194 + HRESULT IMFCollection::RemoveAllElements() + IMFCollection::RemoveAllElements +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of objects in the collection.

    +
    + + ms697034 + GetElementCount + GetElementCount + HRESULT IMFCollection::GetElementCount([Out] unsigned int* pcElements) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the Microsoft DirectX Graphics Infrastructure (DXGI) surface for an interface.

    +
    + +

    You can use this method to get a reference to the interface of the surface. If the buffer is locked, the method returns MF_E_INVALIDREQUEST.

    +
    + + hh447902 + IMFDXGIBuffer + IMFDXGIBuffer +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries the Microsoft DirectX Graphics Infrastructure (DXGI) surface for an interface.

    +
    +

    The interface identifer (IID) of the interface being requested.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    This method can return one of these values.

    Return codeDescription

    Success.

    E_NOINTERFACE

    The object does not support the specified interface.

    MF_E_INVALIDREQUEST

    Invalid request.

    ?

    + +

    You can use this method to get a reference to the interface of the surface. If the buffer is locked, the method returns MF_E_INVALIDREQUEST.

    +
    + + hh447902 + HRESULT IMFDXGIBuffer::GetResource([In] const GUID& riid,[Out] void** ppvObject) + IMFDXGIBuffer::GetResource +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the index of the subresource that is associated with this media buffer.

    +
    +

    Receives the zero-based index of the subresource.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The subresource index is specified when you create the media buffer object. See .

    For more information about texture subresources, see .

    +
    + + hh447903 + HRESULT IMFDXGIBuffer::GetSubresourceIndex([Out] unsigned int* puSubresource) + IMFDXGIBuffer::GetSubresourceIndex +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets an reference that was previously stored in the media buffer object.

    +
    + No documentation. + No documentation. + No documentation. +

    This method can return one of these values.

    Return codeDescription

    Success.

    E_NOINTERFACE

    The object does not support the specified interface.

    MF_E_NOT_FOUND

    The specified key was not found.

    ?

    + + hh447904 + HRESULT IMFDXGIBuffer::GetUnknown([In] const GUID& guid,[In] const GUID& riid,[Out] void** ppvObject) + IMFDXGIBuffer::GetUnknown +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Stores an arbitrary reference in the media buffer object.

    +
    + No documentation. + No documentation. +

    This method can return one of these values.

    Return codeDescription

    Success.

    An item already exists with this key.

    ?

    + +

    To retrieve the reference from the object, call .

    +
    + + hh447905 + HRESULT IMFDXGIBuffer::SetUnknown([In] const GUID& guid,[In, Optional] IUnknown* pUnkData) + IMFDXGIBuffer::SetUnknown +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the index of the subresource that is associated with this media buffer.

    +
    + +

    The subresource index is specified when you create the media buffer object. See .

    For more information about texture subresources, see .

    +
    + + hh447903 + GetSubresourceIndex + GetSubresourceIndex + HRESULT IMFDXGIBuffer::GetSubresourceIndex([Out] unsigned int* puSubresource) +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents a block of memory that contains media data. Use this interface to access the data in the buffer.

    +
    + +

    If the buffer contains 2-D image data (such as an uncompressed video frame), you should query the buffer for the interface. The methods on are optimized for 2-D data.

    To get a buffer from a media sample, call one of the following methods:

    To create a new buffer object, use one of the following functions.

    FunctionDescription
    Creates a buffer and allocates system memory.
    Creates a media buffer that wraps an existing media buffer.
    MFCreateDXSurfaceBuffer Creates a buffer that manages a DirectX surface.
    Creates a buffer and allocates system memory with a specified alignment.

    ?

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696261 + IMFMediaBuffer + IMFMediaBuffer +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Gives the caller access to the memory in the buffer, for reading or writing

    +
    +

    Receives the maximum amount of data that can be written to the buffer. This parameter can be null. The same value is returned by the method.

    +

    Receives the length of the valid data in the buffer, in bytes. This parameter can be null. The same value is returned by the method.

    +

    Receives a reference to the start of the buffer.

    + +

    This method gives the caller access to the entire buffer, up to the maximum size returned in the pcbMaxLength parameter. The value returned in pcbCurrentLength is the size of any valid data already in the buffer, which might be less than the total buffer size.

    The reference returned in ppbBuffer is guaranteed to be valid, and can safely be accessed across the entire buffer for as long as the lock is held. When you are done accessing the buffer, call to unlock the buffer. You must call Unlock once for each call to Lock. After you unlock the buffer, the reference returned in ppbBuffer is no longer valid, and should not be used. Generally, it is best to call Lock only when you need to access the buffer memory, and not earlier.

    Locking the buffer does not prevent other threads from calling Lock, so you should not rely on this method to synchronize threads.

    This method does not allocate any memory, or transfer ownership of the memory to the caller. Do not release or free the memory; the media buffer will free the memory when the media buffer is destroyed.

    If you modify the contents of the buffer, update the current length by calling .

    If the buffer supports the interface, you should use the method to lock the buffer. For 2-D buffers, the Lock2D method is more efficient than the Lock method. If the buffer is locked using Lock2D, the Lock method might return MF_E_INVALIDREQUEST.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + bb970366 + HRESULT IMFMediaBuffer::Lock([Out] void** ppbBuffer,[Out, Optional] unsigned int* pcbMaxLength,[Out, Optional] unsigned int* pcbCurrentLength) + IMFMediaBuffer::Lock +
    + + +

    Applies to: desktop apps | Metro style apps

    Unlocks a buffer that was previously locked. Call this method once for every call to .

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    D3DERR_INVALIDCALL

    For Direct3D surface buffers, an error occurred when unlocking the surface.

    ?

    + +

    It is an error to call Unlock if you did not call Lock previously.

    After calling this method, do not use the reference returned by the Lock method. It is no longer guaranteed to be valid.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696259 + HRESULT IMFMediaBuffer::Unlock() + IMFMediaBuffer::Unlock +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of the valid data in the buffer.

    +
    +

    Receives the length of the valid data, in bytes. If the buffer does not contain any valid data, the value is zero.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698987 + HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength) + IMFMediaBuffer::GetCurrentLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the length of the valid data in the buffer.

    +
    +

    Length of the valid data, in bytes. This value cannot be greater than the allocated size of the buffer, which is returned by the method.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    The specified length is greater than the maximum size of the buffer.

    ?

    + +

    Call this method if you write data into the buffer.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703202 + HRESULT IMFMediaBuffer::SetCurrentLength([In] unsigned int cbCurrentLength) + IMFMediaBuffer::SetCurrentLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the allocated size of the buffer.

    +
    +

    Receives the allocated size of the buffer, in bytes.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704840 + HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength) + IMFMediaBuffer::GetMaxLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the length of the valid data in the buffer.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698987 + GetCurrentLength / SetCurrentLength + GetCurrentLength + HRESULT IMFMediaBuffer::GetCurrentLength([Out] unsigned int* pcbCurrentLength) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the allocated size of the buffer.

    +
    + +

    The buffer might or might not contain any valid data, and if there is valid data in the buffer, it might be smaller than the buffer's allocated size. To get the length of the valid data, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704840 + GetMaxLength + GetMaxLength + HRESULT IMFMediaBuffer::GetMaxLength([Out] unsigned int* pcbMaxLength) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Provides the Media Engine with a list of media resources.

    +
    + +

    The interface represents an ordered list of media resources.

    This interface enables the application to provide the same audio/video content in several different encoding formats, such as H.264 and Windows Media Video. If a particular codec is not present on the user's computer, the Media Engine will try the next URL in the list. To use this interface, do the following:

    1. Create an implementation of this interface.
    2. Initialize your implementation with a list of URLs. Optionally, provide MIME types and media query strings for each URL.
    3. Call the method.
    +
    + + hh447971 + IMFMediaEngineSrcElements + IMFMediaEngineSrcElements +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of source elements in the list.

    +
    +

    Returns the number of source elements.

    + + hh447973 + unsigned int IMFMediaEngineSrcElements::GetLength() + IMFMediaEngineSrcElements::GetLength +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the URL of an element in the list.

    +
    +

    The zero-based index of the source element. To get the number of source elements, call .

    +

    Receives a BSTR that contains the URL of the source element. The caller must free the BSTR by calling SysFreeString. If no URL is set, this parameter receives the value null.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447976 + HRESULT IMFMediaEngineSrcElements::GetURL([In] unsigned int index,[Out] wchar_t** pURL) + IMFMediaEngineSrcElements::GetURL +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the MIME type of an element in the list.

    +
    +

    The zero-based index of the source element. To get the number of source elements, call .

    +

    Receives a BSTR that contains the MIME type. The caller must free the BSTR by calling SysFreeString. If no MIME type is set, this parameter receives the value null.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447975 + HRESULT IMFMediaEngineSrcElements::GetType([In] unsigned int index,[Out] wchar_t** pType) + IMFMediaEngineSrcElements::GetType +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the intended media type of an element in the list.

    +
    +

    The zero-based index of the source element. To get the number of source elements, call .

    +

    Receives a BSTR that contains a media-query string. The caller must free the BSTR by calling SysFreeString. If no media type is set, this parameter receives the value null.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The string returned in pMedia should be a media-query string that conforms to the W3C Media Queries specification.

    +
    + + hh447974 + HRESULT IMFMediaEngineSrcElements::GetMedia([In] unsigned int index,[Out] wchar_t** pMedia) + IMFMediaEngineSrcElements::GetMedia +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Adds a source element to the end of the list.

    +
    +

    The URL of the source element, or null.

    +

    The MIME type of the source element, or null.

    +

    A media-query string that specifies the intended media type, or null. If specified, the string should conform to the W3C Media Queries specification.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Any of the parameters to this method can be null.

    This method allocates copies of the BSTRs that are passed in.

    +
    + + hh447972 + HRESULT IMFMediaEngineSrcElements::AddElement([In, Optional] wchar_t* pURL,[In, Optional] wchar_t* pType,[In, Optional] wchar_t* pMedia) + IMFMediaEngineSrcElements::AddElement +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Removes all of the source elements from the list.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh447977 + HRESULT IMFMediaEngineSrcElements::RemoveAllElements() + IMFMediaEngineSrcElements::RemoveAllElements +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of source elements in the list.

    +
    + + hh447973 + GetLength + GetLength + unsigned int IMFMediaEngineSrcElements::GetLength() +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Provides the current error status for the Media Engine.

    +
    + +

    The interface corresponds to the MediaError object in HTML5.

    To get a reference to this interface, call .

    +
    + + hh448022 + IMFMediaError + IMFMediaError +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the error code.

    +
    +

    Returns a value from the enumeration.

    + + hh448023 + unsigned short IMFMediaError::GetErrorCode() + IMFMediaError::GetErrorCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the extended error code.

    +
    +

    Returns an value that gives additional information about the last error.

    + + hh448024 + HRESULT IMFMediaError::GetExtendedErrorCode() + IMFMediaError::GetExtendedErrorCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the error code.

    +
    +

    The error code, specified as an value.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448025 + HRESULT IMFMediaError::SetErrorCode([In] MF_MEDIA_ENGINE_ERR error) + IMFMediaError::SetErrorCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Sets the extended error code.

    +
    +

    An value that gives additional information about the last error.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448026 + HRESULT IMFMediaError::SetExtendedErrorCode([In] HRESULT error) + IMFMediaError::SetExtendedErrorCode +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the extended error code.

    +
    + + hh448024 + GetExtendedErrorCode / SetExtendedErrorCode + GetExtendedErrorCode + HRESULT IMFMediaError::GetExtendedErrorCode() +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an that specifies the event status.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704650 + IMFMediaEvent + IMFMediaEvent +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.

    +
    +

    Receives the event type. For a list of event types, see Media Foundation Events.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702255 + HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet) + IMFMediaEvent::GetType +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the extended type of the event.

    +
    +

    Receives a that identifies the extended type.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    To define a custom event, create a new extended-type and send an event with that .

    Some standard Media Foundation events also use the extended type to differentiate between types of event data.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697235 + HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType) + IMFMediaEvent::GetExtendedType +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an that specifies the event status.

    +
    +

    Receives the event status. If the operation that generated the event was successful, the value is a success code. A failure code means that an error condition triggered the event.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704650 + HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus) + IMFMediaEvent::GetStatus +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents an event generated by a Media Foundation object. Use this interface to get information about the event.

    To get a reference to this interface, call or on the event generator.

    +
    + No documentation. + No documentation. + +

    If you are implementing an object that generates events, call the MFCreateMediaEvent function to create a new event object.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702249 + HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue) + IMFMediaEvent::GetValue +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the event type. The event type indicates what happened to trigger the event. It also defines the meaning of the event value.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702255 + GetType + GetType + HRESULT IMFMediaEvent::GetType([Out] unsigned int* pmet) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the extended type of the event.

    +
    + +

    To define a custom event, create a new extended-type and send an event with that .

    Some standard Media Foundation events also use the extended type to differentiate between types of event data.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697235 + GetExtendedType + GetExtendedType + HRESULT IMFMediaEvent::GetExtendedType([Out] GUID* pguidExtendedType) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an that specifies the event status.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704650 + GetStatus + GetStatus + HRESULT IMFMediaEvent::GetStatus([Out] HRESULT* phrStatus) +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents an event generated by a Media Foundation object. Use this interface to get information about the event.

    To get a reference to this interface, call or on the event generator.

    +
    + +

    If you are implementing an object that generates events, call the MFCreateMediaEvent function to create a new event object.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702249 + GetValue + GetValue + HRESULT IMFMediaEvent::GetValue([Out] PROPVARIANT* pvValue) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves events from any Media Foundation object that generates events.

    +
    + +

    An object that supports this interface maintains a queue of events. The client of the object can retrieve the events either synchronously or asynchronously. The synchronous method is GetEvent. The asynchronous methods are BeginGetEvent and EndGetEvent.

    +
    + + ms701755 + IMFMediaEventGenerator + IMFMediaEventGenerator +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the next event in the queue. This method is synchronous.

    +
    +

    Specifies one of the following values.

    ValueMeaning
    0

    The method blocks until the event generator queues an event.

    MF_EVENT_FLAG_NO_WAIT

    The method returns immediately.

    ?

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    null reference argument.

    MF_E_MULTIPLE_SUBSCRIBERS

    There is a pending request.

    MF_E_NO_EVENTS_AVAILABLE

    There are no events in the queue.

    MF_E_SHUTDOWN

    The object was shut down.

    ?

    + +

    This method executes synchronously.

    If the queue already contains an event, the method returns immediately. If the queue does not contain an event, the behavior depends on the value of dwFlags:

    • If dwFlags is 0, the method blocks indefinitely until a new event is queued, or until the event generator is shut down.

    • If dwFlags is MF_EVENT_FLAG_NO_WAIT, the method fails immediately with the return code MF_E_NO_EVENTS_AVAILABLE.

    This method returns MF_E_MULTIPLE_SUBSCRIBERS if you previously called and have not yet called .

    +
    + + ms704754 + HRESULT IMFMediaEventGenerator::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent) + IMFMediaEventGenerator::GetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous request for the next event in the queue.

    +
    +

    Pointer to the interface of a callback object. The client must implement this interface.

    +

    Pointer to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    null reference argument.

    MF_E_MULTIPLE_BEGIN

    There is a pending request with the same callback reference and a different state object.

    MF_E_MULTIPLE_SUBSCRIBERS

    There is a pending request with a different callback reference.

    MF_E_SHUTDOWN

    The object was shut down.

    MF_S_MULTIPLE_BEGIN

    There is a pending request with the same callback reference and state object.

    ?

    + +

    When a new event is available, the event generator calls the method. The Invoke method should call to get a reference to the interface, and use that interface to examine the event.

    Do not call BeginGetEvent a second time before calling EndGetEvent. While the first call is still pending, additional calls to the same object will fail. Also, the method fails if an asynchronous request is still pending.

    +
    + + ms701637 + HRESULT IMFMediaEventGenerator::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFMediaEventGenerator::BeginGetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous request for the next event in the queue.

    +
    +

    Pointer to the interface. Pass in the same reference that your callback object received in the Invoke method.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The object was shut down.

    ?

    + +

    Call this method from inside your application's method. For example code, see .

    +
    + + ms698866 + HRESULT IMFMediaEventGenerator::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent) + IMFMediaEventGenerator::EndGetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Puts a new event in the object's queue.

    +
    +

    Specifies the event type. The event type is returned by the event's method. For a list of event types, see Media Foundation Events.

    +

    The extended type. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's method.

    +

    A success or failure code indicating the status of the event. This value is returned by the event's method.

    +

    Pointer to a that contains the event value. This parameter can be null. This value is returned by the event's method.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The object was shut down.

    ?

    + + ms696255 + HRESULT IMFMediaEventGenerator::QueueEvent([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In, Optional] const PROPVARIANT* pvValue) + IMFMediaEventGenerator::QueueEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Provides an event queue for applications that need to implement the interface.

    This interface is exposed by a helper object that implements an event queue. If you are writing a component that implements the interface, you can use this object in your implementation. The event queue object is thread safe and provides methods to queue events and to pull them from the queue either synchronously or asynchronously. To create the event queue object, call MFCreateEventQueue.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704617 + IMFMediaEventQueue + IMFMediaEventQueue +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the next event in the queue. This method is synchronous.

    Call this method inside your implementation of . Pass the parameters from that method directly to this method.

    +
    + No documentation. + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702270 + HRESULT IMFMediaEventQueue::GetEvent([In] unsigned int dwFlags,[Out] IMFMediaEvent** ppEvent) + IMFMediaEventQueue::GetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous request for the next event in the queue.

    Call this method inside your implementation of . Pass the parameters from that method directly to this method.

    +
    + No documentation. + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696998 + HRESULT IMFMediaEventQueue::BeginGetEvent([In] IMFAsyncCallback* pCallback,[In] IUnknown* punkState) + IMFMediaEventQueue::BeginGetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous request for the next event in the queue.

    Call this method inside your implementation of . Pass the parameters from that method directly to this method.

    +
    + No documentation. + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702986 + HRESULT IMFMediaEventQueue::EndGetEvent([In] IMFAsyncResult* pResult,[Out] IMFMediaEvent** ppEvent) + IMFMediaEventQueue::EndGetEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Puts an event in the queue.

    +
    +

    Pointer to the interface of the event to be put in the queue.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    Call this method when your component needs to raise an event that contains attributes. To create the event object, call MFCreateMediaEvent. Add attributes to the event by using methods from the interface. (The interface inherits .)

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704792 + HRESULT IMFMediaEventQueue::QueueEvent([In] IMFMediaEvent* pEvent) + IMFMediaEventQueue::QueueEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates an event, sets a as the event data, and puts the event in the queue.

    Call this method inside your implementation of . Pass the parameters from that method directly to this method.

    You can also call this method when your component needs to raise an event that does not contain attributes. If the event data is an reference, you can use . If the event contains attributes, use instead.

    +
    + No documentation. + No documentation. + No documentation. + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704641 + HRESULT IMFMediaEventQueue::QueueEventParamVar([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In] const PROPVARIANT* pvValue) + IMFMediaEventQueue::QueueEventParamVar +
    + + +

    Applies to: desktop apps | Metro style apps

    Creates an event, sets an reference as the event data, and puts the event in the queue.

    +
    +

    Specifies the event type of the event to be added to the queue. The event type is returned by the event's method. For a list of event types, see Media Foundation Events.

    +

    The extended type of the event. If the event does not have an extended type, use the value GUID_NULL. The extended type is returned by the event's method.

    +

    A success or failure code indicating the status of the event. This value is returned by the event's method.

    +

    Pointer to the interface. The method sets this reference as the event value. The reference is returned by the event's method.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_SHUTDOWN

    The Shutdown method was called.

    ?

    + +

    Call this method when your component needs to raise an event that contains an reference value and no attributes. If the event contains attributes, use instead.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704686 + HRESULT IMFMediaEventQueue::QueueEventParamUnk([In] unsigned int met,[In] const GUID& guidExtendedType,[In] HRESULT hrStatus,[In] IUnknown* pUnk) + IMFMediaEventQueue::QueueEventParamUnk +
    + + +

    Applies to: desktop apps | Metro style apps

    Shuts down the event queue.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Call this method when your component shuts down. After this method is called, all methods return MF_E_SHUTDOWN.

    This method removes all of the events from the queue.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698923 + HRESULT IMFMediaEventQueue::Shutdown() + IMFMediaEventQueue::Shutdown +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Represents a list of time ranges, where each range is defined by a start and end time.

    +
    + +

    The interface corresponds to the TimeRanges interface in HTML5.

    Several methods return references.

    +
    + + hh448033 + IMFMediaTimeRange + IMFMediaTimeRange +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of time ranges contained in the object.

    +
    +

    Returns the number of time ranges.

    + +

    This method corresponds to the TimeRanges.length attribute in HTML5.

    +
    + + hh448038 + unsigned int IMFMediaTimeRange::GetLength() + IMFMediaTimeRange::GetLength +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the start time for a specified time range.

    +
    +

    The zero-based index of the time range to query. To get the number of time ranges, call .

    +

    Receives the start time, in seconds.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the TimeRanges.start method in HTML5.

    +
    + + hh448039 + HRESULT IMFMediaTimeRange::GetStart([In] unsigned int index,[Out] double* pStart) + IMFMediaTimeRange::GetStart +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the end time for a specified time range.

    +
    +

    The zero-based index of the time range to query. To get the number of time ranges, call .

    +

    Receives the end time, in seconds.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method corresponds to the TimeRanges.end method in HTML5.

    +
    + + hh448037 + HRESULT IMFMediaTimeRange::GetEnd([In] unsigned int index,[Out] double* pEnd) + IMFMediaTimeRange::GetEnd +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Queries whether a specified time falls within any of the time ranges.

    +
    +

    The time, in seconds.

    +

    Returns TRUE if any time range contained in this object spans the value of the time parameter. Otherwise, returns .

    + +

    This method returns TRUE if the following condition holds for any time range in the list:

    (start <= time) && (time <= end)
    +
    + + hh448036 + BOOL IMFMediaTimeRange::ContainsTime([In] double time) + IMFMediaTimeRange::ContainsTime +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Adds a new range to the list of time ranges.

    +
    +

    The start time, in seconds.

    +

    The end time, in seconds.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the new range intersects a range already in the list, the two ranges are combined. Otherwise, the new range is added to the list.

    +
    + + hh448034 + HRESULT IMFMediaTimeRange::AddRange([In] double startTime,[In] double endTime) + IMFMediaTimeRange::AddRange +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Clears the list of time ranges.

    +
    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + + hh448035 + HRESULT IMFMediaTimeRange::Clear() + IMFMediaTimeRange::Clear +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Gets the number of time ranges contained in the object.

    +
    + +

    This method corresponds to the TimeRanges.length attribute in HTML5.

    +
    + + hh448038 + GetLength + GetLength + unsigned int IMFMediaTimeRange::GetLength() +
    + + +

    Applies to: desktop apps | Metro style apps

    Represents a description of a media format.

    +
    + +

    To create a new media type, call MFCreateMediaType.

    All of the information in a media type is stored as attributes. To clone a media type, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704850 + IMFMediaType + IMFMediaType +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Gets the major type of the format.

    +
    +

    Receives the major type . The major type describes the broad category of the format, such as audio or video. For a list of possible values, see Major Media Types.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_ATTRIBUTENOTFOUND

    The major type is not set.

    ?

    + +

    This method is equivalent to getting the attribute from the media type.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms701588 + HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType) + IMFMediaType::GetMajorType +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.

    +
    +

    Receives a Boolean value. The value is TRUE if the format uses temporal compression, or if the format does not use temporal compression.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method returns in pfCompressed if the media type's attribute is TRUE. If the attribute is or not set, the method returns TRUE.

    If the method returns TRUE in pfCompressed, it is a hint that the format has temporal compression applied to it. If the method returns , the format does not use temporal compression, although it might use intra-frame compression.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703821 + HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed) + IMFMediaType::IsCompressedFormat +
    + + +

    Applies to: desktop apps | Metro style apps

    Compares two media types and determines whether they are identical. If they are not identical, the method indicates how the two formats differ.

    +
    +

    Pointer to the interface of the media type to compare.

    +

    Receives a bitwise OR of zero or more flags, indicating the degree of similarity between the two media types. The following flags are defined.

    ValueMeaning
    MF_MEDIATYPE_EQUAL_MAJOR_TYPES
    0x00000001

    The major types are the same. The major type is specified by the attribute.

    MF_MEDIATYPE_EQUAL_FORMAT_TYPES
    0x00000002

    The subtypes are the same, or neither media type has a subtype. The subtype is specified by the attribute.

    MF_MEDIATYPE_EQUAL_FORMAT_DATA
    0x00000004

    The attributes in one of the media types are a subset of the attributes in the other, and the values of these attributes match, excluding the value of the attribute.

    Specifically, the method takes the media type with the smaller number of attributes and checks whether each attribute from that type is present in the other media type and has the same value (not including ).

    To perform other comparisons, use the method. For example, the Compare method can test for identical attributes, or test the intersection of the two attribute sets. For more information, see .

    MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA
    0x00000008

    The user data is identical, or neither media type contains user data. User data is specified by the attribute.

    ?

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription
    S_FALSE

    The types are not equal. Examine the pdwFlags parameter to determine how the types differ.

    The types are equal.

    E_INVALIDARG

    One or both media types are invalid.

    ?

    + +

    Both of the media types must have a major type, or the method returns E_INVALIDARG.

    If the method succeeds and all of the comparison flags are set in pdwFlags, the return value is . If the method succeeds but one or more comparison flags are not set, the method returns S_FALSE.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696980 + HRESULT IMFMediaType::IsEqual([In] IMFMediaType* pIMediaType,[Out] unsigned int* pdwFlags) + IMFMediaType::IsEqual +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves an alternative representation of the media type. Currently only the DirectShow structure is supported.

    +
    +

    that specifies the representation to retrieve. The following values are defined.

    ValueMeaning
    AM_MEDIA_TYPE_REPRESENTATION

    Convert the media type to a DirectShow structure. The method selects the most appropriate format structure (pbFormat).

    FORMAT_MFVideoFormat

    Convert the media type to a DirectShow structure with an MFVIDEOFORMAT format structure.

    FORMAT_VideoInfo

    Convert the media type to a DirectShow structure with a format structure.

    FORMAT_VideoInfo2

    Convert the media type to a DirectShow structure with a format structure.

    ?

    +

    Receives a reference to a structure that contains the representation. The method allocates the memory for the structure. The caller must release the memory by calling .

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_ATTRIBUTENOTFOUND

    The details of the media type do not match the requested representation.

    MF_E_INVALIDMEDIATYPE

    The media type is not valid.

    MF_E_UNSUPPORTED_REPRESENTATION

    The media type does not support the requested representation.

    ?

    + +

    If you request a specific format structure in the guidRepresentation parameter, such as , you might lose some of the format information.

    You can also use the MFInitAMMediaTypeFromMFMediaType function to convert a Media Foundation media type into a DirectShow media type.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms695248 + HRESULT IMFMediaType::GetRepresentation([In] GUID guidRepresentation,[Out] void** ppvRepresentation) + IMFMediaType::GetRepresentation +
    + + +

    Applies to: desktop apps | Metro style apps

    Frees memory that was allocated by the method.

    +
    + No documentation. + No documentation. +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703846 + HRESULT IMFMediaType::FreeRepresentation([In] GUID guidRepresentation,[In] void* pvRepresentation) + IMFMediaType::FreeRepresentation +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the major type of the format.

    +
    + +

    This method is equivalent to getting the attribute from the media type.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms701588 + GetMajorType + GetMajorType + HRESULT IMFMediaType::GetMajorType([Out] GUID* pguidMajorType) +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the media type is a temporally compressed format. Temporal compression uses information from previously decoded samples when decompressing the current sample.

    +
    + +

    This method returns in pfCompressed if the media type's attribute is TRUE. If the attribute is or not set, the method returns TRUE.

    If the method returns TRUE in pfCompressed, it is a hint that the format has temporal compression applied to it. If the method returns , the format does not use temporal compression, although it might use intra-frame compression.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703821 + IsCompressedFormat + IsCompressedFormat + HRESULT IMFMediaType::IsCompressedFormat([Out] BOOL* pfCompressed) +
    + + +

    This topic describes how to implement the interface.

    It is rare that you will need to write a custom implementation of the interface. In almost all cases, the standard Media Foundation implementation is sufficient. (This implementation is returned by the function.) However, if you do write a custom implementation, there are some issues to be aware of.

    First, your implementation must inherit the structure. The Media Foundation work queues use this structure internally to dispatch the operation. Initialize all of the structure members to zero, except for the pCallback member, which contains a reference to the caller's callback interface.

    Second, your object should call in its constructor, to lock the Media Foundation platform. Call to unlock the platform. These functions help to prevent the platform from shutting down before the object is destroyed. For more information, see Work Queues.

    The following code shows a basic implementation of the interface. As shown, this code provides no additional features beyond the standard Media Foundation implementation.

    ///////////////////////////////////////////////////////////////////////////////	
    +            //  CMyAsyncResult	
    +            //	
    +            //  Custom implementation of . All implementations of this 	
    +            //  interface must inherit the  structure.	
    +            // 	
    +            /////////////////////////////////////////////////////////////////////////////// class CMyAsyncResult : public 	
    +            {	
    +            protected: LONG        m_cRef;             // Reference count.         m_bLockPlatform;    // Locked the Media Foundation platform? *   m_pState;           // Caller's state object.  *   m_pObject;  // Optional object. See . // Constructor.  CMyAsyncResult( *pCallback,  *pState,  *phr) : m_cRef(1), m_bLockPlatform(), m_pObject(null), m_pState(pState) { *phr = (); m_bLockPlatform = TRUE; // Initialize the  members. ZeroMemory(&this->overlapped, sizeof(OVERLAPPED)); hrStatusResult = ; dwBytesTransferred = 0; hEvent = null; this->pCallback = pCallback; if (pCallback) { this->pCallback->AddRef(); } if (m_pState) { m_pState->AddRef(); } } virtual ~CMyAsyncResult() { SafeRelease(&pCallback); SafeRelease(&m_pState); SafeRelease(&m_pObject); if (m_bLockPlatform) { (); } } public: // Static method to create an instance of this object. static  CreateInstance(  *pCallback,    // Callback to invoke.  *pState,               // Optional state object. CMyAsyncResult **ppResult       // Receives a reference to the object. ) {  hr = ; *ppResult = null; CMyAsyncResult *pResult =  new (std::nothrow) CMyAsyncResult(pCallback, pState, &hr); if (pResult == null) { return E_OUTOFMEMORY; } if (FAILED(hr)) { delete pResult; return hr; } // If the callback is null, create an event that will be signaled. if (pCallback == null) { pResult->hEvent = CreateEvent(null, , , null); if (pResult->hEvent == null) { hr = HRESULT_FROM_WIN32(GetLastError()); } } if (SUCCEEDED(hr)) { *ppResult = pResult;  // Return the reference to the caller. } else { pResult->Release(); } return hr; } // SetObject: Sets the optional result object.  // (This method is not part of the interface.)  SetObject( *pObject) { SafeRelease(&m_pObject); m_pObject = pObject; if (pObject) { m_pObject->AddRef(); } return ; } //  methods. STDMETHODIMP QueryInterface(REFIID riid, void **ppv) { static const QITAB qit[] =  { QITABENT(CMyAsyncResult, ), { 0 } }; return QISearch(this, qit, riid, ppv); } STDMETHODIMP_(ULONG) AddRef() { return InterlockedIncrement(&m_cRef); } STDMETHODIMP_(ULONG) Release() { LONG cRef = InterlockedDecrement(&m_cRef); if (cRef == 0) { delete this; } return cRef; } //  methods. STDMETHODIMP GetState(** ppunkState) { if (ppunkState == null) { return E_POINTER; } *ppunkState = m_pState; if (m_pState) { (*ppunkState)->AddRef(); } return ; } STDMETHODIMP GetStatus( void) { return hrStatusResult; } STDMETHODIMP STDMETHODCALLTYPE SetStatus( hrStatus) { hrStatusResult = hrStatus; return ; } STDMETHODIMP GetObject( **ppObject) { if (ppObject == null) { return E_POINTER; } *ppObject = m_pObject; if (m_pObject) { (*ppObject)->AddRef(); } return ; } * STDMETHODCALLTYPE GetStateNoAddRef() { return m_pState;  // Warning! Can be null.  }	
    +            };	
    +            
    +
    + + aa370805 + MFASYNCRESULT + MFASYNCRESULT +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Represents a media sample, which is a container object for media data. For video, a sample typically contains one video frame. For audio data, a sample typically contains multiple audio samples, rather than a single sample of audio.

    A media sample contains zero or more buffers. Each buffer manages a block of memory, and is represented by the interface. A sample can have multiple buffers. The buffers are kept in an ordered list and accessed by index value. It is also valid to have an empty sample with no buffers.

    +
    + +

    To create a new media sample, call .

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms702192 + IMFSample + IMFSample +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Retrieves flags associated with the sample.

    Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

    +
    + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms701587 + HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags) + IMFSample::GetSampleFlags +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets flags associated with the sample.

    Currently no flags are defined. Instead, metadata for samples is defined using attributes. To set attibutes on a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

    +
    + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms696207 + HRESULT IMFSample::SetSampleFlags([In] unsigned int dwSampleFlags) + IMFSample::SetSampleFlags +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the presentation time of the sample.

    +
    +

    Receives the presentation time, in 100-nanosecond units.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_NO_SAMPLE_TIMESTAMP

    The sample does not have a presentation time.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705645 + HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime) + IMFSample::GetSampleTime +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the presentation time of the sample.

    +
    +

    The presentation time, in 100-nanosecond units.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    Some pipeline components require samples that have time stamps. Generally the component that generates the data for the sample also sets the time stamp. The Media Session might modify the time stamps.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697282 + HRESULT IMFSample::SetSampleTime([In] longlong hnsSampleTime) + IMFSample::SetSampleTime +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the duration of the sample.

    +
    +

    Receives the duration, in 100-nanosecond units.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_NO_SAMPLE_DURATION

    The sample does not have a specified duration.

    ?

    + +

    If the sample contains more than one buffer, the duration includes the data from all of the buffers.

    If the retrieved duration is zero, or if the method returns MF_E_NO_SAMPLE_DURATION, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703056 + HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration) + IMFSample::GetSampleDuration +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the duration of the sample.

    +
    +

    Duration of the sample, in 100-nanosecond units.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    This method succeeds if the duration is negative, although negative durations are probably not valid for most types of data. It is the responsibility of the object that consumes the sample to validate the duration.

    The duration can also be zero. This might be valid for some types of data. For example, the sample might contain stream metadata with no buffers.

    Until this method is called, the method returns MF_E_NO_SAMPLE_DURATION.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705626 + HRESULT IMFSample::SetSampleDuration([In] longlong hnsSampleDuration) + IMFSample::SetSampleDuration +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of buffers in the sample.

    +
    +

    Receives the number of buffers in the sample. A sample might contain zero buffers.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705655 + HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount) + IMFSample::GetBufferCount +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets a buffer from the sample, by index.

    Note??In most cases, it is safer to use the method. If the sample contains more than one buffer, the ConvertToContiguousBuffer method replaces them with a single buffer, copies the original data into that buffer, and returns the new buffer to the caller. The copy operation occurs at most once. On subsequent calls, no data is copied.

    +
    + No documentation. + No documentation. + +

    A sample might contain more than one buffer. Use the GetBufferByIndex method to enumerate the individual buffers.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697014 + HRESULT IMFSample::GetBufferByIndex([In] unsigned int dwIndex,[Out] IMFMediaBuffer** ppBuffer) + IMFSample::GetBufferByIndex +
    + + +

    Applies to: desktop apps | Metro style apps

    Converts a sample with multiple buffers into a sample with a single buffer.

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    + +

    If the sample contains more than one buffer, this method copies the data from the original buffers into a new buffer, and replaces the original buffer list with the new buffer. The new buffer is returned in the ppBuffer parameter.

    If the sample contains a single buffer, this method returns a reference to the original buffer. In typical use, most samples do not contain multiple buffers.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms698917 + HRESULT IMFSample::ConvertToContiguousBuffer([Out] IMFMediaBuffer** ppBuffer) + IMFSample::ConvertToContiguousBuffer +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds a buffer to the end of the list of buffers in the sample.

    +
    +

    Pointer to the buffer's interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    null reference argument.

    ?

    + +

    For uncompressed video data, each buffer should contain a single video frame, and samples should not contain multiple frames. In general, storing multiple buffers in a sample is discouraged.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms697465 + HRESULT IMFSample::AddBuffer([In] IMFMediaBuffer* pBuffer) + IMFSample::AddBuffer +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes a buffer at a specified index from the sample.

    +
    +

    Index of the buffer. To find the number of buffers in the sample, call . Buffers are indexed from zero.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705646 + HRESULT IMFSample::RemoveBufferByIndex([In] unsigned int dwIndex) + IMFSample::RemoveBufferByIndex +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes all of the buffers from the sample.

    +
    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703108 + HRESULT IMFSample::RemoveAllBuffers() + IMFSample::RemoveAllBuffers +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the method.

    +
    + No documentation. +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704584 + HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength) + IMFSample::GetTotalLength +
    + + +

    Applies to: desktop apps | Metro style apps

    Copies the sample data to a buffer. This method concatenates the valid data from all of the buffers of the sample, in order.

    +
    +

    Pointer to the interface of the destination buffer. The buffer must be large enough to hold the valid data in the sample. To get the size of the data in the sample, call .

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    null reference argument.

    MF_E_BUFFERTOOSMALL

    The buffer is not large enough to contain the data.

    ?

    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703119 + HRESULT IMFSample::CopyToBuffer([In] IMFMediaBuffer* pBuffer) + IMFSample::CopyToBuffer +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves flags associated with the sample.

    Currently no flags are defined. Instead, metadata for samples is defined using attributes. To get attibutes from a sample, use the interface, which inherits. For a list of sample attributes, see Sample Attributes.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms701587 + GetSampleFlags / SetSampleFlags + GetSampleFlags + HRESULT IMFSample::GetSampleFlags([Out] unsigned int* pdwSampleFlags) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the presentation time of the sample.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705645 + GetSampleTime / SetSampleTime + GetSampleTime + HRESULT IMFSample::GetSampleTime([Out] longlong* phnsSampleTime) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the duration of the sample.

    +
    + +

    If the sample contains more than one buffer, the duration includes the data from all of the buffers.

    If the retrieved duration is zero, or if the method returns MF_E_NO_SAMPLE_DURATION, the duration is unknown. In that case, it might be possible to calculate the duration from the media type?for example, by using the video frame rate or the audio sampling rate.

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms703056 + GetSampleDuration / SetSampleDuration + GetSampleDuration + HRESULT IMFSample::GetSampleDuration([Out] longlong* phnsSampleDuration) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the number of buffers in the sample.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms705655 + GetBufferCount + GetBufferCount + HRESULT IMFSample::GetBufferCount([Out] unsigned int* pdwBufferCount) +
    + + +

    Applies to: desktop apps | Metro style apps

    Retrieves the total length of the valid data in all of the buffers in the sample. The length is calculated as the sum of the values retrieved by the method.

    +
    + +

    This interface is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + + ms704584 + GetTotalLength + GetTotalLength + HRESULT IMFSample::GetTotalLength([Out] unsigned int* pcbTotalLength) +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous request to write a media sample to the stream.

    +
    + +

    When the sample has been written to the stream, the callback object's method is called. At that point, the caller should call to complete the asynchronous request.

    +
    + + hh448052 + IMFSampleOutputStream + IMFSampleOutputStream +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Begins an asynchronous request to write a media sample to the stream.

    +
    +

    A reference to the interface of the sample.

    +

    A reference to the interface of a callback object. The caller must implement this interface.

    +

    A reference to the interface of a state object, defined by the caller. This parameter can be null. You can use this object to hold state information. The object is returned to the caller when the callback is invoked.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    When the sample has been written to the stream, the callback object's method is called. At that point, the caller should call to complete the asynchronous request.

    +
    + + hh448052 + HRESULT IMFSampleOutputStream::BeginWriteSample([In, Optional] IMFSample* pSample,[In, Optional] IMFAsyncCallback* pCallback,[In, Optional] IUnknown* punkState) + IMFSampleOutputStream::BeginWriteSample +
    + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps | Metro style apps

    Completes an asynchronous request to write a media sample to the stream.

    +
    +

    A reference to the interface. Pass in the same reference that your callback object received in the method.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    Call this method when the method completes asynchronously.

    +
    + + hh448053 + HRESULT IMFSampleOutputStream::EndWriteSample([In, Optional] IMFAsyncResult* pResult) + IMFSampleOutputStream::EndWriteSample +
    + + +

    [This documentation is preliminary and is subject to change.]

    These are the API elements for use in desktop apps that are new for Windows?8 Consumer Preview:

    • Win32/{{COM}}
    • Windows

    For a list of technologies that are new for desktop apps, see Windows 8 Technologies.

    For info about the APIs that can be used in Metro style apps, see APIs for Metro style apps.

    +
    + No documentation. + + hh405363 + HRESULT IMFSampleOutputStream::Close() + IMFSampleOutputStream::Close +
    + + +

    Applies to: desktop apps | Metro style apps

    Implemented by all Media Foundation Transforms (MFTs).

    +
    + + ms696260 + IMFTransform + IMFTransform +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Applies to: desktop apps | Metro style apps

    Gets the minimum and maximum number of input and output streams for this Media Foundation transform (MFT).

    +
    +

    Receives the minimum number of input streams.

    +

    Receives the maximum number of input streams. If there is no maximum, receives the value MFT_STREAMS_UNLIMITED.

    +

    Receives the minimum number of output streams.

    +

    Receives the maximum number of output streams. If there is no maximum, receives the value MFT_STREAMS_UNLIMITED.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    If the MFT has a fixed number of streams, the minimum and maximum values are the same.

    It is not recommended to create an MFT that supports zero inputs or zero outputs. An MFT with no inputs or no outputs may not be compatible with the rest of the Media Foundation pipeline. You should create a Media Foundation sink or source for this purpose instead.

    When an MFT is first created, it is not guaranteed to have the minimum number of streams. To find the actual number of streams, call .

    This method should not be called with null parameters, although in practice some implementations may allow null parameters.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamLimits. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms697040 + HRESULT IMFTransform::GetStreamLimits([Out] unsigned int* pdwInputMinimum,[Out] unsigned int* pdwInputMaximum,[Out] unsigned int* pdwOutputMinimum,[Out] unsigned int* pdwOutputMaximum) + IMFTransform::GetStreamLimits +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the current number of input and output streams on this Media Foundation transform (MFT).

    +
    +

    Receives the number of input streams.

    +

    Receives the number of output streams.

    +

    If this method succeeds, it returns . Otherwise, it returns an error code.

    + +

    The number of streams includes unselected streams?that is, streams with no media type or a null media type.

    This method should not be called with null parameters, although in practice some implementations may allow null parameters.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamCount. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms697018 + HRESULT IMFTransform::GetStreamCount([Out] unsigned int* pcInputStreams,[Out] unsigned int* pcOutputStreams) + IMFTransform::GetStreamCount +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the stream identifiers for the input and output streams on this Media Foundation transform (MFT).

    +
    +

    Number of elements in the pdwInputIDs array.

    +

    Pointer to an array allocated by the caller. The method fills the array with the input stream identifiers. The array size must be at least equal to the number of input streams. To get the number of input streams, call .

    If the caller passes an array that is larger than the number of input streams, the MFT must not write values into the extra array entries.

    +

    Number of elements in the pdwOutputIDs array.

    +

    Pointer to an array allocated by the caller. The method fills the array with the output stream identifiers. The array size must be at least equal to the number of output streams. To get the number of output streams, call GetStreamCount.

    If the caller passes an array that is larger than the number of output streams, the MFT must not write values into the extra array entries.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented. See Remarks.

    MF_E_BUFFERTOOSMALL

    One or both of the arrays is too small.

    ?

    + +

    Stream identifiers are necessary because some MFTs can add or remove streams, so the index of a stream may not be unique. Therefore, methods that operate on streams take stream identifiers.

    This method can return E_NOTIMPL if both of the following conditions are true:

    • The transform has a fixed number of streams.
    • The streams are numbered consecutively from 0 to n ? 1, where n is the number of input streams or output streams. In other words, the first input stream is 0, the second is 1, and so on; and the first output stream is 0, the second is 1, and so on.

    This method must be implemented if any of the following conditions is true:

    • The MFT can add or remove output streams.
    • The MFT allows the client to add or remove input streams.
    • The stream identifiers are not consecutive.

    All input stream identifiers must be unique within an MFT, and all output stream identifiers must be unique. However, an input stream and an output stream can share the same identifier.

    If the client adds an input stream, the client assigns the identifier, so the MFT must allow arbitrary identifiers, as long as they are unique. If the MFT creates an output stream, the MFT assigns the identifier.

    By convention, if an MFT has exactly one fixed input stream and one fixed output stream, it should assign the identifier 0 to both streams.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetStreamIDs. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms693988 + HRESULT IMFTransform::GetStreamIDs([In] unsigned int dwInputIDArraySize,[Out, Buffer] unsigned int* pdwInputIDs,[In] unsigned int dwOutputIDArraySize,[Out, Buffer] unsigned int* pdwOutputIDs) + IMFTransform::GetStreamIDs +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the buffer requirements and other information for an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to an structure. The method fills the structure with information about the input stream.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    ?

    + +

    It is valid to call this method before setting the media types.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputStreamInfo. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms703894 + HRESULT IMFTransform::GetInputStreamInfo([In] unsigned int dwInputStreamID,[Out] MFT_INPUT_STREAM_INFO* pStreamInfo) + IMFTransform::GetInputStreamInfo +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the buffer requirements and other information for an output stream on this Media Foundation transform (MFT).

    +
    +

    Output stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to an structure. The method fills the structure with information about the output stream.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream number.

    ?

    + +

    It is valid to call this method before setting the media types.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStreamInfo. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms693880 + HRESULT IMFTransform::GetOutputStreamInfo([In] unsigned int dwOutputStreamID,[Out] MFT_OUTPUT_STREAM_INFO* pStreamInfo) + IMFTransform::GetOutputStreamInfo +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the global attribute store for this Media Foundation transform (MFT).

    +
    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The MFT does not support attributes.

    ?

    + +

    Use the reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call . To get the attribute store for an output stream, call .

    Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.

    +
    + + ms703141 + HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes) + IMFTransform::GetAttributes +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the attribute store for an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The MFT does not support input stream attributes.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    ?

    + +

    Implementation of this method is optional unless the MFT needs to support a particular set of attributes.

    To get the attribute store for the entire MFT, call .

    +
    + + ms695366 + HRESULT IMFTransform::GetInputStreamAttributes([In] unsigned int dwInputStreamID,[Out] IMFAttributes** pAttributes) + IMFTransform::GetInputStreamAttributes +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the attribute store for an output stream on this Media Foundation transform (MFT).

    +
    +

    Output stream identifier. To get the list of stream identifiers, call .

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The MFT does not support output stream attributes.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    ?

    + +

    Implementation of this method is optional unless the MFT needs to support a particular set of attributes.

    To get the attribute store for the entire MFT, call .

    +
    + + ms703886 + HRESULT IMFTransform::GetOutputStreamAttributes([In] unsigned int dwOutputStreamID,[Out] IMFAttributes** pAttributes) + IMFTransform::GetOutputStreamAttributes +
    + + +

    Applies to: desktop apps | Metro style apps

    Removes an input stream from this Media Foundation transform (MFT).

    +
    +

    Identifier of the input stream to remove.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The transform has a fixed number of input streams.

    MF_E_INVALIDREQUEST

    The stream is not removable, or the transform currently has the minimum number of input streams it can support.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_TRANSFORM_INPUT_REMAINING

    The transform has unprocessed input buffers for the specified stream.

    ?

    + +

    If the transform has a fixed number of input streams, the method returns E_NOTIMPL.

    An MFT might support this method but not allow certain input streams to be removed. If an input stream can be removed, the method returns the flag for that stream. Otherwise, the stream cannot be removed, and the method returns MF_E_INVALIDREQUEST. The method also fails if the MFT currently has the minimum number of input streams that it requires. To find the minimum number of streams, call .

    If the transform still has unprocessed input for that stream, the method might succeed or it might return MF_E_TRANSFORM_INPUT_REMAINING. If the method succeeds, the MFT will continue to process the remaining input after the stream is removed. If the method returns MF_E_TRANSFORM_INPUT_REMAINING, you must clear the input buffers before removing the stream. To clear the input buffers, either call or else call with the to flush the MFT. Then call the DeleteInputStream again. An MFT should never discard input buffers when DeleteInputStream is called.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTDeleteInputStream. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms703159 + HRESULT IMFTransform::DeleteInputStream([In] unsigned int dwStreamID) + IMFTransform::DeleteInputStream +
    + + +

    Applies to: desktop apps | Metro style apps

    Adds one or more new input streams to this Media Foundation transform (MFT).

    +
    +

    Number of streams to add.

    +

    Array of stream identifiers. The new stream identifiers must not match any existing input streams.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    Invalid argument.

    E_NOTIMPL

    The MFT has a fixed number of input streams.

    ?

    + +

    If the new streams exceed the maximum number of input streams for this transform, the method returns E_INVALIDARG. To find the maximum number of input streams, call .

    If any of the new stream identifiers conflicts with an existing input stream, the method returns E_INVALIDARG.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTAddInputStreams. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms696211 + HRESULT IMFTransform::AddInputStreams([In] unsigned int cStreams,[In] unsigned int* adwStreamIDs) + IMFTransform::AddInputStreams +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets an available media type for an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference.

    +

    Receives a reference to the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The MFT does not have a list of available input types.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_NO_MORE_TYPES

    The dwTypeIndex parameter is out of range.

    MF_E_TRANSFORM_TYPE_NOT_SET

    You must set the output types before setting the input types.

    ?

    + +

    The MFT defines a list of available media types for each input stream and orders them by preference. This method enumerates the available media types for an input stream. To enumerate the available types, increment dwTypeIndex until the method returns MF_E_NO_MORE_TYPES.

    Setting the media type on one stream might change the available types for another stream, or change the preference order. However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call .

    In some cases, an MFT cannot return a list of input types until one or more output types are set. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

    An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the MFTGetInfo function.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputAvailableType. See Creating Hybrid DMO/MFT Objects.

    Implementation Notes

    If the MFT stores a media type internally, the MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

    +
    + + ms704814 + HRESULT IMFTransform::GetInputAvailableType([In] unsigned int dwInputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType) + IMFTransform::GetInputAvailableType +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets an available media type for an output stream on this Media Foundation transform (MFT).

    +
    +

    Output stream identifier. To get the list of stream identifiers, call .

    +

    Index of the media type to retrieve. Media types are indexed from zero and returned in approximate order of preference.

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    The MFT does not have a list of available output types.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_NO_MORE_TYPES

    The dwTypeIndex parameter is out of range.

    MF_E_TRANSFORM_TYPE_NOT_SET

    You must set the input types before setting the output types.

    ?

    + +

    The MFT defines a list of available media types for each output stream and orders them by preference. This method enumerates the available media types for an output stream. To enumerate the available types, increment dwTypeIndex until the method returns MF_E_NO_MORE_TYPES.

    Setting the media type on one stream can change the available types for another stream (or change the preference order). However, an MFT is not required to update the list of available types dynamically. The only guaranteed way to test whether you can set a particular input type is to call .

    In some cases, an MFT cannot return a list of output types until one or more input types are set. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

    An MFT is not required to implement this method. However, most MFTs should implement this method, unless the supported types are simple and can be discovered through the MFTGetInfo function.

    This method can return a partial media type. A partial media type contains an incomplete description of a format, and is used to provide a hint to the caller. For example, a partial type might include just the major type and subtype GUIDs. However, after the client sets the input types on the MFT, the MFT should generally return at least one complete output type, which can be used without further modification. For more information, see Complete and Partial Media Types.

    Some MFTs cannot provide an accurate list of output types until the MFT receives the first input sample. For example, the MFT might need to read the first packet header to deduce the format. An MFT should handle this situation as follows:

    1. Before the MFT receives any input, it offers a list of one or more output types that it could possibly produce. For example, an MPEG-2 decoder might return a media type that describes the MPEG-2 main profile/main level.
    2. The client selects one of these types (generally the first) and sets it on the output stream.
    3. The client delivers the first input sample by calling .
    4. If the output type does not conform to the input data, the transform signals a format change in the ProcessOutput method. For more information about format changes, see .
    5. The calls GetOutputAvailableType again. At this point, the method should return an updated list of types that reflects the input data.
    6. The client selects a new output type from this list and calls SetOutputType.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputAvailableType. See Creating Hybrid DMO/MFT Objects.

    Implementation Notes

    If the MFT stores a media type internally, the MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

    +
    + + ms703812 + HRESULT IMFTransform::GetOutputAvailableType([In] unsigned int dwOutputStreamID,[In] unsigned int dwTypeIndex,[Out] IMFMediaType** ppType) + IMFTransform::GetOutputAvailableType +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets, tests, or clears the media type for an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to the interface, or null.

    +

    Zero or more flags from the _MFT_SET_TYPE_FLAGS enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDMEDIATYPE

    The MFT cannot use the proposed media type.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_INVALIDTYPE

    The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory attributes.

    MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING

    The MFT cannot switch types while processing data. Try draining or flushing the MFT.

    MF_E_TRANSFORM_TYPE_NOT_SET

    You must set the output types before setting the input types.

    MF_E_UNSUPPORTED_D3D_TYPE

    The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration.

    ?

    + +

    This method can be used to set, test without setting, or clear the media type:

    • To set the media type, set dwFlags to zero and set pType to a non-null reference that specifies the media type.
    • To test the media type without setting it, set dwFlags to and set pType to a non-null reference that specifies the media type. If the media type is acceptable, the method return . Otherwise, it returns MF_E_INVALIDMEDIATYPE. Regardless of the return value, the current media type does not change.
    • To clear the media type, set pType to null.

    Setting the media type on one stream may change the acceptable types on another stream.

    An MFT may require the caller to set one or more output types before setting the input type. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

    If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return MF_E_UNSUPPORTED_D3D_TYPE. For more information, see Supporting DXVA 2.0 in Media Foundation.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetInputType. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms700113 + HRESULT IMFTransform::SetInputType([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags) + IMFTransform::SetInputType +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets, tests, or clears the media type for an output stream on this Media Foundation transform (MFT).

    +
    +

    Output stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to the interface, or null.

    +

    Zero or more flags from the _MFT_SET_TYPE_FLAGS enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDMEDIATYPE

    The transform cannot use the proposed media type.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_INVALIDTYPE

    The proposed type is not valid. This error code indicates that the media type itself is not configured correctly; for example, it might contain mutually contradictory flags.

    MF_E_TRANSFORM_CANNOT_CHANGE_MEDIATYPE_WHILE_PROCESSING

    The MFT cannot switch types while processing data. Try draining or flushing the MFT.

    MF_E_TRANSFORM_TYPE_NOT_SET

    You must set the input types before setting the output types.

    MF_E_UNSUPPORTED_D3D_TYPE

    The MFT could not find a suitable DirectX Video Acceleration (DXVA) configuration.

    ?

    + +

    This method can be used to set, test without setting, or clear the media type:

    • To set the media type, set dwFlags to zero and set pType to a non-null reference that specifies the media type.
    • To test the media type without setting it, set dwFlags to and set pType to a non-null reference that specifies the media type. If the media type is acceptable, the method return . Otherwise, it returns MF_E_INVALIDMEDIATYPE. Regardless of the return value, the current media type does not change.
    • To clear the media type, set pType to null.

    Setting the media type on one stream may change the acceptable types on another stream.

    An MFT may require the caller to set one or more input types before setting the output type. If so, the method returns MF_E_TRANSFORM_TYPE_NOT_SET.

    If the MFT supports DirectX Video Acceleration (DXVA) but is unable to find a suitable DXVA configuration (for example, if the graphics driver does not have the right capabilities), the method should return MF_E_UNSUPPORTED_D3D_TYPE. For more information, see Supporting DXVA 2.0 in Media Foundation.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetOutputType. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms702016 + HRESULT IMFTransform::SetOutputType([In] unsigned int dwOutputStreamID,[In, Optional] IMFMediaType* pType,[In] unsigned int dwFlags) + IMFTransform::SetOutputType +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the current media type for an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The input media type has not been set.

    ?

    + +

    If the specified input stream does not yet have a media type, the method returns MF_E_TRANSFORM_TYPE_NOT_SET. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling .

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputCurrentType. See Creating Hybrid DMO/MFT Objects.

    Implementation Notes

    The MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

    +
    + + ms705607 + HRESULT IMFTransform::GetInputCurrentType([In] unsigned int dwInputStreamID,[Out] IMFMediaType** ppType) + IMFTransform::GetInputCurrentType +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the current media type for an output stream on this Media Foundation transform (MFT).

    +
    +

    Output stream identifier. To get the list of stream identifiers, call .

    +

    Receives a reference to the interface. The caller must release the interface.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The output media type has not been set.

    ?

    + +

    If the specified output stream does not yet have a media type, the method returns MF_E_TRANSFORM_TYPE_NOT_SET. Most MFTs do not set any default media types when first created. Instead, the client must set the media type by calling .

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputCurrentType. See Creating Hybrid DMO/MFT Objects.

    Implementation Notes

    The MFT should return a clone of the media type, not a reference to the original type. Otherwise, the caller might modify the type and alter the internal state of the MFT.

    +
    + + ms696985 + HRESULT IMFTransform::GetOutputCurrentType([In] unsigned int dwOutputStreamID,[Out] IMFMediaType** ppType) + IMFTransform::GetOutputCurrentType +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether an input stream on this Media Foundation transform (MFT) can accept more data.

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Receives a member of the _MFT_INPUT_STATUS_FLAGS enumeration, or zero. If the value is , the stream specified in dwInputStreamID can accept more input data.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    ?

    + +

    If the method returns the flag, you can deliver an input sample to the specified stream by calling . If the method succeeds but does not return any flags in the pdwFlags parameter, it means the input stream already has as much data as it can accept.

    Use this method to test whether the input stream is ready to accept more data, without incurring the overhead of allocating a new sample and calling ProcessInput.

    After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output (or both).

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetInputStatus. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms697478 + HRESULT IMFTransform::GetInputStatus([In] unsigned int dwInputStreamID,[Out] unsigned int* pdwFlags) + IMFTransform::GetInputStatus +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Foundation transform (MFT) is ready to produce output data.

    +
    +

    Receives a member of the _MFT_OUTPUT_STATUS_FLAGS enumeration, or zero. If the value is , the MFT can produce an output sample.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    ?

    + +

    If the method returns the flag, it means you can generate one or more output samples by calling .

    MFTs are not required to implement this method. If the method returns E_NOTIMPL, you must call ProcessOutput to determine whether the transform has output data.

    If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready.

    After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStatus. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms696269 + HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags) + IMFTransform::GetOutputStatus +
    + + +

    Applies to: desktop apps | Metro style apps

    Sets the range of time stamps the client needs for output.

    +
    +

    Specifies the earliest time stamp. The Media Foundation transform (MFT) will accept input until it can produce an output sample that begins at this time; or until it can produce a sample that ends at this time or later. If there is no lower bound, use the value MFT_OUTPUT_BOUND_LOWER_UNBOUNDED.

    +

    Specifies the latest time stamp. The MFT will not produce an output sample with time stamps later than this time. If there is no upper bound, use the value MFT_OUTPUT_BOUND_UPPER_UNBOUNDED.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    ?

    + +

    This method can be used to optimize preroll, especially in formats that have gaps between time stamps, or formats where the data must start on a sync point, such as MPEG-2. Calling this method is optional, and implementation of this method by an MFT is optional. If the MFT does not implement the method, the return value is E_NOTIMPL.

    If an MFT implements this method, it must limit its output data to the range of times specified by hnsLowerBound and hnsUpperBound. The MFT discards any input data that is not needed to produce output within this range. If the sample boundaries do not exactly match the range, the MFT should split the output samples, if possible. Otherwise, the output samples can overlap the range.

    For example, suppose the output range is 100 to 150 milliseconds (ms), and the output format is video with each frame lasting 33 ms. A sample with a time stamp of 67 ms overlaps the range (67 + 33 = 100) and is produced as output. A sample with a time stamp of 66 ms is discarded (66 + 33 = 99). Similarly, a sample with a time stamp of 150 ms is produced as output, but a sample with a time stamp of 151 is discarded.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTSetOutputBounds. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms693812 + HRESULT IMFTransform::SetOutputBounds([In] longlong hnsLowerBound,[In] longlong hnsUpperBound) + IMFTransform::SetOutputBounds +
    + + +

    Applies to: desktop apps | Metro style apps

    Sends an event to an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to the interface of an event object.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_NOTIMPL

    Not implemented.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream number.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT

    The pipeline should not propagate the event.

    ?

    + +

    An MFT can handle sending the event downstream, or it can let the pipeline do this, as indicated by the return value:

    • E_NOTIMPL: The MFT ignores all events, and the pipeline should send all events downstream. After the pipeline receives this return value, it might not call ProcessEvent again.
    • : The MFT has examined this event, but the pipeline should send the event downstream. Internally, the MFT might respond to the event in some way, or it might ignore the event.
    • MF_S_TRANSFORM_DO_NOT_PROPAGATE_EVENT: The pipeline should not propagate this event downstream. Either the MFT will send the event downstream, or else the MFT will consume the event and not send it downstream. The MFT should only consume the event if the event should stop at this MFT and not travel any further downstream. But in most cases, the event should travel downstream.

    To send the event downstream, the MFT adds the event to the collection object that is provided by the client in the pEvents member of the structure, when the client calls .

    Events must be serialized with the samples that come before and after them. Attach the event to the output sample that follows the event. (The pipeline will process the event first, and then the sample.) If an MFT holds back one or more samples between calls to and ProcessOutput, the MFT should handle sending all events downstream, because in this situation the pipeline cannot correlate input samples with output samples.

    If an MFT does not hold back samples and does not need to examine any events, it can return E_NOTIMPL.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessEvent. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms695394 + HRESULT IMFTransform::ProcessEvent([In] unsigned int dwInputStreamID,[In, Optional] IMFMediaEvent* pEvent) + IMFTransform::ProcessEvent +
    + + +

    Applies to: desktop apps | Metro style apps

    Sends a message to the Media Foundation transform (MFT).

    +
    +

    The message to send, specified as a member of the enumeration.

    +

    Message parameter. The meaning of this parameter depends on the message type.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream number. Applies to the message.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    ?

    + +

    Before calling this method, set the media types on all input and output streams.

    The MFT might ignore certain message types. If so, the method returns . An error code indicates that the transform handles this message type but was unable to process the message in this instance.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessMessage. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms701863 + HRESULT IMFTransform::ProcessMessage([In] MFT_MESSAGE_TYPE eMessage,[In] ULONG_PTR ulParam) + IMFTransform::ProcessMessage +
    + + +

    Applies to: desktop apps | Metro style apps

    Delivers data to an input stream on this Media Foundation transform (MFT).

    +
    +

    Input stream identifier. To get the list of stream identifiers, call .

    +

    Pointer to the interface of the input sample. The sample must contain at least one media buffer that contains valid input data.

    +

    Reserved. Must be zero.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_INVALIDARG

    Invalid argument.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier.

    MF_E_NO_SAMPLE_DURATION

    The input sample requires a valid sample duration. To set the duration, call .

    Some MFTs require that input samples have valid durations. Some MFTs do not require sample durations.

    MF_E_NO_SAMPLE_TIMESTAMP

    The input sample requires a time stamp. To set the time stamp, call .

    Some MFTs require that input samples have valid time stamps. Some MFTs do not require time stamps.

    MF_E_NOTACCEPTING

    The transform cannot process more input at this time.

    MF_E_TRANSFORM_TYPE_NOT_SET

    The media type is not set on one or more streams.

    MF_E_UNSUPPORTED_D3D_TYPE

    The media type is not supported for DirectX Video Acceleration (DXVA). A DXVA-enabled decoder might return this error code.

    ?

    Note??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that S_FALSE is not a valid return code for , unlike the IMediaObject::ProcessInput method.

    + +

    In most cases, if the method succeeds, the MFT stores the sample and holds a reference count on the reference. Do not re-use the sample until the MFT releases the sample. Instead of storing the sample, however, an MFT might copy the sample data into a new buffer. In that case, the MFT should set the flag in the method.

    If the MFT already has enough input data to produce an output sample, it does not accept new input data, and ProcessInput returns MF_E_NOTACCEPTING. At that point, the client should clear the pending input data by doing one of the following:

    • Generate new output by calling .
    • Flush the input data by calling with the MFT_MESSAGE_COMMAND_FLUSH message.

    An exception to this rule is the flag. When this flag is present, the transform will discard stored samples if you give it more input. For more information, see . A transform should never queue any more input data than is required to produce the correct output.

    An MFT can process the input data in the ProcessInput method. However, most MFTs wait until the client calls ProcessOutput.

    After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output. It should never be in both states or neither state. An MFT should only accept as much input as it needs to generate at least one output sample, at which point ProcessInput returns MF_E_NOTACCEPTING. When ProcessInput returns MF_E_NOTACCEPTING, the client can assume that the MFT is ready to produce output.

    If an MFT encounters a non-fatal error in the input data, it can simply drop the data and attempt to recover when it gets the more input data. To request more input data, the MFT returns MF_E_TRANSFORM_NEED_MORE_INPUT from the method. If the MFT drops any data, it should set the attribute attribute on the next output sample, to notify the caller that there is a gap in the data stream.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTProcessInput. See Creating Hybrid DMO/MFT Objects.

    Asynchronous Processing

    The previous remarks describe the synchronous processing model. To support asynchronous processing, see Asynchronous MFTs.

    +
    + + ms703131 + HRESULT IMFTransform::ProcessInput([In] unsigned int dwInputStreamID,[In] IMFSample* pSample,[In] unsigned int dwFlags) + IMFTransform::ProcessInput +
    + + +

    Applies to: desktop apps | Metro style apps

    Generates output from the current input data.

    +
    +

    Bitwise OR of zero or more flags from the _MFT_PROCESS_OUTPUT_FLAGS enumeration.

    +

    Number of elements in the pOutputSamples array. The value must be at least 1.

    +

    Pointer to an array of structures, allocated by the caller. The MFT uses this array to return output data to the caller.

    +

    Receives a bitwise OR of zero or more flags from the _MFT_PROCESS_OUTPUT_STATUS enumeration.

    +

    The method returns an . Possible values include, but are not limited to, those in the following table.

    Return codeDescription

    The method succeeded.

    E_UNEXPECTED

    The ProcessOutput method was called on an asynchronous MFT that was not expecting this method call.

    MF_E_INVALIDSTREAMNUMBER

    Invalid stream identifier in the dwStreamID member of one or more structures.

    MF_E_TRANSFORM_NEED_MORE_INPUT

    The transform cannot produce output data until it receives more input data.

    MF_E_TRANSFORM_STREAM_CHANGE

    The format has changed on an output stream, or there is a new preferred format, or there is a new output stream.

    MF_E_TRANSFORM_TYPE_NOT_SET

    You must set the media type on one or more streams of the MFT.

    ?

    Note??If you are converting a DirectX Media Object (DMO) to an MFT, be aware that S_FALSE is not a valid return code for , unlike the IMediaObject::ProcessOutput method.

    + +

    The size of the pOutputSamples array must be equal to or greater than the number of selected output streams. The number of selected output streams equals the total number of output streams minus the number of deselected streams. A stream is deselected if it has the flag and the caller does not set a media type (or sets the media type to null). For more information, see _MFT_OUTPUT_STREAM_INFO_FLAGS enumeration.

    This method generates output samples and can also generate events. If the method succeeds, at least one of the following conditions is true:

    • One or more samples in the pOutputSamples array contains output data.
    • One or more members of the pOutputSamples array contains a non-empty collection of events.

    If MFT_UNIQUE_METHOD_NAMES is defined before including Mftransform.h, this method is renamed MFTProcessOutput. See Creating Hybrid DMO/MFT Objects.

    Output Buffers

    The MFT returns output data for a stream through the pSample member of the structure. This structure member is a reference to the interface of a media sample. (See Media Samples.) The media sample is allocated either by the caller or by the MFT, depending on the MFT's allocation model. To find the allocation model, call and examine the dwFlags member of the structure:

    • If the flag is present, the MFT allocates the media sample.
    • If the flag is present, the caller can optionally provide a media sample. If pSample is null, the MFT will allocate the media sample.
    • If neither of these two flags is present, the caller must allocate the media sample.

    These flags remain constant unless the media type for the output stream changes.

    If the caller allocates the media sample, the media sample must contain a buffer that is large enough to hold the output data. To find the buffer requirements, call GetOutputStreamInfo. The MFT writes the output data to the start of the buffer, overwriting any data that already exists in the buffer.

    If the MFT allocates the sample, the MFT also allocates the buffers for the sample.

    If the MFT has multiple output streams, the streams might produce output at different rates, so some streams might have output while other streams do not. If a stream did not any produce output, the MFT sets the flag in the dwStatus member of the structure for that stream. In that case, if the caller allocated pSample, the buffers in the sample do not contain any valid data. If the caller did not allocate pSample, the flag indicates that pSample still equals null after the method returns.

    If no output streams have data, and the MFT has no events to return, then ProcessOutput returns MF_E_TRANSFORM_NEED_MORE_INPUT.

    The MFT cannot return more than one sample per stream in a single call to ProcessOutput. If there is more output data available for a stream after ProcessOutput returns, the MFT sets the flag in the dwStatus member of the structure for that stream.

    If the MFT has enough data to produce output, it should refuse to accept any more input until ProcessOutput has been called enough times to pull all of the available output. (An exception is when the method returns the flag.) Generally, an MFT with multiple output streams should produce output for a stream as soon as possible, and not wait for all of the streams to have output.

    In-Band Events

    The MFT can return a collection of event objects in the pEvents member of each structure. The MFT allocates both the collection object and the events.

    To send an event to the caller, the MFT performs the following steps inside ProcessOutput:

    1. Create a new collection object by calling .
    2. Add one or more events to the collection by calling .
    3. Set the pEvents member of the structure equal to the reference. The MFT leaves a reference count on this interface; the caller must release the reference.

    Events do not have time stamps. The caller should process the events before processing the output samples. In other words, events occur at the point in the stream immediately after the previous call to ProcessOutput, and prior to any output samples returned from the current ProcessOutput call.

    It is valid for the ProcessOutput method to return one or more events and zero output samples.

    The caller is responsible for releasing any events that the MFT allocates. When the method returns, check the pEvents member of each structure. If the value is not null, the caller must release the interface reference:

    // Release the events that an MFT might allocate in ().	
    +            void ReleaseEventCollection(DWORD cOutputBuffers, * pBuffers)	
    +            { for (DWORD i = 0; i < cOutputBuffers; i++) { if (pBuffers[i].pEvents) { pBuffers[i].pEvents->Release(); pBuffers[i].pEvents = null; } }	
    +            }	
    +            

    An MFT should not use the interface to send in-band events.

    Stream Changes

    The ProcessOutput method can cause any of the following changes in an output stream:

    • The deletion of an output stream. To signal a stream deletion, the MFT sets the flag in the dwStatus member of the structure for that stream.
    • The creation of a new output stream. To signal a new output stream, the MFT sets the flag in the pdwStatus parameter. A new stream can have the same stream identifier as a deleted stream.
    • A format change on an output stream. To signal a format change, the MFT sets the flag in the dwStatus member of the structure for that stream.

    It is possible that all three of these actions will result from a single call to ProcessOutput. The caller must respond to them in the order listed here?first deletions, then additions, then format changes.

    The flag signals a format change on an output stream. This might mean the current media type has become invalid, or the preference order has changed and a more efficient format is available. In the latter case, it is possible that the client will re-set the original media type. To guard against endless loops, the MFT should not set the flag again until there is another change. Also, avoid setting this flag if the preference order changes but the current media type is still the most preferred type.

    Sample Attributes

    An input sample might have attributes, which are accessed through the interface. Unless a specific attribute no longer applies, all attributes should be copied into the corresponding output sample. The responsibily for copying attributes is determined as follows:

    • If the value of the MFPKEY_EXATTRIBUTE_SUPPORTED property on the MFT is VARIANT_TRUE, the MFT copies the attributes.
    • If the value of MFPKEY_EXATTRIBUTE_SUPPORTED is VARIANT_FALSE, or the property is not set, the client must copy the sample attributes. Do not overwrite any attributes that the MFT sets on the output sample.

    For a list of sample attributes, see Sample Attributes.

    Asynchronous Processing

    The previous remarks describe the synchronous processing model. To support asynchronous processing, see Asynchronous MFTs.

    +
    + + ms704014 + HRESULT IMFTransform::ProcessOutput([In] unsigned int dwFlags,[In] unsigned int cOutputBufferCount,[In] MFT_OUTPUT_DATA_BUFFER* pOutputSamples,[In] unsigned int* pdwStatus) + IMFTransform::ProcessOutput +
    + + +

    Applies to: desktop apps | Metro style apps

    Gets the global attribute store for this Media Foundation transform (MFT).

    +
    + +

    Use the reference retrieved by this method to get or set attributes that apply to the entire MFT. To get the attribute store for an input stream, call . To get the attribute store for an output stream, call .

    Implementation of this method is optional unless the MFT needs to support a particular set of attributes. Exception: Hardware-based MFTs must implement this method. See Hardware MFTs.

    +
    + + ms703141 + GetAttributes + GetAttributes + HRESULT IMFTransform::GetAttributes([Out] IMFAttributes** pAttributes) +
    + + +

    Applies to: desktop apps | Metro style apps

    Queries whether the Media Foundation transform (MFT) is ready to produce output data.

    +
    + +

    If the method returns the flag, it means you can generate one or more output samples by calling .

    MFTs are not required to implement this method. If the method returns E_NOTIMPL, you must call ProcessOutput to determine whether the transform has output data.

    If the MFT has more than one output stream, but it does not produce samples at the same time for each stream, it can set the flag when just one stream is ready. However, if the MFT normally produces samples at the same time for each output stream, it should not set this flag until all streams are ready.

    After the client has set valid media types on all of the streams, the MFT should always be in one of two states: Able to accept more input, or able to produce more output.

    If MFT_UNIQUE_METHOD_NAMES is defined before including mftransform.h, this method is renamed MFTGetOutputStatus. See Creating Hybrid DMO/MFT Objects.

    +
    + + ms696269 + GetOutputStatus + GetOutputStatus + HRESULT IMFTransform::GetOutputStatus([Out] unsigned int* pdwFlags) +
    + + +

    Applies to: desktop apps only

    Contains private data for the IDirectXVideoDecoder::Execute method.

    +
    + +

    This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

    +
    + + ms696173 + MFAYUVSample + MFAYUVSample +
    + + + No documentation. + + + unsigned char bCrValue + unsigned char bCrValue + + + + No documentation. + + + unsigned char bCbValue + unsigned char bCbValue + + + + No documentation. + + + unsigned char bYValue + unsigned char bYValue + + + + No documentation. + + + unsigned char bSampleAlpha8 + unsigned char bSampleAlpha8 + + + +

    Applies to: desktop apps only

    Contains private data for the IDirectXVideoDecoder::Execute method.

    +
    + +

    This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

    +
    + + ms696173 + MFBYTESTREAM_BUFFERING_PARAMS + MFBYTESTREAM_BUFFERING_PARAMS +
    + + + No documentation. + + + unsigned longlong cbTotalFileSize + unsigned longlong cbTotalFileSize + + + + No documentation. + + + unsigned longlong cbPlayableDataSize + unsigned longlong cbPlayableDataSize + + + + No documentation. + + + MF_LEAKY_BUCKET_PAIR* prgBuckets + MF_LEAKY_BUCKET_PAIR prgBuckets + + + + No documentation. + + + unsigned int cBuckets + unsigned int cBuckets + + + + No documentation. + + + unsigned longlong qwNetBufferingTime + unsigned longlong qwNetBufferingTime + + + + No documentation. + + + unsigned longlong qwExtraBufferingTimeDuringSeek + unsigned longlong qwExtraBufferingTimeDuringSeek + + + + No documentation. + + + unsigned longlong qwPlayDuration + unsigned longlong qwPlayDuration + + + + No documentation. + + + float dRate + float dRate + + + +

    [This documentation is preliminary and is subject to change.]

    Applies to: desktop apps only

    Specifies a range of bytes.

    +
    + + hh162808 + MF_BYTE_STREAM_CACHE_RANGE + MF_BYTE_STREAM_CACHE_RANGE +
    + + +

    The offset, in bytes, of the start of the range.

    +
    + + hh162808 + unsigned longlong qwStartOffset + unsigned longlong qwStartOffset +
    + + +

    The offset, in bytes, of the end of the range.

    +
    + + hh162808 + unsigned longlong qwEndOffset + unsigned longlong qwEndOffset +
    + + +

    Applies to: desktop apps only

    The structure describes the format of the data used by a stream in a Microsoft DirectX Media Object (DMO).

    +
    + +

    This structure is identical to the DirectShow structure. The bFixedSizeSamples, bTemporalCompression, and lSampleSize members are for compatibility with DirectShow. Other DMO clients are not required to use them.

    +
    + + dd375504 + DMO_MEDIA_TYPE + DMO_MEDIA_TYPE +
    + + +

    Major type of the stream.

    +
    + + dd375504 + GUID majortype + GUID majortype +
    + + +

    Subtype of the stream.

    +
    + + dd375504 + GUID subtype + GUID subtype +
    + + +

    If TRUE, samples are of a fixed size. This field is informational only. For audio, it is generally set to TRUE. For video, it is usually TRUE for uncompressed video and for compressed video.

    +
    + + dd375504 + BOOL bFixedSizeSamples + BOOL bFixedSizeSamples +
    + + +

    If TRUE, samples are compressed using temporal (interframe) compression. (A value of TRUE indicates that not all frames are key frames.) This field is informational only.

    +
    + + dd375504 + BOOL bTemporalCompression + BOOL bTemporalCompression +
    + + +

    Size of the sample in bytes. For compressed data, the value can be zero.

    +
    + + dd375504 + unsigned int lSampleSize + unsigned int lSampleSize +
    + + +

    specifying the format type. The pbFormat member points to the corresponding format structure. Format types include the following.

    Format typeFormat structure
    FORMAT_DvInfo

    DVINFO

    FORMAT_MPEG2Video

    FORMAT_MPEGVideo

    FORMAT_None

    None.

    FORMAT_VideoInfo

    FORMAT_VideoInfo2

    FORMAT_WaveFormatEx

    ?

    +
    + + dd375504 + GUID formattype + GUID formattype +
    + + +

    Not used. Set to null.

    +
    + + dd375504 + IUnknown* pUnk + IUnknown pUnk +
    + + +

    Size of the format block of the media type.

    +
    + + dd375504 + unsigned int cbFormat + unsigned int cbFormat +
    + + +

    Pointer to the format structure. The structure type is specified by the formattype member. The format structure must be present, unless formattype is GUID_NULL or FORMAT_None.

    +
    + + dd375504 + unsigned char* pbFormat + unsigned char pbFormat +
    + + +

    Applies to: desktop apps only

    Contains coefficients used to transform multichannel audio into a smaller number of audio channels. This process is called fold-down.

    +
    + +

    To specify this information in the media type, set the attribute.

    The ASF media source supports fold-down from six channels (5.1 audio) to two channels (stereo). It gets the information from the g_wszFold6To2Channels3 attribute in the ASF header. This attribute is documented in the Windows Media Format SDK documentation.

    +
    + + aa369731 + MFFOLDDOWN_MATRIX + MFFOLDDOWN_MATRIX +
    + + +

    Size of the structure, in bytes.

    +
    + + aa369731 + unsigned int cbSize + unsigned int cbSize +
    + + +

    Number of source channels.

    +
    + + aa369731 + unsigned int cSrcChannels + unsigned int cSrcChannels +
    + + +

    Number of destination channels.

    +
    + + aa369731 + unsigned int cDstChannels + unsigned int cDstChannels +
    + + +

    Specifies the assignment of audio channels to speaker positions in the transformed audio. This member is a bitwise OR of flags that define the speaker positions. For a list of valid flags, see attribute.

    +
    + + aa369731 + unsigned int dwChannelMask + unsigned int dwChannelMask +
    + + +

    Array that contains the fold-down coefficients. The number of coefficients is cSrcChannels?cDstChannels. If the number of coefficients is less than the size of the array, the remaining elements in the array are ignored. For more information about how the coefficients are applied, see Windows Media Audio Professional Codec Features.

    +
    + + aa369731 + int Coeff[64] + int Coeff +
    + + +

    Applies to: desktop apps only

    Contains private data for the IDirectXVideoDecoder::Execute method.

    +
    + +

    This structure corresponds to parameters of the IAMVideoAccelerator::Execute method in DirectX Video Acceleration (DXVA) version 1.

    +
    + + ms696173 + MF_LEAKY_BUCKET_PAIR + MF_LEAKY_BUCKET_PAIR +
    + + + No documentation. + + + unsigned int dwBitrate + unsigned int dwBitrate + + + + No documentation. + + + unsigned int msBufferWindow + unsigned int msBufferWindow + + + +

    Applies to: desktop apps only

    Specifies a rectangular area within a video frame.

    +
    + + ms703850 + MFOffset + MFOffset +
    + + +

    An structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

    +
    + + ms703850 + unsigned short fract + unsigned short fract +
    + + +

    An structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

    +
    + + ms703850 + short value + short value +
    + + +

    Applies to: desktop apps only

    Contains one palette entry in a color table.

    +
    + +

    This union can be used to represent both RGB palettes and Y'Cb'Cr' palettes. The video format that defines the palette determines which union member should be used.

    +
    + + ms698970 + MFPaletteEntry + MFPaletteEntry +
    + + +

    structure that contains an RGB color.

    +
    + + ms698970 + MFARGB ARGB + MFARGB ARGB +
    + + +

    structure that contains a Y'Cb'Cr' color.

    +
    + + ms698970 + MFAYUVSample AYCbCr + MFAYUVSample AYCbCr +
    + + +

    This topic describes how to create a media type that describes an uncompressed video format. For more information about media types generally, see About Media Types.

    To create a complete uncompressed video type, set the following attributes on the interface reference.

    +
    + + ff485865 + MFRatio + MFRatio +
    + + + No documentation. + + + unsigned int Numerator + unsigned int Numerator + + + + No documentation. + + + unsigned int Denominator + unsigned int Denominator + + + + No documentation. + + + MFT_INPUT_STREAM_INFO + MFT_INPUT_STREAM_INFO + + + + No documentation. + + + longlong hnsMaxLatency + longlong hnsMaxLatency + + + + No documentation. + + + unsigned int dwFlags + unsigned int dwFlags + + + + No documentation. + + + unsigned int cbSize + unsigned int cbSize + + + + No documentation. + + + unsigned int cbMaxLookahead + unsigned int cbMaxLookahead + + + + No documentation. + + + unsigned int cbAlignment + unsigned int cbAlignment + + + +

    Applies to: desktop apps | Metro style apps

    Contains information about an output buffer for a Media Foundation transform. This structure is used in the method.

    +
    + +

    You must provide an structure for each selected output stream.

    MFTs can support two different allocation models for output samples:

    • The MFT allocates the output sample.
    • The client allocates the output sample.

    To find which model the MFT supports for a given output stream, call and check the value of dwFlags.

    FlagAllocation Model
    The MFT allocates the output samples for the stream. Set pSample to null for this stream.
    The MFT supports both allocation models.
    Neither (default)The client must allocate the output samples for the stream.

    ?

    The behavior of ProcessOutput depends on the initial value of pSample and the value of the dwFlags parameter in the ProcessOutput method.

    • If pSample is null and dwFlags contains the flag, the MFT discards the output data.

      Restriction: This output stream must have the or flag. (To get the flags for the output stream, call the method.)

    • If pSample is null and dwFlags does not contain the , the MFT provides a sample for the output data. The MFT sets pSample to point to the sample that it provides. The MFT can either allocate a new sample or re-use an input sample.

      Restriction: This output stream must have the or flag.

    • If pSample is non-null, the MFT uses the sample provided by the caller.

      Restriction: This output stream must not have the flag.

    Any other combinations are invalid and cause ProcessOutput to return E_INVALIDARG.

    Each call to ProcessOutput can produce zero or more events and up to one sample per output stream.

    +
    + + ms697247 + MFT_OUTPUT_DATA_BUFFER + MFT_OUTPUT_DATA_BUFFER +
    + + + No documentation. + + + unsigned int dwStreamID + unsigned int dwStreamID + + + + No documentation. + + + IMFSample* pSample + IMFSample pSample + + + + No documentation. + + + unsigned int dwStatus + unsigned int dwStatus + + + + No documentation. + + + IMFCollection* pEvents + IMFCollection pEvents + + + +

    Applies to: desktop apps | Metro style apps

    Contains information about an output stream on a Media Foundation transform (MFT). To get these values, call .

    +
    + +

    Before the media types are set, the only values that should be considered valid is the flag in the dwFlags member. This flag indicates that the stream is optional and does not require a media type.

    After you set a media type on all of the input and output streams (not including optional streams), all of the values returned by the GetOutputStreamInfo method are valid. They might change if you set different media types.

    +
    + + ms696974 + MFT_OUTPUT_STREAM_INFO + MFT_OUTPUT_STREAM_INFO +
    + + + No documentation. + + + unsigned int dwFlags + unsigned int dwFlags + + + + No documentation. + + + unsigned int cbSize + unsigned int cbSize + + + + No documentation. + + + unsigned int cbAlignment + unsigned int cbAlignment + + + +

    Applies to: desktop apps only

    Specifies a rectangular area within a video frame.

    +
    + + ms703850 + MFVideoArea + MFVideoArea +
    + + +

    An structure that contains the x-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

    +
    + + ms703850 + MFOffset OffsetX + MFOffset OffsetX +
    + + +

    An structure that contains the y-coordinate of the upper-left corner of the rectangle. This coordinate might have a fractional value.

    +
    + + ms703850 + MFOffset OffsetY + MFOffset OffsetY +
    + + +

    A structure that contains the width and height of the rectangle.

    +
    + + ms703850 + SIZE Area + SIZE Area +
    + + +

    Applies to: desktop apps | Metro style apps

    Defines a normalized rectangle, which is used to specify sub-rectangles in a video rectangle. When a rectangle N is normalized relative to some other rectangle R, it means the following:

    • The coordinate (0.0, 0.0) on N is mapped to the upper-left corner of R.

    • The coordinate (1.0, 1.0) on N is mapped to the lower-right corner of R.

    Any coordinates of N that fall outside the range [0...1] are mapped to positions outside the rectangle R. A normalized rectangle can be used to specify a region within a video rectangle without knowing the resolution or even the aspect ratio of the video. For example, the upper-left quadrant is defined as {0.0, 0.0, 0.5, 0.5}.

    +
    + + ms703049 + MFVideoNormalizedRect + MFVideoNormalizedRect +
    + + +

    X-coordinate of the upper-left corner of the rectangle.

    +
    + + ms703049 + float left + float left +
    + + +

    Y-coordinate of the upper-left corner of the rectangle.

    +
    + + ms703049 + float top + float top +
    + + +

    X-coordinate of the lower-right corner of the rectangle.

    +
    + + ms703049 + float right + float right +
    + + +

    Y-coordinate of the lower-right corner of the rectangle.

    +
    + + ms703049 + float bottom + float bottom +
    + + + Associate an attribute key with a type used to retreive keys from a instance. + + + + + Initializes a new instance of the struct. + + The GUID. + The type. + + + + Gets or sets the GUID. + + + The GUID. + + + + + Gets or sets the type. + + + The type. + + + + + Generic version of + + Type of the value of this key + + + + Initializes a new instance of the class. + + The GUID. + + + + Initializes a new instance of the class. + + The GUID. + + + + Attributes used when instantiating class. + + + + + Initializes a new instance of class. + + A native COM pointer to a MediaEngineAttributes + + + + Initializes a new instance of class. + + Size of the data to allocate + + + +

    Applies to: desktop apps | Metro style apps

    Initializes Microsoft Media Foundation.

    +
    + If true, do not initialize the sockets library, else full initialization. Default is false + ms702238 + HRESULT MFStartup([In] unsigned int Version,[In] unsigned int dwFlags) + MFStartup + +

    An application must call this function before using Media Foundation. Before your application quits, call once for every previous call to .

    Do not call or from work queue threads. For more information about work queues, see Work Queues.

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

      +
    • Windows?XP with Service Pack?2 (SP2) and later.
    • +
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    • +
    +
    +
    + + +

    Applies to: desktop apps | Metro style apps

    Shuts down the Microsoft Media Foundation platform. Call this function once for every call to . Do not call this function from work queue threads.

    +
    +

    If this function succeeds, it returns . Otherwise, it returns an error code.

    + +

    This function is available on the following platforms if the Windows Media Format 11 SDK redistributable components are installed:

    • Windows?XP with Service Pack?2 (SP2) and later.
    • Windows?XP Media Center Edition?2005 with KB900325 (Windows?XP Media Center Edition?2005) and KB925766 (October 2006 Update Rollup for Windows?XP Media Center Edition) installed.
    +
    + ms694273 + HRESULT MFShutdown() + MFShutdown +
    + + + The namespace provides a managed MediaFoundation API. + + + MediaFoundation + MediaFoundation + + + + The namespace provides a managed MediaFoundation for OPM API. + + + MediaFoundation + MediaFoundation + + + + Resource characteristics returned by . + + hh447939 + HRESULT IMFMediaEngineEx::GetResourceCharacteristics([Out] unsigned int* pCharacteristics) + IMFMediaEngineEx::GetResourceCharacteristics + + + + None flag. + + + + + The media resource represents a live data source, such as a video camera. If playback is stopped and then restarted, there will be a gap in the content. + + + + + The media resource supports seeking. To get the seekable range, call IMFMediaEngine::GetSeekable. + + + + + The media resource can be paused. + + + + + Seeking this resource can take a long time. For example, it might download through HTTP. + + +
    +
    diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.dll new file mode 100644 index 0000000000000000000000000000000000000000..95308fc234b759edfc657151a51d88d1b47d4fd0 GIT binary patch literal 68096 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 nh3VHNm)TnS(Q&3oezxgYj%TF@*5gPbknsEZM literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.xml new file mode 100644 index 0000000..560168a --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.XAudio2.xml @@ -0,0 +1,5016 @@ + + + + SharpDX.XAudio2 + + + + + The assembly provides managed and APIs. + + hh405049 + XAudio2 + XAudio2 + + + + Contains information about anXAPOfor use in an effect chain. + + +

    XAPO instances are passed to XAudio2 as interfaces and XAudio2 uses IXAPO::QueryInterface to acquire an interface and to detect whether the XAPO implements the interface.

    For additional information on using XAPOs with XAudio2 see How to: Create an Effect Chain and How to: Use an XAPO in XAudio2.

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_effect_descriptor + XAUDIO2_EFFECT_DESCRIPTOR + XAUDIO2_EFFECT_DESCRIPTOR +
    + + + Initializes a new instance of the class with a Stereo Effect. + + The effect. + + + + Initializes a new instance of the class. + + The effect. + The output channel count. + + + + No documentation. + + + IUnknown* pEffect + IUnknown pEffect + + + + No documentation. + + + BOOL InitialState + BOOL InitialState + + + + No documentation. + + + unsigned int OutputChannels + unsigned int OutputChannels + + + + Gets or sets the AudioProcessor. The AudioProcessor cannot be set more than one. + + The effect. + + + + Represents an audio data buffer, used withIXAudio2SourceVoice::SubmitSourceBuffer. + + +

    XAudio2 audio data is interleaved, data from each channel is adjacent for a particular sample number. For example if there was a 4 channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, etc.

    The AudioBytes and pAudioData members of correspond to the size in bytes and contents of the 'data' RIFF chunk of the file being played. The contents of the chunk may need to be byte swapped when loading the file on Xbox 360.

    Memory allocated to hold a or structure can be freed as soon as the call it is passed to returns. The data the structure points to (pAudioData and pDecodedPacketCumulativeBytes, respectively) can't be freed until the buffer completes (as signaled by the callback) or the voice is stopped or destroyed.

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_buffer + XAUDIO2_BUFFER + XAUDIO2_BUFFER +
    + + Constant LoopInfinite. + XAUDIO2_LOOP_INFINITE + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The stream to get the audio buffer from. + + + + Initializes a new instance of the class. + + The buffer to get the audio buffer from. + + + + No documentation. + + + XAUDIO2_BUFFER_FLAGS Flags + XAUDIO2_BUFFER_FLAGS Flags + + + + No documentation. + + + unsigned int AudioBytes + unsigned int AudioBytes + + + + No documentation. + + + const unsigned char* pAudioData + unsigned char pAudioData + + + + No documentation. + + + unsigned int PlayBegin + unsigned int PlayBegin + + + + No documentation. + + + unsigned int PlayLength + unsigned int PlayLength + + + + No documentation. + + + unsigned int LoopBegin + unsigned int LoopBegin + + + + No documentation. + + + unsigned int LoopLength + unsigned int LoopLength + + + + No documentation. + + + unsigned int LoopCount + unsigned int LoopCount + + + + No documentation. + + + void* pContext + void pContext + + + + Gets or sets the datastream associated to this audio buffer + + The stream. + + + + The IXAudio2EngineCallback interface contains methods that notify the client when certain events happen in the engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface pointer provided by the client, using either the {{XAudio2Create}} or method. Methods in this interface return void, rather than an HRESULT. + + IXAudio2EngineCallback + + Theinterface contains methods that notify the client when certain events happen in theIXAudio2engine. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods via an interface reference provided by the client, using theXAudio2Createmethod. Methods in this interface returnvoid, rather than an .

    See XAudio2 Callbacks for restrictions on callback implementation.

    +
    + + ee415910 + IXAudio2EngineCallback + IXAudio2EngineCallback +
    + + + Called by XAudio2 just before an audio processing pass begins. + + void IXAudio2EngineCallback::OnProcessingPassStart() + + + + Called by XAudio2 just after an audio processing pass ends. + + void IXAudio2EngineCallback::OnProcessingPassEnd() + + + + Called if a critical system error occurs that requires XAudio2 to be closed down and restarted. + + Error code returned by XAudio2. + void IXAudio2EngineCallback::OnCriticalError([None] HRESULT Error) + + + + Internal EngineCallback Callback Impl + + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + + Called by XAudio2 just after an audio processing pass ends. + + void IXAudio2EngineCallback::OnProcessingPassEnd() + + + + Called if a critical system error occurs that requires XAudio2 to be closed down and restarted. + + This pointer + Error code returned by XAudio2. + void IXAudio2EngineCallback::OnCriticalError([None] HRESULT Error) + + + + EventArgs used by . + + + + + Initializes a new instance of the class. + + The error code. + + + + Gets or sets the error code. + + The error code. + + + + XAudio2FxContants Functions. + + + + Constant None. + + + Constant None. + + + Constant None. + + + Constant None. + + + + No documentation. + + + XAUDIO2_BUFFER_FLAGS + XAUDIO2_BUFFER_FLAGS + + + + No documentation. + + + XAUDIO2_END_OF_STREAM + XAUDIO2_END_OF_STREAM + + + + None. + + + None + None + + + + Indicates whether a filter is low pass, band pass, high pass, or notch. + + + ee419238 + XAUDIO2_FILTER_TYPE + XAUDIO2_FILTER_TYPE + + + + No documentation. + + + LowPassFilter + LowPassFilter + + + + No documentation. + + + BandPassFilter + BandPassFilter + + + + No documentation. + + + HighPassFilter + HighPassFilter + + + + No documentation. + + + NotchFilter + NotchFilter + + + + No documentation. + + + LowPassOnePoleFilter + LowPassOnePoleFilter + + + + No documentation. + + + HighPassOnePoleFilter + HighPassOnePoleFilter + + + + No documentation. + + + XAUDIO2_LOG_TYPE + XAUDIO2_LOG_TYPE + + + + No documentation. + + + XAUDIO2_LOG_ERRORS + XAUDIO2_LOG_ERRORS + + + + No documentation. + + + XAUDIO2_LOG_WARNINGS + XAUDIO2_LOG_WARNINGS + + + + No documentation. + + + XAUDIO2_LOG_INFO + XAUDIO2_LOG_INFO + + + + No documentation. + + + XAUDIO2_LOG_DETAIL + XAUDIO2_LOG_DETAIL + + + + No documentation. + + + XAUDIO2_LOG_API_CALLS + XAUDIO2_LOG_API_CALLS + + + + No documentation. + + + XAUDIO2_LOG_FUNC_CALLS + XAUDIO2_LOG_FUNC_CALLS + + + + No documentation. + + + XAUDIO2_LOG_TIMING + XAUDIO2_LOG_TIMING + + + + No documentation. + + + XAUDIO2_LOG_LOCKS + XAUDIO2_LOG_LOCKS + + + + No documentation. + + + XAUDIO2_LOG_MEMORY + XAUDIO2_LOG_MEMORY + + + + No documentation. + + + XAUDIO2_LOG_STREAMING + XAUDIO2_LOG_STREAMING + + + + No documentation. + + + XAUDIO2_PLAY_FLAGS + XAUDIO2_PLAY_FLAGS + + + + No documentation. + + + XAUDIO2_PLAY_TAILS + XAUDIO2_PLAY_TAILS + + + + None. + + + None + None + + + + Windows-specific enumerator for available processors. + + + microsoft.directx_sdk.xaudio2.xaudio2_windows_processor_specifier + XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER + XAUDIO2_WINDOWS_PROCESSOR_SPECIFIER + + + + No documentation. + + + Processor1 + Processor1 + + + + No documentation. + + + Processor2 + Processor2 + + + + No documentation. + + + Processor3 + Processor3 + + + + No documentation. + + + Processor4 + Processor4 + + + + No documentation. + + + Processor5 + Processor5 + + + + No documentation. + + + Processor6 + Processor6 + + + + No documentation. + + + Processor7 + Processor7 + + + + No documentation. + + + Processor8 + Processor8 + + + + No documentation. + + + Processor9 + Processor9 + + + + No documentation. + + + Processor10 + Processor10 + + + + No documentation. + + + Processor11 + Processor11 + + + + No documentation. + + + Processor12 + Processor12 + + + + No documentation. + + + Processor13 + Processor13 + + + + No documentation. + + + Processor14 + Processor14 + + + + No documentation. + + + Processor15 + Processor15 + + + + No documentation. + + + Processor16 + Processor16 + + + + No documentation. + + + Processor17 + Processor17 + + + + No documentation. + + + Processor18 + Processor18 + + + + No documentation. + + + Processor19 + Processor19 + + + + No documentation. + + + Processor20 + Processor20 + + + + No documentation. + + + Processor21 + Processor21 + + + + No documentation. + + + Processor22 + Processor22 + + + + No documentation. + + + Processor23 + Processor23 + + + + No documentation. + + + Processor24 + Processor24 + + + + No documentation. + + + Processor25 + Processor25 + + + + No documentation. + + + Processor26 + Processor26 + + + + No documentation. + + + Processor27 + Processor27 + + + + No documentation. + + + Processor28 + Processor28 + + + + No documentation. + + + Processor29 + Processor29 + + + + No documentation. + + + Processor30 + Processor30 + + + + No documentation. + + + Processor31 + Processor31 + + + + No documentation. + + + Processor32 + Processor32 + + + + No documentation. + + + XAUDIO2_ANY_PROCESSOR + XAUDIO2_ANY_PROCESSOR + + + + No documentation. + + + XAUDIO2_DEFAULT_PROCESSOR + XAUDIO2_DEFAULT_PROCESSOR + + + + No documentation. + + + XAUDIO2_VOICE_FLAGS + XAUDIO2_VOICE_FLAGS + + + + No documentation. + + + XAUDIO2_VOICE_NOPITCH + XAUDIO2_VOICE_NOPITCH + + + + No documentation. + + + XAUDIO2_VOICE_NOSRC + XAUDIO2_VOICE_NOSRC + + + + No documentation. + + + XAUDIO2_VOICE_NOSAMPLESPLAYED + XAUDIO2_VOICE_NOSAMPLESPLAYED + + + + None. + + + None + None + + + + No documentation. + + + XAUDIO2_VOICE_SEND_FLAGS + XAUDIO2_VOICE_SEND_FLAGS + + + + No documentation. + + + XAUDIO2_VOICE_USEFILTER + XAUDIO2_VOICE_USEFILTER + + + + None. + + + None + None + + + + No documentation. + + + XAUDIO2_FLAGS + XAUDIO2_FLAGS + + + + None. + + + None + None + + + + Functions + + + + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT XAudio2Create([Out, Fast] IXAudio2** ppXAudio2,[In] unsigned int Flags,[In] unsigned int XAudio2Processor) + XAudio2Create + + + + No documentation. + + No documentation. + No documentation. + + HRESULT CreateAudioReverb([Out, Fast] IUnknown** ppApo) + CreateAudioReverb + + + + No documentation. + + No documentation. + No documentation. + + HRESULT CreateAudioVolumeMeter([Out, Fast] IUnknown** ppApo) + CreateAudioVolumeMeter + + + + Describes I3DL2 (Interactive 3D Audio Rendering Guidelines Level 2.0) parameters for use in theReverbConvertI3DL2ToNativefunction. + + +

    There are many preset values defined for the structure. For more information, see XAUDIO2FX_I3DL2_PRESET.

    +
    + + ee419220 + XAUDIO2FX_REVERB_I3DL2_PARAMETERS + XAUDIO2FX_REVERB_I3DL2_PARAMETERS +
    + + + No documentation. + + + float WetDryMix + float WetDryMix + + + + No documentation. + + + int Room + int Room + + + + No documentation. + + + int RoomHF + int RoomHF + + + + No documentation. + + + float RoomRolloffFactor + float RoomRolloffFactor + + + + No documentation. + + + float DecayTime + float DecayTime + + + + No documentation. + + + float DecayHFRatio + float DecayHFRatio + + + + No documentation. + + + int Reflections + int Reflections + + + + No documentation. + + + float ReflectionsDelay + float ReflectionsDelay + + + + No documentation. + + + int Reverb + int Reverb + + + + No documentation. + + + float ReverbDelay + float ReverbDelay + + + + No documentation. + + + float Diffusion + float Diffusion + + + + No documentation. + + + float Density + float Density + + + + No documentation. + + + float HFReference + float HFReference + + + + Describes parameters for use in the reverb APO. + + +

    All parameters related to sampling rate or time are relative to a 48kHz voice and must be scaled for use with other sampling rates. For example, setting ReflectionsDelay to 300ms gives a true 300ms delay when the reverb is hosted in a 48kHz voice, but becomes a 150ms delay when hosted in a 24kHz voice.

    +
    + + ee419224 + XAUDIO2FX_REVERB_PARAMETERS + XAUDIO2FX_REVERB_PARAMETERS +
    + + +
    Percentage of the output that will be reverb. Allowable values are from 0 to 100.
    +
    + + ee419224 + float WetDryMix + float WetDryMix +
    + + +
    The delay time of the first reflection relative to the direct path. Permitted range is from 0 to 300 milliseconds.
    Note
    All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.
    +
    + + ee419224 + unsigned int ReflectionsDelay + unsigned int ReflectionsDelay +
    + + +
    Delay of reverb relative to the first reflection. Permitted range is from 0 to 85 milliseconds.
    Note
    All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.
    +
    + + ee419224 + unsigned char ReverbDelay + unsigned char ReverbDelay +
    + + +
    Delay for the left rear output and right rear output. Permitted range is from 0 to 5 milliseconds.
    Note
    All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.
    +
    + + ee419224 + unsigned char RearDelay + unsigned char RearDelay +
    + + +
    Position of the left input within the simulated space relative to the listener. With PositionLeft set to the minimum value, the left input is placed close to the listener. In this position, early reflections are dominant, and the reverb decay is set back in the sound field and reduced in amplitude. With PositionLeft set to the maximum value, the left input is placed at a maximum distance from the listener within the simulated room. PositionLeft does not affect the reverb decay time (liveness of the room), only the apparent position of the source relative to the listener. Permitted range is from 0 to 30 (no units).
    +
    + + ee419224 + unsigned char PositionLeft + unsigned char PositionLeft +
    + + +
    Same as PositionLeft, but affecting only the right input. Permitted range is from 0 to 30 (no units).
    Note
    PositionRight is ignored in mono-in/mono-out mode.
    +
    + + ee419224 + unsigned char PositionRight + unsigned char PositionRight +
    + + +
    Gives a greater or lesser impression of distance from the source to the listener. Permitted range is from 0 to 30 (no units).
    +
    + + ee419224 + unsigned char PositionMatrixLeft + unsigned char PositionMatrixLeft +
    + + +
    Gives a greater or lesser impression of distance from the source to the listener. Permitted range is from 0 to 30 (no units).
    Note
    PositionMatrixRight is ignored in mono-in/mono-out mode.
    +
    + + ee419224 + unsigned char PositionMatrixRight + unsigned char PositionMatrixRight +
    + + +
    Controls the character of the individual wall reflections. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface. Permitted range is from 0 to 15 (no units).
    +
    + + ee419224 + unsigned char EarlyDiffusion + unsigned char EarlyDiffusion +
    + + +
    Controls the character of the individual wall reverberations. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface. Permitted range is from 0 to 15 (no units).
    +
    + + ee419224 + unsigned char LateDiffusion + unsigned char LateDiffusion +
    + + +
    Adjusts the decay time of low frequencies relative to the decay time at 1 kHz. The values correspond to dB of gain as follows:
    Value0123456789101112
    Gain (dB)-8-7-6-5-4-3-2-10+1+2+3+4

    Note that a LowEQGain value of 8 results in the decay time of low frequencies being equal to the decay time at 1 kHz. Permitted range is from 0 to 12 (no units).

    +
    + + ee419224 + unsigned char LowEQGain + unsigned char LowEQGain +
    + + +
    Sets the corner frequency of the low pass filter that is controlled by the LowEQGain parameter. The values correspond to frequency in Hz as follows:
    Value0123456789
    Frequency (Hz)50100150200250300350400450500

    Permitted range is from 0 to 9 (no units).

    +
    + + ee419224 + unsigned char LowEQCutoff + unsigned char LowEQCutoff +
    + + +
    Adjusts the decay time of high frequencies relative to the decay time at 1 kHz. When set to zero, high frequencies decay at the same rate as 1 kHz. When set to maximum value, high frequencies decay at a much faster rate than 1 kHz.
    Value012345678
    Gain (dB)-8-7-6-5-4-3-2-10

    Permitted range is from 0 to 8 (no units).

    +
    + + ee419224 + unsigned char HighEQGain + unsigned char HighEQGain +
    + + +
    Sets the corner frequency of the high pass filter that is controlled by the HighEQGain parameter. The values correspond to frequency in kHz as follows:
    Value01234567891011121314
    Frequency (kHz)11.522.533.544.555.566.577.58

    Permitted range is from 0 to 14 (no units).

    +
    + + ee419224 + unsigned char HighEQCutoff + unsigned char HighEQCutoff +
    + + +
    Sets the corner frequency of the low pass filter for the room effect. Permitted range is from 20 to 20,000 Hz.
    Note
    All parameters related to sampling rate or time are relative to a 48kHz sampling rate and must be scaled for use with other sampling rates. See remarks section below for additional information.
    +
    + + ee419224 + float RoomFilterFreq + float RoomFilterFreq +
    + + +
    Sets the pass band intensity level of the low-pass filter for both the early reflections and the late field reverberation. Permitted range is from -100 to 0 dB.
    +
    + + ee419224 + float RoomFilterMain + float RoomFilterMain +
    + + +
    Sets the intensity of the low-pass filter for both the early reflections and the late field reverberation at the corner frequency (RoomFilterFreq). Permitted range is from -100 to 0 dB.
    +
    + + ee419224 + float RoomFilterHF + float RoomFilterHF +
    + + +
    Adjusts the intensity of the early reflections. Permitted range is from -100 to 20 dB.
    +
    + + ee419224 + float ReflectionsGain + float ReflectionsGain +
    + + +
    Adjusts the intensity of the reverberations. Permitted range is from -100 to 20 dB.
    +
    + + ee419224 + float ReverbGain + float ReverbGain +
    + + +
    Reverberation decay time at 1 kHz. This is the time that a full scale input signal decays by 60 dB. Permitted range is from 0.1 to infinity seconds.
    +
    + + ee419224 + float DecayTime + float DecayTime +
    + + +
    Controls the modal density in the late field reverberation. For colorless spaces, Density should be set to the maximum value (100). As Density is decreased, the sound becomes hollow (comb filtered). This is an effect that can be useful if you are trying to model a silo. Permitted range as a percentage is from 0 to 100.
    +
    + + ee419224 + float Density + float Density +
    + + +
    The apparent size of the acoustic space. Permitted range is from 1 to 100 feet.
    +
    + + ee419224 + float RoomSize + float RoomSize +
    + + +
    If set to TRUE, disables late field reflection calculations. Disabling late field reflection calculations results in a significant CPU time savings.
    +
    + + ee419224 + BOOL DisableLateField + BOOL DisableLateField +
    + + + Describes parameters for use with the volume meter APO. + + +

    This structure is used with the XAudio2 method.

    pPeakLevels and pRMSLevels are not returned by , the arrays are only filled out if they are present. If pPeakLevels and pRMSLevels are used they must be allocated by the application. The application is responsible for freeing the arrays when they are no longer needed.

    ChannelCount must be set by the application to match the number of channels in the voice the effect is applied to.

    +
    + + ee419225 + XAUDIO2FX_VOLUMEMETER_LEVELS + XAUDIO2FX_VOLUMEMETER_LEVELS +
    + + +
    Array that will be filled with the maximum absolute level for each channel during a processing pass. The array must be at least ChannelCount ? sizeof(float) bytes. pPeakLevels may be null if pRMSLevels is not null.
    +
    + + ee419225 + float* pPeakLevels + float pPeakLevels +
    + + +
    Array that will be filled with root mean square level for each channel during a processing pass. The array must be at least ChannelCount ? sizeof(float) bytes. pRMSLevels may be null if pPeakLevels is not null.
    +
    + + ee419225 + float* pRMSLevels + float pRMSLevels +
    + + +
    Number of channels being processed.
    +
    + + ee419225 + unsigned int ChannelCount + unsigned int ChannelCount +
    + + + A mastering voice is used to represent the audio output device. Data buffers cannot be submitted directly to mastering voices, but data submitted to other types of voices must be directed to a mastering voice to be heard.

    inherits directly from , but does not implement methods specific to mastering voices. The interface type exists solely because some of the base class methods are implemented differently for mastering voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.

    +
    + + microsoft.directx_sdk.ixaudio2masteringvoice.ixaudio2masteringvoice + IXAudio2MasteringVoice + IXAudio2MasteringVoice +
    + + + Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + + +

    This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.

    Volume levels are expressed as floating-point amplitude multipliers between - and (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    The X3DAudio function can produce an output matrix for use with SetOutputMatrix based on a sound's position and a listener's position.

    Note
    always returns the levels most recently set by . However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418598 + IXAudio2Voice + IXAudio2Voice +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Returns information about the creation flags, input channels, and sample rate of a voice. + +
    [in, out] structure containing information about the voice.
    + + ee418591 + void IXAudio2Voice::GetVoiceDetails([Out] XAUDIO2_VOICE_DETAILS* pVoiceDetails) + IXAudio2Voice::GetVoiceDetails +
    + + + Designates a new set of submix or mastering voices to receive the output of the voice. + +
    [in] Array of structure references to destination voices. If pSendList is null, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set the OutputCount member of to 0. All of the voices in a send list must have the same input sample rate, see XAudio2 Sample Rate Conversions for additional information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.

    After calling SetOutputVoices a voice's current send levels will be replaced by a default send matrix. The method must be called to set a custom matrix for the new sendlist.

    It is illegal to call SetOutputVoices from within a callback. If SetOutputVoices is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    Note
    Calling SetOutputVoices invalidates any send matrices previously set with .
    +
    + + ee418599 + HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList) + IXAudio2Voice::SetOutputVoices +
    + + + Replaces the effect chain of the voice. + +
    [in, optional] Pointer to an structure that describes the new effect chain to use. If null is passed, the current effect chain is removed.
    Note
    If pEffectChain is non-null, the structure that it points to must specify at least one effect.
    +

    Returns if successful; otherwise, an error code.

    See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    The number of output channels allowed for a voice's effect chain is locked at creation of the voice. If you create the voice with an effect chain, any new effect chain passed to SetEffectChain must have the same number of input and output channels as the original effect chain. If you create the voice without an effect chain, the number of output channels allowed for the effect chain will default to the number of input channels for the voice. If any part of effect chain creation fails, none of it is applied.

    After you attach an effect to an XAudio2 voice, XAudio2 takes control of the effect, and the client should not make any further calls to it. The simplest way to ensure this is to release all references to the effect.

    It is illegal to call SetEffectChain from within a callback. If you call SetEffectChain within a callback, XAUDIO2_E_INVALID_CALL is returned.

    The that is passed in as the pEffectChain argument and any information contained within it are no longer needed after SetEffectChain successfully completes, and may be deleted immediately after SetEffectChain is called.

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.seteffectchain + HRESULT IXAudio2Voice::SetEffectChain([In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + IXAudio2Voice::SetEffectChain +
    + + + Enables the effect at a given position in the effect chain of the voice. + +
    [in] Zero-based index of an effect in the effect chain of the voice.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of error codes.

    + +

    Be careful when you enable an effect while the voice that hosts it is running. Such an action can result in a problem if the effect significantly changes the audio's pitch or volume.

    The effects in a given XAudio2 voice's effect chain must consume and produce audio at that voice's processing sample rate. The only aspect of the audio format they can change is the channel count. For example a reverb effect can convert mono data to 5.1. The client can use the structure's OutputChannels field to specify the number of channels it wants each effect to produce. Each effect in an effect chain must produce a number of channels that the next effect can consume. Any calls to or that would make the effect chain stop fulfilling these requirements will fail.

    EnableEffect takes effect immediately when you call it from an XAudio2 callback with an OperationSet of .

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.enableeffect + HRESULT IXAudio2Voice::EnableEffect([In] unsigned int EffectIndex,[In] unsigned int OperationSet) + IXAudio2Voice::EnableEffect +
    + + + Disables the effect at a given position in the effect chain of the voice. + +
    [in] Zero-based index of an effect in the effect chain of the voice.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of valid error codes.

    + +

    The effects in a given XAudio2 voice's effect chain must consume and produce audio at that voice's processing sample rate. The only aspect of the audio format they can change is the channel count. For example a reverb effect can convert mono data to 5.1. The client can use the structure's OutputChannels field to specify the number of channels it wants each effect to produce. Each effect in an effect chain must produce a number of channels that the next effect can consume. Any calls to or that would make the effect chain stop fulfilling these requirements will fail.

    Disabling an effect immediately removes it from the processing graph. Any pending audio in the effect?such as a reverb tail?is not played. Be careful disabling an effect while the voice that hosts it is running. This can result in an audible artifact if the effect significantly changes the audio's pitch or volume.

    DisableEffect takes effect immediately when called from an XAudio2 callback with an OperationSet of .

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.disableeffect + HRESULT IXAudio2Voice::DisableEffect([In] unsigned int EffectIndex,[In] unsigned int OperationSet) + IXAudio2Voice::DisableEffect +
    + + + Returns the running state of the effect at a specified position in the effect chain of the voice. + +
    [in] Zero-based index of an effect in the effect chain of the voice.
    + +

    GetEffectState always returns the effect's actual current state. However, this may not be the state set by the most recent or call: the actual state is only changed the next time the audio engine runs after the or call (or after the corresponding call, if EnableEffect/DisableEffect was called with a deferred operation ID).

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.geteffectstate + void IXAudio2Voice::GetEffectState([In] unsigned int EffectIndex,[Out] BOOL* pEnabled) + IXAudio2Voice::GetEffectState +
    + + + Sets parameters for a given effect in the voice's effect chain. + +
    [in] Zero-based index of an effect within the voice's effect chain.
    +
    [in] Returns the current values of the effect-specific parameters.
    +
    [in] Size of the pParameters array in bytes.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful; otherwise, an error code. See XAudio2 Error Codes for descriptions of error codes.

    Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.

    + +

    The specific effect being used determines the valid size and format of the pParameters buffer. The call will fail if pParameters is invalid or if ParametersByteSize is not exactly the size that the effect expects. The client must take care to direct the SetEffectParameters call to the right effect. If this call is directed to a different effect that happens to accept the same parameter block size, the parameters will be interpreted differently. This may lead to unexpected results.

    The memory pointed to by pParameters must not be freed immediately, because XAudio2 will need to refer to it later when the parameters actually are applied to the effect. This happens during the next audio processing pass if the OperationSet argument is . Otherwise, the parameters are applied to the effect later, during the first processing pass after the function is called with the same OperationSet argument.

    SetEffectParameters takes effect immediately when called from an XAudio2 callback with an OperationSet of .

    Note
    always returns the effect's actual current parameters. However, these may not match the parameters set by the most recent call to . The actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.seteffectparameters + HRESULT IXAudio2Voice::SetEffectParameters([In] unsigned int EffectIndex,[In, Buffer] const void* pParameters,[In] unsigned int ParametersByteSize,[In] unsigned int OperationSet) + IXAudio2Voice::SetEffectParameters +
    + + + Returns the current effect-specific parameters of a given effect in the voice's effect chain. + +
    [in] Zero-based index of an effect within the voice's effect chain.
    +
    [out] Returns the current values of the effect-specific parameters.
    +
    [out] Size, in bytes, of the pParameters array.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    Fails with E_NOTIMPL if the effect does not support a generic parameter control interface.

    + +

    GetEffectParameters always returns the effect's actual current parameters. However, these may not match the parameters set by the most recent call to IXAudio2Voice::SetEffectParameters: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.geteffectparameters + HRESULT IXAudio2Voice::GetEffectParameters([In] unsigned int EffectIndex,[Out, Buffer] void* pParameters,[In] unsigned int ParametersByteSize) + IXAudio2Voice::GetEffectParameters +
    + + + Sets the voice's filter parameters. + +
    [in] Pointer to an structure containing the filter information.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    SetFilterParameters will fail if the voice was not created with the flag.

    This method is usable only on source and submix voices and has no effect on mastering voices.

    Note
    always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent call: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418596 + HRESULT IXAudio2Voice::SetFilterParameters([In] const XAUDIO2_FILTER_PARAMETERS* pParameters,[In] unsigned int OperationSet) + IXAudio2Voice::SetFilterParameters +
    + + + Gets the voice's filter parameters. + +
    [out] Pointer to an structure containing the filter information.
    + +

    GetFilterParameters will fail if the voice was not created with the flag.

    GetFilterParameters always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent call: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).

    Note
    GetFilterParameters is usable only on source and submix voices and has no effect on mastering voices.
    +
    + + ee418588 + void IXAudio2Voice::GetFilterParameters([Out] XAUDIO2_FILTER_PARAMETERS* pParameters) + IXAudio2Voice::GetFilterParameters +
    + + + Sets the filter parameters on one of this voice's sends. + +
    [in] reference to the destination voice of the send whose filter parameters will be set.
    +
    [in] Pointer to an structure containing the filter information.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    SetOutputFilterParameters will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on a mastering voice's sends.

    Note
    always returns this send?s actual current filter parameters. However, these may not match the parameters set by the most recent call: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418597 + HRESULT IXAudio2Voice::SetOutputFilterParameters([In, Optional] IXAudio2Voice* pDestinationVoice,[In] const XAUDIO2_FILTER_PARAMETERS* pParameters,[In] unsigned int OperationSet) + IXAudio2Voice::SetOutputFilterParameters +
    + + + Returns the filter parameters from one of this voice's sends. + +
    [in] reference to the destination voice of the send whose filter parameters will be read.
    +
    [out] Pointer to an structure containing the filter information.
    + +

    GetOutputFilterParameters will fail if the send was not created with the XAUDIO2_SEND_USEFILTER flag. This method is usable only on sends belonging to source and submix voices and has no effect on mastering voices? sends.

    Note
    always returns this send?s actual current filter parameters. However, these may not match the parameters set by the most recent call: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418589 + void IXAudio2Voice::GetOutputFilterParameters([In, Optional] IXAudio2Voice* pDestinationVoice,[Out] XAUDIO2_FILTER_PARAMETERS* pParameters) + IXAudio2Voice::GetOutputFilterParameters +
    + + + Sets the overall volume level for the voice. + +
    [in] Overall volume level to use. See Remarks for more information on volume levels.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    SetVolume controls a voice's master input volume level. The master volume level is applied at different times depending on the type of voice. For submix and mastering voices the volume level is applied just before the voice's built in filter and effect chain is applied. For source voices the master volume level is applied after the voice's filter and effect chain is applied.

    Volume levels are expressed as floating-point amplitude multipliers between - and (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    Note
    always returns the volume most recently set by . However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.setvolume + HRESULT IXAudio2Voice::SetVolume([In] float Volume,[In] unsigned int OperationSet) + IXAudio2Voice::SetVolume +
    + + + Gets the current overall volume level of the voice. + +
    [out] Returns the current overall volume level of the voice. See Remarks for more information on volume levels.
    + +

    Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    Note
    GetVolume always returns the volume most recently set by . However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.getvolume + void IXAudio2Voice::GetVolume([Out] float* pVolume) + IXAudio2Voice::GetVolume +
    + + + Sets the volume levels for the voice, per channel. + +
    [in] Number of channels in the voice.
    +
    [in] Array containing the new volumes of each channel in the voice. The array must have Channels elements. See Remarks for more information on volume levels.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    SetChannelVolumes controls a voice's per-channel output levels and is applied just after the voice's final SRC and before its sends.

    This method is valid only for source and submix voices, because mastering voices do not specify volume per channel.

    Volume levels are expressed as floating-point amplitude multipliers between - and (-224 to 224), with a maximum gain of 144.5 dB. A volume of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    Note
    always returns the volume levels most recently set by . However, those values may not actually be in effect yet: they only take effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418593 + HRESULT IXAudio2Voice::SetChannelVolumes([In] unsigned int Channels,[In, Buffer] const float* pVolumes,[In] unsigned int OperationSet) + IXAudio2Voice::SetChannelVolumes +
    + + + Returns the volume levels for the voice, per channel. + +
    [in] Confirms the channel count of the voice.
    +
    [out] Returns the current volume level of each channel in the voice. The array must have at least Channels elements. See Remarks for more information on volume levels.
    + +

    These settings are applied after the effect chain is applied. This method is valid only for source and submix voices, because mastering voices do not specify volume per channel.

    Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume of 1 means there is no attenuation or gain, 0 means silence, and negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    Note
    GetChannelVolumes always returns the volume levels most recently set by . However, those values may not actually be in effect yet: they only take effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418585 + void IXAudio2Voice::GetChannelVolumes([In] unsigned int Channels,[Out, Buffer] float* pVolumes) + IXAudio2Voice::GetChannelVolumes +
    + + + Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + +
    [in] Pointer to a destination for which to set volume levels.
    Note
    If the voice sends to a single target voice then specifying null will cause SetOutputMatrix to operate on that target voice.
    +
    [in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain.
    +
    [in] Confirms the input channel count of the destination voice.
    +
    [in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S].

    For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table.

    OutputLeft Input [Array Index]Right Input [Array Index]
    Left1.0 [0]0.0 [1]
    Right0.0 [2]1.0 [3]
    Front Center0.0 [4]0.0 [5]
    LFE0.0 [6]0.0 [7]
    Rear Left0.8 [8]0.0 [9]
    Rear Right0.0 [10]0.8 [11]

    Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels.

    See Remarks for more information on volume levels.

    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    This method is valid only for source and submix voices, because mastering voices write directly to the device with no matrix mixing.

    Volume levels are expressed as floating-point amplitude multipliers between - and (-224 to 224), with a maximum gain of 144.5 dB. A volume level of 1.0 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    The X3DAudio function can produce an output matrix for use with SetOutputMatrix based on a sound's position and a listener's position.

    Note
    always returns the levels most recently set by . However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.setoutputmatrix + HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[In, Buffer] const float* pLevelMatrix,[In] unsigned int OperationSet) + IXAudio2Voice::SetOutputMatrix +
    + + + Gets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + +
    [in] Pointer specifying the destination to retrieve the output matrix for.
    Note
    If the voice sends to a single target voice then specifying null will cause GetOutputMatrix to operate on that target voice.
    +
    [in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain.
    +
    [in] Confirms the input channel count of the destination voice.
    +
    [out] Array of [SourceChannels * DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is returned in the form pLevelMatrix[DestinationChannels ? S + D]. See Remarks for more information on volume levels.
    + +

    This method applies only to source and submix voices, because mastering voices write directly to the device with no matrix mixing.

    Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    See for information on standard channel ordering.

    Note
    GetOutputMatrix always returns the levels most recently set by . However, they may not actually be in effect yet: they only take effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418590 + void IXAudio2Voice::GetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[In] unsigned int SourceChannels,[In] unsigned int DestinationChannels,[Out, Buffer] float* pLevelMatrix) + IXAudio2Voice::GetOutputMatrix +
    + + + Destroys the voice. If necessary, stops the voice and removes it from the XAudio2 graph. + + +

    If any other voice is currently sending audio to this voice, the method fails.

    DestroyVoice waits for the audio processing thread to be idle, so it can take a little while (typically no more than a couple of milliseconds). This is necessary to guarantee that the voice will no longer make any callbacks or read any audio data, so the application can safely free up these resources as soon as the call returns.

    To avoid title thread interruptions from a blocking DestroyVoice call, the application can destroy voices on a separate non-critical thread, or the application can use voice pooling strategies to reuse voices rather than destroying them. Note that voices can only be reused with audio that has the same data format and the same number of channels the voice was created with. A voice can play audio data with different sample rates than that of the voice by calling with an appropriate ratio parameter.

    It is illegal to call DestroyVoice from within a callback. If DestroyVoice is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.destroyvoice + void IXAudio2Voice::DestroyVoice() + IXAudio2Voice::DestroyVoice +
    + + + Enables the effect at a given position in the effect chain of the voice. + + [in] Zero-based index of an effect in the effect chain of the voice. + No documentation. + HRESULT IXAudio2Voice::EnableEffect([None] UINT32 EffectIndex,[None] UINT32 OperationSet) + + + + Disables the effect at a given position in the effect chain of the voice. + + [in] Zero-based index of an effect in the effect chain of the voice. + No documentation. + HRESULT IXAudio2Voice::DisableEffect([None] UINT32 EffectIndex,[None] UINT32 OperationSet) + + + + Sets parameters for a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + Returns the current values of the effect-specific parameters. + HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet) + + + + Returns the current effect-specific parameters of a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + [out] Returns the current values of the effect-specific parameters. + No documentation. + HRESULT IXAudio2Voice::GetEffectParameters([None] UINT32 EffectIndex,[Out, Buffer] void* pParameters,[None] UINT32 ParametersByteSize) + + + + Sets parameters for a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + [in] Returns the current values of the effect-specific parameters. + No documentation. + HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet) + + + + Sets parameters for a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + [in] Returns the current values of the effect-specific parameters. + [in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. + No documentation. + HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet) + + + + Sets parameters for a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + [in] Returns the current values of the effect-specific parameters. + No documentation. + HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet) + + + + Sets parameters for a given effect in the voice's effect chain. + + [in] Zero-based index of an effect within the voice's effect chain. + [in] Returns the current values of the effect-specific parameters. + [in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. + No documentation. + HRESULT IXAudio2Voice::SetEffectParameters([None] UINT32 EffectIndex,[In, Buffer] const void* pParameters,[None] UINT32 ParametersByteSize,[None] UINT32 OperationSet) + + + + Replaces the effect chain of the voice. + + [in, optional] an array of structure that describes the new effect chain to use. If NULL is passed, the current effect chain is removed. If array is non null, its length must be at least of 1. + No documentation. + HRESULT IXAudio2Voice::SetEffectChain([In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Designates a new set of submix or mastering voices to receive the output of the voice. + + [in] Array of structure pointers to destination voices. If outputVoices is NULL, the voice will send its output to the current mastering voice. To set the voice to not send its output anywhere set an array of lenvth 0. All of the voices in a send list must have the same input sample rate, see {{XAudio2 Sample Rate Conversions}} for additional information. + No documentation. + HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList) + + + + Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + + [in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. + [in] Confirms the input channel count of the destination voice. + [in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. + No documentation. + HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet) + + + + Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + + [in] Pointer to a destination for which to set volume levels. Note If the voice sends to a single target voice then specifying NULL will cause SetOutputMatrix to operate on that target voice. + [in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. + [in] Confirms the input channel count of the destination voice. + [in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. + No documentation. + HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet) + + + + Sets the volume level of each channel of the final output for the voice. These channels are mapped to the input channels of a specified destination voice. + + [in] Confirms the output channel count of the voice. This is the number of channels that are produced by the last effect in the chain. + [in] Confirms the input channel count of the destination voice. + [in] Array of [SourceChannels ? DestinationChannels] volume levels sent to the destination voice. The level sent from source channel S to destination channel D is specified in the form pLevelMatrix[SourceChannels ? D + S]. For example, when rendering two-channel stereo input into 5.1 output that is weighted toward the front channels?but is absent from the center and low-frequency channels?the matrix might have the values shown in the following table. OutputLeft InputRight Input Left1.00.0 Right0.01.0 Front Center0.00.0 LFE0.00.0 Rear Left0.80.0 Rear Right0.00.8 Note that the left and right input are fully mapped to the output left and right channels; 80 percent of the left and right input is mapped to the rear left and right channels. See Remarks for more information on volume levels. + [in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. + No documentation. + HRESULT IXAudio2Voice::SetOutputMatrix([In, Optional] IXAudio2Voice* pDestinationVoice,[None] UINT32 SourceChannels,[None] UINT32 DestinationChannels,[In, Buffer] const float* pLevelMatrix,[None] UINT32 OperationSet) + + + + Returns information about the creation flags, input channels, and sample rate of a voice. + + + ee418591 + GetVoiceDetails + GetVoiceDetails + void IXAudio2Voice::GetVoiceDetails([Out] XAUDIO2_VOICE_DETAILS* pVoiceDetails) + + + + Designates a new set of submix or mastering voices to receive the output of the voice. + + +

    This method is only valid for source and submix voices. Mastering voices can not send audio to another voice.

    After calling SetOutputVoices a voice's current send levels will be replaced by a default send matrix. The method must be called to set a custom matrix for the new sendlist.

    It is illegal to call SetOutputVoices from within a callback. If SetOutputVoices is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    Note
    Calling SetOutputVoices invalidates any send matrices previously set with .
    +
    + + ee418599 + SetOutputVoices + SetOutputVoices + HRESULT IXAudio2Voice::SetOutputVoices([In, Optional] const XAUDIO2_VOICE_SENDS* pSendList) +
    + + + Gets the voice's filter parameters. + + +

    GetFilterParameters will fail if the voice was not created with the flag.

    GetFilterParameters always returns this voice's actual current filter parameters. However, these may not match the parameters set by the most recent call: the actual parameters are only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).

    Note
    GetFilterParameters is usable only on source and submix voices and has no effect on mastering voices.
    +
    + + ee418588 + GetFilterParameters + GetFilterParameters + void IXAudio2Voice::GetFilterParameters([Out] XAUDIO2_FILTER_PARAMETERS* pParameters) +
    + + + Gets the current overall volume level of the voice. + + +

    Volume levels are expressed as floating-point amplitude multipliers between -224 to 224, with a maximum gain of 144.5 dB. A volume level of 1 means there is no attenuation or gain and 0 means silence. Negative levels can be used to invert the audio's phase. See XAudio2 Volume and Pitch Control for additional information on volume control.

    Note
    GetVolume always returns the volume most recently set by . However, it may not actually be in effect yet: it only takes effect the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + microsoft.directx_sdk.ixaudio2voice.ixaudio2voice.getvolume + GetVolume + GetVolume + void IXAudio2Voice::GetVolume([Out] float* pVolume) +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + No documentation. + + No documentation. + No documentation. + + HRESULT IXAudio2MasteringVoice::GetChannelMask([Out] unsigned int* pChannelmask) + IXAudio2MasteringVoice::GetChannelMask + + + + Creates and configures a mastering voice. + + an instance of + [in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. + [in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver). Xbox 360 Defaults to 48000. + [in] Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device. + HRESULT IXAudio2::CreateMasteringVoice([Out] IXAudio2MasteringVoice** ppMasteringVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + No documentation. + + + GetChannelMask + GetChannelMask + HRESULT IXAudio2MasteringVoice::GetChannelMask([Out] unsigned int* pChannelmask) + + + + Use a source voice to submit audio data to the XAudio2 processing pipeline. You must send voice data to a mastering voice to be heard, either directly or through intermediate submix voices.

    inherits directly from . It implements its own methods.

    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice + IXAudio2SourceVoice + IXAudio2SourceVoice +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device. + +
    [in] Flags that control how the voice is started. Must be 0.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    If the XAudio2 engine is stopped, the voice stops running. However, it remains in the started state, so that it starts running again as soon as the engine starts.

    When first created, source voices are in the stopped state. Submix and mastering voices are in the started state.

    After Start is called it has no further effect if called again before is called. In addition multiple calls to Start without matching calls to will result in warning messages in debug builds.

    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.start + HRESULT IXAudio2SourceVoice::Start([In] unsigned int Flags,[In] unsigned int OperationSet) + IXAudio2SourceVoice::Start +
    + + + Stops consumption of audio by the current voice. + +
    [in] Flags that control how the voice is stopped. Can be 0 or the following:
    ValueDescription
    Continue emitting effect output after the voice is stopped.?
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    All source buffers that are queued on the voice and the current cursor position are preserved. This allows the voice to continue from where it left off, when it is restarted. The method can be used to flush queued source buffers.

    By default, any pending output from voice effects?for example, reverb tails?is not played. Instead, the voice is immediately rendered silent. The flag can be used to continue emitting effect output after the voice stops running.

    A voice stopped with the flag stops consuming source buffers, but continues to process its effects and send audio to its destination voices. A voice in this state can later be stopped completely by calling Stop again with the Flags argument set to 0. This enables stopping a voice with , waiting sufficient time for any audio being produced by its effects to finish, and then fully stopping the voice by calling Stop again without . This technique allows voices with effects to be stopped gracefully while ensuring idle voices will not continue to be processed after they have finished producing audio.

    Stop is always asynchronous, even if called within a callback.

    Note
    XAudio2 never calls any voice callbacks for a voice if the voice is stopped (even if it was stopped with ).
    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.stop + HRESULT IXAudio2SourceVoice::Stop([In] XAUDIO2_PLAY_FLAGS Flags,[In] unsigned int OperationSet) + IXAudio2SourceVoice::Stop +
    + + + Adds a new audio buffer to the voice queue. + +
    [in] Pointer to an structure to queue.
    +
    [in] Pointer to an additional structure used when submitting WMA data.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    The voice processes and plays back the buffers in its queue in the order that they were submitted.

    The structure includes details about the audio buffer's location and size, the part of the buffer that should actually be played, the loop region (if any) and loop count, the context reference to be used in any callbacks relating to this buffer, and an optional flag that indicates that it is the last buffer of a contiguous sound.

    If the voice is started and has no buffers queued, the new buffer will start playing immediately. If the voice is stopped, the buffer is added to the voice's queue and will be played when the voice starts.

    If only part of the given buffer should be played, the PlayBegin and PlayLength fields in the can be used to specify the region to be played. A PlayLength value of 0 means to play the entire buffer (and in this case PlayBegin must be 0 as well).

    If all or part of the buffer should be played in a continuous loop, the LoopBegin, LoopLength and LoopCount fields in can be used to specify the characteristics of the loop region. A LoopBegin value of means that no looping should be performed, and in this case LoopLength and LoopCount must be given as 0. If a loop region is specified, it must be non-empty (LoopLength > 0), and the loop count must be between 1 and inclusive (or to specify an endless loop which will only end when is called). A loop count of N means to skip backwards N times, i.e. to play the loop region N+1 times.

    If an explicit play region is specified, it must begin and end within the given audio buffer (or, in the compressed case, within the set of samples that the buffer will decode to). In addition, the loop region cannot end past the end of the play region.

    Xbox 360

    For certain audio formats, there may be additional restrictions on the valid endpoints of any play or loop regions; e.g. for XMA buffers, the regions can only begin or end at 128-sample boundaries in the decoded audio.

    The pBuffer reference can be reused or freed immediately after calling this method, but the actual audio data referenced by pBuffer must remain valid until the buffer has been fully consumed by XAudio2 (which is indicated by the callback).

    Up to buffers can be queued on a voice at any one time.

    SubmitSourceBuffer takes effect immediately when called from an XAudio2 callback with an OperationSet of .

    Xbox 360

    This method can be called from an Xbox system thread (most other XAudio2 methods cannot). However, a maximum of two source buffers can be submitted from a system thread at a time.

    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.submitsourcebuffer + HRESULT IXAudio2SourceVoice::SubmitSourceBuffer([In] const XAUDIO2_BUFFER* pBuffer,[In] const void* pBufferWMA) + IXAudio2SourceVoice::SubmitSourceBuffer +
    + + + Removes all pending audio buffers from the voice queue. + + Returns if successful, an error code otherwise. + +

    If the voice is started, the buffer that is currently playing is not removed from the queue.

    FlushSourceBuffers can be called regardless of whether the voice is currently started or stopped.

    For every buffer removed, an OnBufferEnd callback will be made, but none of the other per-buffer callbacks (OnBufferStart, OnStreamEnd or OnLoopEnd) will be made.

    FlushSourceBuffers does not change a the voice's running state, so if the voice was playing a buffer prior to the call, it will continue to do so, and will deliver all the callbacks for the buffer normally. This means that the OnBufferEnd callback for this buffer will take place after the OnBufferEnd callbacks for the buffers that were removed. Thus, an XAudio2 client that calls FlushSourceBuffers cannot expect to receive OnBufferEnd callbacks in the order in which the buffers were submitted.

    No warnings for starvation of the buffer queue will be emitted when the currently playing buffer completes; it is assumed that the client has intentionally removed the buffers that followed it. However, there may be an audio pop if this buffer does not end at a zero crossing. If the application must ensure that the flush operation takes place while a specific buffer is playing?perhaps because the buffer ends with a zero crossing?it must call FlushSourceBuffers from a callback, so that it executes synchronously.

    Calling FlushSourceBuffers after a voice is stopped and then submitting new data to the voice resets all of the voice's internal counters.

    A voice's state is not considered reset after calling FlushSourceBuffers until the OnBufferEnd callback occurs (if a buffer was previously submitted) or returns with .BuffersQueued == 0. For example, if you stop a voice and call FlushSourceBuffers, it's still not legal to immediately call (which requires the voice to not have any buffers currently queued), until either of the previously mentioned conditions are met. +

    +
    + + ee418466 + HRESULT IXAudio2SourceVoice::FlushSourceBuffers() + IXAudio2SourceVoice::FlushSourceBuffers +
    + + + Notifies an XAudio2 voice that no more buffers are coming after the last one that is currently in its queue. + + Returns if successful, an error code otherwise. + +

    Discontinuity suppresses the warnings that normally occur in the debug build of XAudio2 when a voice runs out of audio buffers to play. It is preferable to mark the final buffer of a stream by tagging it with the flag, but in some cases the client may not know that a buffer is the end of a stream until after the buffer has been submitted.

    Because calling Discontinuity is equivalent to applying the flag retroactively to the last buffer submitted, an OnStreamEnd callback will be made when this buffer completes.

    Note
    XAudio2 may consume its entire buffer queue and emit a warning before the Discontinuity call takes effect, so Discontinuity is not guaranteed to suppress the warnings.
    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.discontinuity + HRESULT IXAudio2SourceVoice::Discontinuity() + IXAudio2SourceVoice::Discontinuity +
    + + + Stops looping the voice when it reaches the end of the current loop region. + +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    If the cursor for the voice is not in a loop region, ExitLoop does nothing.

    +
    + + ee418465 + HRESULT IXAudio2SourceVoice::ExitLoop([In] unsigned int OperationSet) + IXAudio2SourceVoice::ExitLoop +
    + + +

    Returns the voice's current cursor position data.

    +
    + No documentation. + +

    If a client needs to obtain the correlated positions of several voices (i.e. to know exactly which sample of a given voice is playing when a given sample of another voice is playing) it must make GetState calls in an XAudio2 engine callback, to ensure that none of the voices advance while the calls are being made. See the XAudio2 Callbacks overview for information about using XAudio2 callbacks.

    +
    + + microsoft.directx_sdk.ixaudio2sourcevoice.ixaudio2sourcevoice.getstate + void IXAudio2SourceVoice::GetState([Out] XAUDIO2_VOICE_STATE* pVoiceState,[In] unsigned int Flags) + IXAudio2SourceVoice::GetState +
    + + + Sets the frequency adjustment ratio of the voice. + +
    [in] Frequency adjustment ratio. This value must be between and the MaxFrequencyRatio parameter specified when the voice was created (see ). currently is 0.0005, which allows pitch to be lowered by up to 11 octaves.
    +
    [in] Identifies this call as part of a deferred batch. See the XAudio2 Operation Sets overview for more information.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    Frequency adjustment is expressed as source frequency / target frequency. Changing the frequency ratio changes the rate audio is played on the voice. A ratio greater than 1.0 will cause the audio to play faster and a ratio less than 1.0 will cause the audio to play slower. Additionally, the frequency ratio affects the pitch of audio on the voice. As an example, a value of 1.0 has no effect on the audio, whereas a value of 2.0 raises pitch by one octave and 0.5 lowers it by one octave.

    If SetFrequencyRatio is called specifying a Ratio value outside the valid range, the method will set the frequency ratio to the nearest valid value. A warning also will be generated for debug builds.

    Note
    always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent call: the actual ratio is only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).
    +
    + + ee418469 + HRESULT IXAudio2SourceVoice::SetFrequencyRatio([In] float Ratio,[In] unsigned int OperationSet) + IXAudio2SourceVoice::SetFrequencyRatio +
    + + + Returns the frequency adjustment ratio of the voice. + +
    [out] Returns the current frequency adjustment ratio if successful.
    + +

    GetFrequencyRatio always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent call: the actual ratio is only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).

    For information on frequency ratios, see .

    +
    + + ee418467 + void IXAudio2SourceVoice::GetFrequencyRatio([Out] float* pRatio) + IXAudio2SourceVoice::GetFrequencyRatio +
    + + + Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created. + +
    [in] The new sample rate the voice should process submitted data at. Valid sample rates are 1kHz to 200kHz.
    +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of error codes.

    + +

    The SetSourceSampleRate method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use SetSourceSampleRate the voice must have been created without the or flags and must not have any buffers currently queued.

    The typical use of SetSourceSampleRate is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls SetSourceSampleRate on the voice with the new sound's sample rate. After SetSourceSampleRate has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.

    +
    + + ee418470 + HRESULT IXAudio2SourceVoice::SetSourceSampleRate([In] unsigned int NewSourceSampleRate) + IXAudio2SourceVoice::SetSourceSampleRate +
    + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + True to enable delegate callbacks on this instance. Default is false + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? + True to enable delegate callbacks on this instance. Default is false + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? + [in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? + [in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. + [in, optional] Pointer to a client-provided callback interface, . + No documentation. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a source voice with callback through delegates. + + an instance of + [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice. XAudio2 supports voice types of PCM, xWMA, ADPCM (Windows only), and XMA (Xbox 360 only). XAudio2 supports the following PCM formats. 8-bit (unsigned) integer PCM 16-bit integer PCM (Optimal format for XAudio2) 20-bit integer PCM (either in 24 or 32 bit containers) 24-bit integer PCM (either in 24 or 32 bit containers) 32-bit integer PCM 32-bit float PCM (Preferred format after 16-bit integer) The number of channels in a source voice must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. The sample rate of a source voice must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. Note Data formats such as XMA, {{ADPCM}}, and {{xWMA}} that require more information than provided by have a structure as the first member in their format structure. When creating a source voice with one of those formats cast the format's structure as a structure and use it as the value for pSourceFormat. + [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following: ValueDescriptionXAUDIO2_VOICE_NOPITCHNo pitch control is available on the voice.?XAUDIO2_VOICE_NOSRCNo sample rate conversion is available on the voice, the voice's outputs must have the same sample rate.Note The XAUDIO2_VOICE_NOSRC flag causes the voice to behave as though the XAUDIO2_VOICE_NOPITCH flag also is specified. ?XAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.?XAUDIO2_VOICE_MUSICThe voice is used to play background music. The system automatically can replace the voice with music selected by the user.? + [in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between XAUDIO2_MIN_FREQ_RATIO and XAUDIO2_MAX_FREQ_RATIO. Subsequent calls to are clamped between XAUDIO2_MIN_FREQ_RATIO and MaxFrequencyRatio. The maximum value for this argument is defined as XAUDIO2_MAX_FREQ_RATIO, which allows pitch to be raised by up to 10 octaves. If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0). Xbox 360 For XMA voices there is an additional restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message. Note XAudio2's memory usage can be reduced by using the lowest possible MaxFrequencyRatio value. + True to enable delegate callbacks on this instance. Default is false + No enableCallbackEvents. + HRESULT IXAudio2::CreateSourceVoice([Out] IXAudio2SourceVoice** ppSourceVoice,[In] const WAVEFORMATEX* pSourceFormat,[None] UINT32 Flags,[None] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device, with CommitNow changes. + + No documentation. + HRESULT IXAudio2SourceVoice::Start([None] UINT32 Flags,[None] UINT32 OperationSet) + + + + Sets the frequency ratio. + + The ratio. + + + + + Starts consumption and processing of audio by the voice. Delivers the result to any connected submix or mastering voices, or to the output device. + + [in] Identifies this call as part of a deferred batch. See the {{XAudio2 Operation Sets}} overview for more information. + No documentation. + HRESULT IXAudio2SourceVoice::Start([None] UINT32 Flags,[None] UINT32 OperationSet) + + + + No documentation. + + No documentation. + No documentation. + No documentation. + + HRESULT IXAudio2SourceVoice::SubmitSourceBuffer([In] const XAUDIO2_BUFFER* pBuffer,[In, Optional] const XAUDIO2_BUFFER_WMA* pBufferWMA) + + + + Returns the frequency adjustment ratio of the voice. + + +

    GetFrequencyRatio always returns the voice's actual current frequency ratio. However, this may not match the ratio set by the most recent call: the actual ratio is only changed the next time the audio engine runs after the call (or after the corresponding call, if was called with a deferred operation ID).

    For information on frequency ratios, see .

    +
    + + ee418467 + GetFrequencyRatio + GetFrequencyRatio + void IXAudio2SourceVoice::GetFrequencyRatio([Out] float* pRatio) +
    + + + Reconfigures the voice to consume source data at a different sample rate than the rate specified when the voice was created. + + +

    The SetSourceSampleRate method supports reuse of XAudio2 voices by allowing a voice to play sounds with a variety of sample rates. To use SetSourceSampleRate the voice must have been created without the or flags and must not have any buffers currently queued.

    The typical use of SetSourceSampleRate is to support voice pooling. For example to support voice pooling an application would precreate all the voices it expects to use. Whenever a new sound will be played the application chooses an inactive voice or ,if all voices are busy, picks the least important voice and calls SetSourceSampleRate on the voice with the new sound's sample rate. After SetSourceSampleRate has been called on the voice, the application can immediately start submitting and playing buffers with the new sample rate. This allows the application to avoid the overhead of creating and destroying voices frequently during gameplay.

    +
    + + ee418470 + SetSourceSampleRate + SetSourceSampleRate + HRESULT IXAudio2SourceVoice::SetSourceSampleRate([In] unsigned int NewSourceSampleRate) +
    + + + Gets the state. + + + + + Occurs just before the processing pass for the voice begins. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs just after the processing pass for the voice ends. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs when the voice has just finished playing a contiguous audio stream. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs when the voice is about to start processing a new audio buffer. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs when the voice finishes processing a buffer. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs when a critical error occurs during voice processing. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Occurs when [voice error]. + + + In order to use this delegate, this instance must have been intialized with events delegate support. + + + + + Theinterface contains methods that notify the client when certain events happen in a givenIXAudio2SourceVoice. This interface should be implemented by the XAudio2 client. XAudio2 calls these methods through an interface reference provided by the client in theIXAudio2::CreateSourceVoicemethod. Methods in this interface returnvoid, rather than an .

    See the XAudio2 Callbacks topic for restrictions on callback implementation.

    +
    + + microsoft.directx_sdk.ixaudio2voicecallback.ixaudio2voicecallback + IXAudio2VoiceCallback + IXAudio2VoiceCallback +
    + + + Called during each processing pass for each voice, just before XAudio2 reads data from the voice's buffer queue. + + The number of bytes that must be submitted immediately to avoid starvation. This allows the implementation of just-in-time streaming scenarios; the client can keep the absolute minimum data queued on the voice at all times, and pass it fresh data just before the data is required. This model provides the lowest possible latency attainable with XAudio2. For xWMA and XMA data BytesRequired will always be zero, since the concept of a frame of xWMA or XMA data is meaningless. Note In a situation where there is always plenty of data available on the source voice, BytesRequired should always report zero, because it doesn't need any samples immediately to avoid glitching. + void IXAudio2VoiceCallback::OnVoiceProcessingPassStart([None] UINT32 BytesRequired) + + + + Called just after the processing pass for the voice ends. + + void IXAudio2VoiceCallback::OnVoiceProcessingPassEnd() + + + + Called when the voice has just finished playing a contiguous audio stream. + + void IXAudio2VoiceCallback::OnStreamEnd() + + + + Called when the voice is about to start processing a new audio buffer. + + Context pointer that was assigned to the pContext member of the structure when the buffer was submitted. + void IXAudio2VoiceCallback::OnBufferStart([None] void* pBufferContext) + + + + Called when the voice finishes processing a buffer. + + Context pointer assigned to the pContext member of the structure when the buffer was submitted. + void IXAudio2VoiceCallback::OnBufferEnd([None] void* pBufferContext) + + + + Called when the voice reaches the end position of a loop. + + Context pointer that was assigned to the pContext member of the structure when the buffer was submitted. + void IXAudio2VoiceCallback::OnLoopEnd([None] void* pBufferContext) + + + + Called when a critical error occurs during voice processing. + + Context pointer that was assigned to the pContext member of the structure when the buffer was submitted. + The HRESULT code of the error encountered. + void IXAudio2VoiceCallback::OnVoiceError([None] void* pBufferContext,[None] HRESULT Error) + + + + A submix voice is used primarily for performance improvements and effects processing. Data buffers cannot be submitted directly to submix voices and will not be audible unless submitted to a mastering voice. A submix voice can be used to ensure that a particular set of voice data is converted to the same format and/or to have a particular effect chain processed on the collective result.

    inherits directly from , but does not implement methods specific to submix voices. The interface type exists solely because some of the base class methods are implemented differently for submix voices. Having a separate type for these voices helps client code to distinguish the different voice types and to benefit from C++ type safety.

    +
    + + microsoft.directx_sdk.ixaudio2submixvoice.ixaudio2submixvoice + IXAudio2SubmixVoice + IXAudio2SubmixVoice +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Creates and configures a mastering voice on the default audio device, with stereo channels at 44100Hz. + + an instance of + HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a mastering voice on the default audio device and 44100Hz. + + an instance of + [in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. + HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a mastering voice on the default audio device. + + an instance of + [in] Number of channels the mastering voice expects in its input audio. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. InputChannels can be set to XAUDIO2_DEFAULT_CHANNELS, with the default being determined by the current platform. Windows Attempts to detect the system speaker configuration setup. Xbox 360 Defaults to 5.1 surround. + [in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. InputSampleRate can be set to XAUDIO2_DEFAULT_SAMPLERATE, with the default being determined by the current platform. Windows Windows XP defaults to 44100. Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver). Xbox 360 Defaults to 48000. + HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 DeviceIndex,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + Creates and configures a submix voice. + + an instance of + [in] Number of channels in the input audio data of the submix voice. InputChannels must be less than or equal to XAUDIO2_MAX_AUDIO_CHANNELS. + [in] Sample rate of the input audio data of submix voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between XAUDIO2_MIN_SAMPLE_RATE and XAUDIO2_MAX_SAMPLE_RATE. + [in] Flags that specify the behavior of the submix voice. Can be 0 or the following: ValueDescriptionXAUDIO2_VOICE_USEFILTERThe filter effect should be available on this voice.? + [in] An arbitrary number that specifies when this voice is processed with respect to other submix voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other voices that include a smaller ProcessingStage value, and before all other voices that include a larger ProcessingStage value. Voices that include the same ProcessingStage value are processed in any order. A submix voice cannot send to another submix voice with a lower or equal ProcessingStage value; this prevents audio being lost due to a submix cycle. + No documentation. + HRESULT IXAudio2::CreateSubmixVoice([Out] IXAudio2SubmixVoice** ppSubmixVoice,[None] UINT32 InputChannels,[None] UINT32 InputSampleRate,[None] UINT32 Flags,[None] UINT32 ProcessingStage,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + + + + is the interface for theXAudio2object that manages all audio engine states, the audio processing thread, the voice graph, and so forth. This is the only XAudio2 interface that is derived from the COMinterface. It controls the lifetime of theXAudio2object using two methods derived from:IXAudio2::AddRefandIXAudio2::Release. No other XAudio2 objects are reference-counted. Their lifetimes are explicitly controlled usingcreateanddestroycalls, and are bounded by the lifetime of the XAudio2 object that owns them. + + + microsoft.directx_sdk.ixaudio2.ixaudio2 + IXAudio2 + IXAudio2 + + + Constant MaximumBufferBytes. + XAUDIO2_MAX_BUFFER_BYTES + + + Constant MaximumQueuedBuffers. + XAUDIO2_MAX_QUEUED_BUFFERS + + + Constant MaximumAudioChannels. + XAUDIO2_MAX_AUDIO_CHANNELS + + + Constant MinimumSampleRate. + XAUDIO2_MIN_SAMPLE_RATE + + + Constant MaximumSampleRate. + XAUDIO2_MAX_SAMPLE_RATE + + + Constant MaximumVolumeLevel. + XAUDIO2_MAX_VOLUME_LEVEL + + + Constant MinimumFrequencyRatio. + XAUDIO2_MIN_FREQ_RATIO + + + Constant MaximumFrequencyRatio. + XAUDIO2_MAX_FREQ_RATIO + + + Constant DefaultFrequencyRatio. + XAUDIO2_DEFAULT_FREQ_RATIO + + + Constant MaximumFilterOneOverQ. + XAUDIO2_MAX_FILTER_ONEOVERQ + + + Constant MaximumFilterFrequency. + XAUDIO2_MAX_FILTER_FREQUENCY + + + Constant MaximumLoopCount. + XAUDIO2_MAX_LOOP_COUNT + + + Constant CommitNow. + XAUDIO2_COMMIT_NOW + + + Constant CommitAll. + XAUDIO2_COMMIT_ALL + + + Constant NoLoopRegion. + XAUDIO2_NO_LOOP_REGION + + + Constant DefaultChannels. + XAUDIO2_DEFAULT_CHANNELS + + + Constant DefaultSampleRate. + XAUDIO2_DEFAULT_SAMPLERATE + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Adds anIXAudio2EngineCallbackreference to theXAudio2engine callback list. + + No documentation. +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    This method can be called multiple times, allowing different components or layers of the same application to manage their own engine callback implementations separately.

    It is illegal to call RegisterForCallbacks from within a callback. If RegisterForCallbacks is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + ee418620 + HRESULT IXAudio2::RegisterForCallbacks([In] IXAudio2EngineCallback* pCallback) + IXAudio2::RegisterForCallbacks +
    + + + Removes anIXAudio2EngineCallbackreference from theXAudio2engine callback list. + + No documentation. + +

    It is illegal to call UnregisterForCallbacks from within a callback. If UnregisterForCallbacks is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + ee418630 + void IXAudio2::UnregisterForCallbacks([In] IXAudio2EngineCallback* pCallback) + IXAudio2::UnregisterForCallbacks +
    + + + Creates and configures a source voice. + +
    [out] If successful, returns a reference to the new object.
    +
    [in] Pointer to a structure. This structure contains the expected format for all audio buffers submitted to the source voice.

    XAudio2 supports PCM and ADPCM voice types. XAudio2 supports the following PCM formats.

    • 8-bit (unsigned) integer PCM

    • 16-bit integer PCM (optimal format for XAudio2)

    • 20-bit integer PCM (either in 24 or 32 bit containers)

    • 24-bit integer PCM (either in 24 or 32 bit containers)

    • 32-bit integer PCM

    • 32-bit float PCM (preferred format after 16-bit integer)

    The number of channels in a source voice must be less than or equal to . The sample rate of a source voice must be between and .

    Note
    Data formats such as ADPCM that require more information than provided by have a structure as the first member in their format structures. When you create a source voice with one of those formats, cast the format's structure as a structure and use it as the value for pSourceFormat.
    +
    [in] Flags that specify the behavior of the source voice. A flag can be 0 or a combination of one or more of the following:
    ValueDescription
    No pitch control is available on the voice.?
    No sample rate conversion is available on the voice. The voice's outputs must have the same sample rate. Note The flag causes the voice to behave as though the flag also is specified. ?
    The filter effect should be available on this voice.?
    +
    [in] Highest allowable frequency ratio that can be set on this voice. The value for this argument must be between and . Subsequent calls to are clamped between and MaxFrequencyRatio.

    The maximum value for this argument is defined as , which allows pitch to be raised by up to 10 octaves.

    If MaxFrequencyRatio is less than 1.0, the voice will use that ratio immediately after being created (rather than the default of 1.0).

    Xbox 360

    For XMA voices, there is one more restriction on the MaxFrequencyRatio argument and the voice's sample rate. The product of these two numbers cannot exceed XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MONO for one-channel voices or XAUDIO2_MAX_RATIO_TIMES_RATE_XMA_MULTICHANNEL for voices with any other number of channels. If the value specified for MaxFrequencyRatio is too high for the specified format, the call to CreateSourceVoice fails and produces a debug message.

    Note
    You can use the lowest possible MaxFrequencyRatio value to reduce XAudio2's memory usage.
    +
    [in, optional] Pointer to a client-provided callback interface, .
    +
    [in, optional] Pointer to a list of structures that describe the set of destination voices for the source voice. If pSendList is null, the send list defaults to a single output to the first mastering voice created.
    +
    [in, optional] Pointer to a list of structures that describe an effect chain to use in the source voice.
    +

    Returns if successful; otherwise, an error code.

    See XAudio2 Error Codes for descriptions of XAudio2-specific error codes.

    + +

    Source voices read audio data from the client. They process the data and send it to the XAudio2 processing graph.

    A source voice includes a variable-rate sample rate conversion, to convert data from the source format sample rate to the output rate required for the voice send list. If you use a null send list, the target sample rate will be the mastering voice's input sample rate. If you provide a single voice in pSendList, that voice's input sample rate is the target rate. If you provide multiple voices in the pSendList, all the source voice's output voices must be running at the same input sample rate.

    You cannot create any source or submix voices until a mastering voice exists, and you cannot destory a mastering voice if any source or submix voices still exist.

    Source voices are always processed before any submix or mastering voices. This means that you do not need a ProcessingStage parameter to control the processing order.

    When first created, source voices are in the stopped state.

    XAudio2 uses an internal memory pooler for voices with the same format. This means memory allocation for voices will occur less frequently as more voices are created and then destroyed. To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied to an XAudio2 engine instance. You can reclaim all the memory used by an instance of the XAudio2 engine by destroying the XAudio2 object and recreating it as necessary (forcing the memory pool to grow via preallocation would have to be reapplied as needed).

    It is illegal to call CreateSourceVoice from within a callback. If you call CreateSourceVoice within a callback, XAUDIO2_E_INVALID_CALL is returned.

    The that is passed in as the pEffectChain argument and any information contained within it are no longer needed after CreateSourceVoice successfully completes, and may be deleted immediately after CreateSourceVoice is called.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.createsourcevoice + HRESULT IXAudio2::CreateSourceVoice([Out, Fast] IXAudio2SourceVoice** ppSourceVoice,[In] const void* pSourceFormat,[In] XAUDIO2_VOICE_FLAGS Flags,[In] float MaxFrequencyRatio,[In, Optional] IXAudio2VoiceCallback* pCallback,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + IXAudio2::CreateSourceVoice +
    + + + Creates and configures a submix voice. + +
    [out] On success, returns a reference to the new object.
    +
    [in] Number of channels in the input audio data of the submix voice.

    InputChannels must be less than or equal to .

    +
    [in] Sample rate of the input audio data of submix voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR. InputSampleRate must be between and .
    +
    [in] Flags that specify the behavior of the submix voice. It can be 0 or the following:
    ValueDescription
    The filter effect should be available on this voice.?
    +
    [in] An arbitrary number that specifies when this voice is processed with respect to other submix voices, if the XAudio2 engine is running other submix voices. The voice is processed after all other voices that include a smaller ProcessingStage value and before all other voices that include a larger ProcessingStage value. Voices that include the same ProcessingStage value are processed in any order. A submix voice cannot send to another submix voice with a lower or equal ProcessingStage value. This prevents audio being lost due to a submix cycle.
    +
    [in, optional] Pointer to a list of structures that describe the set of destination voices for the submix voice. If pSendList is null, the send list will default to a single output to the first mastering voice created.
    +
    [in, optional] Pointer to a list of structures that describe an effect chain to use in the submix voice.
    +

    Returns if successful; otherwise, an error code.

    See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    Submix voices receive the output of one or more source or submix voices. They process the output, and then send it to another submix voice or to a mastering voice.

    A submix voice performs a sample rate conversion from the input sample rate to the input rate of its output voices in pSendList. If you specify multiple voice sends, they must all have the input same sample rate.

    You cannot create any source or submix voices until a mastering voice exists, and you cannot destroy a mastering voice if any source or submix voices still exist.

    When first created, submix voices are in the started state.

    XAudio2 uses an internal memory pooler for voices with the same format. This means that memory allocation for voices will occur less frequently as more voices are created and then destroyed. To minimize just-in-time allocations, a title can create the anticipated maximum number of voices needed up front, and then delete them as necessary. Voices will then be reused from the XAudio2 pool. The memory pool is tied to an XAudio2 engine instance. You can reclaim all the memory used by an instance of the XAudio2 engine by destroying the XAudio2 object and recreating it as necessary (forcing the memory pool to grow via preallocation would have to be reapplied as needed).

    It is illegal to call CreateSubmixVoice from within a callback. If you call CreateSubmixVoice within a callback, XAUDIO2_E_INVALID_CALL is returned.

    The that is passed in as the pEffectChain argument and any information contained within it are no longer needed after CreateSubmixVoice successfully completes, and may be deleted immediately after CreateSubmixVoice is called.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.createsubmixvoice + HRESULT IXAudio2::CreateSubmixVoice([Out, Fast] IXAudio2SubmixVoice** ppSubmixVoice,[In] unsigned int InputChannels,[In] unsigned int InputSampleRate,[In] XAUDIO2_VOICE_SEND_FLAGS Flags,[In] unsigned int ProcessingStage,[In, Optional] const XAUDIO2_VOICE_SENDS* pSendList,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain) + IXAudio2::CreateSubmixVoice +
    + + +

    Creates and configures a mastering voice.

    +
    +
    [out] If successful, returns a reference to the new object.
    +
    [in] Number of channels the mastering voice expects in its input audio.

    InputChannels must be less than or equal to .

    InputChannels can be set to , with the default being determined by the current platform.

    Windows

    Attempts to detect the system speaker configuration setup.

    Xbox 360

    Defaults to 5.1 surround.

    +
    [in] Sample rate of the input audio data of the mastering voice. This rate must be a multiple of XAUDIO2_QUANTUM_DENOMINATOR.

    InputSampleRate must be between and .

    InputSampleRate can be set to , with the default being determined by the current platform.

    Windows

    Windows XP defaults to 44100.

    Windows Vista and Windows 7 default to the setting specified in the Sound Control Panel. The default for this setting is 44100 (or 48000 if required by the driver).

    Xbox 360

    Defaults to 48000.

    +
    [in] Flags that specify the behavior of the mastering voice. Must be 0.
    +
    [in] Index of the output device that will be sent input by the mastering voice. Specifying the default value of 0 causes XAudio2 to select the global default audio device.
    +
    [in, optional] Pointer to an structure that describe an effect chain to use in the mastering voice, or null to use no effects.
    + No documentation. +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    Mastering voices receive the output of one or more source or submix voices. They process the data and send it to the audio output device.

    Typically, a mastering voice should be created with an input sample rate that will be used by the majority of the title's audio content. The mastering voice performs a sample rate conversion from this input sample rate to the actual device output rate. Alternatively, IXAudio2::GetDeviceDetails can be used to find the native audio rate, and that can be used throughout the majority of the title's audio graph.

    No source or submix voices can be created until a mastering voice exists, and a mastering voice cannot be destroyed if any source or submix voices still exist.

    Mastering voices are always processed after all source and submix voices. This means that you need not specify a ProcessingStage parameter to control the processing order.

    Several mastering voices can exist at once, but only one of them can be started. Only one device can be used by XAudio2 at a time.

    When first created, mastering voices are in the started state.

    It is illegal to call CreateMasteringVoice from within a callback. If CreateMasteringVoice is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + ee418605 + HRESULT IXAudio2::CreateMasteringVoice([Out, Fast] IXAudio2MasteringVoice** ppMasteringVoice,[In] unsigned int InputChannels,[In] unsigned int InputSampleRate,[In] unsigned int Flags,[In, Optional] const wchar_t* szDeviceId,[In, Optional] const XAUDIO2_EFFECT_CHAIN* pEffectChain,[In] AUDIO_STREAM_CATEGORY StreamCategory) + IXAudio2::CreateMasteringVoice +
    + + + Starts the audio processing thread. + +

    Returns if successful, an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    After StartEngine is called, all started voices begin to consume audio. All enabled effects start running, and the resulting audio is sent to any connected output devices. When XAudio2 is first initialized, the engine is already in the started state.

    It is illegal to call StartEngine from within a callback. If StartEngine is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + ee418626 + HRESULT IXAudio2::StartEngine() + IXAudio2::StartEngine +
    + + + Stops the audio processing thread. + + +

    When StopEngine is called, all output is stopped immediately. However, the audio graph is left untouched, preserving effect parameters, effect histories (for example, the data stored by a reverb effect in order to emit echoes of a previous sound), voice states, pending source buffers, cursor positions, and so forth. When the engine is restarted, the resulting audio output will be identical?apart from a period of silence?to the output that would have been produced if the engine had never been stopped.

    It is illegal to call StopEngine from within a callback. If StopEngine is called within a callback XAUDIO2_E_INVALID_CALL will be returned.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.stopengine + void IXAudio2::StopEngine() + IXAudio2::StopEngine +
    + + + Atomically applies a set of operations that are tagged with a given identifier. + +
    [in] Identifier of the set of operations to be applied. To commit all pending operations, pass .
    +

    Returns if successful; returns an error code otherwise. See XAudio2 Error Codes for descriptions of XAudio2 specific error codes.

    + +

    CommitChanges does nothing if no operations are tagged with the given identifier.

    See the XAudio2 Operation Sets overview about working with CommitChanges and XAudio2 interface methods that may be deferred.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.commitchanges + HRESULT IXAudio2::CommitChanges([In] unsigned int OperationSet) + IXAudio2::CommitChanges +
    + + + Returns current resource usage details, such as available memory or CPU usage. + +
    [out] On success, reference to an structure that is returned.
    + +

    For specific information on the statistics returned by GetPerformanceData, see the structure reference.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.getperformancedata + void IXAudio2::GetPerformanceData([Out] XAUDIO2_PERFORMANCE_DATA* pPerfData) + IXAudio2::GetPerformanceData +
    + + + Changes global debug logging options for XAudio2.
    Note
    This function has no effect in this version of XAudio2.
    +
    +
    Pointer to a structure that contains the new debug configuration.
    + No documentation. + +

    This function only has an effect in debug versions of the XAudio2 library. SetDebugConfiguration sets the debug configuration for all instances of XAudio2 in the current process, not just the one interface on which the call was made.

    The default debug level produces only ERROR and WARNING messages. See for other debug levels.

    +
    + + ee418624 + void IXAudio2::SetDebugConfiguration([In, Value] const XAUDIO2_DEBUG_CONFIGURATION* pDebugConfiguration,[In] void* pReserved) + IXAudio2::SetDebugConfiguration +
    + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Specify a Debug or Normal XAudio2 instance. + The processor specifier. + + + + Calculate a decibel from a volume. + + The volume. + a dB value + + + + Calculate radians from a cutoffs frequency. + + The cutoff frequency. + The sample rate. + radian + + + + Calculate a cutoff frequency from a radian. + + The radians. + The sample rate. + cutoff frequency + + + + Calculate a volume from a decibel + + a dB value + an amplitude value + + + + Calculate semitones from a Frequency ratio + + The frequency ratio. + semitones + + + + Calculate frequency from semitones. + + The semitones. + the frequency + + + + Atomically applies a set of operations for all pending operations. + + HRESULT IXAudio2::CommitChanges([None] UINT32 OperationSet) + + + + Returns current resource usage details, such as available memory or CPU usage. + + +

    For specific information on the statistics returned by GetPerformanceData, see the structure reference.

    +
    + + microsoft.directx_sdk.ixaudio2.ixaudio2.getperformancedata + GetPerformanceData + GetPerformanceData + void IXAudio2::GetPerformanceData([Out] XAUDIO2_PERFORMANCE_DATA* pPerfData) +
    + + + Called by XAudio2 just before an audio processing pass begins. + + + + + Called by XAudio2 just after an audio processing pass ends. + + + + + Called if a critical system error occurs that requires XAudio2 to be closed down and restarted. + + + + + Used withIXAudio2SourceVoice::SubmitSourceBufferwhen submitting xWMA data. + + +

    When streaming an xWMA file a few packets at a time, should be specified on the last packet. Alternatively, the application may call after submitting the last packet.

    In addition, when streaming an xWMA file a few packets at a time, the application should subtract pDecodedPacketCumulativeBytes[PacketCount-1] of the previous packet from all the entries of the currently submitted packet.

    The members of correspond to values contained in the 'dpds' RIFF chunk of the xWMA file being played. PacketCount will correspond to the size in UINT32s of the chunk. pDecodedPacketCumulativeBytes will correspond to a UINT32 buffer containing the contents of the chunk. The contents of the buffer will need to be byte swapped when loading the buffer on Xbox 360.

    Memory allocated to hold a or structure can be freed as soon as the call it is passed to returns. The data the structure points to (pAudioData and pDecodedPacketCumulativeBytes, respectively) can't be freed until the buffer completes (as signaled by the callback) or the voice is stopped and destroyed.

    +
    + + ee419229 + XAUDIO2_BUFFER_WMA + XAUDIO2_BUFFER_WMA +
    + + + No documentation. + + + const unsigned int* pDecodedPacketCumulativeBytes + unsigned int pDecodedPacketCumulativeBytes + + + + No documentation. + + + unsigned int PacketCount + unsigned int PacketCount + + + + Contains the new global debug configuration for XAudio2. Used with theSetDebugConfigurationfunction. + + +

    Debugging messages can be completely turned off by initializing to all zeroes.

    +
    + + ee419231 + XAUDIO2_DEBUG_CONFIGURATION + XAUDIO2_DEBUG_CONFIGURATION +
    + + + No documentation. + + + unsigned int TraceMask + unsigned int TraceMask + + + + No documentation. + + + unsigned int BreakMask + unsigned int BreakMask + + + + No documentation. + + + BOOL LogThreadID + BOOL LogThreadID + + + + No documentation. + + + BOOL LogFileline + BOOL LogFileline + + + + No documentation. + + + BOOL LogFunctionName + BOOL LogFunctionName + + + + No documentation. + + + BOOL LogTiming + BOOL LogTiming + + + + Defines an effect chain. + + + ee419235 + XAUDIO2_EFFECT_CHAIN + XAUDIO2_EFFECT_CHAIN + + + +
    Number of effects in the effect chain for the voice.
    +
    + + ee419235 + unsigned int EffectCount + unsigned int EffectCount +
    + + +
    Array of structures containing references to XAPO instances.
    +
    + + ee419235 + XAUDIO2_EFFECT_DESCRIPTOR* pEffectDescriptors + XAUDIO2_EFFECT_DESCRIPTOR pEffectDescriptors +
    + + + Defines filter parameters for a source voice. + + +

    Setting with the following values is acoustically equivalent to the filter being fully bypassed.

      FilterParams; FilterParams.Frequency = 1.0f;     FilterParams.OneOverQ = 1.0f; FilterParams.Type = LowPassFilter; 

    The following formulas show the relationship between the members of and the per-voice filter.

     Yl( n ) = F1 yb( n ) + yl( n - 1 )	
    +            Yb( n ) = F1 yh( n ) + yb( n - 1 )	
    +            Yh( n ) = x( n ) - yl( n ) - OneOverQ(yb( n - 1 )	
    +            Yn( n ) = Yl(n) + Yh(n)	
    +            

    Where:

     Yl = lowpass output	
    +            Yb = bandpass output	
    +            Yh = highpass output	
    +            Yn = notch output	
    +            F1 = .Frequency	
    +            OneOverQ = .OneOverQ	
    +            
    +
    + + ee419237 + XAUDIO2_FILTER_PARAMETERS + XAUDIO2_FILTER_PARAMETERS +
    + + +
    An indicating whether the filter is low pass, band pass, high pass, or notch.
    +
    + + ee419237 + XAUDIO2_FILTER_TYPE Type + XAUDIO2_FILTER_TYPE Type +
    + + +
    Filter radian frequency calculated as (2 * sin(pi * (desired filter cutoff frequency) / sampleRate)). The frequency must be greater than or equal to 0 and less than or equal to . The maximum frequency allowable is equal to the source sound's sample rate divided by six which corresponds to the maximum filter radian frequency of 1. For example, if a sound's sample rate is 48000 and the desired cutoff frequency is the maximum allowable value for that sample rate, 8000, the value for Frequency will be 1.

    If XAUDIO2_HELPER_FUNCTIONS is defined, XAudio2.h will include the XAudio2RadiansToCutoffFrequency and XAudio2CutoffFrequencyToRadians helper functions for converting between hertz and radian frequencies.

    +
    + + ee419237 + float Frequency + float Frequency +
    + + +
    Reciprocal of Q factor. Controls how quickly frequencies beyond Frequency are dampened. Larger values result in quicker dampening while smaller values cause dampening to occur more gradually. Must be greater than 0 and less than or equal to .
    +
    + + ee419237 + float OneOverQ + float OneOverQ +
    + + + Contains performance information. + + +

    CPU cycles are recorded using . Use to convert these values.

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + XAUDIO2_PERFORMANCE_DATA + XAUDIO2_PERFORMANCE_DATA +
    + + +
    CPU cycles spent on audio processing since the last call to the or function.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned longlong AudioCyclesSinceLastQuery + unsigned longlong AudioCyclesSinceLastQuery +
    + + +
    Total CPU cycles elapsed since the last call.
    Note
    This only counts cycles on the CPU on which XAudio2 is running.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned longlong TotalCyclesSinceLastQuery + unsigned longlong TotalCyclesSinceLastQuery +
    + + +
    Fewest CPU cycles spent on processing any single audio quantum since the last call.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int MinimumCyclesPerQuantum + unsigned int MinimumCyclesPerQuantum +
    + + +
    Most CPU cycles spent on processing any single audio quantum since the last call.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int MaximumCyclesPerQuantum + unsigned int MaximumCyclesPerQuantum +
    + + +
    Total memory currently in use.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int MemoryUsageInBytes + unsigned int MemoryUsageInBytes +
    + + +
    Minimum delay that occurs between the time a sample is read from a source buffer and the time it reaches the speakers.
    Windows

    The delay reported is a variable value equal to the rough distance between the last sample submitted to the driver by XAudio2 and the sample currently playing. The following factors can affect the delay: playing multichannel audio on a hardware-accelerated device; the type of audio device (WavePci, WaveCyclic, or WaveRT); and, to a lesser extent, audio hardware implementation.

    Xbox 360

    The delay reported is a fixed value, which is normally 1,024 samples (21.333 ms at 48 kHz). If XOverrideSpeakerConfig has been called using the XAUDIOSPEAKERCONFIG_LOW_LATENCY flag, the delay reported is 512 samples (10.667 ms at 48 kHz).

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int CurrentLatencyInSamples + unsigned int CurrentLatencyInSamples +
    + + +
    Total audio dropouts since the engine started.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int GlitchesSinceEngineStarted + unsigned int GlitchesSinceEngineStarted +
    + + +
    Number of source voices currently playing.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveSourceVoiceCount + unsigned int ActiveSourceVoiceCount +
    + + +
    Total number of source voices currently in existence.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int TotalSourceVoiceCount + unsigned int TotalSourceVoiceCount +
    + + +
    Number of submix voices currently playing.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveSubmixVoiceCount + unsigned int ActiveSubmixVoiceCount +
    + + +
    Number of resampler xAPOs currently active.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveResamplerCount + unsigned int ActiveResamplerCount +
    + + +
    Number of matrix mix xAPOs currently active.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveMatrixMixCount + unsigned int ActiveMatrixMixCount +
    + + +
    Windows

    Unsupported.

    Xbox 360

    Number of source voices decoding XMA data.

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveXmaSourceVoices + unsigned int ActiveXmaSourceVoices +
    + + +
    Windows

    Unsupported.

    Xbox 360

    A voice can use more than one XMA stream.

    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_performance_data + unsigned int ActiveXmaStreams + unsigned int ActiveXmaStreams +
    + + + Contains information about the creation flags, input channels, and sample rate of a voice. + + + microsoft.directx_sdk.xaudio2.xaudio2_voice_details + XAUDIO2_VOICE_DETAILS + XAUDIO2_VOICE_DETAILS + + + +
    Flags used to create the voice; see the individual voice interfaces for more information.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_voice_details + XAUDIO2_VOICE_FLAGS CreationFlags + XAUDIO2_VOICE_FLAGS CreationFlags +
    + + +
    Flags that are currently set on the voice.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_voice_details + unsigned int ActiveFlags + unsigned int ActiveFlags +
    + + +
    The number of input channels the voice expects.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_voice_details + unsigned int InputChannels + unsigned int InputChannels +
    + + +
    The input sample rate the voice expects.
    +
    + + microsoft.directx_sdk.xaudio2.xaudio2_voice_details + unsigned int InputSampleRate + unsigned int InputSampleRate +
    + + + Defines a destination voice that is the target of a send from another voice and specifies whether a filter should be used. + + + ee419244 + XAUDIO2_SEND_DESCRIPTOR + XAUDIO2_SEND_DESCRIPTOR + + + +
    Indicates whether a filter should be used on data sent to the voice pointed to by pOutputVoice. Flags can be 0 or XAUDIO2_SEND_USEFILTER.
    +
    + + ee419244 + XAUDIO2_VOICE_SEND_FLAGS Flags + XAUDIO2_VOICE_SEND_FLAGS Flags +
    + + +
    A reference to an that will be the target of the send. The pOutputVoice member cannot be null.
    +
    + + ee419244 + IXAudio2Voice* pOutputVoice + IXAudio2Voice pOutputVoice +
    + + + Initializes a new instance of the struct. + + The output voice. + + + + Initializes a new instance of the struct. + + The send flags. + The output voice. + + + + Gets or sets the output voice. This parameter cannot be null. + + The output voice. + + + + Defines a set of voices to receive data from a single output voice. + + +

    If pSends is not null all of its elements must be non-null. To send output to the default mastering voice call with the pSendList argument set to null.

    Setting SendCount to 0 is useful for certain effects such as volume meters or file writers that don't generate any audio output to pass on to another voice.

    If needed, a voice will perform a single sample rate conversion, from the voice's input sample rate to the input sample rate of the voice's output voices. Because only one sample rate conversion will be performed, all the voice's output voices must have the same input sample rate. If the input sample rates of the voice and its output voices are the same, no sample rate conversion is performed.

    +
    + + ee419246 + XAUDIO2_VOICE_SENDS + XAUDIO2_VOICE_SENDS +
    + + +
    Number of voices to receive the output of the voice. An OutputCount value of 0 indicates the voice should not send output to any voices.
    +
    + + ee419246 + unsigned int SendCount + unsigned int SendCount +
    + + +
    Array of structures describing destination voices and the filters that should be used when sending to the voices. This array should contain SendCount elements. If SendCount is 0 pSends should be null. Note that pSends cannot contain the same voice more than once.
    +
    + + ee419246 + XAUDIO2_SEND_DESCRIPTOR* pSends + XAUDIO2_SEND_DESCRIPTOR pSends +
    + + + Returns the voice's current state and cursor position data. + + +

    For all encoded formats, including constant bit rate (CBR) formats such as adaptive differential pulse code modulation (ADPCM), SamplesPlayed is expressed in terms of decoded samples. For pulse code modulation (PCM) formats, SamplesPlayed is expressed in terms of either input or output samples. There is a one-to-one mapping from input to output for PCM formats.

    If a client needs to get the correlated positions of several voices?that is, to know exactly which sample of a particular voice is playing when a specified sample of another voice is playing?it must make the calls in an XAudio2 engine callback. Doing this ensures that none of the voices advance while the calls are made.

    +
    + + ee419247 + XAUDIO2_VOICE_STATE + XAUDIO2_VOICE_STATE +
    + + +
    Pointer to a buffer context provided in the that is processed currently, or, if the voice is stopped currently, to the next buffer due to be processed. pCurrentBufferContext is null if there are no buffers in the queue.
    +
    + + ee419247 + void* pCurrentBufferContext + void pCurrentBufferContext +
    + + +
    Number of audio buffers currently queued on the voice, including the one that is processed currently.
    +
    + + ee419247 + unsigned int BuffersQueued + unsigned int BuffersQueued +
    + + +
    Total number of samples processed by this voice since it last started, or since the last audio stream ended (as marked with the flag). This total includes samples played multiple times due to looping. Theoretically, if all audio emitted by the voice up to this time is captured, this parameter would be the length of the audio stream in samples. If you specify when you call , this member won't be calculated, and its value is unspecified on return from . takes about one-third as much time to complete when you specify .
    +
    + + ee419247 + unsigned longlong SamplesPlayed + unsigned longlong SamplesPlayed +
    + + + No documentation. + + + X3DAudioCalculateFlags + X3DAudioCalculateFlags + + + + No documentation. + + + X3DAUDIO_CALCULATE_MATRIX + X3DAUDIO_CALCULATE_MATRIX + + + + No documentation. + + + X3DAUDIO_CALCULATE_DELAY + X3DAUDIO_CALCULATE_DELAY + + + + No documentation. + + + X3DAUDIO_CALCULATE_LPF_DIRECT + X3DAUDIO_CALCULATE_LPF_DIRECT + + + + No documentation. + + + X3DAUDIO_CALCULATE_LPF_REVERB + X3DAUDIO_CALCULATE_LPF_REVERB + + + + No documentation. + + + X3DAUDIO_CALCULATE_REVERB + X3DAUDIO_CALCULATE_REVERB + + + + No documentation. + + + X3DAUDIO_CALCULATE_DOPPLER + X3DAUDIO_CALCULATE_DOPPLER + + + + No documentation. + + + X3DAUDIO_CALCULATE_EMITTER_ANGLE + X3DAUDIO_CALCULATE_EMITTER_ANGLE + + + + No documentation. + + + X3DAUDIO_CALCULATE_ZEROCENTER + X3DAUDIO_CALCULATE_ZEROCENTER + + + + No documentation. + + + X3DAUDIO_CALCULATE_REDIRECT_TO_LFE + X3DAUDIO_CALCULATE_REDIRECT_TO_LFE + + + + Functions + + + + + + Speed of sound in the air. + + + + + Calculates DSP settings with respect to 3D parameters. + +
    [in] 3D audio instance handle. Call to get this handle.
    +
    [in] Pointer to an representing the point of reception.
    +
    [in] Pointer to an representing the sound source.
    +
    [in] Flags used to control which DSP settings are calculated:
    ValueDescription
    Enables matrix coefficient table calculation.?
    Enables delay time array calculation (stereo only).?
    Enables low pass filter (LPF) direct-path coefficient calculation.?
    Enables LPF reverb-path coefficient calculation.?
    Enables reverb send level calculation.?
    Enables Doppler shift factor calculation.?
    Enables emitter-to-listener interior angle calculation.?
    Fills the center channel with silence. This flag allows you to keep a 6-channel matrix so you do not have to remap the channels, but the center channel will be silent. This flag is only valid if you also set .?
    Applies an equal mix of all source channels to a low frequency effect (LFE) destination channel. It only applies to matrix calculations with a source that does not have an LFE channel and a destination that does have an LFE channel. This flag is only valid if you also set .?
    +
    [in, out] Pointer to an structure that receives the calculation results.
    + + ee419052 + void X3DAudioCalculate([In] const X3DAUDIOHANDLE* Instance,[In] const X3DAUDIO_LISTENER* pListener,[In] const X3DAUDIO_EMITTER* pEmitter,[In] X3DAudioCalculateFlags Flags,[InOut] X3DAUDIO_DSP_SETTINGS* pDSPSettings) + X3DAudioCalculate +
    + + + Sets all global 3D audio constants. + +
    [in] Assignment of channels to speaker positions. This value must not be zero. The only permissible value on Xbox 360 is SPEAKER_XBOX.
    +
    [in] Speed of sound, in user-defined world units per second. Use this value only for doppler calculations. It must be greater than or equal to FLT_MIN.
    +
    [out] 3D audio instance handle. Use this handle when you call .
    + None. + + microsoft.directx_sdk.x3daudio.x3daudioinitialize + HRESULT X3DAudioInitialize([In] SPEAKER_FLAGS SpeakerChannelMask,[In] float SpeedOfSound,[Out] X3DAUDIOHANDLE* Instance) + X3DAudioInitialize +
    + + + Initializes a new instance of the class. + + The speakers config. + + + + Initializes a new instance of the class. + + The speakers config. + The speed of sound. + + + + Calculates dsp settings for the specified listener and emitter. + + The listener. + The emitter. + The flags. + The source channel count. + The destination channel count. + Dsp settings + + + + Specifies directionality for a single-channel non-LFE emitter by scaling DSP behavior with respect to the emitter's orientation. + + +

    For a detailed explanation of sound cones see Sound Cones.

    +
    + + ee419054 + X3DAUDIO_CONE + X3DAUDIO_CONE +
    + + +
    Inner cone angle in radians. This value must be within 0.0f to X3DAUDIO_2PI.
    +
    + + ee419054 + float InnerAngle + float InnerAngle +
    + + +
    Outer cone angle in radians. This value must be within InnerAngle to X3DAUDIO_2PI.
    +
    + + ee419054 + float OuterAngle + float OuterAngle +
    + + +
    Volume scaler on/within inner cone. This value must be within 0.0f to 2.0f.
    +
    + + ee419054 + float InnerVolume + float InnerVolume +
    + + +
    Volume scaler on/beyond outer cone. This value must be within 0.0f to 2.0f.
    +
    + + ee419054 + float OuterVolume + float OuterVolume +
    + + +
    LPF direct-path or reverb-path coefficient scaler on/within inner cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f.
    +
    + + ee419054 + float InnerLPF + float InnerLPF +
    + + +
    LPF direct-path or reverb-path coefficient scaler on or beyond outer cone. This value is only used for LPF calculations and must be within 0.0f to 1.0f.
    +
    + + ee419054 + float OuterLPF + float OuterLPF +
    + + +
    Reverb send level scaler on or within inner cone. This must be within 0.0f to 2.0f.
    +
    + + ee419054 + float InnerReverb + float InnerReverb +
    + + +
    Reverb send level scaler on/beyond outer cone. This must be within 0.0f to 2.0f.
    +
    + + ee419054 + float OuterReverb + float OuterReverb +
    + + + Defines a DSP setting at a given normalized distance. + + + ee419056 + X3DAUDIO_DISTANCE_CURVE_POINT + X3DAUDIO_DISTANCE_CURVE_POINT + + + +
    Normalized distance. This must be within 0.0f to 1.0f.
    +
    + + ee419056 + float Distance + float Distance +
    + + +
    DSP control setting.
    +
    + + ee419056 + float DSPSetting + float DSPSetting +
    + + + Defines a DSP setting at a given normalized distance. + + + ee419056 + X3DAUDIO_DISTANCE_CURVE + X3DAUDIO_DISTANCE_CURVE + + + +
    Normalized distance. This must be within 0.0f to 1.0f.
    +
    + + ee419056 + X3DAUDIO_DISTANCE_CURVE_POINT* pPoints + X3DAUDIO_DISTANCE_CURVE_POINT pPoints +
    + + +
    DSP control setting.
    +
    + + ee419056 + unsigned int PointCount + unsigned int PointCount +
    + + + Receives the results from a call toX3DAudioCalculate. + + +

    The following members must be initialized before passing this structure to the function:

    • pMatrixCoefficients

    • pDelayTimes

    • SrcChannelCount

    • DstChannelCount

    The following members are returned by passing this structure to the function:

    • pMatrixCoefficients

    • pDelayTimes

    • LPFDirectCoefficient

    • LPFReverbCoefficient

    • ReverbLevel

    • DopplerFactor

    • EmitterToListenerAngle

    • EmitterToListenerDistance

    • EmitterVelocityComponent

    • ListenerVelocityComponent

    Note
    For pMatrixCoefficients and pDelayTimes, does not allocate additional memory. merely modifies the values at the memory locations allocated for these references.
    +
    + + ee419057 + X3DAUDIO_DSP_SETTINGS + X3DAUDIO_DSP_SETTINGS + + No documentation. + + + X3DAUDIO_DSP_SETTINGS +
    + + + No documentation. + + + float* pMatrixCoefficients + float pMatrixCoefficients + + + + No documentation. + + + float* pDelayTimes + float pDelayTimes + + + + No documentation. + + + unsigned int SrcChannelCount + unsigned int SrcChannelCount + + + + No documentation. + + + unsigned int DstChannelCount + unsigned int DstChannelCount + + + + No documentation. + + + float LPFDirectCoefficient + float LPFDirectCoefficient + + + + No documentation. + + + float LPFReverbCoefficient + float LPFReverbCoefficient + + + + No documentation. + + + float ReverbLevel + float ReverbLevel + + + + No documentation. + + + float DopplerFactor + float DopplerFactor + + + + No documentation. + + + float EmitterToListenerAngle + float EmitterToListenerAngle + + + + No documentation. + + + float EmitterToListenerDistance + float EmitterToListenerDistance + + + + No documentation. + + + float EmitterVelocityComponent + float EmitterVelocityComponent + + + + No documentation. + + + float ListenerVelocityComponent + float ListenerVelocityComponent + + + + Defines a single-point or multiple-point 3D audio source that is used with an arbitrary number of sound channels. + + +

    only supports a cone in a single-point emitter. Multi-point emitters are a convenient and efficient way to manage a related group of sound sources. Many properties are shared among all channel points, such as Doppler?the same Doppler shift is applied to all channels in the emitter. Thus, the Doppler value need only be calculated once, not per-point as would be needed with multiple separate single-point emitters. Because only has one orientation vector, a multi-point emitter cone would be of limited usefulness, forcing all channels to behave as if they were facing the same direction. If multiple independent cones are needed, multiple single-point emitters should be used, each with its own orientation.

    The parameter type is typed to DirectX::XMFLOAT3, to provide x , y , and z floating-point values.

    X3DAudio uses a left-handed Cartesian coordinate system, with values on the x-axis increasing from left to right, on the y-axis from bottom to top, and on the z-axis from near to far. Azimuths are measured clockwise from a given reference direction.

    For user-defined distance curves, the distance field of the first point must be 0.0f and the distance field of the last point must be 1.0f.

    If an emitter moves beyond a distance of (CurveDistanceScaler ? 1.0f), the last point on the curve is used to compute the volume output level. The last point is determined by the following:

    .pPoints[PointCount-1].DSPSetting)
    Inner Radius and Inner Radius Angle

    InnerRadius is used to specify an area of smooth transition around the origin point as a sound travels directly through, above or below the listener. Elevation is accounted for by specifying an InnerRadiusAngle, whereby a sound whose elevation increases or decreases, will eventually start to bleed the sound into more than just two speakers.

    When Inner Radius and Inner Radius Angle are not used, emitters are audible in the two closest speakers to their current position/orientation (or, if directly on a line with one speaker's defined angle, solely from that one speaker).

    Inner Radius and Inner Radius Angle have no effect on emitters positioned outside of the cones they describe. Inside of the cone, they will gradually cause the sound to bleed into the opposite speakers, until the sound will be equally heard in all speakers when the emitter is at the same position as (or directly above or below) the listener.

    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_EMITTER + X3DAUDIO_EMITTER + + No documentation. + + + X3DAUDIO_EMITTER +
    + + +
    Pointer to a sound cone. Used only with single-channel emitters for matrix, LPF (both direct and reverb paths), and reverb calculations. null specifies the emitter is omnidirectional.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_CONE* pCone + X3DAUDIO_CONE pCone +
    + + +
    Orientation of the front direction. This value must be orthonormal with OrientTop. OrientFront must be normalized when used. For single-channel emitters without cones OrientFront is only used for emitter angle calculations. For multi channel emitters or single-channel with cones OrientFront is used for matrix, LPF (both direct and reverb paths), and reverb calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_VECTOR OrientFront + X3DAUDIO_VECTOR OrientFront +
    + + +
    Orientation of the top direction. This value must be orthonormal with OrientFront. OrientTop is only used with multi-channel emitters for matrix calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_VECTOR OrientTop + X3DAUDIO_VECTOR OrientTop +
    + + +
    Position in user-defined world units. This value does not affect Velocity.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_VECTOR Position + X3DAUDIO_VECTOR Position +
    + + +
    Velocity vector in user-defined world units/second. This value is used only for doppler calculations. It does not affect Position.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_VECTOR Velocity + X3DAUDIO_VECTOR Velocity +
    + + +
    Value to be used for the inner radius calculations. If InnerRadius is 0, then no inner radius is used, but InnerRadiusAngle may still be used. This value must be between 0.0f and MAX_FLT.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float InnerRadius + float InnerRadius +
    + + +
    Value to be used for the inner radius angle calculations. This value must be between 0.0f and X3DAUDIO_PI/4.0.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float InnerRadiusAngle + float InnerRadiusAngle +
    + + +
    Number of emitters defined by the structure. Must be greater than 0.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + unsigned int ChannelCount + unsigned int ChannelCount +
    + + +
    Distance from Position that channels will be placed if ChannelCount is greater than 1. ChannelRadius is only used with multi-channel emitters for matrix calculations. Must be greater than or equal to 0.0f.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float ChannelRadius + float ChannelRadius +
    + + +
    Table of channel positions, expressed as an azimuth in radians along the channel radius with respect to the front orientation vector in the plane orthogonal to the top orientation vector. An azimuth of X3DAUDIO_2PI specifies a channel is a low-frequency effects (LFE) channel. LFE channels are positioned at the emitter base and are calculated with respect to pLFECurve only, never pVolumeCurve. pChannelAzimuths must have at least ChannelCount elements. The table values must be within 0.0f to X3DAUDIO_2PI. pChannelAzimuths is used with multi-channel emitters for matrix calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float* pChannelAzimuths + float pChannelAzimuths +
    + + +
    Volume-level distance curve, which is used only for matrix calculations. null specifies a specialized default curve that conforms to the inverse square law, such that when distance is between 0.0f and CurveDistanceScaler ? 1.0f, no attenuation is applied.

    When distance is greater than CurveDistanceScaler ? 1.0f, the amplification factor is (CurveDistanceScaler ? 1.0f)/distance. At a distance of CurveDistanceScaler ? 2.0f, the sound will be at half volume or -6 dB, at a distance of CurveDistanceScaler ? 4.0f, the sound will be at one quarter volume or -12 dB, and so on.

    pVolumeCurve and pLFECurve are independent of each other. pVolumeCurve does not affect LFE channel volume.

    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_DISTANCE_CURVE* pVolumeCurve + X3DAUDIO_DISTANCE_CURVE pVolumeCurve +
    + + +
    LFE roll-off distance curve, or null to use default curve: [0.0f, CurveDistanceScaler ?1.0f], [CurveDistanceScaler ?1.0f, 0.0f]. A null value for pLFECurve specifies a default curve that conforms to the inverse square law with distances <= CurveDistanceScaler clamped to no attenuation.

    pVolumeCurve and pLFECurve are independent of each other. pLFECurve does not affect non LFE channel volume.

    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_DISTANCE_CURVE* pLFECurve + X3DAUDIO_DISTANCE_CURVE pLFECurve +
    + + +
    Low-pass filter (LPF) direct-path coefficient distance curve, or null to use the default curve: [0.0f, 1.0f], [1.0f, 0.75f]. pLPFDirectCurve is only used for LPF direct-path calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_DISTANCE_CURVE* pLPFDirectCurve + X3DAUDIO_DISTANCE_CURVE pLPFDirectCurve +
    + + +
    LPF reverb-path coefficient distance curve, or null to use default curve: [0.0f, 0.75f], [1.0f, 0.75f]. pLPFReverbCurve is only used for LPF reverb path calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_DISTANCE_CURVE* pLPFReverbCurve + X3DAUDIO_DISTANCE_CURVE pLPFReverbCurve +
    + + +
    Reverb send level distance curve, or null to use default curve: [0.0f, 1.0f], [1.0f, 0.0f].
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + X3DAUDIO_DISTANCE_CURVE* pReverbCurve + X3DAUDIO_DISTANCE_CURVE pReverbCurve +
    + + +
    Curve distance scaler that is used to scale normalized distance curves to user-defined world units, and/or to exaggerate their effect. This does not affect any other calculations. The value must be within the range FLT_MIN to FLT_MAX. CurveDistanceScaler is only used for matrix, LPF (both direct and reverb paths), and reverb calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float CurveDistanceScaler + float CurveDistanceScaler +
    + + +
    Doppler shift scaler that is used to exaggerate Doppler shift effect. DopplerScaler is only used for Doppler calculations and does not affect any other calculations. The value must be within the range 0.0f to FLT_MAX.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_emitter + float DopplerScaler + float DopplerScaler +
    + + + Reference to Cone data. + + X3DAUDIO_CONE* pCone + + + disabled as it is not used + + + + Defines a point of 3D audio reception. + + +

    The parameter type is typed to DirectX::XMFLOAT3, to provide x, y and z floating-point values.

    A listener's front and top vectors must be orthonormal. To be considered orthonormal, a pair of vectors must have a magnitude of 1 +- 1x10-5 and a dot product of 0 +- 1x10-5.

    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_LISTENER + X3DAUDIO_LISTENER + + No documentation. + + + X3DAUDIO_LISTENER +
    + + +
    Orientation of front direction. When pCone is null OrientFront is used only for matrix and delay calculations. When pCone is not null OrientFront is used for matrix, LPF (both direct and reverb paths), and reverb calculations. This value must be orthonormal with OrientTop when used.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_VECTOR OrientFront + X3DAUDIO_VECTOR OrientFront +
    + + +
    Orientation of top direction, used only for matrix and delay calculations. This value must be orthonormal with OrientFront when used
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_VECTOR OrientTop + X3DAUDIO_VECTOR OrientTop +
    + + +
    Position in user-defined world units. This value does not affect Velocity.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_VECTOR Position + X3DAUDIO_VECTOR Position +
    + + +
    Velocity vector in user-defined world units per second, used only for doppler calculations. This value does not affect Position.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_VECTOR Velocity + X3DAUDIO_VECTOR Velocity +
    + + +
    Pointer to an structure for this listener. Providing a listener cone will specify that additional calculations are performed when determining the volume and filter DSP parameters for individual sound sources. A null pCone value specifies an omnidirectional sound and no cone processing is applied. pCone is only used for matrix, LPF (both direct and reverb paths), and reverb calculations.
    +
    + + microsoft.directx_sdk.x3daudio.x3daudio_listener + X3DAUDIO_CONE* pCone + X3DAUDIO_CONE pCone +
    + + + Reference to Cone data. + + X3DAUDIO_CONE* pCone + + + Disabled as it is not used + + + + Describes the contents of a stream buffer. + + +

    This metadata can be used to implement optimizations that require knowledge of a stream buffer's contents. + For example, XAPOs that always produce silent output from silent input can check the flag on the input stream buffer + to determine if any signal processing is necessary. If silent, the XAPO can simply set the flag on the output + stream buffer to silent and return, thus averting the work of processing silent data.

    Likewise, XAPOs that receive valid input data, but generate silence (for any reason), may set the + output stream buffer's flag accordingly, rather than writing silent samples to the buffer.

    These flags represent what should be assumed is in the respective buffer. + The flags may not reflect what is actually stored in memory. + For example, the indicates that silent data should be assumed, however the respective memory may be + uninitialized

    +
    + + ee419207 + XAPO_BUFFER_FLAGS + XAPO_BUFFER_FLAGS +
    + + + No documentation. + + + XAPO_BUFFER_SILENT + XAPO_BUFFER_SILENT + + + + No documentation. + + + XAPO_BUFFER_VALID + XAPO_BUFFER_VALID + + + + None. + + + None + None + + + + No documentation. + + + XAPO_PROPERTY_TYPE + XAPO_PROPERTY_TYPE + + + + No documentation. + + + XAPO_FLAG_CHANNELS_MUST_MATCH + XAPO_FLAG_CHANNELS_MUST_MATCH + + + + No documentation. + + + XAPO_FLAG_FRAMERATE_MUST_MATCH + XAPO_FLAG_FRAMERATE_MUST_MATCH + + + + No documentation. + + + XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH + XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH + + + + No documentation. + + + XAPO_FLAG_BUFFERCOUNT_MUST_MATCH + XAPO_FLAG_BUFFERCOUNT_MUST_MATCH + + + + No documentation. + + + XAPO_FLAG_INPLACE_REQUIRED + XAPO_FLAG_INPLACE_REQUIRED + + + + No documentation. + + + XAPO_FLAG_INPLACE_SUPPORTED + XAPO_FLAG_INPLACE_SUPPORTED + + + + No documentation. + + + XAPO_FLAG_DEFAULT + XAPO_FLAG_DEFAULT + + + + Functions + + + + + + Creates an instance of the requested XAPOFX effect. + +
    ID of the effect to create. Use the __uuidof on the effect class name to get the CLSID for an effect. For example, __uuidof(FXReverb) would provide the CLSID for the FXReverb effect. For a list of effects provided by XAPOFX, see XAPOFX Overview. For an example of retrieving the CLSID for an effect, see How to: Use XAPOFX in XAudio2.
    +
    Receives a reference to the created XAPO instance. If CreateFX fails, pEffect is untouched.
    +
    [optional] Effect-specific initialization parameters. This may be null if InitDataByteSize is zero.
    +
    [optional] Size of pInitData in bytes. This may be zero if pInitData is null.
    + Returns if successful; otherwise, an error code. + +

    The created XAPO will have a reference count of 1. Client code should call IUnknown::Release after passing the XAPO to XAudio2 to allow XAudio2 to dispose of the XAPO when it is no longer needed. Use or to pass an XAPO to XAudio2.

    +
    + + hh405044 + HRESULT CreateFX([In] const GUID& clsid,[Out, Fast] IUnknown** pEffect,[In, Buffer, Optional] const void* pInitData,[In] unsigned int InitDataByteSize) + CreateFX +
    + + + No documentation. + + + FXECHO_INITDATA + FXECHO_INITDATA + + + + No documentation. + + + float MaxDelay + float MaxDelay + + + + Parameters for use with the FXEcho XAPO. + + +

    Echo only supports FLOAT32 audio formats.

    +
    + + ee417667 + FXECHO_PARAMETERS + FXECHO_PARAMETERS +
    + + +
    Ratio of wet (processed) signal to dry (original) signal.
    +
    + + ee417667 + float WetDryMix + float WetDryMix +
    + + +
    Amount of output to feed back into input.
    +
    + + ee417667 + float Feedback + float Feedback +
    + + +
    Delay to all channels in milliseconds. This value must be between FXECHO_MIN_DELAY and .MaxDelay.
    +
    + + ee417667 + float Delay + float Delay +
    + + + Parameters for use with the FXEQ XAPO. + + +

    Each band ranges from FrequencyCenterN - (BandwidthN / 2) to FrequencyCenterN + (BandwidthN / 2).

    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + FXEQ_PARAMETERS + FXEQ_PARAMETERS +
    + + +
    Center frequency in Hz for band 0. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float FrequencyCenter0 + float FrequencyCenter0 +
    + + +
    The boost or decrease to frequencies in band 0. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Gain0 + float Gain0 +
    + + +
    Width of band 0. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Bandwidth0 + float Bandwidth0 +
    + + +
    Center frequency in Hz for band 1. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float FrequencyCenter1 + float FrequencyCenter1 +
    + + +
    The boost or decrease to frequencies in band 1. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Gain1 + float Gain1 +
    + + +
    Width of band 1. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Bandwidth1 + float Bandwidth1 +
    + + +
    Center frequency in Hz for band 2. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float FrequencyCenter2 + float FrequencyCenter2 +
    + + +
    The boost or decrease to frequencies in band 2. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Gain2 + float Gain2 +
    + + +
    Width of band 2. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Bandwidth2 + float Bandwidth2 +
    + + +
    Center frequency in Hz for band 3. Must be between FXEQ_MIN_FREQUENCY_CENTER and FXEQ_MAX_FREQUENCY_CENTER.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float FrequencyCenter3 + float FrequencyCenter3 +
    + + +
    The boost or decrease to frequencies in band 3. Must be between FXEQ_MIN_GAIN and FXEQ_MAX_GAIN
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Gain3 + float Gain3 +
    + + +
    Width of band 3. Must be between FXEQ_MIN_BANDWIDTH and FXEQ_MAX_BANDWIDTH.
    +
    + + microsoft.directx_sdk.xapofx.fxeq_parameters + float Bandwidth3 + float Bandwidth3 +
    + + + Parameters for use with the FXMasteringLimiter XAPO. + + + microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters + FXMASTERINGLIMITER_PARAMETERS + FXMASTERINGLIMITER_PARAMETERS + + + Constant MaximumRelease. + FXMASTERINGLIMITER_MAX_RELEASE + + + Constant MinimumLoudness. + FXMASTERINGLIMITER_MIN_LOUDNESS + + + Constant DefaultLoudness. + FXMASTERINGLIMITER_DEFAULT_LOUDNESS + + + Constant DefaultRelease. + FXMASTERINGLIMITER_DEFAULT_RELEASE + + + Constant MaximumLoudness. + FXMASTERINGLIMITER_MAX_LOUDNESS + + + Constant MinimumRelease. + FXMASTERINGLIMITER_MIN_RELEASE + + + +
    Speed at which the limiter stops affecting audio once it drops below the limiter's threshold. Value must be between and .
    +
    + + microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters + unsigned int Release + unsigned int Release +
    + + +
    Threshold of the limiter. Value must be between and .
    +
    + + microsoft.directx_sdk.xapofx.fxmasteringlimiter_parameters + unsigned int Loudness + unsigned int Loudness +
    + + + Parameters for use with the FXReverb XAPO. + + + microsoft.directx_sdk.xapofx.fxreverb_parameters + FXREVERB_PARAMETERS + FXREVERB_PARAMETERS + + + +
    Controls the character of the individual wall reflections. Set to minimum value to simulate a hard flat surface and to maximum value to simulate a diffuse surface.Value must be between FXREVERB_MIN_DIFFUSION and FXREVERB_MAX_DIFFUSION.
    +
    + + microsoft.directx_sdk.xapofx.fxreverb_parameters + float Diffusion + float Diffusion +
    + + +
    Size of the room. Value must be between FXREVERB_MIN_ROOMSIZE and FXREVERB_MAX_ROOMSIZE. Note that physical meaning of RoomSize is subjective and not tied to any particular units. A smaller value will result in reflections reaching the listener more quickly while reflections will take longer with larger values for RoomSize.
    +
    + + microsoft.directx_sdk.xapofx.fxreverb_parameters + float RoomSize + float RoomSize +
    + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization beforeProcessis called on the realtime thread. + + +

    Once locked, the input and output configuration and any other locked parameters remain constant until + UnLockForProcess is called. After an XAPO is locked, further calls to LockForProcess have no effect until the UnLockForProcess function is called.

    An XAPO indicates what specific formats it supports through its implementation of the + IsInputFormatSupported and + IsOutputFormatSupported methods. An XAPO should assert the input and + output configurations are supported and that any required effect-specific initialization is complete. The + IsInputFormatSupported, + IsOutputFormatSupported, and + Initialize methods should be used as necessary before calling this method.

    Because Process is a nonblocking method, all internal memory buffers required for + Process should be allocated in LockForProcess.

    Process is never called before LockForProcess returns successfully.

    LockForProcess is called directly by XAudio2 and should not be called by the client code.

    +
    + + ee418455 + IXAPO + IXAPO +
    + + + Queries if a specific input format is supported for a given output format. + + Output format. + Input format to check for being supported. + If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat) + + + + Queries if a specific output format is supported for a given input format. + + [in] Input format. + [in] Output format to check for being supported. + [out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat) + + + + Performs any effect-specific initialization. + + Effect-specific initialization parameters, may be NULL if DataByteSize is 0. + No documentation. + HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize) + + + + Resets variables dependent on frame history. + + void IXAPO::Reset() + + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization before {{Process}} is called on the realtime thread. + + Array of input structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements. + Array of output structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements. + No documentation. + HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters) + + + + Deallocates variables that were allocated with the {{LockForProcess}} method. + + void IXAPO::UnlockForProcess() + + + + Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers. + + [in] Input array of structures. + [in, out] Output array of structures. On input, the value of .ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of .ValidFrameCount indicates the actual number of frames written. + TRUE to process normally; FALSE to process thru. See Remarks for additional information. + void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled) + + + + Returns the number of input frames required to generate the given number of output frames. + + The number of output frames desired. + No documentation. + UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount) + + + + Returns the number of output frames that will be generated from a given number of input frames. + + The number of input frames. + No documentation. + UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount) + + + + Returns the registration properties of an XAPO. + + a structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure. + HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties) + + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization beforeProcessis called on the realtime thread. + + +

    Once locked, the input and output configuration and any other locked parameters remain constant until + UnLockForProcess is called. After an XAPO is locked, further calls to LockForProcess have no effect until the UnLockForProcess function is called.

    An XAPO indicates what specific formats it supports through its implementation of the + IsInputFormatSupported and + IsOutputFormatSupported methods. An XAPO should assert the input and + output configurations are supported and that any required effect-specific initialization is complete. The + IsInputFormatSupported, + IsOutputFormatSupported, and + Initialize methods should be used as necessary before calling this method.

    Because Process is a nonblocking method, all internal memory buffers required for + Process should be allocated in LockForProcess.

    Process is never called before LockForProcess returns successfully.

    LockForProcess is called directly by XAudio2 and should not be called by the client code.

    +
    + + ee418455 + IXAPO + IXAPO + + Native Accessor to an existing AudioProcessor instance + +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Returns the registration properties of an XAPO. + +
    Receives a reference to a structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure.
    +

    Returns if successful; returns an error code otherwise.

    + + microsoft.directx_sdk.ixapo.ixapo.getregistrationproperties + HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties) + IXAPO::GetRegistrationProperties +
    + + + Queries if a specific input format is supported for a given output format. + +
    Output format.
    +
    Input format to check for being supported.
    +
    If not null, and the input format is not supported for the given output format, ppSupportedInputFormat returns a reference to the closest input format that is supported. Use XAPOFree to free the returned structure.
    +

    Returns if the format pair is supported. Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.

    + +

    The and IsInputFormatSupported methods allow an XAPO to indicate which audio formats it is capable of processing. If a requested format is not supported, the XAPO should return the closest format that it does support. The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance. The behavior of IsInputFormatSupported is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the and methods.

    +
    + + ee418453 + HRESULT IXAPO::IsInputFormatSupported([In] const WAVEFORMATEX* pOutputFormat,[In] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat) + IXAPO::IsInputFormatSupported +
    + + + Queries if a specific output format is supported for a given input format. + +
    [in] Input format.
    +
    [in] Output format to check for being supported.
    +
    [out] If not null and the output format is not supported for the given input format, ppSupportedOutputFormat returns a reference to the closest output format that is supported. Use XAPOFree to free the returned structure.
    +

    Returns if the format pair is supported. Returns XAPO_E_FORMAT_UNSUPPORTED if the format pair is not supported.

    + +

    The and IsOutputFormatSupported methods allow an XAPO to indicate which audio formats it is capable of processing. If a requested format is not supported, the XAPO should return the closest format that it does support. The closest format should be determined based on frame rate, bit depth, and channel count, in that order of importance. The behavior of IsOutputFormatSupported is allowed to change, based on the internal state of the XAPO, but its behavior should remain constant between calls to the and methods.

    +
    + + ee418454 + HRESULT IXAPO::IsOutputFormatSupported([In] const WAVEFORMATEX* pInputFormat,[In] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat) + IXAPO::IsOutputFormatSupported +
    + + + Performs any effect-specific initialization. + +
    Effect-specific initialization parameters, may be null if DataByteSize is 0.
    +
    Size of pData in bytes, may be 0 if pData is null.
    +

    Returns if successful, an error code otherwise.

    + +

    The contents of pData are defined by a given XAPO. Immutable parameters (constant for the lifetime of the XAPO) should be set in this method. Once initialized, an XAPO cannot be initialized again. An XAPO should be initialized before passing it to XAudio2 as part of an effect chain.

    Note
    XAudio2 does not call this method, it should be called by the client before passing the XAPO to XAudio2.
    +
    + + microsoft.directx_sdk.ixapo.ixapo.initialize + HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[In] unsigned int DataByteSize) + IXAPO::Initialize +
    + + + Resets variables dependent on frame history. + + +

    Constant and locked parameters such as the input and output formats remain unchanged. Variables set by remain unchanged.

    For example, an effect with delay should zero out its delay line during this method, but should not reallocate anything as the XAPO remains locked with a constant input and output configuration.

    XAudio2 only calls this method if the XAPO is locked.

    This method is called from the realtime thread and should not block.

    +
    + + microsoft.directx_sdk.ixapo.ixapo.reset + void IXAPO::Reset() + IXAPO::Reset +
    + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization beforeProcessis called on the realtime thread. + + No documentation. + No documentation. + No documentation. + No documentation. +

    Returns if successful, an error code otherwise.

    + +

    Once locked, the input and output configuration and any other locked parameters remain constant until + UnLockForProcess is called. After an XAPO is locked, further calls to LockForProcess have no effect until the UnLockForProcess function is called.

    An XAPO indicates what specific formats it supports through its implementation of the + IsInputFormatSupported and + IsOutputFormatSupported methods. An XAPO should assert the input and + output configurations are supported and that any required effect-specific initialization is complete. The + IsInputFormatSupported, + IsOutputFormatSupported, and + Initialize methods should be used as necessary before calling this method.

    Because Process is a nonblocking method, all internal memory buffers required for + Process should be allocated in LockForProcess.

    Process is never called before LockForProcess returns successfully.

    LockForProcess is called directly by XAudio2 and should not be called by the client code.

    +
    + + microsoft.directx_sdk.ixapo.ixapo.lockforprocess + HRESULT IXAPO::LockForProcess([In] unsigned int InputLockedParameterCount,[In, Buffer] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[In] unsigned int OutputLockedParameterCount,[In, Buffer] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters) + IXAPO::LockForProcess +
    + + + Deallocates variables that were allocated with theLockForProcessmethod. + + +

    Unlocking an XAPO instance allows it to be reused with + different input and output formats. +

    +
    + + ee418460 + void IXAPO::UnlockForProcess() + IXAPO::UnlockForProcess +
    + + + Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers. + +
    [in] Number of elements in pInputProcessParameters.
    Note
    XAudio2 currently supports only one input stream and one output stream.
    +
    [in] Input array of structures.
    +
    [in] Number of elements in pOutputProcessParameters.
    Note
    XAudio2 currently supports only one input stream and one output stream.
    +
    [in, out] Output array of structures. On input, the value of .ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of .ValidFrameCount indicates the actual number of frames written.
    +
    TRUE to process normally; to process thru. See Remarks for additional information.
    + +

    Implementations of this function should not block, as the function is called from the realtime audio processing thread.

    All code that could cause a delay, such as format validation and memory allocation, should be put in the method, which is not called from the realtime audio processing thread.

    For in-place processing, the pInputProcessParameters parameter will not necessarily be the same as pOutputProcessParameters. Rather, their pBuffer members will point to the same memory.

    Multiple input and output buffers may be used with in-place XAPOs, though the input buffer count must equal the output buffer count. For in-place processing when multiple input and output buffers are used, the XAPO may assume the number of input buffers equals the number of output buffers.

    In addition to writing to the output buffer, as appropriate, an XAPO is responsible for setting the output stream's buffer flags and valid frame count.

    When IsEnabled is , the XAPO should not apply its normal processing to the given input/output buffers during. It should instead pass data from input to output with as little modification possible. Effects that perform format conversion should continue to do so. Effects must ensure transitions between normal and thru processing do not introduce discontinuities into the signal.

    When writing a Process method, it is important to note XAudio2 audio data is interleaved, which means data from each channel is adjacent for a particular sample number. For example, if there was a 4-channel wave playing into an XAudio2 source voice, the audio data would be a sample of channel 0, a sample of channel 1, a sample of channel 2, a sample of channel 3, and then the next sample of channels 0, 1, 2, 3, and so on.

    +
    + + microsoft.directx_sdk.ixapo.ixapo.process + void IXAPO::Process([In] unsigned int InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[In] unsigned int OutputProcessParameterCount,[In, Buffer] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[In] BOOL IsEnabled) + IXAPO::Process +
    + + + Returns the number of input frames required to generate the given number of output frames. + +
    The number of output frames desired.
    +

    Returns the number of input frames required.

    + +

    XAudio2 calls this method to determine what size input buffer an XAPO requires to generate + the given number of output frames. This method only needs to be called once while an XAPO is locked. + CalcInputFrames is only called by XAudio2 if the XAPO is locked.

    This function should not block, because it may be called from the realtime audio processing thread.

    +
    + + microsoft.directx_sdk.ixapo.ixapo.calcinputframes + unsigned int IXAPO::CalcInputFrames([In] unsigned int OutputFrameCount) + IXAPO::CalcInputFrames +
    + + + Returns the number of output frames that will be generated from a given number of input frames. + +
    The number of input frames.
    +

    Returns the number of output frames that will be produced.

    + +

    XAudio2 calls this method to determine how large of an output buffer an XAPO will require for a + certain number of input frames. CalcOutputFrames is only called by XAudio2 if the XAPO is locked.

    This function should not block, because it may be called from the realtime audio processing thread.

    +
    + + ee418450 + unsigned int IXAPO::CalcOutputFrames([In] unsigned int InputFrameCount) + IXAPO::CalcOutputFrames +
    + + + Queries if a specific input format is supported for a given output format. + + Output format. + Input format to check for being supported. + If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat) + + + + Queries if a specific output format is supported for a given input format. + + [in] Input format. + [in] Output format to check for being supported. + [out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat) + + + + Performs any effect-specific initialization. + + Effect-specific initialization parameters, may be NULL if DataByteSize is 0. + No documentation. + HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize) + + + + Resets variables dependent on frame history. + + void IXAPO::Reset() + + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization before {{Process}} is called on the realtime thread. + + Array of input structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements. + Array of output structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements. + No documentation. + HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters) + + + + Deallocates variables that were allocated with the {{LockForProcess}} method. + + void IXAPO::UnlockForProcess() + + + + Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers. + + [in] Input array of structures. + [in, out] Output array of structures. On input, the value of .ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of .ValidFrameCount indicates the actual number of frames written. + TRUE to process normally; FALSE to process thru. See Remarks for additional information. + void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled) + + + + Returns the number of input frames required to generate the given number of output frames. + + The number of output frames desired. + No documentation. + UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount) + + + + Returns the number of output frames that will be generated from a given number of input frames. + + The number of input frames. + No documentation. + UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount) + + + + Returns the registration properties of an XAPO. + + a structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure. + HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties) + + + + Retrieves the requested interface reference if the XAPO supports it. + + +

    XAPO instances are passed to XAudio2 as interfaces and XAudio2 uses QueryInterface to acquire an interface and to detect whether the XAPO implements the interface. Implementations of must accept requests for __uuidof() and if is implemented must also accept requests for __uuidof().

    +
    + + ee418445 + IXAPOParameters + IXAPOParameters +
    + + + Sets effect-specific parameters. + + Effect-specific parameter block. + void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize) + + + + Gets the current values for any effect-specific parameters. + + [in, out] Receives an effect-specific parameter block. + void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize) + + + + Retrieves the requested interface reference if the XAPO supports it. + + +

    XAPO instances are passed to XAudio2 as interfaces and XAudio2 uses QueryInterface to acquire an interface and to detect whether the XAPO implements the interface. Implementations of must accept requests for __uuidof() and if is implemented must also accept requests for __uuidof().

    +
    + + ee418445 + IXAPOParameters + IXAPOParameters +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + + Sets effect-specific parameters. + +
    Effect-specific parameter block.
    +
    Size of pParameters, in bytes.
    + +

    The data in pParameters is completely effect-specific and determined by the implementation of the function. The data passed to SetParameters can be used to set the state of the XAPO and control the behavior of the function.

    SetParameters can only be called on the real-time audio processing thread; no synchronization between SetParameters and the method is necessary. However, the method may be called from any thread as it adds in the required synchronization to deliver a copy (asynchronously) of the parameters to SetParameters on the real-time thread; no synchronization between and the method is necessary.

    +
    + + ee418447 + void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[In] unsigned int ParameterByteSize) + IXAPOParameters::SetParameters +
    + + + Gets the current values for any effect-specific parameters. + +
    [in, out] Receives an effect-specific parameter block.
    +
    [in] Size of pParameters, in bytes.
    + +

    The data in pParameters is completely effect-specific and determined by the implementation of the function. The data returned in pParameters can be used to provide information about the current state of the XAPO.

    Unlike SetParameters, XAudio2 does not call this method on the realtime audio processing thread. Thus, the XAPO must protect variables shared with or using appropriate synchronization. The CXAPOParametersBase class is an implementation of and its implementation of GetParameters efficiently handles this synchronization for the user.

    XAudio2 calls this method from the method.

    This method may block and should never be called from the realtime audio processing thread instead get the current parameters from CXAPOParametersBase::BeginProcess.

    +
    + + ee418443 + void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[In] unsigned int ParameterByteSize) + IXAPOParameters::GetParameters +
    + + + Defines stream buffer parameters that may change from one call to the next. Used with theProcessmethod. + + +

    Although the format and maximum size values of a particular stream buffer are constant, as defined by the XAPO_LOCKFORPROCESS_PARAMETERS structure, the actual memory address of the stream buffer is permitted to change. For constant-bit-rate (CBR) XAPOs, ValidFrameCount is constant and is always equal to the corresponding XAPO_LOCKFORPROCESS_PARAMETERS.MaxFrameCount for this buffer.

    Note
    Only constant-bit-rate XAPOs are currently supported.
    +
    + + ee419209 + XAPO_PROCESS_BUFFER_PARAMETERS + XAPO_PROCESS_BUFFER_PARAMETERS +
    + + + No documentation. + + + void* pBuffer + void pBuffer + + + + No documentation. + + + XAPO_BUFFER_FLAGS BufferFlags + XAPO_BUFFER_FLAGS BufferFlags + + + + No documentation. + + + unsigned int ValidFrameCount + unsigned int ValidFrameCount + + + + No documentation. + + + XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS + XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS + + + + No documentation. + + + const WAVEFORMATEX* pFormat + WAVEFORMATEX pFormat + + + + No documentation. + + + unsigned int MaxFrameCount + unsigned int MaxFrameCount + + + + Gets or sets the waveformat. + + The format. + + + + Describes general characteristics of an XAPO. Used withIXAPO::GetRegistrationPropertiesandCXAPOBase::CXAPOBase. + + + microsoft.directx_sdk.xapo.xapo_registration_properties + XAPO_REGISTRATION_PROPERTIES + XAPO_REGISTRATION_PROPERTIES + + + + No documentation. + + + GUID clsid + GUID clsid + + + + No documentation. + + + wchar_t FriendlyName[256] + wchar_t FriendlyName + + + + No documentation. + + + wchar_t CopyrightInfo[256] + wchar_t CopyrightInfo + + + + No documentation. + + + unsigned int MajorVersion + unsigned int MajorVersion + + + + No documentation. + + + unsigned int MinorVersion + unsigned int MinorVersion + + + + No documentation. + + + XAPO_PROPERTY_TYPE Flags + XAPO_PROPERTY_TYPE Flags + + + + No documentation. + + + unsigned int MinInputBufferCount + unsigned int MinInputBufferCount + + + + No documentation. + + + unsigned int MaxInputBufferCount + unsigned int MaxInputBufferCount + + + + No documentation. + + + unsigned int MinOutputBufferCount + unsigned int MinOutputBufferCount + + + + No documentation. + + + unsigned int MaxOutputBufferCount + unsigned int MaxOutputBufferCount + + + + The namespace provides a managed XAudio2 API. + + hh405049 + XAudio2 + XAudio2 + + + + Internal VoiceCallback callback Impl + + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + + The namespace provides a managed X3DAudio API. + + ee415714 + X3DAudio + X3DAudio + + + + Base AudioProcessor class that implements methods from . This class is + also providing its parameter through a generic. + + type of the parameter for this AudioProcessor + + + + Queries if a specific input format is supported for a given output format. + + Output format. + Input format to check for being supported. + If not NULL, and the input format is not supported for the given output format, ppSupportedInputFormat returns a pointer to the closest input format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat) + + + + Queries if a specific output format is supported for a given input format. + + [in] Input format. + [in] Output format to check for being supported. + [out] If not NULL and the output format is not supported for the given input format, ppSupportedOutputFormat returns a pointer to the closest output format that is supported. Use {{XAPOFree}} to free the returned structure. + No documentation. + HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat) + + + + Performs any effect-specific initialization. + + Effect-specific initialization parameters, may be NULL if DataByteSize is 0. + No documentation. + HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize) + + + + Resets variables dependent on frame history. + + void IXAPO::Reset() + + + + Called by XAudio2 to lock the input and output configurations of an XAPO allowing it to + do any final initialization before {{Process}} is called on the realtime thread. + + Array of input structures.pInputLockedParameters may be NULL if InputLockedParameterCount is 0, otherwise itmust have InputLockedParameterCount elements. + Array of output structures.pOutputLockedParameters may be NULL if OutputLockedParameterCount is 0, otherwise itmust have OutputLockedParameterCount elements. + No documentation. + HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters) + + + + Deallocates variables that were allocated with the {{LockForProcess}} method. + + void IXAPO::UnlockForProcess() + + + + Runs the XAPO's digital signal processing (DSP) code on the given input and output buffers. + + [in] Input array of structures. + [in, out] Output array of structures. On input, the value of .ValidFrameCount indicates the number of frames that the XAPO should write to the output buffer. On output, the value of .ValidFrameCount indicates the actual number of frames written. + TRUE to process normally; FALSE to process thru. See Remarks for additional information. + void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled) + + + + Returns the number of input frames required to generate the given number of output frames. + + The number of output frames desired. + No documentation. + UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount) + + + + Returns the number of output frames that will be generated from a given number of input frames. + + The number of input frames. + No documentation. + UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount) + + + + Sets effect-specific parameters. + + Effect-specific parameter block. + void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize) + + + + Gets the current values for any effect-specific parameters. + + [in, out] Receives an effect-specific parameter block. + void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize) + + + + Return parameters + + + + + Gets the input format locked. + + The input format locked. + + + + Gets the output format locked. + + The output format locked. + + + + Gets the max frame count locked. + + The max frame count locked. + + + + Returns the registration properties of an XAPO. + + a structure containing theregistration properties the XAPO was created with; use XAPOFree to free thestructure. + HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties) + + + + Implements this class to call an existing unmanaged AudioProcessor which supports parameter. + + the parameter type of this AudioProcessor + + + + Initializes a new instance of the class. + + The base PTR. + + + + Update the Native Poinder. Rebuild ParameterProviderNative. + + + + + Get or Set the parameters for this AudioProcessor + + + + + Internal AudioProcessorShadow + + IXAPO GUID + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + HRESULT IXAPO::GetRegistrationProperties([Out] XAPO_REGISTRATION_PROPERTIES** ppRegistrationProperties) + + + HRESULT IXAPO::IsInputFormatSupported([None] const WAVEFORMATEX* pOutputFormat,[None] const WAVEFORMATEX* pRequestedInputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedInputFormat) + + + HRESULT IXAPO::IsOutputFormatSupported([None] const WAVEFORMATEX* pInputFormat,[None] const WAVEFORMATEX* pRequestedOutputFormat,[Out, Optional] WAVEFORMATEX** ppSupportedOutputFormat) + + + HRESULT IXAPO::Initialize([In, Buffer, Optional] const void* pData,[None] UINT32 DataByteSize) + + + void IXAPO::Reset() + + + HRESULT IXAPO::LockForProcess([None] UINT32 InputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pInputLockedParameters,[None] UINT32 OutputLockedParameterCount,[In, Buffer, Optional] const XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS* pOutputLockedParameters) + + + + Deallocates variables that were allocated with the {{LockForProcess}} method. + + void IXAPO::UnlockForProcess() + + + void IXAPO::Process([None] UINT32 InputProcessParameterCount,[In, Buffer, Optional] const XAPO_PROCESS_BUFFER_PARAMETERS* pInputProcessParameters,[None] UINT32 OutputProcessParameterCount,[InOut, Buffer, Optional] XAPO_PROCESS_BUFFER_PARAMETERS* pOutputProcessParameters,[None] BOOL IsEnabled) + + + + Returns the number of input frames required to generate the given number of output frames. + + This pointer + The number of output frames desired. + No documentation. + UINT32 IXAPO::CalcInputFrames([None] UINT32 OutputFrameCount) + + + + Returns the number of output frames that will be generated from a given number of input frames. + + This Pointer + The number of input frames. + No documentation. + UINT32 IXAPO::CalcOutputFrames([None] UINT32 InputFrameCount) + + + + An Echo XAPO AudioProcessor + + + + + Initializes a new instance of the class. + + + + + A Equalizer XAPO AudioProcessor + + + + + Initializes a new instance of the class. + + + + + A MateringLimiter XAPO AudioProcessor + + + + + Initializes a new instance of the class. + + + + + A Reverb XAPO AudioProcessor + + + + + Initializes a new instance of the class. + + + + + Internal AudioProcessorShadow + + IXAPOParameters + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + + Sets effect-specific parameters. + + This pointer + Effect-specific parameter block. + size of the parameters + void IXAPOParameters::SetParameters([In, Buffer] const void* pParameters,[None] UINT32 ParameterByteSize) + + + + Gets the current values for any effect-specific parameters. + + This pointer + [in, out] Receives an effect-specific parameter block. + size of the parameters + void IXAPOParameters::GetParameters([Out, Buffer] void* pParameters,[None] UINT32 ParameterByteSize) + + + + A Reverb XAudio2 AudioProcessor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + + + A VolumeMeter XAudio2 AudioProcessor. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + +
    +
    diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/bin/WindowsPhone/x86/Debug/SharpDX.dll new file mode 100644 index 0000000000000000000000000000000000000000..de818881847d36de808255fe4bb96ba09a9ab04b GIT binary patch literal 496640 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%0AJw#5c%)oinLXu44vb=(Bo2K2yf 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 fJO6#2L2iFklK=1jE( + + + SharpDX + + + + + Represents a unit independant angle using a single-precision floating-point + internal representation. + + + + + Implement this interface to serialize datas with . + + + + + Reads or writes datas from/to the given binary serializer. + + The binary serializer. + + + + A value that specifies the size of a single degree. + + + + + A value that specifies the size of a single minute. + + + + + A value that specifies the size of a single second. + + + + + A value that specifies the size of a single radian. + + + + + A value that specifies the size of a single milliradian. + + + + + A value that specifies the size of a single gradian. + + + + + The internal representation of the angle. + + + + + Initializes a new instance of the SharpDX.AngleSingle structure with the + given unit dependant angle and unit type. + + A unit dependant measure of the angle. + The type of unit the angle argument is. + + + + Initializes a new instance of the SharpDX.AngleSingle structure using the + arc length formula (θ = s/r). + + The measure of the arc. + The radius of the circle. + + + + Wraps this SharpDX.AngleSingle to be in the range [π, -π]. + + + + + Wraps this SharpDX.AngleSingle to be in the range [0, 2π). + + + + + Wraps the SharpDX.AngleSingle given in the value argument to be in the range [π, -π]. + + A SharpDX.AngleSingle to wrap. + The SharpDX.AngleSingle that is wrapped. + + + + Wraps the SharpDX.AngleSingle given in the value argument to be in the range [0, 2π). + + A SharpDX.AngleSingle to wrap. + The SharpDX.AngleSingle that is wrapped. + + + + Compares two SharpDX.AngleSingle instances and returns the smaller angle. + + The first SharpDX.AngleSingle instance to compare. + The second SharpDX.AngleSingle instance to compare. + The smaller of the two given SharpDX.AngleSingle instances. + + + + Compares two SharpDX.AngleSingle instances and returns the greater angle. + + The first SharpDX.AngleSingle instance to compare. + The second SharpDX.AngleSingle instance to compare. + The greater of the two given SharpDX.AngleSingle instances. + + + + Adds two SharpDX.AngleSingle objects and returns the result. + + The first object to add. + The second object to add. + The value of the two objects added together. + + + + Subtracts two SharpDX.AngleSingle objects and returns the result. + + The first object to subtract. + The second object to subtract. + The value of the two objects subtracted. + + + + Multiplies two SharpDX.AngleSingle objects and returns the result. + + The first object to multiply. + The second object to multiply. + The value of the two objects multiplied together. + + + + Divides two SharpDX.AngleSingle objects and returns the result. + + The numerator object. + The denominator object. + The value of the two objects divided. + + + + Returns a System.Boolean that indicates whether the values of two SharpDX.Angle + objects are equal. + + The first object to compare. + The second object to compare. + True if the left and right parameters have the same value; otherwise, false. + + + + Returns a System.Boolean that indicates whether the values of two SharpDX.Angle + objects are not equal. + + The first object to compare. + The second object to compare. + True if the left and right parameters do not have the same value; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is less than another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is less than right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is greater than another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is greater than right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is less than or equal to another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is less than or equal to right; otherwise, false. + + + + Returns a System.Boolean that indicates whether a SharpDX.Angle + object is greater than or equal to another SharpDX.AngleSingle object. + + The first object to compare. + The second object to compare. + True if left is greater than or equal to right; otherwise, false. + + + + Returns the value of the SharpDX.AngleSingle operand. (The sign of + the operand is unchanged.) + + A SharpDX.AngleSingle object. + The value of the value parameter. + + + + Returns the the negated value of the SharpDX.AngleSingle operand. + + A SharpDX.AngleSingle object. + The negated value of the value parameter. + + + + Adds two SharpDX.AngleSingle objects and returns the result. + + The first object to add. + The second object to add. + The value of the two objects added together. + + + + Subtracts two SharpDX.AngleSingle objects and returns the result. + + The first object to subtract + The second object to subtract. + The value of the two objects subtracted. + + + + Multiplies two SharpDX.AngleSingle objects and returns the result. + + The first object to multiply. + The second object to multiply. + The value of the two objects multiplied together. + + + + Divides two SharpDX.AngleSingle objects and returns the result. + + The numerator object. + The denominator object. + The value of the two objects divided. + + + + Compares this instance to a specified object and returns an integer that + indicates whether the value of this instance is less than, equal to, or greater + than the value of the specified object. + + The object to compare. + + A signed integer that indicates the relationship of the current instance + to the obj parameter. If the value is less than zero, the current instance + is less than the other. If the value is zero, the current instance is equal + to the other. If the value is greater than zero, the current instance is + greater than the other. + + + + + Compares this instance to a second SharpDX.AngleSingle and returns + an integer that indicates whether the value of this instance is less than, + equal to, or greater than the value of the specified object. + + The object to compare. + + A signed integer that indicates the relationship of the current instance + to the obj parameter. If the value is less than zero, the current instance + is less than the other. If the value is zero, the current instance is equal + to the other. If the value is greater than zero, the current instance is + greater than the other. + + + + + Returns a value that indicates whether the current instance and a specified + SharpDX.AngleSingle object have the same value. + + The object to compare. + + Returns true if this SharpDX.AngleSingle object and another have the same value; + otherwise, false. + + + + + 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 a hash code for this SharpDX.AngleSingle instance. + + A 32-bit signed integer hash code. + + + + Returns a value that indicates whether the current instance and a specified + object have the same value. + + The object to compare. + + Returns true if the obj parameter is a SharpDX.AngleSingle object or a type + capable of implicit conversion to a SharpDX.AngleSingle value, and + its value is equal to the value of the current SharpDX.Angle + object; otherwise, false. + + + + + + + + Gets or sets the total number of revolutions this SharpDX.AngleSingle represents. + + + + + Gets or sets the total number of degrees this SharpDX.AngleSingle represents. + + + + + Gets or sets the minutes component of the degrees this SharpDX.AngleSingle represents. + When setting the minutes, if the value is in the range (-60, 60) the whole degrees are + not changed; otherwise, the whole degrees may be changed. Fractional values may set + the seconds component. + + + + + Gets or sets the seconds of the degrees this SharpDX.AngleSingle represents. + When setting te seconds, if the value is in the range (-60, 60) the whole minutes + or whole degrees are not changed; otherwise, the whole minutes or whole degrees + may be changed. + + + + + Gets or sets the total number of radians this SharpDX.AngleSingle represents. + + + + + Gets or sets the total number of milliradians this SharpDX.AngleSingle represents. + One milliradian is equal to 1/(2000π). + + + + + Gets or sets the total number of gradians this SharpDX.AngleSingle represents. + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a right angle (i.e. 90° or π/2). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a straight angle (i.e. 180° or π). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a full rotation angle (i.e. 360° or 2π). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an oblique angle (i.e. is not 90° or a multiple of 90°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an acute angle (i.e. less than 90° but greater than 0°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is an obtuse angle (i.e. greater than 90° but less than 180°). + + + + + Gets a System.Boolean that determines whether this SharpDX.Angle + is a reflex angle (i.e. greater than 180° but less than 360°). + + + + + Gets a SharpDX.AngleSingle instance that complements this angle (i.e. the two angles add to 90°). + + + + + Gets a SharpDX.AngleSingle instance that supplements this angle (i.e. the two angles add to 180°). + + + + + Gets a new SharpDX.AngleSingle instance that represents the zero angle (i.e. 0°). + + + + + Gets a new SharpDX.AngleSingle instance that represents the right angle (i.e. 90° or π/2). + + + + + Gets a new SharpDX.AngleSingle instance that represents the straight angle (i.e. 180° or π). + + + + + Gets a new SharpDX.AngleSingle instance that represents the full rotation angle (i.e. 360° or 2π). + + + + + A boolean value stored on 4 bytes (instead of 1 in .NET). + + + + + Initializes a new instance of the class. + + if set to true [bool value]. + + + + Indicates whether this instance and a specified object are equal. + + The other. + true if and this instance are the same type and represent the same value; otherwise, false. + + + + Implements the ==. + + The left. + The right. + The result of the operator. + + + + Implements the !=. + + The left. + The right. + The result of the operator. + + + + 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. + + + + + + + Represents an axis-aligned bounding box in three dimensional space. + + + + + The minimum point of the box. + + + + + The maximum point of the box. + + + + + Initializes a new instance of the struct. + + The minimum vertex of the bounding box. + The maximum vertex of the bounding box. + + + + Retrieves the eight corners of the bounding box. + + An array of points representing the eight corners of the bounding box. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines whether the current objects contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The box to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The sphere to test. + The type of containment the two objects have. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the box. + When the method completes, contains the newly constructed bounding box. + Thrown when is null. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the box. + The newly constructed bounding box. + Thrown when is null. + + + + Constructs a from a given sphere. + + The sphere that will designate the extents of the box. + When the method completes, contains the newly constructed bounding box. + + + + Constructs a from a given sphere. + + The sphere that will designate the extents of the box. + The newly constructed bounding box. + + + + Constructs a that is as large as the total combined area of the two specified boxes. + + The first box to merge. + The second box to merge. + When the method completes, contains the newly constructed bounding box. + + + + Constructs a that is as large as the total combined area of the two specified boxes. + + The first box to merge. + The second box to merge. + The newly constructed bounding box. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Defines a frustum which can be used in frustum culling, zoom to Extents (zoom to fit) operations, + (matrix, frustum, camera) interchange, and many kind of intersection testing. + + + + + Creates a new instance of BoundingFrustum. + + Combined matrix that usually takes view × projection matrix. + + + + 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. + + + + + 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. + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Returns one of the 6 planes related to this frustum. + + Plane index where 0 fro Left, 1 for Right, 2 for Top, 3 for Bottom, 4 for Near, 5 for Far + + + + + Creates a new frustum relaying on perspective camera parameters + + The camera pos. + The look dir. + Up dir. + The fov. + The znear. + The zfar. + The aspect. + The bouding frustum calculated from perspective camera + + + + Creates a new frustum relaying on perspective camera parameters + + The camera params. + The bouding frustum from camera params + + + + Returns the 8 corners of the frustum, element0 is Near1 (near right down corner) + , element1 is Near2 (near right top corner) + , element2 is Near3 (near Left top corner) + , element3 is Near4 (near Left down corner) + , element4 is Far1 (far right down corner) + , element5 is Far2 (far right top corner) + , element6 is Far3 (far left top corner) + , element7 is Far4 (far left down corner) + + The 8 corners of the frustum + + + + Extracts perspective camera parameters from the frustum, dosn't work with orthographic frustums. + + Perspective camera parameters from the frustum + + + + Checks whether a point lay inside, intersects or lay outside the frustum. + + The point. + Type of the containment + + + + Checks whether a point lay inside, intersects or lay outside the frustum. + + The point. + Type of the containment + + + + Checks whether a group of points lay totally inside the frustum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint). + + The points. + Type of the containment + + + + Checks whether a group of points lay totally inside the frsutrum (Contains), or lay partially inside the frustum (Intersects), or lay outside the frustum (Disjoint). + + The points. + Type of the containment. + + + + Determines the intersection relationship between the frustum and a bounding box. + + The box. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding box. + + The box. + Type of the containment. + + + + Determines the intersection relationship between the frustum and a bounding sphere. + + The sphere. + Type of the containment + + + + Determines the intersection relationship between the frustum and a bounding sphere. + + The sphere. + Type of the containment. + + + + Determines the intersection relationship between the frustum and another bounding frustum. + + The frustum. + Type of the containment + + + + Determines the intersection relationship between the frustum and another bounding frustum. + + The frustum. + Type of the containment. + + + + Checks whether the current BoundingFrustum intersects a BoundingSphere. + + The sphere. + Type of the containment + + + + Checks whether the current BoundingFrustum intersects a BoundingSphere. + + The sphere. + Set to true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects a BoundingBox. + + The box. + true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects a BoundingBox. + + The box. + true if the current BoundingFrustum intersects a BoundingSphere. + + + + Checks whether the current BoundingFrustum intersects the specified Plane. + + The plane. + Plane intersection type. + + + + Checks whether the current BoundingFrustum intersects the specified Plane. + + The plane. + Plane intersection type. + + + + Get the width of the frustum at specified depth. + + the depth at which to calculate frustum width. + With of the frustum at the specified depth + + + + Get the height of the frustum at specified depth. + + the depth at which to calculate frustum height. + Height of the frustum at the specified depth + + + + Checks whether the current BoundingFrustum intersects the specified Ray. + + The ray. + true if the current BoundingFrustum intersects the specified Ray. + + + + Checks whether the current BoundingFrustum intersects the specified Ray. + + The Ray to check for intersection with. + The distance at which the ray enters the frustum if there is an intersection and the ray starts outside the frustum. + The distance at which the ray exits the frustum if there is an intersection. + true if the current BoundingFrustum intersects the specified Ray. + + + + Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + if the returned value is poistive, the camera will move toward the lookat direction (ZoomIn). + if the returned value is negative, the camera will move in the revers direction of the lookat direction (ZoomOut). + + The points. + The zoom to fit distance + + + + Get the distance which when added to camera position along the lookat direction will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + if the returned value is poistive, the camera will move toward the lookat direction (ZoomIn). + if the returned value is negative, the camera will move in the revers direction of the lookat direction (ZoomOut). + + The bounding box. + The zoom to fit distance + + + + Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + + The points. + The zoom to fit vector + + + + Get the vector shift which when added to camera position will do the effect of zoom to extents (zoom to fit) operation, + so all the passed points will fit in the current view. + + The bounding box. + The zoom to fit vector + + + + + + + Gets or sets the Matrix that describes this bounding frustum. + + + + + Gets the near plane of the BoundingFrustum. + + + + + Gets the far plane of the BoundingFrustum. + + + + + Gets the left plane of the BoundingFrustum. + + + + + Gets the right plane of the BoundingFrustum. + + + + + Gets the top plane of the BoundingFrustum. + + + + + Gets the bottom plane of the BoundingFrustum. + + + + + Indicate whether the current BoundingFrustrum is Orthographic. + + + true if the current BoundingFrustrum is Orthographic; otherwise, false. + + + + + Represents a bounding sphere in three dimensional space. + + + + + The center of the sphere in three dimensional space. + + + + + The radious of the sphere. + + + + + Initializes a new instance of the struct. + + The center of the sphere in three dimensional space. + The radius of the sphere. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines whether the current objects contains a point. + + The point to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a triangle. + + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The box to test. + The type of containment the two objects have. + + + + Determines whether the current objects contains a . + + The sphere to test. + The type of containment the two objects have. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the sphere. + When the method completes, contains the newly constructed bounding sphere. + + + + Constructs a that fully contains the given points. + + The points that will be contained by the sphere. + The newly constructed bounding sphere. + + + + Constructs a from a given box. + + The box that will designate the extents of the sphere. + When the method completes, the newly constructed bounding sphere. + + + + Constructs a from a given box. + + The box that will designate the extents of the sphere. + The newly constructed bounding sphere. + + + + Constructs a that is the as large as the total combined area of the two specified spheres. + + The first sphere to merge. + The second sphere to merge. + When the method completes, contains the newly constructed bounding sphere. + + + + Constructs a that is the as large as the total combined area of the two specified spheres. + + The first sphere to merge. + The second sphere to merge. + The newly constructed bounding sphere. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Callback base implementation of . + + + + + Base class for a class. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + 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. + + + + Occurs when this instance is starting to be disposed. + + + + + Occurs when this instance is fully disposed. + + + + + Gets a value indicating whether this instance is disposed. + + + true if this instance is disposed; otherwise, false. + + + + + Use this interface to tag a class that is called by an unmanaged + object. A class must dispose the + on dispose. + + + + + Gets or sets the unmanaged shadow callback. + + The unmanaged shadow callback. + + This property is set whenever this instance has an unmanaged shadow callback + registered. This callback must be disposed when disposing this instance. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + An observable collection. + + Type of a collection item + + + + Raised when an item is added to this instance. + + + + + + Raised when a item is removed from this instance. + + + + + + An event providing the item changed in a collection (inserted or removed). + + Type of a collection item + + + + Initializes a new instance of the class. + + The item from the collection. + + + + Gets the item from the collection that was inserted or removed. + + The collection item. + + + + Defines the viewport dimensions using float coordinates for (X,Y,Width,Height). + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Width dimension of the viewport. + + + + + Height dimension of the viewport. + + + + + Gets or sets the minimum depth of the clip volume. + + + + + Gets or sets the maximum depth of the clip volume. + + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + The minimum depth of the clip volume. + The maximum depth of the clip volume. + + + + Initializes a new instance of the struct. + + A bounding box that defines the location and size of the viewport in a render target. + + + + Retrieves a string representation of this object. + + A that represents this instance. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + Vector3. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + Vector3. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Gets the size of this resource. + + The bounds. + + + + Gets the aspect ratio used by the viewport + + The aspect ratio. + + + + A fast method to pass array of to SharpDX methods. + + + + + Initializes a new instance of the class. + + The array. + + + + Initializes a new instance of the class. + + The size. + + + + Gets an object at the specified index. + + The index. + A + + + + Sets an object at the specified index. + + The index. + The value. + + + + + + + Gets the pointer to the native array associated to this instance. + + + + + Gets the length. + + + + + A typed version of + + Type of the + + + + Initializes a new instance of the class. + + The array. + + + + Initializes a new instance of the class. + + The size. + + + + Gets or sets the with the specified i. + + + + + Generic class to hold a shader compilation results. + + Type of the class containing the generated bytecode. + + + + Initializes a new instance of the class. + + The bytecode. + Result code from compilation. + The message. + + + + + + + Gets the Shader bytecode. + + + + + Gets the result code from the compilation. + + + + + Gets a value indicating whether this instance has errors. + + + true if this instance has errors; otherwise, false. + + + + + Gets the message. + + + Message are warning or error messages. + + + + + Represents a four dimensional mathematical vector of bool (32 bits per bool value). + + + + + The size of the type, in bytes. + + + + + A with all of its components set to false. + + + + + The X unit (true, 0, 0, 0). + + + + + The Y unit (0, true, 0, 0). + + + + + The Z unit (0, 0, true, 0). + + + + + The W unit (0, 0, 0, true). + + + + + A with all of its components set to true. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + 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. + + + + + 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. + + + + + 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. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The assembly is the core assembly providing infrastructure for all managed DirectX API. + + + + + Represents a 32-bit color (4 bytes) in the form of RGBA (in byte order: R, G, B, A). + + + List of predefined . + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue compoennts of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + The values to assign to the alpha, red, green, and blue components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a three component color. + + A three component color containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color in RGBA order. + + + + Gets the brightness. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the hue. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the saturation. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colorss. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colorss. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchange). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Zero color. + + + + + Transparent color. + + + + + AliceBlue color. + + + + + AntiqueWhite color. + + + + + Aqua color. + + + + + Aquamarine color. + + + + + Azure color. + + + + + Beige color. + + + + + Bisque color. + + + + + Black color. + + + + + BlanchedAlmond color. + + + + + Blue color. + + + + + BlueViolet color. + + + + + Brown color. + + + + + BurlyWood color. + + + + + CadetBlue color. + + + + + Chartreuse color. + + + + + Chocolate color. + + + + + Coral color. + + + + + CornflowerBlue color. + + + + + Cornsilk color. + + + + + Crimson color. + + + + + Cyan color. + + + + + DarkBlue color. + + + + + DarkCyan color. + + + + + DarkGoldenrod color. + + + + + DarkGray color. + + + + + DarkGreen color. + + + + + DarkKhaki color. + + + + + DarkMagenta color. + + + + + DarkOliveGreen color. + + + + + DarkOrange color. + + + + + DarkOrchid color. + + + + + DarkRed color. + + + + + DarkSalmon color. + + + + + DarkSeaGreen color. + + + + + DarkSlateBlue color. + + + + + DarkSlateGray color. + + + + + DarkTurquoise color. + + + + + DarkViolet color. + + + + + DeepPink color. + + + + + DeepSkyBlue color. + + + + + DimGray color. + + + + + DodgerBlue color. + + + + + Firebrick color. + + + + + FloralWhite color. + + + + + ForestGreen color. + + + + + Fuchsia color. + + + + + Gainsboro color. + + + + + GhostWhite color. + + + + + Gold color. + + + + + Goldenrod color. + + + + + Gray color. + + + + + Green color. + + + + + GreenYellow color. + + + + + Honeydew color. + + + + + HotPink color. + + + + + IndianRed color. + + + + + Indigo color. + + + + + Ivory color. + + + + + Khaki color. + + + + + Lavender color. + + + + + LavenderBlush color. + + + + + LawnGreen color. + + + + + LemonChiffon color. + + + + + LightBlue color. + + + + + LightCoral color. + + + + + LightCyan color. + + + + + LightGoldenrodYellow color. + + + + + LightGray color. + + + + + LightGreen color. + + + + + LightPink color. + + + + + LightSalmon color. + + + + + LightSeaGreen color. + + + + + LightSkyBlue color. + + + + + LightSlateGray color. + + + + + LightSteelBlue color. + + + + + LightYellow color. + + + + + Lime color. + + + + + LimeGreen color. + + + + + Linen color. + + + + + Magenta color. + + + + + Maroon color. + + + + + MediumAquamarine color. + + + + + MediumBlue color. + + + + + MediumOrchid color. + + + + + MediumPurple color. + + + + + MediumSeaGreen color. + + + + + MediumSlateBlue color. + + + + + MediumSpringGreen color. + + + + + MediumTurquoise color. + + + + + MediumVioletRed color. + + + + + MidnightBlue color. + + + + + MintCream color. + + + + + MistyRose color. + + + + + Moccasin color. + + + + + NavajoWhite color. + + + + + Navy color. + + + + + OldLace color. + + + + + Olive color. + + + + + OliveDrab color. + + + + + Orange color. + + + + + OrangeRed color. + + + + + Orchid color. + + + + + PaleGoldenrod color. + + + + + PaleGreen color. + + + + + PaleTurquoise color. + + + + + PaleVioletRed color. + + + + + PapayaWhip color. + + + + + PeachPuff color. + + + + + Peru color. + + + + + Pink color. + + + + + Plum color. + + + + + PowderBlue color. + + + + + Purple color. + + + + + Red color. + + + + + RosyBrown color. + + + + + RoyalBlue color. + + + + + SaddleBrown color. + + + + + Salmon color. + + + + + SandyBrown color. + + + + + SeaGreen color. + + + + + SeaShell color. + + + + + Sienna color. + + + + + Silver color. + + + + + SkyBlue color. + + + + + SlateBlue color. + + + + + SlateGray color. + + + + + Snow color. + + + + + SpringGreen color. + + + + + SteelBlue color. + + + + + Tan color. + + + + + Teal color. + + + + + Thistle color. + + + + + Tomato color. + + + + + Turquoise color. + + + + + Violet color. + + + + + Wheat color. + + + + + White color. + + + + + WhiteSmoke color. + + + + + Yellow color. + + + + + YellowGreen color. + + + + + Gets or sets the component at the specified index. + + The value of the alpha, red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a 32-bit color (4 bytes) in the form of BGRA (in byte order: B, G, B, A). + + + + + The blue component of the color. + + + + + The green component of the color. + + + + + The red component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue compoennts of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in BGRA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in BGRA. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue, alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a three component color. + + A three component color containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color in BGRA order. + + + + Gets the brightness. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the hue. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Gets the saturation. + + The Hue-Saturation-Brightness (HSB) saturation for this + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed BGRA integer. + + A packed integer containing all four color components in BGRA order + A color. + + + + Converts the color from a packed RGBA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Converts the color from a packed RGBA integer. + + A packed integer containing all four color components in RGBA order + A color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colorss. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colorss. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchange). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Gets or sets the component at the specified index. + + The value of the alpha, red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Base interface for a component base. + + + + + Gets the name of this component. + + The name. + + + + A service registry is a that provides methods to register and unregister services. + + + + + Adds a service to this service provider. + + The type of service to add. + The instance of the service provider to add. + Service type cannot be null + Service is already registered + + + + Removes the object providing a specified service. + + The type of service. + + + + Occurs when a new service is added. + + + + + Occurs when when a service is removed. + + + + + Path utility methods. + + + + + Transform a path by replacing '/' by '\' and transforming relative '..' or current path '.' to an absolute path. See remarks. + + A path string + A normalized path. + + Unlike , this doesn't make a path absolute to the actual file system. + + + + + IInspectable used for a C# callback object exposed as WinRT Component. + + br205821 + IInspectable + IInspectable + + + + Internal IInspectable Callback + + + + + A COM Interface Callback + + + + + An Interface shadow callback + + + + + Root class for all Cpp interop object. + + + + + The native pointer + + + + + Default constructor. + + Pointer to Cpp Object + + + + Initializes a new instance of the class. + + + + + Performs an explicit conversion from to . + + The CPP object. + + The result of the conversion. + + + + + Initializes this instance with a pointer from a temporary object and set the pointer of the temporary + object to IntPtr.Zero. + + The instance to get the NativePointer. + + + + Initializes this instance with a pointer from a temporary object and set the pointer of the temporary + object to IntPtr.Zero. + + The instance to get the NativePointer. + + + + Method called when is going to be update. + + + + + Method called when the is updated. + + + + + Instantiate a ComObject from a native pointer. + + The ComObject class that will be returned + The native pointer to a com object. + An instance of T binded to the native pointer + + + + Get a pointer to the underlying Cpp Object + + + + + Initializes the specified shadow instance from a vtbl and a callback. + + The callback. + + + + Return the unmanaged pointer from a tuple and instances. + + The type of the callback. + The callback. + A pointer to the unamanaged C++ object of the callback + + + + Gets the callback. + + + + + Gets the VTBL associated with this shadow instance. + + + + + Default Constructor. + + number of methods to allocate in the VTBL + + + + Add a method supported by this interface. This method is typically called from inherited constructor. + + the managed delegate method + + + + Gets the pointer to the vtbl. + + + + + Return a pointer to the unamanged version of this callback. + + The callback. + A pointer to a shadow c++ callback + + + * [out] */ __RPC__out ULONG *iidCount, + * [size_is][size_is][out] */ __RPC__deref_out_ecount_full_opt(*iidCount) IID **iids) = 0; + + + HRESULT ID2D1InspectableProvider::SetComputeInfo([In] ID2D1ComputeInfo* computeInfo) + + + + Specify the size used for encoding length for array while using a , just before an array is encoded. + + + + + Use variable length 7Bit Encoding that will output from 1 byte to 5 byte depending on the range of length value. + + + + + Output a length as a byte. The length must not be greater than 255. + + + + + Output a length as an ushort. The length must not be greater than 65535. + + + + + Output a length as an int. The length must not be greater than 2^31 - 1. + + + + + The namespace contains a serialization API. + + + + + Flags used when serializing a value with a . + + + + + Normal serialize (not dynamic, not nullable). + + + + + Serialize a value as a dynamic value (the output stream will contain a magic-code for each encoded object). + + + + + Serialize a value that can be null. + + + + + A singleton string is a string that has a unique instance in memory, See remarks for usage scenarios. + + + This class should mostly be used internally for performance reasons, in scenarios where equals/hashcode + could be invoked frequently, and the set of strings is limited. Internally, + string is using the method and also is precaching the hashcode of the string. + + + + + Initializes a new instance of the struct. + + The text. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explcit conversion from to . + + The value. + The result of the conversion. + + + + A lighweight Component base class. + + + + + Occurs while this component is disposing and before it is disposed. + + + + + Gets or sets a value indicating whether the name of this instance is immutable. + + true if this instance is name immutable; otherwise, false. + + + + Initializes a new instance of the class with a mutable name. + + + + + Initializes a new instance of the class with an immutable name. + + The name. + + + + Gets the name of this component. + + The name. + + + + Gets or sets the tag associated to this object. + + The tag. + + + + Pointer to a native buffer with a specific size. + + + + + Gets an Empty Data Pointer. + + + + + Initializes a new instance of the struct. + + The pointer. + The size. + + + + Initializes a new instance of the struct. + + The pointer. + The size. + + + + Pointer to the buffer. + + + + + Size in bytes of the buffer. + + + + + Implements the ==. + + The left. + The right. + The result of the operator. + + + + Implements the !=. + + The left. + The right. + The result of the operator. + + + + The namespace contains design-time converters for all vectors structures. + + + + + The namespace contains classes to help to diagnostic of COM object lifecycles Dispose and Release methods. + + + + + The namespace contains enumerations and structures shared by , and assemblies. + + + + + A class to dispose instances and allocated unmanaged memory. + + + + + Disposes of object resources. + + If true, managed resources should be + disposed of in addition to unmanaged resources. + + + + Adds a object or a allocated using to the list of the objects to dispose. + + To dispose. + If toDispose argument is not IDisposable or a valid memory pointer allocated by + + + + Dispose a disposable object and set the reference to null. Removes this object from this instance.. + + Object to dispose. + + + + Removes a disposable object to the list of the objects to dispose. + + + To dispose. + + + + Gets the number of elements to dispose. + + The number of elements to dispose. + + + + Frustum camera parameters. + + + + + Position of the camera. + + + + + Looking at direction of the camera. + + + + + Up direction. + + + + + Field of view. + + + + + Z near distance. + + + + + Z far distance. + + + + + Aspect ratio. + + + + + Equality comparer using the identify of the object. + + Type of the parameter + + From http://stackoverflow.com/questions/8946790/how-to-use-an-objects-identity-as-key-for-dictionaryk-v. + + + + + Represents a three dimensional mathematical int vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0). + + + + + The Y unit (0, 1, 0). + + + + + The Z unit (0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchange). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The namespace contains helper classes in replacement of some classes in useful under Windows 8 Metro. + + + + + This enumeration defines constants that indicate the role that the system has assigned to an audio endpoint device. + + dd370842 + ERole + ERole + + + + Games, system notification sounds, and voice commands + + + + + Music, movies, narration, and live music recording. + + + + + Voice communications (talking to another person). + + + + + The namespace contains common structures and helper classes for audio/video processing. + + + + + Use this attribute to specify the id of a dynamic type with . + + + + + Initializes a new instance of the class. + + The id to register as a dynamic type. + + + + Initializes a new instance of the class. + + The id to register as a dynamic type. + + + + Gets the id. + + The id. + + + + Exceptions thrown when an invalid chunk is decoded. + + + + + Initializes a new instance of the class with a specified error message. + + The chunk id. + The expected chunk id. + + + + Gets the chunk id. + + The chunk id. + + + + Gets the expected chunk id. + + The expected chunk id. + + + + Serializer action. + + The value to read or write. + The serializer. + + + + This class provides serialization methods for types implementing the . + + + BinarySerializer is a basic binary serializer with the following features: +
      +
    • 10x times faster and smaller than default System Serialization and Xml Serialization.
    • +
    • Supports for all primitive types, array/List<T>/Dictionary of primitive types, custom data via (struct or class) and array/List/Dictionary of custom data.
    • +
    • Optimized binary format, data serialized to the strict minimum.
    • +
    • Should be compatible with Win8/WinRT, Desktop.
    • +
    • Not reflection based serializer, but fully compile time serializer.
    • +
    • Format could be readback from C/C++.
    • + +
    +
    +
    + + + Initializes a new instance of the class. + + The stream to read or write to. + The read or write mode. + + + + Initializes a new instance of the class. + + The stream to read or write to. + The read or write mode. + Default encoding used for strings. This parameter can be overriden later using Encoding property. + + + + Gets a tag value with the specified key. + + The tag key. + A tag value associated to a key + + + + Determines whether a tag with a specified key is already stored. + + The key. + true if a tag with a specified key is already stored; otherwise, false. + + + + Removes a tag with the specified key. + + The key. + + + + Sets a tag value with the specified key. + + The key. + The value. + + + + + Register a dynamic serializer for a particular type implementing the interface and having the . + + Type of the element to serialize. + + + + Register a dynamic serializer for a particular type implementing the interface. + + Type of the element to serialize. + The id to use for serializing T. + + + + Register a dynamic array serializer for a particular type implementing the interface. + + Type of the element in the array. + The id to use for serializing T[]. + + + + Register a dynamic List<T> serializer for a particular type implementing the interface. + + Type of the element in the List<T>. + The id to use for serializing List<T>. + + + + Register a dynamic serializer using an external action. + + Type of the element to serialize. + The id to use for serializing T. + The serializer. + + + + Begin to serialize a a new chunk. + + The chunk id. + If the chuck to read is not the expecting chunk. + + A Chunk is an identifiable portion of data that will serialized. Chunk are usefull to encapsulate a variable + data (and check for the presence of the chunk Id). Chunk are storing a 4 bytes identifier and the length of + the chunk before reading/writing actual datas. + + + + + Ends a chunk. + + If there EndChunk is called without a previous BeginChunk. + If the size of data read from the chunk is different from chunk size. + + + + Deserialize a data from the underlying stream. + + Type of the data to load. + An instance of the loaded data. + + + + Serializes the specified value to the underlying stream. + + Type of the data to save. + The value to save. + + + + Flush the underlying + + + + + Serializes a dynamic value that can be nullable. + + Known type of the value to serialize. The known type is not the runtime type that will be actually serialized. + The value to serialize based on its runtime type. + + + + Serializes a dynamic value. + + Known type of the value to serialize. The known type is not the runtime type that will be actually serialized. + The value to serialize based on its runtime type. + Type of serialization, see . + + + + Serializes a static value implementing the interface. + + Type of the data to serialize. + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a static value implementing the interface. Unlike , + this method doesn't allocate a new instance when reading but use the reference value. + + Type of the data to serialize. + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an enum value. + + Type of the enum to serialize. + The value to serialize + If type T is not an enum. + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of primitives using serialization methods implemented by this instance for each item in the array. + + Type of the primitive data to serialize. + An array of primitive value to serialize + The serializer to user to serialize the T values. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements in an array of primitives using serialization methods implemented by this instance for each item in the array. + + Type of the primitive data to serialize. + An array of primitive value to serialize + Count elements to serialize. See remarks. + The serializer to user to serialize the T values. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
    + Caution: Also unlike the plain array version, the count is not serialized. This method is usefull + when we want to serialize the count of an array separately from the array. +
    +
    + + + Serializes an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements in an array of static values that are implementing the interface. + + Type of the data to serialize. + An array of value to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
    + Caution: Also unlike the plain array version, the count is not serialized. This method is usefull + when we want to serialize the count of an array separately from the array. +
    +
    + + + Serializes an array of bytes. + + An array of bytes to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes an array of bytes. + + An array of bytes to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
    + Caution: Also unlike the plain array version, the count is not serialized. This method is usefull + when we want to serialize the count of an array separately from the array. +
    +
    + + + Serializes a list of static values that are implementing the interface. + + Type of the data to serialize. + A list of value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a list of primitive values using a specific serializer method from this instance. + + Type of the data to serialize. + A list of value to serialize + A method of this instance to serialize the primitive T type + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes count elements from a list of static values that are implementing the interface. + + Type of the data to serialize. + A list of value to serialize + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
    + Caution: Also unlike the plain array version, the count is not serialized. This method is usefull + when we want to serialize the count of an array separately from the array. +
    +
    + + + Serializes count elements from a list of primitive values using a specific serializer method from this instance. + + Type of the data to serialize. + A list of value to serialize + A method of this instance to serialize the primitive T type + Count elements to serialize. See remarks. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value.
    + Caution: Also unlike the plain array version, the count is not serialized. This method is usefull + when we want to serialize the count of an array separately from the array. +
    +
    + + + Serializes a dictionary of key/values that are both implementing the interface. + + Type of key to serialize. + Type of value to serialize. + A dictionary to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of key to serialize that is implementing the interface. + Type of primitive value with its associated serializer. + A dictionary to serialize + Serializer used for the TValue. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of primitive value with its associated serializer. + Type of value to serialize that is implementing the interface. + A dictionary to serialize + Serializer used for the TKey. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a dictionary of key/values. + + Type of primitive key with its associated serializer. + Type of primitive value with its associated serializer. + A dictionary to serialize + Serializer used for the TKey. + Serializer used for the TValue. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single string value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single string value. + + The value to serialize + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single string value. + + The value to serialize + Write a null byte at the end of the string. + Type of serialization, see . + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single fixed length string value. + + The value to serialize + Read/write a specific number of characters. + + Note that depending on the serialization , this method reads or writes the value. + This string is serialized with the current set on this instance. + + + + + Serializes a single boolean value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single byte value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single sbyte value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single short value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single ushort value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single int value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single int as a packed value (from 1 byte to 5 byte. if value < 128, then 1 byte...etc.) + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a memory region. + + The pointer to an unmanaged memory region. For read operation, this pointer must be allocated by the caller. + If the end of stream was reached before reading all the bytes. + Note that depending on the serialization , this method reads or writes the value. + This method doesn't serialize the sizeInBytes of the region, so the size must be serialized serparetely. + + + + + Serializes a memory region. + + The data pointer. For read operation, this pointer must be allocated by the caller. + The size in bytes. See remarks. + If the end of stream was reached before reading all the bytes. + Note that depending on the serialization , this method reads or writes the value. + This method doesn't serialize the sizeInBytes of the region, so the size must be serialized serparetely. + + + + + Serializes a single uint value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single long value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single ulong value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single char value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single float value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single double value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single DateTime value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Serializes a single Guid value. + + The value to serialize + + Note that depending on the serialization , this method reads or writes the value. + + + + + Underlying stream this instance is reading/writing to. + + + + + Reader used to directly read from the underlying stream. + + + + + Writer used to directly write to the underlying stream. + + + + + Gets or sets the serialization mode. + + The serialization mode. + + + + Gets or sets the encoding used to serialized strings. + + The encoding. + When setting a null encoding + + + + Enables to serialize an object only once using object reference. Default is false. + + true if [allow null]; otherwise, false. + If an invalid matching pair of true/false is detected. + + + + Serialization mode used by . + + + + + Reads the data from the stream. + + + + + Writes the data to the stream. + + + + + Shadow attribute used to associate a COM callbackable interface to its Shadow implementation. + + + + + Initializes a new instance of class. + + Type of the associated shadow + + + + Get ShadowAttribute from type. + + Type to get shadow attribute + The associated shadow attribute or null if no shadow attribute were found + + + + Gets the value. + + + + + Represents a 4x4 mathematical Matrix5x4. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The identity . + + + + + Value at row 1 column 1 of the Matrix5x4. + + + + + Value at row 1 column 2 of the Matrix5x4. + + + + + Value at row 1 column 3 of the Matrix5x4. + + + + + Value at row 1 column 4 of the Matrix5x4. + + + + + Value at row 2 column 1 of the Matrix5x4. + + + + + Value at row 2 column 2 of the Matrix5x4. + + + + + Value at row 2 column 3 of the Matrix5x4. + + + + + Value at row 2 column 4 of the Matrix5x4. + + + + + Value at row 3 column 1 of the Matrix5x4. + + + + + Value at row 3 column 2 of the Matrix5x4. + + + + + Value at row 3 column 3 of the Matrix5x4. + + + + + Value at row 3 column 4 of the Matrix5x4. + + + + + Value at row 4 column 1 of the Matrix5x4. + + + + + Value at row 4 column 2 of the Matrix5x4. + + + + + Value at row 4 column 3 of the Matrix5x4. + + + + + Value at row 4 column 4 of the Matrix5x4. + + + + + Value at row 5 column 1 of the Matrix5x4. + + + + + Value at row 5 column 2 of the Matrix5x4. + + + + + Value at row 5 column 3 of the Matrix5x4. + + + + + Value at row 5 column 4 of the Matrix5x4. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the Matrix5x4. + The value to assign at row 1 column 2 of the Matrix5x4. + The value to assign at row 1 column 3 of the Matrix5x4. + The value to assign at row 1 column 4 of the Matrix5x4. + The value to assign at row 2 column 1 of the Matrix5x4. + The value to assign at row 2 column 2 of the Matrix5x4. + The value to assign at row 2 column 3 of the Matrix5x4. + The value to assign at row 2 column 4 of the Matrix5x4. + The value to assign at row 3 column 1 of the Matrix5x4. + The value to assign at row 3 column 2 of the Matrix5x4. + The value to assign at row 3 column 3 of the Matrix5x4. + The value to assign at row 3 column 4 of the Matrix5x4. + The value to assign at row 4 column 1 of the Matrix5x4. + The value to assign at row 4 column 2 of the Matrix5x4. + The value to assign at row 4 column 3 of the Matrix5x4. + The value to assign at row 4 column 4 of the Matrix5x4. + The value to assign at row 5 column 1 of the Matrix5x4. + The value to assign at row 5 column 2 of the Matrix5x4. + The value to assign at row 5 column 3 of the Matrix5x4. + The value to assign at row 5 column 4 of the Matrix5x4. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the Matrix5x4. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Determines the sum of two matrices. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + The difference between the two matrices. + + + + Scales a Matrix5x4 by the given value. + + The Matrix5x4 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix5x4. + + + + Scales a Matrix5x4 by the given value. + + The Matrix5x4 to scale. + The amount by which to scale. + When the method completes, contains the scaled Matrix5x4. + + + + Negates a Matrix5x4. + + The Matrix5x4 to be negated. + When the method completes, contains the negated Matrix5x4. + + + + Negates a Matrix5x4. + + The Matrix5x4 to be negated. + The negated Matrix5x4. + + + + Performs a linear interpolation between two matricies. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matricies. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matricies. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matricies. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start Matrix5x4. + End Matrix5x4. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, y-axis and w-axis + + Scaling factor for all three axes. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that scales along the x-axis, y-axis, z-axis and w-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + Scaling factor that is applied along the w-axis. + The created scaling Matrix5x4. + + + + Creates a Matrix5x4 that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling Matrix5x4. + + + + Creates a Matrix5x4 that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + The offset for all three coordinate planes. + When the method completes, contains the created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + The offset for all three coordinate planes. + The created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + When the method completes, contains the created translation Matrix5x4. + + + + Creates a translation Matrix5x4 using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + W-coordinate offset. + The created translation Matrix5x4. + + + + Adds two matricies. + + The first Matrix5x4 to add. + The second Matrix5x4 to add. + The sum of the two matricies. + + + + Assert a Matrix5x4 (return it unchanged). + + The Matrix5x4 to assert (unchange). + The asserted (unchanged) Matrix5x4. + + + + Subtracts two matricies. + + The first Matrix5x4 to subtract. + The second Matrix5x4 to subtract. + The difference between the two matricies. + + + + Negates a Matrix5x4. + + The Matrix5x4 to negate. + The negated Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Scales a Matrix5x4 by a given value. + + The Matrix5x4 to scale. + The amount by which to scale. + The scaled Matrix5x4. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Gets or sets the first row in the Matrix5x4; that is M11, M12, M13, and M14. + + + + + Gets or sets the second row in the Matrix5x4; that is M21, M22, M23, and M24. + + + + + Gets or sets the third row in the Matrix5x4; that is M31, M32, M33, and M34. + + + + + Gets or sets the fourth row in the Matrix5x4; that is M41, M42, M43, and M44. + + + + + Gets or sets the fifth row in the Matrix5x4; that is M51, M52, M53, and M54. + + + + + Gets or sets the translation of the Matrix5x4; that is M41, M42, and M43. + + + + + Gets or sets the scale of the Matrix5x4; that is M11, M22, and M33. + + + + + Gets a value indicating whether this instance is an identity Matrix5x4. + + + true if this instance is an identity Matrix5x4; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the Matrix5x4 component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 15]. + + + + Gets or sets the component at the specified index. + + The value of the Matrix5x4 component, depending on the index. + The row of the Matrix5x4 to access. + The column of the Matrix5x4 to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + Descriptor used to provide detailed message for a particular . + + + + + Initializes a new instance of the class. + + The HRESULT error code. + The module (ex: SharpDX.Direct2D1). + The API code (ex: D2D1_ERR_...). + The description of the result code if any. + + + + 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. + + + + + 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. + + + + + + + + + + + Performs an implicit conversion from to . + + The result. + + The result of the conversion. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Registers a provider. + + Type of the descriptors provider. + + Providers are usually registered at module init when SharpDX assemblies are loaded. + + + + + Finds the specified result descriptor. + + The result code. + A descriptor for the specified result + + + + Gets the result. + + + + + Gets the module (ex: SharpDX.Direct2D1) + + + + + Gets the native API code (ex: D2D1_ERR_ ...) + + + + + Gets the API code (ex: DemiceRemoved ...) + + + + + Gets the description of the result code if any. + + + + + Structure using the same layout than . + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Width. + + + + + Height. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Structure using the same layout than . + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Width. + + + + + Height. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Structure using the same layout than . + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Left coordinate. + + + + + Top coordinate. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + Performs an implicit conversion from to . + + The input. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The input. + + The result of the conversion. + + + + + + + + Structure using the same layout than . + + + + + Initializes a new instance of the struct. + + The x. + The y. + + + + Left coordinate. + + + + + Top coordinate. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Structure using the same layout than + + + + + Initializes a new instance of the struct. + + The x-y position of this rectangle. + The x-y size of this rectangle. + + + + Initializes a new instance of the struct. + + The x. + The y. + The width. + The height. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + The Position. + + + + + The Size. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Left coordinate. + + + + + Top coordinate. + + + + + Width of this rectangle. + + + + + Height of this rectangle. + + + + + Structure using the same layout than + + + + + An empty drawing rectangle. + + + + + Initializes a new instance of the struct. + + The x. + The y. + The width. + The height. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Left coordinate. + + + + + Top coordinate. + + + + + Width of this rectangle. + + + + + Height of this rectangle. + + + + + 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. + + + + + + + + + + + Implements the operator ==. + + The left. + The right. + + The result of the operator. + + + + + Implements the operator !=. + + The left. + The right. + + The result of the operator. + + + + + + + + Windows File Helper. + + + + + Opens a binary file, reads the contents of the file into a byte array, and then closes the file. + + The file to open for reading. + A byte array containing the contents of the file. + + + + Opens a text file, reads all lines of the file, and then closes the file. + + The file to open for reading. + A string containing all lines of the file. + + + + Opens a text file, reads all lines of the file, and then closes the file. + + The file to open for reading. + A string containing all lines of the file. + + + + Gets the size of the file. + + The handle. + Size of the file. + + GetFileSizeEx + + + + Windows File Helper. + + + + + Initializes a new instance of the class. + + Name of the file. + The file mode. + The access mode. + The share mode. + + + + + + + + + + + + + + + + Reads a block of bytes from the stream and writes the data in a given buffer. + + When this method returns, contains the specified buffer with the values between offset and (offset + count - 1) replaced by the bytes read from the current source. + The byte offset in array at which the read bytes will be placed. + The maximum number of bytes to read. + array is null. + The total number of bytes read into the buffer. This might be less than the number of bytes requested if that number of bytes are not currently available, or zero if the end of the stream is reached. + + + + + + + Writes a block of bytes to this stream using data from a buffer. + + The buffer containing data to write to the stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + + + + + + + + + + + + + + + + Native File access flags. + + + + + Read access. + + + + + Write access. + + + + + Read/Write Access, + + + + + Execute access. + + + + + All access + + + + + Native file attributes. + + + + + None attribute. + + + + + Read only attribute. + + + + + Hidden attribute. + + + + + System attribute. + + + + + Directory attribute. + + + + + Archive attribute. + + + + + Device attribute. + + + + + Normal attribute. + + + + + Temporary attribute. + + + + + Sparse file attribute. + + + + + ReparsePoint attribute. + + + + + Compressed attribute. + + + + + Offline attribute. + + + + + Not content indexed attribute. + + + + + Encrypted attribute. + + + + + Write through attribute. + + + + + Overlapped attribute. + + + + + No buffering attribute. + + + + + Random access attribute. + + + + + Sequential scan attribute. + + + + + Delete on close attribute. + + + + + Backup semantics attribute. + + + + + Post semantics attribute. + + + + + Open reparse point attribute. + + + + + Open no recall attribute. + + + + + First pipe instance attribute. + + + + + Native file creation disposition. + + + + + Creates a new file. The function fails if a specified file exists. + + + + + Creates a new file, always. + If a file exists, the function overwrites the file, clears the existing attributes, combines the specified file attributes, + and flags with FILE_ATTRIBUTE_ARCHIVE, but does not set the security descriptor that the SECURITY_ATTRIBUTES structure specifies. + + + + + Opens a file. The function fails if the file does not exist. + + + + + Opens a file, always. + If a file does not exist, the function creates a file as if dwCreationDisposition is CREATE_NEW. + + + + + Opens a file and truncates it so that its size is 0 (zero) bytes. The function fails if the file does not exist. + The calling process must open the file with the GENERIC_WRITE access right. + + + + + Native file share. + + + + + None flag. + + + + + Enables subsequent open operations on an object to request read access. + Otherwise, other processes cannot open the object if they request read access. + If this flag is not specified, but the object has been opened for read access, the function fails. + + + + + Enables subsequent open operations on an object to request write access. + Otherwise, other processes cannot open the object if they request write access. + If this flag is not specified, but the object has been opened for write access, the function fails. + + + + + Read and Write flags. + + + + + Enables subsequent open operations on an object to request delete access. + Otherwise, other processes cannot open the object if they request delete access. + If this flag is not specified, but the object has been opened for delete access, the function fails. + + + + + Direct2D Matrix3x2 3x2. Use and implicit cast to . + + + + + Gets the identity matrix. + + The identity matrix. + + + + Element (1,1) + + + + + Element (1,2) + + + + + Element (2,1) + + + + + Element (2,2) + + + + + Element (3,1) + + + + + Element (3,2) + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the matrix. + The value to assign at row 1 column 2 of the matrix. + The value to assign at row 2 column 1 of the matrix. + The value to assign at row 2 column 2 of the matrix. + The value to assign at row 3 column 1 of the matrix. + The value to assign at row 3 column 2 of the matrix. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the matrix. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Creates an array containing the elements of the matrix. + + A sixteen-element array containing the components of the matrix. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + When the method completes, contains the quotient of the two matrices. + + + + Negates a matrix. + + The matrix to be negated. + When the method completes, contains the negated matrix. + + + + Negates a matrix. + + The matrix to be negated. + The negated matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The created scaling matrix. + + + + Creates a matrix that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling matrix. + + + + Creates a matrix that is scaling from a specified center. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The center of the scaling. + The created scaling matrix. + + + + Creates a matrix that is scaling from a specified center. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + The center of the scaling. + The created scaling matrix. + + + + Calculates the determinant of this matrix. + + Result of the determinant. + + + + Creates a matrix that rotates. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis. + The created rotation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + The created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + The created translation matrix. + + + + Transforms a vector by this matrix. + + The matrix to use as a tranformation matrix. + The original vector to apply the transformation. + The result of the transformation for the input vector. + + + + Transforms a vector by this matrix. + + The matrix to use as a tranformation matrix. + The original vector to apply the transformation. + The result of the transformation for the input vector. + + + + + Adds two matricies. + + The first matrix to add. + The second matrix to add. + The sum of the two matricies. + + + + Assert a matrix (return it unchanged). + + The matrix to assert (unchange). + The asserted (unchanged) matrix. + + + + Subtracts two matricies. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matricies. + + + + Negates a matrix. + + The matrix to negate. + The negated matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Multiplies two matricies. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matricies. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Divides two matricies. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matricies. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Performs an implicit conversion from to . + + The matrix. + The result of the conversion. + + + + Gets or sets the first row in the matrix; that is M11, M12. + + + + + Gets or sets the second row in the matrix; that is M21, M22. + + + + + Gets or sets the third row in the matrix; that is M31, M32. + + + + + Gets or sets the first column in the matrix; that is M11, M21, M31. + + + + + Gets or sets the second column in the matrix; that is M12, M22, M32, and M42. + + + + + Gets or sets the translation of the matrix; that is M41, M42. + + + + + Gets or sets the scale of the matrix; that is M11, M22. + + + + + Gets a value indicating whether this instance is an identity matrix. + + + true if this instance is an identity matrix; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 5]. + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The row of the matrix to access. + The column of the matrix to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + The ShadowContainer is the main container used internally to keep references to all native COM/C++ callbacks. + It is stored in the property . + + + + + Contains static methods to help in determining intersections, containment, etc. + + + + + Determines the closest point between a point and a triangle. + + The point to test. + The first vertex to test. + The second vertex to test. + The third vertex to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + The plane to test. + The point to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + The box to test. + The point to test. + When the method completes, contains the closest point between the two objects. + + + + Determines the closest point between a and a point. + + + The point to test. + When the method completes, contains the closest point between the two objects; + or, if the point is directly in the center of the sphere, contains . + + + + Determines the closest point between a and a . + + The first sphere to test. + The second sphere to test. + When the method completes, contains the closest point between the two objects; + or, if the point is directly in the center of the sphere, contains . + + If the two spheres are overlapping, but not directly ontop of each other, the closest point + is the 'closest' point of intersection. This can also be considered is the deepest point of + intersection. + + + + + Determines the distance between a and a point. + + The plane to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a point. + + The box to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a . + + The first box to test. + The second box to test. + The distance between the two objects. + + + + Determines the distance between a and a point. + + The sphere to test. + The point to test. + The distance between the two objects. + + + + Determines the distance between a and a . + + The first sphere to test. + The second sphere to test. + The distance between the two objects. + + + + Determines whether there is an intersection between a and a point. + + The ray to test. + The point to test. + Whether the two objects intersect. + + + + Determines whether there is an intersection between a and a . + + The first ray to test. + The second ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersect. + + This method performs a ray vs ray intersection test based on the following formula + from Goldman. + s = det([o_2 - o_1, d_2, d_1 x d_2]) / ||d_1 x d_2||^2 + t = det([o_2 - o_1, d_1, d_1 x d_2]) / ||d_1 x d_2||^2 + Where o_1 is the position of the first ray, o_2 is the position of the second ray, + d_1 is the normalized direction of the first ray, d_2 is the normalized direction + of the second ray, det denotes the determinant of a matrix, x denotes the cross + product, [ ] denotes a matrix, and || || denotes the length or magnitude of a vector. + + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The plane to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersect. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The plane to test + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a triangle. + + The ray to test. + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + This method tests if the ray intersects either the front or back of the triangle. + If the ray is parallel to the triangle's plane, no intersection is assumed to have + happened. If the intersection of the ray and the triangle is behind the origin of + the ray, no intersection is assumed to have happened. In both cases of assumptions, + this method returns false. + + + + + Determines whether there is an intersection between a and a triangle. + + The ray to test. + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The box to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The box to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The sphere to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The ray to test. + The sphere to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a point. + + The plane to test. + The point to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first plane to test. + The second plane to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first plane to test. + The second plane to test. + When the method completes, contains the line of intersection + as a , or a zero ray if there was no intersection. + Whether the two objects intersected. + + Although a ray is set to have an origin, the ray returned by this method is really + a line in three dimensions which has no real origin. The ray is considered valid when + both the positive direction is used and when the negative direction is used. + + + + + Determines whether there is an intersection between a and a triangle. + + The plane to test. + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The plane to test. + The box to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The plane to test. + The sphere to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The first box to test. + The second box to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + The box to test. + The sphere to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a triangle. + + The sphere to test. + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines whether there is an intersection between a and a . + + First sphere to test. + Second sphere to test. + Whether the two objects intersected. + + + + Determines whether a contains a point. + + The box to test. + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The first box to test. + The second box to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The box to test. + The sphere to test. + The type of containment the two objects have. + + + + Determines whether a contains a point. + + The sphere to test. + The point to test. + The type of containment the two objects have. + + + + Determines whether a contains a triangle. + + The sphere to test. + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The sphere to test. + The box to test. + The type of containment the two objects have. + + + + Determines whether a contains a . + + The first sphere to test. + The second sphere to test. + The type of containment the two objects have. + + + + Represents a color in the form of rgb. + + + + + The Black color (0, 0, 0). + + + + + The White color (1, 1, 1, 1). + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue components of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all three color components in RGB order. + The alpha component is ignored. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, and blue components of the color. This must be an array with three elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Converts the color into a packed integer. + + A packed integer containing all three color components. + The alpha channel is set to 255. + + + + Converts the color into a packed integer. + + A packed integer containing all three color components. + The alpha channel is set to 255. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Creates an array containing the elements of the color. + + A three-element array containing the components of the color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colorss. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colorss. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchange). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Gets or sets the component at the specified index. + + The value of the red, green, or blue component, depending on the index. + The index of the component to access. Use 0 for the red component, 1 for the green component, and 2 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 2]. + + + + Represents a color in the form of rgba. + + + + + The Black color (0, 0, 0, 1). + + + + + The White color (1, 1, 1, 1). + + + + + The red component of the color. + + + + + The green component of the color. + + + + + The blue component of the color. + + + + + The alpha component of the color. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The red component of the color. + The green component of the color. + The blue component of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + The red, green, blue, and alpha components of the color. + + + + Initializes a new instance of the struct. + + The red, green, and blue compoennts of the color. + The alpha component of the color. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + A packed integer containing all four color components in RGBA order. + + + + Initializes a new instance of the struct. + + The values to assign to the red, green, blue, and alpha components of the color. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Initializes a new instance of the struct. + + used to initialize the color. + + + + Initializes a new instance of the struct. + + used to initialize the color. + The alpha component of the color. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a packed integer. + + A packed integer containing all four color components. + + + + Converts the color into a three component vector. + + A three component vector containing the red, green, and blue components of the color. + + + + Converts the color into a four component vector. + + A four component vector containing all four color components. + + + + Creates an array containing the elements of the color. + + A four-element array containing the components of the color. + + + + Adds two colors. + + The first color to add. + The second color to add. + When the method completes, completes the sum of the two colors. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + WHen the method completes, contains the difference of the two colors. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract + The difference of the two colors. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + When the method completes, contains the modulated color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + When the method completes, contains the scaled color. + + + + Scales a color. + + The color to scale. + The amount by which to scale. + The scaled color. + + + + Negates a color. + + The color to negate. + When the method completes, contains the negated color. + + + + Negates a color. + + The color to negate. + The negated color. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two colors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two colors. + + + + Performs a cubic interpolation between two colors. + + Start color. + End color. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two colors. + + + + Returns a color containing the smallest components of the specified colorss. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the largest components of the source colorss. + + + + Returns a color containing the largest components of the specified colorss. + + The first source color. + The second source color. + A color containing the largest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + When the method completes, contains an new color composed of the smallest components of the source colors. + + + + Returns a color containing the smallest components of the specified colors. + + The first source color. + The second source color. + A color containing the smallest components of the source colors. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + When the method completes, contains the adjusted color. + + + + Adjusts the contrast of a color. + + The color whose contrast is to be adjusted. + The amount by which to adjust the contrast. + The adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + When the method completes, contains the adjusted color. + + + + Adjusts the saturation of a color. + + The color whose saturation is to be adjusted. + The amount by which to adjust the saturation. + The adjusted color. + + + + Adds two colors. + + The first color to add. + The second color to add. + The sum of the two colors. + + + + Assert a color (return it unchanged). + + The color to assert (unchange). + The asserted (unchanged) color. + + + + Subtracts two colors. + + The first color to subtract. + The second color to subtract. + The difference of the two colors. + + + + Negates a color. + + The color to negate. + A negated color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Scales a color. + + The factor by which to scale the color. + The color to scale. + The scaled color. + + + + Modulates two colors. + + The first color to modulate. + The second color to modulate. + The modulated color. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Gets or sets the component at the specified index. + + The value of the red, green, blue, and alpha components, depending on the index. + The index of the component to access. Use 0 for the alpha component, 1 for the red component, 2 for the green component, and 3 for the blue component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Gets or sets the unmanaged callback. + + The unmanaged callback. + + This property is set whenever this instance has an unmanaged callback + registered. This callback must be disposed when disposing this instance. + + + + + Root IUnknown class to interop with COM object + + + + + Base interface for Component Object Model (COM). + + + + + Queries the supported COM interface on this instance. + + The guid of the interface. + The output COM object reference. + If successfull, + + + + Increments the reference count for an interface on this instance. + + The method returns the new reference count. + + + + Decrements the reference count for an interface on this instance. + + The method returns the new reference count. + + + + Initializes a new instance of the class. + + Pointer to Cpp Object + + + + Initializes a new instance of the class from a IUnknown object. + + Reference to a IUnknown object + + + + Initializes a new instance of the class. + + + + + Query this instance for a particular COM GUID/interface support. + + GUID query interface + output object associated with this GUID, IntPtr.Zero in interface is not supported + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query instance for a particular COM GUID/interface support. + + GUID query interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query this instance for a particular COM interface support. + + The type of the COM interface to query + An instance of the queried interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query this instance for a particular COM interface support. + + The type of the COM interface to query + An instance of the queried interface + If this object doesn't support the interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support (This method is a shortcut to ) + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Queries a managed object for a particular COM interface support (This method is a shortcut to ) + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Safely dispose a referencem if not null, and set it to null after dispose. + + The type of COM interface to dispose + Object to dispose + + The reference will be set to null after dispose. + + + + + Queries a managed object for a particular COM interface support. + + The type of the COM interface to query + The managed COM object. + An instance of the queried interface + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Query Interface for a particular interface support. + + An instance of the queried interface or null if it is not supported + + ms682521 + IUnknown::QueryInterface + IUnknown::QueryInterface + + + + Performs an explicit conversion from to . + + The native pointer. + + The result of the conversion. + + + + + Query Interface for a particular interface support and attach to the given instance. + + + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + ms682317 + IUnknown::Release + IUnknown::Release + + + + Base class for unmanaged callabackable Com object. + + + + + Initializes a new instance of the class. + + Pointer to Cpp Object + + + + Initializes a new instance of the class. + + + + + Implements but it cannot not be set. + This is only used to support for interop with unmanaged callback. + + + + + A compilation exception. + + + + + The base class for errors that occur in SharpDX. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The result code that caused this exception. + + + + Initializes a new instance of the class. + + The result descriptor. + + + + Initializes a new instance of the class. + + The error result code. + The message describing the exception. + + + + Initializes a new instance of the class. + + The error result code. + The message describing the exception. + formatting arguments + + + + Initializes a new instance of the class. + + The message describing the exception. + formatting arguments + + + + Initializes a new instance of the class. + + The message describing the exception. + The exception that caused this exception. + formatting arguments + + + + Gets the Result code for the exception. This value indicates + the specific type of failure that occured within SharpDX. + + + + + Gets the Result code for the exception. This value indicates + the specific type of failure that occured within SharpDX. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new instance of the class. + + The error code. + The message. + + + + A disposable component base class. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with an immutable name. + + The name. + + + + Releases unmanaged and - optionally - managed resources + + + + + Disposes of object resources. + + If true, managed resources should be + disposed of in addition to unmanaged resources. + + + + Adds a disposable object to the list of the objects to dispose. + + To dispose. + + + + Dispose a disposable object and set the reference to null. Removes this object from the ToDispose list. + + Object to dispose. + + + + Removes a disposable object to the list of the objects to dispose. + + + To dispose. + + + + Gets or sets the disposables. + + The disposables. + + + + Gets or sets a value indicating whether this instance is attached to a collector. + + + true if this instance is attached to a collector; otherwise, false. + + + + + Gets a value indicating whether this instance is disposed. + + + true if this instance is disposed; otherwise, false. + + + + + Occurs when when Dispose is called. + + + + + Global configuration. + + + + + Enables or disables object tracking. Default is disabled (false). + + + Object Tracking is used to track COM object lifecycle creation/dispose. When this option is enabled + objects can be tracked using . Using Object tracking has a significant + impact on performance and should be used only while debugging. + + + + + Enables or disables release of ComObject on finalizer. Default is disabled (false). + + + + + Throws a when a shader or effect compilation error occured. Default is enabled (true). + + + + + Provides access to data organized in 3D. + + + + + Initializes a new instance of the struct. + + The datapointer. + The row pitch. + The slice pitch. + + + + Initializes a new instance of the struct. + + The data pointer. + + + + Pointer to the data. + + + + + Gets the number of bytes per row. + + + + + Gets the number of bytes per slice (for a 3D texture, a slice is a 2D image) + + + + + Provides access to data organized in 2D. + + + + + Initializes a new instance of the class. + + The data pointer. + The pitch. + + + + Pointer to the data. + + + + + Gets the number of bytes per row. + + + + + Provides a stream interface to a buffer located in unmanaged memory. + + + + + Initializes a new instance of the class from a Blob buffer. + + The buffer. + + + + Initializes a new instance of the class, using a managed buffer as a backing store. + + + A managed array to be used as a backing store. + true if reading from the buffer should be allowed; otherwise, false. + true if writing to the buffer should be allowed; otherwise, false. + Index inside the buffer in terms of element count (not size in bytes). + True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true. + + + + + Initializes a new instance of the class, and allocates a new buffer to use as a backing store. + + The size of the buffer to be allocated, in bytes. + + true if reading from the buffer should be allowed; otherwise, false. + + true if writing to the buffer should be allowed; otherwise, false. + + + + Initializes a new instance of the class, using an unmanaged buffer as a backing store. + + A pointer to the buffer to be used as a backing store. + The size of the buffer provided, in bytes. + + true if reading from the buffer should be allowed; otherwise, false. + + true if writing to the buffer should be allowed; otherwise, false. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Not supported. + + Always thrown. + + + + Reads a single value from the current stream and advances the current + position within this stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the value to be read from the stream. + The value that was read. + This stream does not support reading. + + + + Reads a float. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a float from the stream + + + + Reads a int. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an int from the stream + + + + Reads a short. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an short from the stream + + + + Reads a bool. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an bool from the stream + + + + Reads a Vector2. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector2 from the stream + + + + Reads a Vector3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector3 from the stream + + + + Reads a Vector4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Vector4 from the stream + + + + Reads a Color3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Color3 from the stream + + + + Reads a Color4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Color4 from the stream + + + + Reads a Half. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half from the stream + + + + Reads a Half2. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half2 from the stream + + + + Reads a Half3. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half3 from the stream + + + + Reads a Half4. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + an Half4 from the stream + + + + Reads a Matrix. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a Matrix from the stream + + + + Reads a Quaternion. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + a Quaternion from the stream + + + + + + + Reads a sequence of bytes from the current stream and advances the position + within the stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be read from the stream. + 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 number of bytes read from the stream. + This stream does not support reading. + + + + Reads a sequence of bytes from the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Reads an array of values from the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the values to be read from the stream. + An array of values that was read from the current stream. + + + + Reads a sequence of elements from the current stream into a target buffer and + advances the position within the stream by the number of bytes read. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be read from the stream. + The zero-based byte offset in buffer at which to begin storing + the data read from the current stream. + The number of values to be read from the current stream. + The number of bytes read from the stream. + This stream does not support reading. + + + + Sets the position within the current stream. + + Attempted to seek outside of the bounds of the stream. + + + + Not supported. + + Always ignored. + Always thrown. + + + + Writes a single value to the stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the value to be written to the stream. + The value to write to the stream. + The stream does not support writing. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes the specified value. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The value. + + + + Writes a sequence of bytes to the current stream and advances the current + position within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of bytes. This method copies count bytes from buffer to the current stream. + The zero-based byte offset in buffer at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + This stream does not support writing. + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + + + Writes an array of values to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + An array of values to be written to the current stream. + This stream does not support writing. + + + + Writes a range of bytes to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + A pointer to the location to start copying from. + The number of bytes to copy from source to the current stream. + This stream does not support writing. + + + + Writes an array of values to the current stream, and advances the current position + within this stream by the number of bytes written. + + + In order to provide faster read/write, this operation doesn't check stream bound. + A client must carefully not read/write above the size of this datastream. + + The type of the values to be written to the stream. + An array of values to be written to the stream. + The zero-based offset in data at which to begin copying values to the current stream. + The number of values to be written to the current stream. If this is zero, + all of the contents will be written. + This stream does not support writing. + + + + Performs an explicit conversion from to . + + The from value. + The result of the conversion. + + + + Gets a value indicating whether the current stream supports reading. + + + true if the stream supports reading; otherwise, false. + + + + Gets a value indicating whether the current stream supports seeking. + + Always true. + + + + Gets a value indicating whether the current stream supports writing. + + + true if the stream supports writing; otherwise, false. + + + + Gets the internal pointer to the current stream's backing store. + + An IntPtr to the buffer being used as a backing store. + + + + Gets the length in bytes of the stream. + + A long value representing the length of the stream in bytes. + + + + Gets or sets the position within the current stream. + + The current position within the stream. + Stream Class + + + + Gets the position pointer. + + The position pointer. + + + + Gets the length of the remaining. + + The length of the remaining. + + + + Provides methods to perform fast read/write random access data on a buffer located in an unmanaged memory. + + + This class doesn't validate the position read/write from. It is the responsability of the client of this class + to verify that access is done within the size of the buffer. + + + + + Creates the specified user buffer. + + Type of the buffer. + The buffer to use as a DataBuffer. + Index inside the buffer in terms of element count (not size in bytes). + True to keep the managed buffer and pin it, false will allocate unmanaged memory and make a copy of it. Default is true. + An instance of a DataBuffer + + + + Initializes a new instance of the class, and allocates a new buffer to use as a backing store. + + The size of the buffer to be allocated, in bytes. + + is less than 1. + + + + Initializes a new instance of the class, using an unmanaged buffer as a backing store. + + A pointer to the buffer to be used as a backing store. + The size of the buffer provided, in bytes. + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Clears the buffer. + + + + + Gets a single value from the current buffer at the specified position. + + Relative position in bytes from the beginning of the buffer to get the data from. + The type of the value to be read from the buffer. + The value that was read. + + + + Gets a float. + + Relative position in bytes from the beginning of the buffer to get the data from. + a float from the buffer + + + + Gets a int. + + Relative position in bytes from the beginning of the buffer to get the data from. + an int from the buffer + + + + Gets a short. + + Relative position in bytes from the beginning of the buffer to get the data from. + an short from the buffer + + + + Gets a bool. + + Relative position in bytes from the beginning of the buffer to get the data from. + an bool from the buffer + + + + Gets a Vector2. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector2 from the buffer + + + + Gets a Vector3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector3 from the buffer + + + + Gets a Vector4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Vector4 from the buffer + + + + Gets a Color3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Color3 from the buffer + + + + Gets a Color4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Color4 from the buffer + + + + Gets a Half. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half from the buffer + + + + Gets a Half2. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half2 from the buffer + + + + Gets a Half3. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half3 from the buffer + + + + Gets a Half4. + + Relative position in bytes from the beginning of the buffer to get the data from. + an Half4 from the buffer + + + + Gets a Matrix. + + Relative position in bytes from the beginning of the buffer to get the data from. + a Matrix from the buffer + + + + Gets a Quaternion. + + Relative position in bytes from the beginning of the buffer to get the data from. + a Quaternion from the buffer + + + + Gets an array of values from a position in the buffer. + + Relative position in bytes from the beginning of the buffer to get the data from. + number of T instance to get from the positionInBytes + The type of the values to be read from the buffer. + An array of values that was read from the current buffer. + + + + Gets a sequence of elements from a position in the buffer into a target buffer. + + Relative position in bytes from the beginning of the buffer to get the data from. + An array of values to be read from the buffer. + The zero-based byte offset in buffer at which to begin storing + the data read from the current buffer. + The number of values to be read from the current buffer. + + + + Sets a single value to the buffer at a specified position. + + The type of the value to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + The value to write to the buffer. + + + + Sets a single value to the buffer at a specified position. + + The type of the value to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + The value to write to the buffer. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets the specified value. + + Relative position in bytes from the beginning of the buffer to set the data to. + The value. + + + + Sets an array of values to a specified position into the buffer. + + Relative position in bytes from the beginning of the buffer to set the data to. + An array of values to be written to the current buffer. + + + + Sets a range of data to a specified position into the buffer. + + Relative position in bytes from the beginning of the buffer to set the data to. + A pointer to the location to start copying from. + The number of bytes to copy from source to the current buffer. + + + + Sets an array of values to a specified position into the buffer. + + The type of the values to be written to the buffer. + Relative position in bytes from the beginning of the buffer to set the data to. + An array of values to be written to the buffer. + The zero-based offset in data at which to begin copying values to the current buffer. + The number of values to be written to the current buffer. If this is zero, + all of the contents will be written. + + + + Performs an explicit conversion from to . + + The from value. + The result of the conversion. + + + + Gets a pointer to the buffer used as a backing store.. + + An IntPtr to the buffer being used as a backing store. + + + + Gets the length in bytes of the buffer. + + A long value representing the length of the buffer in bytes. + + + + Contains information about a tracked COM object. + + + + + Initializes a new instance of the class. + + The creation time. + The com object to track. + The stack trace. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the time the object was created. + + The creation time. + + + + Gets a weak reference to the tracked object. + + The weak reference to the tracked object. + + + + Gets a value indicating whether the tracked object is alive. + + true if tracked object is alive; otherwise, false. + + + + Track all allocated objects. + + + + + Tracks the specified COM object. + + The COM object. + + + + Finds a list of object reference from a specified COM object pointer. + + The COM object pointer. + A list of object reference + + + + Finds the object reference for a specific COM object. + + The COM object. + An object reference + + + + Untracks the specified COM object. + + The COM object. + + + + Reports all COM object that are active and not yet disposed. + + + + + Reports all COM object that are active and not yet disposed. + + + + + Describes the type of angle. + + + + + Specifies an angle measurement in revolutions. + + + + + Specifies an angle measurement in degrees. + + + + + Specifies an angle measurement in radians. + + + + + Specifies an angle measurement in gradians. + + + + + Describes how one bounding volume contains another. + + + + + The two bounding volumes don't intersect at all. + + + + + One bounding volume completely contains another. + + + + + The two bounding volumes overlap. + + + + + Describes the result of an intersection with a plane in three dimensions. + + + + + The object is behind the plane. + + + + + The object is in front of the plane. + + + + + The object is intersecting the plane. + + + + + FunctionCallback + + + + + 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 hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + 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. + + + + + 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. + + + + +

    Values that identify the indended use of a constant-data buffer.

    +
    + +

    -typed values are specified in the uFlags member of the D3D11_SHADER_BUFFER_DESC structure.

    +
    + + ff728729 + D3D_SHADER_CBUFFER_FLAGS + D3D_SHADER_CBUFFER_FLAGS +
    + + +

    Bind the constant buffer to an input slot defined in HLSL code (instead of letting the compiler choose the input slot).

    +
    + + ff728729 + D3D_CBF_USERPACKED + D3D_CBF_USERPACKED +
    + + + None. + + + None + None + + + +

    Values that identify the intended use of constant-buffer data.

    +
    + + ff728722 + D3D_CBUFFER_TYPE + D3D_CBUFFER_TYPE +
    + + +

    A buffer containing scalar constants.

    +
    + + ff728722 + D3D_CT_CBUFFER + D3D_CT_CBUFFER +
    + + +

    A buffer containing texture data.

    +
    + + ff728722 + D3D_CT_TBUFFER + D3D_CT_TBUFFER +
    + + +

    A buffer containing interface references.

    +
    + + ff728722 + D3D_CT_INTERFACE_POINTERS + D3D_CT_INTERFACE_POINTERS +
    + + +

    A buffer containing binding information.

    +
    + + ff728722 + D3D_CT_RESOURCE_BIND_INFO + D3D_CT_RESOURCE_BIND_INFO +
    + + +

    Driver type options.

    +
    + +

    The driver type is required when calling or D3D11CreateDeviceAndSwapChain.

    +
    + + ff476328 + D3D_DRIVER_TYPE + D3D_DRIVER_TYPE +
    + + +

    The driver type is unknown.

    +
    + + ff476328 + D3D_DRIVER_TYPE_UNKNOWN + D3D_DRIVER_TYPE_UNKNOWN +
    + + +

    A hardware driver, which implements Direct3D features in hardware. This is the primary driver that you should use in your Direct3D applications because it provides the best performance. A hardware driver uses hardware acceleration (on supported hardware) but can also use software for parts of the pipeline that are not supported in hardware. This driver type is often referred to as a hardware abstraction layer or HAL.

    +
    + + ff476328 + D3D_DRIVER_TYPE_HARDWARE + D3D_DRIVER_TYPE_HARDWARE +
    + + +

    A reference driver, which is a software implementation that supports every Direct3D feature. A reference driver is designed for accuracy rather than speed and as a result is slow but accurate. The rasterizer portion of the driver does make use of special CPU instructions whenever it can, but it is not intended for retail applications; use it only for feature testing, demonstration of functionality, debugging, or verifying bugs in other drivers. This driver is installed by the DirectX SDK. This driver may be referred to as a REF driver, a reference driver or a reference rasterizer.

    +
    + + ff476328 + D3D_DRIVER_TYPE_REFERENCE + D3D_DRIVER_TYPE_REFERENCE +
    + + +

    A null driver, which is a reference driver without render capability. This driver is commonly used for debugging non-rendering API calls, it is not appropriate for retail applications. This driver is installed by the DirectX SDK.

    +
    + + ff476328 + D3D_DRIVER_TYPE_NULL + D3D_DRIVER_TYPE_NULL +
    + + +

    A software driver, which is a driver implemented completely in software. The software implementation is not intended for a high-performance application due to its very slow performance.

    +
    + + ff476328 + D3D_DRIVER_TYPE_SOFTWARE + D3D_DRIVER_TYPE_SOFTWARE +
    + + +

    A WARP driver, which is a high-performance software rasterizer. The rasterizer supports feature levels 9_1 through level 10.1 with a high performance software implementation. For information about limitations creating a WARP device on certain feature levels, see Limitations Creating WARP and Reference Devices. For more information about using a WARP driver, see Windows Advanced Rasterization Platform (WARP) In-Depth Guide.

    +
    + + ff476328 + D3D_DRIVER_TYPE_WARP + D3D_DRIVER_TYPE_WARP +
    + + +

    Describes the set of features targeted by a Direct3D device.

    +
    + +

    For an overview of the capabilities of each feature level, see Overview For Each Feature Level.

    For information about limitations creating nonhardware-type devices on certain feature levels, see Limitations Creating WARP and Reference Devices.

    +
    + + ff476329 + D3D_FEATURE_LEVEL + D3D_FEATURE_LEVEL +
    + + +

    Targets features supported by feature level 9.1 including shader model 2.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_9_1 + D3D_FEATURE_LEVEL_9_1 +
    + + +

    Targets features supported by feature level 9.2 including shader model 2.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_9_2 + D3D_FEATURE_LEVEL_9_2 +
    + + +

    Targets features supported by feature level 9.3 including shader model 2.0b.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_9_3 + D3D_FEATURE_LEVEL_9_3 +
    + + +

    Targets features supported by Direct3D 10.0 including shader model 4.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_10_0 + D3D_FEATURE_LEVEL_10_0 +
    + + +

    Targets features supported by Direct3D 10.1 including shader model 4.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_10_1 + D3D_FEATURE_LEVEL_10_1 +
    + + +

    Targets features supported by Direct3D 11.0 including shader model 5.

    +
    + + ff476329 + D3D_FEATURE_LEVEL_11_0 + D3D_FEATURE_LEVEL_11_0 +
    + + +

    Targets features supported by Direct3D 11.1 including Direct3D device sharing. Device sharing enables Direct3D 10 and Direct3D 11 APIs to use one underlying rendering device. For more information about device sharing, see .

    +
    + + ff476329 + D3D_FEATURE_LEVEL_11_1 + D3D_FEATURE_LEVEL_11_1 +
    + + +

    Values that indicate the location of a shader #include file.

    +
    + +

    You pass a -typed value to the IncludeType parameter in a call to the method to indicate the location of the #include file.

    +
    + + ff728723 + D3D_INCLUDE_TYPE + D3D_INCLUDE_TYPE +
    + + +

    The local directory.

    +
    + + ff728723 + D3D_INCLUDE_LOCAL + D3D_INCLUDE_LOCAL +
    + + +

    The system directory.

    +
    + + ff728723 + D3D_INCLUDE_SYSTEM + D3D_INCLUDE_SYSTEM +
    + + +

    Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.

    +
    + +

    Use the method and a value from to bind a primitive topology to the input-assembler stage. Use the method to retrieve the primitive topology for the input-assembler stage.

    The following diagram shows the various primitive types for a geometry shader object.

    +
    + + ff728726 + D3D_PRIMITIVE + D3D_PRIMITIVE +
    + + + No documentation. + + + D3D_PRIMITIVE_UNDEFINED + D3D_PRIMITIVE_UNDEFINED + + + + No documentation. + + + D3D_PRIMITIVE_POINT + D3D_PRIMITIVE_POINT + + + + No documentation. + + + D3D_PRIMITIVE_LINE + D3D_PRIMITIVE_LINE + + + + No documentation. + + + D3D_PRIMITIVE_TRIANGLE + D3D_PRIMITIVE_TRIANGLE + + + + No documentation. + + + D3D_PRIMITIVE_LINE_ADJ + D3D_PRIMITIVE_LINE_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_TRIANGLE_ADJ + D3D_PRIMITIVE_TRIANGLE_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_1_CONTROL_POINT_PATCH + D3D_PRIMITIVE_1_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_2_CONTROL_POINT_PATCH + D3D_PRIMITIVE_2_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_3_CONTROL_POINT_PATCH + D3D_PRIMITIVE_3_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_4_CONTROL_POINT_PATCH + D3D_PRIMITIVE_4_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_5_CONTROL_POINT_PATCH + D3D_PRIMITIVE_5_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_6_CONTROL_POINT_PATCH + D3D_PRIMITIVE_6_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_7_CONTROL_POINT_PATCH + D3D_PRIMITIVE_7_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_8_CONTROL_POINT_PATCH + D3D_PRIMITIVE_8_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_9_CONTROL_POINT_PATCH + D3D_PRIMITIVE_9_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_10_CONTROL_POINT_PATCH + D3D_PRIMITIVE_10_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_11_CONTROL_POINT_PATCH + D3D_PRIMITIVE_11_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_12_CONTROL_POINT_PATCH + D3D_PRIMITIVE_12_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_13_CONTROL_POINT_PATCH + D3D_PRIMITIVE_13_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_14_CONTROL_POINT_PATCH + D3D_PRIMITIVE_14_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_15_CONTROL_POINT_PATCH + D3D_PRIMITIVE_15_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_16_CONTROL_POINT_PATCH + D3D_PRIMITIVE_16_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_17_CONTROL_POINT_PATCH + D3D_PRIMITIVE_17_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_18_CONTROL_POINT_PATCH + D3D_PRIMITIVE_18_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_19_CONTROL_POINT_PATCH + D3D_PRIMITIVE_19_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_20_CONTROL_POINT_PATCH + D3D_PRIMITIVE_20_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_21_CONTROL_POINT_PATCH + D3D_PRIMITIVE_21_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_22_CONTROL_POINT_PATCH + D3D_PRIMITIVE_22_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_23_CONTROL_POINT_PATCH + D3D_PRIMITIVE_23_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_24_CONTROL_POINT_PATCH + D3D_PRIMITIVE_24_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_25_CONTROL_POINT_PATCH + D3D_PRIMITIVE_25_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_26_CONTROL_POINT_PATCH + D3D_PRIMITIVE_26_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_27_CONTROL_POINT_PATCH + D3D_PRIMITIVE_27_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_28_CONTROL_POINT_PATCH + D3D_PRIMITIVE_28_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_29_CONTROL_POINT_PATCH + D3D_PRIMITIVE_29_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_30_CONTROL_POINT_PATCH + D3D_PRIMITIVE_30_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_31_CONTROL_POINT_PATCH + D3D_PRIMITIVE_31_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_PRIMITIVE_32_CONTROL_POINT_PATCH + D3D_PRIMITIVE_32_CONTROL_POINT_PATCH + + + + No documentation. + + + D3D_MIN_PRECISION + D3D_MIN_PRECISION + + + + No documentation. + + + D3D_MIN_PRECISION_DEFAULT + D3D_MIN_PRECISION_DEFAULT + + + + No documentation. + + + D3D_MIN_PRECISION_FLOAT_16 + D3D_MIN_PRECISION_FLOAT_16 + + + + No documentation. + + + D3D_MIN_PRECISION_FLOAT_2_8 + D3D_MIN_PRECISION_FLOAT_2_8 + + + + No documentation. + + + D3D_MIN_PRECISION_RESERVED + D3D_MIN_PRECISION_RESERVED + + + + No documentation. + + + D3D_MIN_PRECISION_SINT_16 + D3D_MIN_PRECISION_SINT_16 + + + + No documentation. + + + D3D_MIN_PRECISION_UINT_16 + D3D_MIN_PRECISION_UINT_16 + + + + No documentation. + + + D3D_MIN_PRECISION_ANY_16 + D3D_MIN_PRECISION_ANY_16 + + + + No documentation. + + + D3D_MIN_PRECISION_ANY_10 + D3D_MIN_PRECISION_ANY_10 + + + +

    Values that indicate how the pipeline interprets vertex data that is bound to the input-assembler stage. These primitive topology values determine how the vertex data is rendered on screen.

    +
    + +

    Use the method and a value from to bind a primitive topology to the input-assembler stage. Use the method to retrieve the primitive topology for the input-assembler stage.

    The following diagram shows the various primitive types for a geometry shader object.

    +
    + + ff728726 + D3D_PRIMITIVE_TOPOLOGY + D3D_PRIMITIVE_TOPOLOGY +
    + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_UNDEFINED + D3D_PRIMITIVE_TOPOLOGY_UNDEFINED + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_POINTLIST + D3D_PRIMITIVE_TOPOLOGY_POINTLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_LINELIST + D3D_PRIMITIVE_TOPOLOGY_LINELIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ + D3D_PRIMITIVE_TOPOLOGY_LINELIST_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ + D3D_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ + D3D_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ + D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST + + + + No documentation. + + + D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST + D3D_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST + + + +

    Values that identify the data types that can be stored in a register.

    +
    + +

    A register component type is specified in the ComponentType member of the D3D11_SIGNATURE_PARAMETER_DESC structure.

    +
    + + ff728727 + D3D_REGISTER_COMPONENT_TYPE + D3D_REGISTER_COMPONENT_TYPE +
    + + +

    The data type is unknown.

    +
    + + ff728727 + D3D_REGISTER_COMPONENT_UNKNOWN + D3D_REGISTER_COMPONENT_UNKNOWN +
    + + +

    32-bit unsigned integer.

    +
    + + ff728727 + D3D_REGISTER_COMPONENT_UINT32 + D3D_REGISTER_COMPONENT_UINT32 +
    + + +

    32-bit signed integer.

    +
    + + ff728727 + D3D_REGISTER_COMPONENT_SINT32 + D3D_REGISTER_COMPONENT_SINT32 +
    + + +

    32-bit floating-point number.

    +
    + + ff728727 + D3D_REGISTER_COMPONENT_FLOAT32 + D3D_REGISTER_COMPONENT_FLOAT32 +
    + + +

    Values that identify the return type of a resource.

    +
    + +

    A resource return type is specified in the ReturnType member of the D3D11_SHADER_INPUT_BIND_DESC structure.

    +
    + + ff728728 + D3D_RESOURCE_RETURN_TYPE + D3D_RESOURCE_RETURN_TYPE +
    + + +

    Return type is an unsigned integer value normalized to a value between 0 and 1.

    +
    + + ff728728 + D3D_RETURN_TYPE_UNORM + D3D_RETURN_TYPE_UNORM +
    + + +

    Return type is a signed integer value normalized to a value between -1 and 1.

    +
    + + ff728728 + D3D_RETURN_TYPE_SNORM + D3D_RETURN_TYPE_SNORM +
    + + +

    Return type is a signed integer.

    +
    + + ff728728 + D3D_RETURN_TYPE_SINT + D3D_RETURN_TYPE_SINT +
    + + +

    Return type is an unsigned integer.

    +
    + + ff728728 + D3D_RETURN_TYPE_UINT + D3D_RETURN_TYPE_UINT +
    + + +

    Return type is a floating-point number.

    +
    + + ff728728 + D3D_RETURN_TYPE_FLOAT + D3D_RETURN_TYPE_FLOAT +
    + + +

    Return type is unknown.

    +
    + + ff728728 + D3D_RETURN_TYPE_MIXED + D3D_RETURN_TYPE_MIXED +
    + + +

    Return type is a double-precision value.

    +
    + + ff728728 + D3D_RETURN_TYPE_DOUBLE + D3D_RETURN_TYPE_DOUBLE +
    + + +

    Return type is a multiple-dword type, such as a double or uint64, and the component is continued from the previous component that was declared. The first component represents the lower bits.

    +
    + + ff728728 + D3D_RETURN_TYPE_CONTINUED + D3D_RETURN_TYPE_CONTINUED +
    + + +

    Values that identify shader-input options.

    +
    + +

    -typed values are specified in the uFlags member of the D3D11_SHADER_INPUT_BIND_DESC structure.

    +
    + + ff728730 + D3D_SHADER_INPUT_FLAGS + D3D_SHADER_INPUT_FLAGS +
    + + +

    Assign a shader input to a register based on the register assignment in the HLSL code (instead of letting the compiler choose the register).

    +
    + + ff728730 + D3D_SIF_USERPACKED + D3D_SIF_USERPACKED +
    + + +

    Use a comparison sampler, which uses the SampleCmp (DirectX HLSL Texture Object) and SampleCmpLevelZero (DirectX HLSL Texture Object) sampling functions.

    +
    + + ff728730 + D3D_SIF_COMPARISON_SAMPLER + D3D_SIF_COMPARISON_SAMPLER +
    + + +

    A 2-bit value for encoding texture components.

    +
    + + ff728730 + D3D_SIF_TEXTURE_COMPONENT_0 + D3D_SIF_TEXTURE_COMPONENT_0 +
    + + +

    A 2-bit value for encoding texture components.

    +
    + + ff728730 + D3D_SIF_TEXTURE_COMPONENT_1 + D3D_SIF_TEXTURE_COMPONENT_1 +
    + + +

    A 2-bit value for encoding texture components.

    +
    + + ff728730 + D3D_SIF_TEXTURE_COMPONENTS + D3D_SIF_TEXTURE_COMPONENTS +
    + + +

    This value is reserved.

    +
    + + ff728730 + D3D_SIF_UNUSED + D3D_SIF_UNUSED +
    + + + None. + + + None + None + + + +

    Values that identify resource types that can be bound to a shader and that are reflected as part of the resource description for the shader.

    +
    + +

    -typed values are specified in the Type member of the D3D11_SHADER_INPUT_BIND_DESC structure.

    +
    + + ff728731 + D3D_SHADER_INPUT_TYPE + D3D_SHADER_INPUT_TYPE +
    + + +

    The shader resource is a constant buffer.

    +
    + + ff728731 + D3D_SIT_CBUFFER + D3D_SIT_CBUFFER +
    + + +

    The shader resource is a texture buffer.

    +
    + + ff728731 + D3D_SIT_TBUFFER + D3D_SIT_TBUFFER +
    + + +

    The shader resource is a texture.

    +
    + + ff728731 + D3D_SIT_TEXTURE + D3D_SIT_TEXTURE +
    + + +

    The shader resource is a sampler.

    +
    + + ff728731 + D3D_SIT_SAMPLER + D3D_SIT_SAMPLER +
    + + +

    The shader resource is a read-and-write buffer.

    +
    + + ff728731 + D3D_SIT_UAV_RWTYPED + D3D_SIT_UAV_RWTYPED +
    + + +

    The shader resource is a structured buffer.

    For more information about structured buffer, see the Remarks section.

    +
    + + ff728731 + D3D_SIT_STRUCTURED + D3D_SIT_STRUCTURED +
    + + +

    The shader resource is a read-and-write structured buffer.

    +
    + + ff728731 + D3D_SIT_UAV_RWSTRUCTURED + D3D_SIT_UAV_RWSTRUCTURED +
    + + +

    The shader resource is a byte-address buffer.

    +
    + + ff728731 + D3D_SIT_BYTEADDRESS + D3D_SIT_BYTEADDRESS +
    + + +

    The shader resource is a read-and-write byte-address buffer.

    +
    + + ff728731 + D3D_SIT_UAV_RWBYTEADDRESS + D3D_SIT_UAV_RWBYTEADDRESS +
    + + +

    The shader resource is an append-structured buffer.

    +
    + + ff728731 + D3D_SIT_UAV_APPEND_STRUCTURED + D3D_SIT_UAV_APPEND_STRUCTURED +
    + + +

    The shader resource is a consume-structured buffer.

    +
    + + ff728731 + D3D_SIT_UAV_CONSUME_STRUCTURED + D3D_SIT_UAV_CONSUME_STRUCTURED +
    + + +

    The shader resource is a read-and-write structured buffer that uses the built-in counter to append or consume.

    +
    + + ff728731 + D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER + D3D_SIT_UAV_RWSTRUCTURED_WITH_COUNTER +
    + + +

    Values that identify the type of resource to be viewed as a shader resource.

    +
    + +

    A -typed value is specified in the ViewDimension member of the structure or the Dimension member of the D3D11_SHADER_INPUT_BIND_DESC structure.

    +
    + + ff728736 + D3D_SRV_DIMENSION + D3D_SRV_DIMENSION +
    + + +

    The type is unknown.

    +
    + + ff728736 + D3D_SRV_DIMENSION_UNKNOWN + D3D_SRV_DIMENSION_UNKNOWN +
    + + +

    The resource is a buffer.

    +
    + + ff728736 + D3D_SRV_DIMENSION_BUFFER + D3D_SRV_DIMENSION_BUFFER +
    + + +

    The resource is a 1D texture.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE1D + D3D_SRV_DIMENSION_TEXTURE1D +
    + + +

    The resource is an array of 1D textures.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE1DARRAY + D3D_SRV_DIMENSION_TEXTURE1DARRAY +
    + + +

    The resource is a 2D texture.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE2D + D3D_SRV_DIMENSION_TEXTURE2D +
    + + +

    The resource is an array of 2D textures.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DARRAY + D3D_SRV_DIMENSION_TEXTURE2DARRAY +
    + + +

    The resource is a multisampling 2D texture.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DMS + D3D_SRV_DIMENSION_TEXTURE2DMS +
    + + +

    The resource is an array of multisampling 2D textures.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE2DMSARRAY + D3D_SRV_DIMENSION_TEXTURE2DMSARRAY +
    + + +

    The resource is a 3D texture.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURE3D + D3D_SRV_DIMENSION_TEXTURE3D +
    + + +

    The resource is a cube texture.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURECUBE + D3D_SRV_DIMENSION_TEXTURECUBE +
    + + +

    The resource is an array of cube textures.

    +
    + + ff728736 + D3D_SRV_DIMENSION_TEXTURECUBEARRAY + D3D_SRV_DIMENSION_TEXTURECUBEARRAY +
    + + +

    The resource is an extended buffer.

    +
    + + ff728736 + D3D_SRV_DIMENSION_BUFFEREX + D3D_SRV_DIMENSION_BUFFEREX +
    + + +

    Values that identify the class of a shader variable.

    +
    + +

    The class of a shader variable is not a programming class; the class identifies the variable class such as scalar, vector, object, and so on. -typed values are specified in the Class member of the D3D11_SHADER_TYPE_DESC structure.

    +
    + + ff728733 + D3D_SHADER_VARIABLE_CLASS + D3D_SHADER_VARIABLE_CLASS +
    + + +

    The shader variable is a scalar.

    +
    + + ff728733 + D3D_SVC_SCALAR + D3D_SVC_SCALAR +
    + + +

    The shader variable is a vector.

    +
    + + ff728733 + D3D_SVC_VECTOR + D3D_SVC_VECTOR +
    + + +

    The shader variable is a row-major matrix.

    +
    + + ff728733 + D3D_SVC_MATRIX_ROWS + D3D_SVC_MATRIX_ROWS +
    + + +

    The shader variable is a column-major matrix.

    +
    + + ff728733 + D3D_SVC_MATRIX_COLUMNS + D3D_SVC_MATRIX_COLUMNS +
    + + +

    The shader variable is an object.

    +
    + + ff728733 + D3D_SVC_OBJECT + D3D_SVC_OBJECT +
    + + +

    The shader variable is a structure.

    +
    + + ff728733 + D3D_SVC_STRUCT + D3D_SVC_STRUCT +
    + + +

    The shader variable is a class.

    +
    + + ff728733 + D3D_SVC_INTERFACE_CLASS + D3D_SVC_INTERFACE_CLASS +
    + + +

    The shader variable is an interface.

    +
    + + ff728733 + D3D_SVC_INTERFACE_POINTER + D3D_SVC_INTERFACE_POINTER +
    + + +

    Values that identify information about a shader variable.

    +
    + +

    A call to the ID3D11ShaderReflectionVariable::GetDesc method returns values in the uFlags member of a D3D11_SHADER_VARIABLE_DESC structure.

    +
    + + ff728734 + D3D_SHADER_VARIABLE_FLAGS + D3D_SHADER_VARIABLE_FLAGS +
    + + +

    Indicates that the registers assigned to this shader variable were explicitly declared in shader code (instead of automatically assigned by the compiler).

    +
    + + ff728734 + D3D_SVF_USERPACKED + D3D_SVF_USERPACKED +
    + + +

    Indicates that this variable is used by this shader. This value confirms that a particular shader variable (which can be common to many different shaders) is indeed used by a particular shader.

    +
    + + ff728734 + D3D_SVF_USED + D3D_SVF_USED +
    + + +

    Indicates that this variable is an interface.

    +
    + + ff728734 + D3D_SVF_INTERFACE_POINTER + D3D_SVF_INTERFACE_POINTER +
    + + +

    Indicates that this variable is a parameter of an interface.

    +
    + + ff728734 + D3D_SVF_INTERFACE_PARAMETER + D3D_SVF_INTERFACE_PARAMETER +
    + + + None. + + + None + None + + + +

    Values that identify various data, texture, and buffer types that can be assigned to a shader variable.

    +
    + +

    A call to the ID3D11ShaderReflectionType::GetDesc method returns a value in the Type member of a D3D11_SHADER_TYPE_DESC structure.

    The types in a structured buffer describe the structure of the elements in the buffer. The layout of these types generally match their C++ struct counterparts. The following examples show structured buffers:

    struct mystruct {float4 val; uint ind;}; RWStructuredBuffer<mystruct> rwbuf;	
    +            RWStructuredBuffer<float3> rwbuf2;
    +
    + + ff728735 + D3D_SHADER_VARIABLE_TYPE + D3D_SHADER_VARIABLE_TYPE +
    + + +

    The variable is a void reference.

    +
    + + ff728735 + D3D_SVT_VOID + D3D_SVT_VOID +
    + + +

    The variable is a boolean.

    +
    + + ff728735 + D3D_SVT_BOOL + D3D_SVT_BOOL +
    + + +

    The variable is an integer.

    +
    + + ff728735 + D3D_SVT_INT + D3D_SVT_INT +
    + + +

    The variable is a floating-point number.

    +
    + + ff728735 + D3D_SVT_FLOAT + D3D_SVT_FLOAT +
    + + +

    The variable is a string.

    +
    + + ff728735 + D3D_SVT_STRING + D3D_SVT_STRING +
    + + +

    The variable is a texture.

    +
    + + ff728735 + D3D_SVT_TEXTURE + D3D_SVT_TEXTURE +
    + + +

    The variable is a 1D texture.

    +
    + + ff728735 + D3D_SVT_TEXTURE1D + D3D_SVT_TEXTURE1D +
    + + +

    The variable is a 2D texture.

    +
    + + ff728735 + D3D_SVT_TEXTURE2D + D3D_SVT_TEXTURE2D +
    + + +

    The variable is a 3D texture.

    +
    + + ff728735 + D3D_SVT_TEXTURE3D + D3D_SVT_TEXTURE3D +
    + + +

    The variable is a texture cube.

    +
    + + ff728735 + D3D_SVT_TEXTURECUBE + D3D_SVT_TEXTURECUBE +
    + + +

    The variable is a sampler.

    +
    + + ff728735 + D3D_SVT_SAMPLER + D3D_SVT_SAMPLER +
    + + +

    The variable is a pixel shader.

    +
    + + ff728735 + D3D_SVT_SAMPLER1D + D3D_SVT_SAMPLER1D +
    + + +

    The variable is a vertex shader.

    +
    + + ff728735 + D3D_SVT_SAMPLER2D + D3D_SVT_SAMPLER2D +
    + + +

    The variable is an unsigned integer.

    +
    + + ff728735 + D3D_SVT_SAMPLER3D + D3D_SVT_SAMPLER3D +
    + + +

    The variable is an 8-bit unsigned integer.

    +
    + + ff728735 + D3D_SVT_SAMPLERCUBE + D3D_SVT_SAMPLERCUBE +
    + + +

    The variable is a geometry shader.

    +
    + + ff728735 + D3D_SVT_PIXELSHADER + D3D_SVT_PIXELSHADER +
    + + +

    The variable is a rasterizer-state object.

    +
    + + ff728735 + D3D_SVT_VERTEXSHADER + D3D_SVT_VERTEXSHADER +
    + + +

    The variable is a depth-stencil-state object.

    +
    + + ff728735 + D3D_SVT_PIXELFRAGMENT + D3D_SVT_PIXELFRAGMENT +
    + + +

    The variable is a blend-state object.

    +
    + + ff728735 + D3D_SVT_VERTEXFRAGMENT + D3D_SVT_VERTEXFRAGMENT +
    + + +

    The variable is a buffer.

    +
    + + ff728735 + D3D_SVT_UINT + D3D_SVT_UINT +
    + + +

    The variable is a constant buffer.

    +
    + + ff728735 + D3D_SVT_UINT8 + D3D_SVT_UINT8 +
    + + +

    The variable is a texture buffer.

    +
    + + ff728735 + D3D_SVT_GEOMETRYSHADER + D3D_SVT_GEOMETRYSHADER +
    + + +

    The variable is a 1D-texture array.

    +
    + + ff728735 + D3D_SVT_RASTERIZER + D3D_SVT_RASTERIZER +
    + + +

    The variable is a 2D-texture array.

    +
    + + ff728735 + D3D_SVT_DEPTHSTENCIL + D3D_SVT_DEPTHSTENCIL +
    + + +

    The variable is a render-target view.

    +
    + + ff728735 + D3D_SVT_BLEND + D3D_SVT_BLEND +
    + + +

    The variable is a depth-stencil view.

    +
    + + ff728735 + D3D_SVT_BUFFER + D3D_SVT_BUFFER +
    + + +

    The variable is a 2D-multisampled texture.

    +
    + + ff728735 + D3D_SVT_CBUFFER + D3D_SVT_CBUFFER +
    + + +

    The variable is a 2D-multisampled-texture array.

    +
    + + ff728735 + D3D_SVT_TBUFFER + D3D_SVT_TBUFFER +
    + + +

    The variable is a texture-cube array.

    +
    + + ff728735 + D3D_SVT_TEXTURE1DARRAY + D3D_SVT_TEXTURE1DARRAY +
    + + +

    The variable holds a compiled hull-shader binary.

    +
    + + ff728735 + D3D_SVT_TEXTURE2DARRAY + D3D_SVT_TEXTURE2DARRAY +
    + + +

    The variable holds a compiled domain-shader binary.

    +
    + + ff728735 + D3D_SVT_RENDERTARGETVIEW + D3D_SVT_RENDERTARGETVIEW +
    + + +

    The variable is an interface.

    +
    + + ff728735 + D3D_SVT_DEPTHSTENCILVIEW + D3D_SVT_DEPTHSTENCILVIEW +
    + + +

    The variable holds a compiled compute-shader binary.

    +
    + + ff728735 + D3D_SVT_TEXTURE2DMS + D3D_SVT_TEXTURE2DMS +
    + + +

    The variable is a double precision (64-bit) floating-point number.

    +
    + + ff728735 + D3D_SVT_TEXTURE2DMSARRAY + D3D_SVT_TEXTURE2DMSARRAY +
    + + +

    The variable is a 1D read-and-write texture.

    +
    + + ff728735 + D3D_SVT_TEXTURECUBEARRAY + D3D_SVT_TEXTURECUBEARRAY +
    + + +

    The variable is an array of 1D read-and-write textures.

    +
    + + ff728735 + D3D_SVT_HULLSHADER + D3D_SVT_HULLSHADER +
    + + +

    The variable is a 2D read-and-write texture.

    +
    + + ff728735 + D3D_SVT_DOMAINSHADER + D3D_SVT_DOMAINSHADER +
    + + +

    The variable is an array of 2D read-and-write textures.

    +
    + + ff728735 + D3D_SVT_INTERFACE_POINTER + D3D_SVT_INTERFACE_POINTER +
    + + +

    The variable is a 3D read-and-write texture.

    +
    + + ff728735 + D3D_SVT_COMPUTESHADER + D3D_SVT_COMPUTESHADER +
    + + +

    The variable is a read-and-write buffer.

    +
    + + ff728735 + D3D_SVT_DOUBLE + D3D_SVT_DOUBLE +
    + + +

    The variable is a byte-address buffer.

    +
    + + ff728735 + D3D_SVT_RWTEXTURE1D + D3D_SVT_RWTEXTURE1D +
    + + +

    The variable is a read-and-write byte-address buffer.

    +
    + + ff728735 + D3D_SVT_RWTEXTURE1DARRAY + D3D_SVT_RWTEXTURE1DARRAY +
    + + +

    The variable is a structured buffer.

    For more information about structured buffer, see the Remarks section.

    +
    + + ff728735 + D3D_SVT_RWTEXTURE2D + D3D_SVT_RWTEXTURE2D +
    + + +

    The variable is a read-and-write structured buffer.

    +
    + + ff728735 + D3D_SVT_RWTEXTURE2DARRAY + D3D_SVT_RWTEXTURE2DARRAY +
    + + +

    The variable is an append structured buffer.

    +
    + + ff728735 + D3D_SVT_RWTEXTURE3D + D3D_SVT_RWTEXTURE3D +
    + + +

    The variable is a consume structured buffer.

    +
    + + ff728735 + D3D_SVT_RWBUFFER + D3D_SVT_RWBUFFER +
    + + +

    The variable is a void reference.

    +
    + + ff728735 + D3D_SVT_BYTEADDRESS_BUFFER + D3D_SVT_BYTEADDRESS_BUFFER +
    + + +

    The variable is a boolean.

    +
    + + ff728735 + D3D_SVT_RWBYTEADDRESS_BUFFER + D3D_SVT_RWBYTEADDRESS_BUFFER +
    + + +

    The variable is an integer.

    +
    + + ff728735 + D3D_SVT_STRUCTURED_BUFFER + D3D_SVT_STRUCTURED_BUFFER +
    + + +

    The variable is a floating-point number.

    +
    + + ff728735 + D3D_SVT_RWSTRUCTURED_BUFFER + D3D_SVT_RWSTRUCTURED_BUFFER +
    + + +

    The variable is a string.

    +
    + + ff728735 + D3D_SVT_APPEND_STRUCTURED_BUFFER + D3D_SVT_APPEND_STRUCTURED_BUFFER +
    + + +

    The variable is a texture.

    +
    + + ff728735 + D3D_SVT_CONSUME_STRUCTURED_BUFFER + D3D_SVT_CONSUME_STRUCTURED_BUFFER +
    + + +

    The variable is a 1D texture.

    +
    + + ff728735 + D3D_SVT_MIN8FLOAT + D3D_SVT_MIN8FLOAT +
    + + +

    The variable is a 2D texture.

    +
    + + ff728735 + D3D_SVT_MIN10FLOAT + D3D_SVT_MIN10FLOAT +
    + + +

    The variable is a 3D texture.

    +
    + + ff728735 + D3D_SVT_MIN16FLOAT + D3D_SVT_MIN16FLOAT +
    + + +

    The variable is a texture cube.

    +
    + + ff728735 + D3D_SVT_MIN12INT + D3D_SVT_MIN12INT +
    + + +

    The variable is a sampler.

    +
    + + ff728735 + D3D_SVT_MIN16INT + D3D_SVT_MIN16INT +
    + + +

    The variable is a pixel shader.

    +
    + + ff728735 + D3D_SVT_MIN16UINT + D3D_SVT_MIN16UINT +
    + + +

    Values that identify shader parameters that use system-value semantics.

    +
    + +

    The values identify shader parameters that have predefined system-value semantics. These values are used in a shader-signature description. For more information about shader-signature description, see D3D11_SIGNATURE_PARAMETER_DESC.

    +
    + + ff728724 + D3D_NAME + D3D_NAME +
    + + +

    This parameter does not use a predefined system-value semantic.

    +
    + + ff728724 + D3D_NAME_UNDEFINED + D3D_NAME_UNDEFINED +
    + + +

    This parameter contains position data.

    +
    + + ff728724 + D3D_NAME_POSITION + D3D_NAME_POSITION +
    + + +

    This parameter contains clip-distance data.

    +
    + + ff728724 + D3D_NAME_CLIP_DISTANCE + D3D_NAME_CLIP_DISTANCE +
    + + +

    This parameter contains cull-distance data.

    +
    + + ff728724 + D3D_NAME_CULL_DISTANCE + D3D_NAME_CULL_DISTANCE +
    + + +

    This parameter contains a render-target-array index.

    +
    + + ff728724 + D3D_NAME_RENDER_TARGET_ARRAY_INDEX + D3D_NAME_RENDER_TARGET_ARRAY_INDEX +
    + + +

    This parameter contains a viewport-array index.

    +
    + + ff728724 + D3D_NAME_VIEWPORT_ARRAY_INDEX + D3D_NAME_VIEWPORT_ARRAY_INDEX +
    + + +

    This parameter contains a vertex ID.

    +
    + + ff728724 + D3D_NAME_VERTEX_ID + D3D_NAME_VERTEX_ID +
    + + +

    This parameter contains a primitive ID.

    +
    + + ff728724 + D3D_NAME_PRIMITIVE_ID + D3D_NAME_PRIMITIVE_ID +
    + + +

    This parameter contains an instance ID.

    +
    + + ff728724 + D3D_NAME_INSTANCE_ID + D3D_NAME_INSTANCE_ID +
    + + +

    This parameter contains data that identifies whether or not the primitive faces the camera.

    +
    + + ff728724 + D3D_NAME_IS_FRONT_FACE + D3D_NAME_IS_FRONT_FACE +
    + + +

    This parameter contains a sampler-array index.

    +
    + + ff728724 + D3D_NAME_SAMPLE_INDEX + D3D_NAME_SAMPLE_INDEX +
    + + +

    This parameter contains one of four tessellation factors that correspond to the amount of parts that a quad patch is broken into along the given edge. This flag is used to tessellate a quad patch.

    +
    + + ff728724 + D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR + D3D_NAME_FINAL_QUAD_EDGE_TESSFACTOR +
    + + +

    This parameter contains one of two tessellation factors that correspond to the amount of parts that a quad patch is broken into vertically and horizontally within the patch. This flag is used to tessellate a quad patch.

    +
    + + ff728724 + D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR + D3D_NAME_FINAL_QUAD_INSIDE_TESSFACTOR +
    + + +

    This parameter contains one of three tessellation factors that correspond to the amount of parts that a tri patch is broken into along the given edge. This flag is used to tessellate a tri patch.

    +
    + + ff728724 + D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR + D3D_NAME_FINAL_TRI_EDGE_TESSFACTOR +
    + + +

    This parameter contains the tessellation factor that corresponds to the amount of parts that a tri patch is broken into within the patch. This flag is used to tessellate a tri patch.

    +
    + + ff728724 + D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR + D3D_NAME_FINAL_TRI_INSIDE_TESSFACTOR +
    + + +

    This parameter contains the tessellation factor that corresponds to the number of lines broken into within the patch. This flag is used to tessellate an isolines patch.

    +
    + + ff728724 + D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR + D3D_NAME_FINAL_LINE_DETAIL_TESSFACTOR +
    + + +

    This parameter contains the tessellation factor that corresponds to the number of lines that are created within the patch. This flag is used to tessellate an isolines patch.

    +
    + + ff728724 + D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR + D3D_NAME_FINAL_LINE_DENSITY_TESSFACTOR +
    + + +

    This parameter contains render-target data.

    +
    + + ff728724 + D3D_NAME_TARGET + D3D_NAME_TARGET +
    + + +

    This parameter contains depth data.

    +
    + + ff728724 + D3D_NAME_DEPTH + D3D_NAME_DEPTH +
    + + +

    This parameter contains alpha-coverage data.

    +
    + + ff728724 + D3D_NAME_COVERAGE + D3D_NAME_COVERAGE +
    + + +

    This parameter signifies that the value is greater than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

    +
    + + ff728724 + D3D_NAME_DEPTH_GREATER_EQUAL + D3D_NAME_DEPTH_GREATER_EQUAL +
    + + +

    This parameter signifies that the value is less than or equal to a reference value. This flag is used to specify conservative depth for a pixel shader.

    +
    + + ff728724 + D3D_NAME_DEPTH_LESS_EQUAL + D3D_NAME_DEPTH_LESS_EQUAL +
    + + +

    Values that identify domain options for tessellator data.

    +
    + +

    The data domain defines the type of data. This enumeration is used by D3D11_SHADER_DESC.

    +
    + + ff728737 + D3D_TESSELLATOR_DOMAIN + D3D_TESSELLATOR_DOMAIN +
    + + +

    The data type is undefined.

    +
    + + ff728737 + D3D_TESSELLATOR_DOMAIN_UNDEFINED + D3D_TESSELLATOR_DOMAIN_UNDEFINED +
    + + +

    Isoline data.

    +
    + + ff728737 + D3D_TESSELLATOR_DOMAIN_ISOLINE + D3D_TESSELLATOR_DOMAIN_ISOLINE +
    + + +

    Triangle data.

    +
    + + ff728737 + D3D_TESSELLATOR_DOMAIN_TRI + D3D_TESSELLATOR_DOMAIN_TRI +
    + + +

    Quad data.

    +
    + + ff728737 + D3D_TESSELLATOR_DOMAIN_QUAD + D3D_TESSELLATOR_DOMAIN_QUAD +
    + + +

    Values that identify output primitive types.

    +
    + +

    The output primitive type determines how the tessellator output data is organized; this enumeration is used by D3D11_SHADER_DESC.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_PRIMITIVE + D3D_TESSELLATOR_OUTPUT_PRIMITIVE +
    + + +

    The output primitive type is undefined.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_UNDEFINED + D3D_TESSELLATOR_OUTPUT_UNDEFINED +
    + + +

    The output primitive type is a point.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_POINT + D3D_TESSELLATOR_OUTPUT_POINT +
    + + +

    The output primitive type is a line.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_LINE + D3D_TESSELLATOR_OUTPUT_LINE +
    + + +

    The output primitive type is a clockwise triangle.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CW +
    + + +

    The output primitive type is a counter clockwise triangle.

    +
    + + ff728738 + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW + D3D_TESSELLATOR_OUTPUT_TRIANGLE_CCW +
    + + +

    Values that identify partitioning options.

    +
    + +

    During tessellation, the partition option helps to determine how the algorithm chooses the next partition value; this enumeration is used by D3D11_SHADER_DESC.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING + D3D_TESSELLATOR_PARTITIONING +
    + + +

    The partitioning type is undefined.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING_UNDEFINED + D3D_TESSELLATOR_PARTITIONING_UNDEFINED +
    + + +

    Partition with integers only.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING_INTEGER + D3D_TESSELLATOR_PARTITIONING_INTEGER +
    + + +

    Partition with a power-of-two number only.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING_POW2 + D3D_TESSELLATOR_PARTITIONING_POW2 +
    + + +

    Partition with an odd, fractional number.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_ODD +
    + + +

    Partition with an even, fractional number.

    +
    + + ff728739 + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN + D3D_TESSELLATOR_PARTITIONING_FRACTIONAL_EVEN +
    + + + Functions + + + + + Constant DebugObjectName. + WKPDID_D3DDebugObjectName + + + +

    This interface is used to return arbitrary length data.

    +
    + +

    An is obtained by calling D3D10CreateBlob.

    The ID3DBlob interface is type defined in the D3DCommon.h header file as a interface, which is fully defined in the D3DCommon.h header file. ID3DBlob is version neutral and can be used in code for any Direct3D version.

    Blobs can be used as a data buffer, storing vertex, adjacency, and material information during mesh optimization and loading operations. Also, these objects are used to return object code and error messages in APIs that compile vertex, geometry and pixel shaders.

    +
    + + bb173507 + ID3D10Blob + ID3D10Blob +
    + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    Get a reference to the data.

    +
    +

    Returns a reference.

    + + bb173508 + void* ID3D10Blob::GetBufferPointer() + ID3D10Blob::GetBufferPointer +
    + + +

    Get the size.

    +
    +

    The size of the data, in bytes.

    + + bb173509 + SIZE_T ID3D10Blob::GetBufferSize() + ID3D10Blob::GetBufferSize +
    + + +

    Get a reference to the data.

    +
    + + bb173508 + GetBufferPointer + GetBufferPointer + void* ID3D10Blob::GetBufferPointer() +
    + + +

    Get the size.

    +
    + + bb173509 + GetBufferSize + GetBufferSize + SIZE_T ID3D10Blob::GetBufferSize() +
    + + +

    is an include interface that the user implements to allow an application to call user-overridable methods for opening and closing shader #include files.

    +
    + +

    To use this interface, create an interface that inherits from and implement custom behavior for the methods.

    +
    + + ff728746 + ID3DInclude + ID3DInclude +
    + + +

    Defines a shader macro.

    +
    + +

    You can use shader macros in your shaders. The structure defines a single shader macro as shown in the following example:

      Shader_Macros[1] = { "zero", "0"  };	
    +            

    The following shader or effect creation functions take an array of shader macros as an input parameter:

    • D3D10CompileShader
    • D3DX10CreateEffectFromFile
    • D3DX10PreprocessShaderFromFile
    • D3DX11CreateAsyncShaderPreprocessProcessor
    +
    + + ff728732 + D3D_SHADER_MACRO + D3D_SHADER_MACRO +
    + + +

    The macro name.

    +
    + + ff728732 + const char* Name + char Name +
    + + +

    The macro definition.

    +
    + + ff728732 + const char* Definition + char Definition +
    + + + Initializes a new instance of the struct. + + + The name. + + + The definition. + + + + +

    The enumeration defines constants that indicate whether an audio stream will run in shared mode or in exclusive mode.

    +
    + +

    The IAudioClient::Initialize and IAudioClient::IsFormatSupported methods use the constants defined in the enumeration.

    In shared mode, the client can share the audio endpoint device with clients that run in other user-mode processes. The audio engine always supports formats for client streams that match the engine's mix format. In addition, the audio engine might support another format if the Windows audio service can insert system effects into the client stream to convert the client format to the mix format.

    In exclusive mode, the Windows audio service attempts to establish a connection in which the client has exclusive access to the audio endpoint device. In this mode, the audio engine inserts no system effects into the local stream to aid in the creation of the connection point. Either the audio device can handle the specified format directly or the method fails.

    For more information about shared-mode and exclusive-mode streams, see User-Mode Audio Components.

    +
    + + dd370790 + AUDCLNT_SHAREMODE + AUDCLNT_SHAREMODE +
    + + +

    The audio stream will run in shared mode. For more information, see Remarks.

    +
    + + dd370790 + AUDCLNT_SHAREMODE_SHARED + AUDCLNT_SHAREMODE_SHARED +
    + + +

    The audio stream will run in exclusive mode. For more information, see Remarks.

    +
    + + dd370790 + AUDCLNT_SHAREMODE_EXCLUSIVE + AUDCLNT_SHAREMODE_EXCLUSIVE +
    + + +

    The AudioSessionState enumeration defines constants that indicate the current state of an audio session.

    +
    + +

    When a client opens a session by assigning the first stream to the session (by calling the IAudioClient::Initialize method), the initial session state is inactive. The session state changes from inactive to active when a stream in the session begins running (because the client has called the IAudioClient::Start method). The session changes from active to inactive when the client stops the last running stream in the session (by calling the IAudioClient::Stop method). The session state changes to expired when the client destroys the last stream in the session by releasing all references to the stream object.

    The system volume-control program, Sndvol, displays volume controls for both active and inactive sessions. Sndvol stops displaying the volume control for a session when the session state changes to expired. For more information about Sndvol, see Audio Sessions.

    The IAudioSessionControl::GetState and IAudioSessionEvents::OnStateChanged methods use the constants defined in the AudioSessionState enumeration.

    For more information about session states, see Audio Sessions.

    +
    + + dd370792 + AudioSessionState + AudioSessionState +
    + + +

    The audio session is inactive. (It contains at least one stream, but none of the streams in the session is currently running.)

    +
    + + dd370792 + AudioSessionStateInactive + AudioSessionStateInactive +
    + + +

    The audio session is active. (At least one of the streams in the session is running.)

    +
    + + dd370792 + AudioSessionStateActive + AudioSessionStateActive +
    + + +

    The audio session has expired. (It contains no streams.)

    +
    + + dd370792 + AudioSessionStateExpired + AudioSessionStateExpired +
    + + +

    [This documentation is preliminary and is subject to change.]

    Specifies the category of an audio stream.

    +
    + + hh404178 + AUDIO_STREAM_CATEGORY + AUDIO_STREAM_CATEGORY +
    + + +

    Media, such as music or streaming audio.

    +
    + + hh404178 + AudioCategory_Other + AudioCategory_Other +
    + + +

    Real-time communications, such as VOIP or chat.

    +
    + + hh404178 + AudioCategory_ForegroundOnlyMedia + AudioCategory_ForegroundOnlyMedia +
    + + +

    Voice narration, such as a screen reader or ebook reader.

    +
    + + hh404178 + AudioCategory_BackgroundCapableMedia + AudioCategory_BackgroundCapableMedia +
    + + +

    Alert sounds.

    +
    + + hh404178 + AudioCategory_Communications + AudioCategory_Communications +
    + + +

    Sound effects.

    +
    + + hh404178 + AudioCategory_Alerts + AudioCategory_Alerts +
    + + +

    Game sound effects.

    +
    + + hh404178 + AudioCategory_SoundEffects + AudioCategory_SoundEffects +
    + + +

    Background audio for games.

    +
    + + hh404178 + AudioCategory_GameEffects + AudioCategory_GameEffects +
    + + +

    Other audio stream.

    +
    + + hh404178 + AudioCategory_GameMedia + AudioCategory_GameMedia +
    + + + No documentation. + + + SPEAKER_FLAGS + SPEAKER_FLAGS + + + + No documentation. + + + SPEAKER_FRONT_LEFT + SPEAKER_FRONT_LEFT + + + + No documentation. + + + SPEAKER_FRONT_RIGHT + SPEAKER_FRONT_RIGHT + + + + No documentation. + + + SPEAKER_FRONT_CENTER + SPEAKER_FRONT_CENTER + + + + No documentation. + + + SPEAKER_LOW_FREQUENCY + SPEAKER_LOW_FREQUENCY + + + + No documentation. + + + SPEAKER_BACK_LEFT + SPEAKER_BACK_LEFT + + + + No documentation. + + + SPEAKER_BACK_RIGHT + SPEAKER_BACK_RIGHT + + + + No documentation. + + + SPEAKER_FRONT_LEFT_OF_CENTER + SPEAKER_FRONT_LEFT_OF_CENTER + + + + No documentation. + + + SPEAKER_FRONT_RIGHT_OF_CENTER + SPEAKER_FRONT_RIGHT_OF_CENTER + + + + No documentation. + + + SPEAKER_BACK_CENTER + SPEAKER_BACK_CENTER + + + + No documentation. + + + SPEAKER_SIDE_LEFT + SPEAKER_SIDE_LEFT + + + + No documentation. + + + SPEAKER_SIDE_RIGHT + SPEAKER_SIDE_RIGHT + + + + No documentation. + + + SPEAKER_TOP_CENTER + SPEAKER_TOP_CENTER + + + + No documentation. + + + SPEAKER_TOP_FRONT_LEFT + SPEAKER_TOP_FRONT_LEFT + + + + No documentation. + + + SPEAKER_TOP_FRONT_CENTER + SPEAKER_TOP_FRONT_CENTER + + + + No documentation. + + + SPEAKER_TOP_FRONT_RIGHT + SPEAKER_TOP_FRONT_RIGHT + + + + No documentation. + + + SPEAKER_TOP_BACK_LEFT + SPEAKER_TOP_BACK_LEFT + + + + No documentation. + + + SPEAKER_TOP_BACK_CENTER + SPEAKER_TOP_BACK_CENTER + + + + No documentation. + + + SPEAKER_TOP_BACK_RIGHT + SPEAKER_TOP_BACK_RIGHT + + + + No documentation. + + + SPEAKER_RESERVED + SPEAKER_RESERVED + + + + No documentation. + + + SPEAKER_ALL + SPEAKER_ALL + + + + No documentation. + + + SPEAKER_MONO + SPEAKER_MONO + + + + No documentation. + + + SPEAKER_STEREO + SPEAKER_STEREO + + + + No documentation. + + + SPEAKER_2POINT1 + SPEAKER_2POINT1 + + + + No documentation. + + + SPEAKER_SURROUND + SPEAKER_SURROUND + + + + No documentation. + + + SPEAKER_QUAD + SPEAKER_QUAD + + + + No documentation. + + + SPEAKER_4POINT1 + SPEAKER_4POINT1 + + + + No documentation. + + + SPEAKER_5POINT1 + SPEAKER_5POINT1 + + + + No documentation. + + + SPEAKER_7POINT1 + SPEAKER_7POINT1 + + + + No documentation. + + + SPEAKER_5POINT1_SURROUND + SPEAKER_5POINT1_SURROUND + + + + No documentation. + + + SPEAKER_7POINT1_SURROUND + SPEAKER_7POINT1_SURROUND + + + + None. + + + None + None + + + + No documentation. + + + HID_USAGE_ID + HID_USAGE_ID + + + + No documentation. + + + HID_USAGE_PAGE + HID_USAGE_PAGE + + + + No documentation. + + + WAVE_FORMAT_ENCODING + WAVE_FORMAT_ENCODING + + + + No documentation. + + + WAVE_FORMAT_UNKNOWN + WAVE_FORMAT_UNKNOWN + + + + No documentation. + + + WAVE_FORMAT_ADPCM + WAVE_FORMAT_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IEEE_FLOAT + WAVE_FORMAT_IEEE_FLOAT + + + + No documentation. + + + WAVE_FORMAT_VSELP + WAVE_FORMAT_VSELP + + + + No documentation. + + + WAVE_FORMAT_IBM_CVSD + WAVE_FORMAT_IBM_CVSD + + + + No documentation. + + + WAVE_FORMAT_ALAW + WAVE_FORMAT_ALAW + + + + No documentation. + + + WAVE_FORMAT_MULAW + WAVE_FORMAT_MULAW + + + + No documentation. + + + WAVE_FORMAT_DTS + WAVE_FORMAT_DTS + + + + No documentation. + + + WAVE_FORMAT_DRM + WAVE_FORMAT_DRM + + + + No documentation. + + + WAVE_FORMAT_WMAVOICE9 + WAVE_FORMAT_WMAVOICE9 + + + + No documentation. + + + WAVE_FORMAT_WMAVOICE10 + WAVE_FORMAT_WMAVOICE10 + + + + No documentation. + + + WAVE_FORMAT_OKI_ADPCM + WAVE_FORMAT_OKI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DVI_ADPCM + WAVE_FORMAT_DVI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IMA_ADPCM + WAVE_FORMAT_IMA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_MEDIASPACE_ADPCM + WAVE_FORMAT_MEDIASPACE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SIERRA_ADPCM + WAVE_FORMAT_SIERRA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G723_ADPCM + WAVE_FORMAT_G723_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DIGISTD + WAVE_FORMAT_DIGISTD + + + + No documentation. + + + WAVE_FORMAT_DIGIFIX + WAVE_FORMAT_DIGIFIX + + + + No documentation. + + + WAVE_FORMAT_DIALOGIC_OKI_ADPCM + WAVE_FORMAT_DIALOGIC_OKI_ADPCM + + + + No documentation. + + + WAVE_FORMAT_MEDIAVISION_ADPCM + WAVE_FORMAT_MEDIAVISION_ADPCM + + + + No documentation. + + + WAVE_FORMAT_CU_CODEC + WAVE_FORMAT_CU_CODEC + + + + No documentation. + + + WAVE_FORMAT_HP_DYN_VOICE + WAVE_FORMAT_HP_DYN_VOICE + + + + No documentation. + + + WAVE_FORMAT_YAMAHA_ADPCM + WAVE_FORMAT_YAMAHA_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SONARC + WAVE_FORMAT_SONARC + + + + No documentation. + + + WAVE_FORMAT_DSPGROUP_TRUESPEECH + WAVE_FORMAT_DSPGROUP_TRUESPEECH + + + + No documentation. + + + WAVE_FORMAT_ECHOSC1 + WAVE_FORMAT_ECHOSC1 + + + + No documentation. + + + WAVE_FORMAT_AUDIOFILE_AF36 + WAVE_FORMAT_AUDIOFILE_AF36 + + + + No documentation. + + + WAVE_FORMAT_APTX + WAVE_FORMAT_APTX + + + + No documentation. + + + WAVE_FORMAT_AUDIOFILE_AF10 + WAVE_FORMAT_AUDIOFILE_AF10 + + + + No documentation. + + + WAVE_FORMAT_PROSODY_1612 + WAVE_FORMAT_PROSODY_1612 + + + + No documentation. + + + WAVE_FORMAT_LRC + WAVE_FORMAT_LRC + + + + No documentation. + + + WAVE_FORMAT_DOLBY_AC2 + WAVE_FORMAT_DOLBY_AC2 + + + + No documentation. + + + WAVE_FORMAT_GSM610 + WAVE_FORMAT_GSM610 + + + + No documentation. + + + WAVE_FORMAT_MSNAUDIO + WAVE_FORMAT_MSNAUDIO + + + + No documentation. + + + WAVE_FORMAT_ANTEX_ADPCME + WAVE_FORMAT_ANTEX_ADPCME + + + + No documentation. + + + WAVE_FORMAT_CONTROL_RES_VQLPC + WAVE_FORMAT_CONTROL_RES_VQLPC + + + + No documentation. + + + WAVE_FORMAT_DIGIREAL + WAVE_FORMAT_DIGIREAL + + + + No documentation. + + + WAVE_FORMAT_DIGIADPCM + WAVE_FORMAT_DIGIADPCM + + + + No documentation. + + + WAVE_FORMAT_CONTROL_RES_CR10 + WAVE_FORMAT_CONTROL_RES_CR10 + + + + No documentation. + + + WAVE_FORMAT_NMS_VBXADPCM + WAVE_FORMAT_NMS_VBXADPCM + + + + No documentation. + + + WAVE_FORMAT_CS_IMAADPCM + WAVE_FORMAT_CS_IMAADPCM + + + + No documentation. + + + WAVE_FORMAT_ECHOSC3 + WAVE_FORMAT_ECHOSC3 + + + + No documentation. + + + WAVE_FORMAT_ROCKWELL_ADPCM + WAVE_FORMAT_ROCKWELL_ADPCM + + + + No documentation. + + + WAVE_FORMAT_ROCKWELL_DIGITALK + WAVE_FORMAT_ROCKWELL_DIGITALK + + + + No documentation. + + + WAVE_FORMAT_XEBEC + WAVE_FORMAT_XEBEC + + + + No documentation. + + + WAVE_FORMAT_G721_ADPCM + WAVE_FORMAT_G721_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G728_CELP + WAVE_FORMAT_G728_CELP + + + + No documentation. + + + WAVE_FORMAT_MSG723 + WAVE_FORMAT_MSG723 + + + + No documentation. + + + WAVE_FORMAT_INTEL_G723_1 + WAVE_FORMAT_INTEL_G723_1 + + + + No documentation. + + + WAVE_FORMAT_INTEL_G729 + WAVE_FORMAT_INTEL_G729 + + + + No documentation. + + + WAVE_FORMAT_SHARP_G726 + WAVE_FORMAT_SHARP_G726 + + + + No documentation. + + + WAVE_FORMAT_MPEG + WAVE_FORMAT_MPEG + + + + No documentation. + + + WAVE_FORMAT_RT24 + WAVE_FORMAT_RT24 + + + + No documentation. + + + WAVE_FORMAT_PAC + WAVE_FORMAT_PAC + + + + No documentation. + + + WAVE_FORMAT_MPEGLAYER3 + WAVE_FORMAT_MPEGLAYER3 + + + + No documentation. + + + WAVE_FORMAT_LUCENT_G723 + WAVE_FORMAT_LUCENT_G723 + + + + No documentation. + + + WAVE_FORMAT_CIRRUS + WAVE_FORMAT_CIRRUS + + + + No documentation. + + + WAVE_FORMAT_ESPCM + WAVE_FORMAT_ESPCM + + + + No documentation. + + + WAVE_FORMAT_VOXWARE + WAVE_FORMAT_VOXWARE + + + + No documentation. + + + WAVE_FORMAT_CANOPUS_ATRAC + WAVE_FORMAT_CANOPUS_ATRAC + + + + No documentation. + + + WAVE_FORMAT_G726_ADPCM + WAVE_FORMAT_G726_ADPCM + + + + No documentation. + + + WAVE_FORMAT_G722_ADPCM + WAVE_FORMAT_G722_ADPCM + + + + No documentation. + + + WAVE_FORMAT_DSAT + WAVE_FORMAT_DSAT + + + + No documentation. + + + WAVE_FORMAT_DSAT_DISPLAY + WAVE_FORMAT_DSAT_DISPLAY + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_BYTE_ALIGNED + WAVE_FORMAT_VOXWARE_BYTE_ALIGNED + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC8 + WAVE_FORMAT_VOXWARE_AC8 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC10 + WAVE_FORMAT_VOXWARE_AC10 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC16 + WAVE_FORMAT_VOXWARE_AC16 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_AC20 + WAVE_FORMAT_VOXWARE_AC20 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT24 + WAVE_FORMAT_VOXWARE_RT24 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT29 + WAVE_FORMAT_VOXWARE_RT29 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT29HW + WAVE_FORMAT_VOXWARE_RT29HW + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_VR12 + WAVE_FORMAT_VOXWARE_VR12 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_VR18 + WAVE_FORMAT_VOXWARE_VR18 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_TQ40 + WAVE_FORMAT_VOXWARE_TQ40 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_SC3 + WAVE_FORMAT_VOXWARE_SC3 + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_SC3_1 + WAVE_FORMAT_VOXWARE_SC3_1 + + + + No documentation. + + + WAVE_FORMAT_SOFTSOUND + WAVE_FORMAT_SOFTSOUND + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_TQ60 + WAVE_FORMAT_VOXWARE_TQ60 + + + + No documentation. + + + WAVE_FORMAT_MSRT24 + WAVE_FORMAT_MSRT24 + + + + No documentation. + + + WAVE_FORMAT_G729A + WAVE_FORMAT_G729A + + + + No documentation. + + + WAVE_FORMAT_MVI_MVI2 + WAVE_FORMAT_MVI_MVI2 + + + + No documentation. + + + WAVE_FORMAT_DF_G726 + WAVE_FORMAT_DF_G726 + + + + No documentation. + + + WAVE_FORMAT_DF_GSM610 + WAVE_FORMAT_DF_GSM610 + + + + No documentation. + + + WAVE_FORMAT_ISIAUDIO + WAVE_FORMAT_ISIAUDIO + + + + No documentation. + + + WAVE_FORMAT_ONLIVE + WAVE_FORMAT_ONLIVE + + + + No documentation. + + + WAVE_FORMAT_MULTITUDE_FT_SX20 + WAVE_FORMAT_MULTITUDE_FT_SX20 + + + + No documentation. + + + WAVE_FORMAT_INFOCOM_ITS_G721_ADPCM + WAVE_FORMAT_INFOCOM_ITS_G721_ADPCM + + + + No documentation. + + + WAVE_FORMAT_CONVEDIA_G729 + WAVE_FORMAT_CONVEDIA_G729 + + + + No documentation. + + + WAVE_FORMAT_CONGRUENCY + WAVE_FORMAT_CONGRUENCY + + + + No documentation. + + + WAVE_FORMAT_SBC24 + WAVE_FORMAT_SBC24 + + + + No documentation. + + + WAVE_FORMAT_DOLBY_AC3_SPDIF + WAVE_FORMAT_DOLBY_AC3_SPDIF + + + + No documentation. + + + WAVE_FORMAT_MEDIASONIC_G723 + WAVE_FORMAT_MEDIASONIC_G723 + + + + No documentation. + + + WAVE_FORMAT_PROSODY_8KBPS + WAVE_FORMAT_PROSODY_8KBPS + + + + No documentation. + + + WAVE_FORMAT_ZYXEL_ADPCM + WAVE_FORMAT_ZYXEL_ADPCM + + + + No documentation. + + + WAVE_FORMAT_PHILIPS_LPCBB + WAVE_FORMAT_PHILIPS_LPCBB + + + + No documentation. + + + WAVE_FORMAT_PACKED + WAVE_FORMAT_PACKED + + + + No documentation. + + + WAVE_FORMAT_MALDEN_PHONYTALK + WAVE_FORMAT_MALDEN_PHONYTALK + + + + No documentation. + + + WAVE_FORMAT_RACAL_RECORDER_GSM + WAVE_FORMAT_RACAL_RECORDER_GSM + + + + No documentation. + + + WAVE_FORMAT_RACAL_RECORDER_G720_A + WAVE_FORMAT_RACAL_RECORDER_G720_A + + + + No documentation. + + + WAVE_FORMAT_RACAL_RECORDER_G723_1 + WAVE_FORMAT_RACAL_RECORDER_G723_1 + + + + No documentation. + + + WAVE_FORMAT_RACAL_RECORDER_TETRA_ACELP + WAVE_FORMAT_RACAL_RECORDER_TETRA_ACELP + + + + No documentation. + + + WAVE_FORMAT_NEC_AAC + WAVE_FORMAT_NEC_AAC + + + + No documentation. + + + WAVE_FORMAT_RAW_AAC1 + WAVE_FORMAT_RAW_AAC1 + + + + No documentation. + + + WAVE_FORMAT_RHETOREX_ADPCM + WAVE_FORMAT_RHETOREX_ADPCM + + + + No documentation. + + + WAVE_FORMAT_IRAT + WAVE_FORMAT_IRAT + + + + No documentation. + + + WAVE_FORMAT_VIVO_G723 + WAVE_FORMAT_VIVO_G723 + + + + No documentation. + + + WAVE_FORMAT_VIVO_SIREN + WAVE_FORMAT_VIVO_SIREN + + + + No documentation. + + + WAVE_FORMAT_PHILIPS_CELP + WAVE_FORMAT_PHILIPS_CELP + + + + No documentation. + + + WAVE_FORMAT_PHILIPS_GRUNDIG + WAVE_FORMAT_PHILIPS_GRUNDIG + + + + No documentation. + + + WAVE_FORMAT_DIGITAL_G723 + WAVE_FORMAT_DIGITAL_G723 + + + + No documentation. + + + WAVE_FORMAT_SANYO_LD_ADPCM + WAVE_FORMAT_SANYO_LD_ADPCM + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACEPLNET + WAVE_FORMAT_SIPROLAB_ACEPLNET + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACELP4800 + WAVE_FORMAT_SIPROLAB_ACELP4800 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_ACELP8V3 + WAVE_FORMAT_SIPROLAB_ACELP8V3 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_G729 + WAVE_FORMAT_SIPROLAB_G729 + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_G729A + WAVE_FORMAT_SIPROLAB_G729A + + + + No documentation. + + + WAVE_FORMAT_SIPROLAB_KELVIN + WAVE_FORMAT_SIPROLAB_KELVIN + + + + No documentation. + + + WAVE_FORMAT_VOICEAGE_AMR + WAVE_FORMAT_VOICEAGE_AMR + + + + No documentation. + + + WAVE_FORMAT_G726ADPCM + WAVE_FORMAT_G726ADPCM + + + + No documentation. + + + WAVE_FORMAT_DICTAPHONE_CELP68 + WAVE_FORMAT_DICTAPHONE_CELP68 + + + + No documentation. + + + WAVE_FORMAT_DICTAPHONE_CELP54 + WAVE_FORMAT_DICTAPHONE_CELP54 + + + + No documentation. + + + WAVE_FORMAT_QUALCOMM_PUREVOICE + WAVE_FORMAT_QUALCOMM_PUREVOICE + + + + No documentation. + + + WAVE_FORMAT_QUALCOMM_HALFRATE + WAVE_FORMAT_QUALCOMM_HALFRATE + + + + No documentation. + + + WAVE_FORMAT_TUBGSM + WAVE_FORMAT_TUBGSM + + + + No documentation. + + + WAVE_FORMAT_MSAUDIO1 + WAVE_FORMAT_MSAUDIO1 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO2 + WAVE_FORMAT_WMAUDIO2 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO3 + WAVE_FORMAT_WMAUDIO3 + + + + No documentation. + + + WAVE_FORMAT_WMAUDIO_LOSSLESS + WAVE_FORMAT_WMAUDIO_LOSSLESS + + + + No documentation. + + + WAVE_FORMAT_WMASPDIF + WAVE_FORMAT_WMASPDIF + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ADPCM + WAVE_FORMAT_UNISYS_NAP_ADPCM + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ULAW + WAVE_FORMAT_UNISYS_NAP_ULAW + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_ALAW + WAVE_FORMAT_UNISYS_NAP_ALAW + + + + No documentation. + + + WAVE_FORMAT_UNISYS_NAP_16K + WAVE_FORMAT_UNISYS_NAP_16K + + + + No documentation. + + + WAVE_FORMAT_SYCOM_ACM_SYC008 + WAVE_FORMAT_SYCOM_ACM_SYC008 + + + + No documentation. + + + WAVE_FORMAT_SYCOM_ACM_SYC701_G726L + WAVE_FORMAT_SYCOM_ACM_SYC701_G726L + + + + No documentation. + + + WAVE_FORMAT_SYCOM_ACM_SYC701_CELP54 + WAVE_FORMAT_SYCOM_ACM_SYC701_CELP54 + + + + No documentation. + + + WAVE_FORMAT_SYCOM_ACM_SYC701_CELP68 + WAVE_FORMAT_SYCOM_ACM_SYC701_CELP68 + + + + No documentation. + + + WAVE_FORMAT_KNOWLEDGE_ADVENTURE_ADPCM + WAVE_FORMAT_KNOWLEDGE_ADVENTURE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_FRAUNHOFER_IIS_MPEG2_AAC + WAVE_FORMAT_FRAUNHOFER_IIS_MPEG2_AAC + + + + No documentation. + + + WAVE_FORMAT_DTS_DS + WAVE_FORMAT_DTS_DS + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_ADPCM + WAVE_FORMAT_CREATIVE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_FASTSPEECH8 + WAVE_FORMAT_CREATIVE_FASTSPEECH8 + + + + No documentation. + + + WAVE_FORMAT_CREATIVE_FASTSPEECH10 + WAVE_FORMAT_CREATIVE_FASTSPEECH10 + + + + No documentation. + + + WAVE_FORMAT_UHER_ADPCM + WAVE_FORMAT_UHER_ADPCM + + + + No documentation. + + + WAVE_FORMAT_ULEAD_DV_AUDIO + WAVE_FORMAT_ULEAD_DV_AUDIO + + + + No documentation. + + + WAVE_FORMAT_ULEAD_DV_AUDIO_1 + WAVE_FORMAT_ULEAD_DV_AUDIO_1 + + + + No documentation. + + + WAVE_FORMAT_QUARTERDECK + WAVE_FORMAT_QUARTERDECK + + + + No documentation. + + + WAVE_FORMAT_ILINK_VC + WAVE_FORMAT_ILINK_VC + + + + No documentation. + + + WAVE_FORMAT_RAW_SPORT + WAVE_FORMAT_RAW_SPORT + + + + No documentation. + + + WAVE_FORMAT_ESST_AC3 + WAVE_FORMAT_ESST_AC3 + + + + No documentation. + + + WAVE_FORMAT_GENERIC_PASSTHRU + WAVE_FORMAT_GENERIC_PASSTHRU + + + + No documentation. + + + WAVE_FORMAT_IPI_HSX + WAVE_FORMAT_IPI_HSX + + + + No documentation. + + + WAVE_FORMAT_IPI_RPELP + WAVE_FORMAT_IPI_RPELP + + + + No documentation. + + + WAVE_FORMAT_CS2 + WAVE_FORMAT_CS2 + + + + No documentation. + + + WAVE_FORMAT_SONY_SCX + WAVE_FORMAT_SONY_SCX + + + + No documentation. + + + WAVE_FORMAT_SONY_SCY + WAVE_FORMAT_SONY_SCY + + + + No documentation. + + + WAVE_FORMAT_SONY_ATRAC3 + WAVE_FORMAT_SONY_ATRAC3 + + + + No documentation. + + + WAVE_FORMAT_SONY_SPC + WAVE_FORMAT_SONY_SPC + + + + No documentation. + + + WAVE_FORMAT_TELUM_AUDIO + WAVE_FORMAT_TELUM_AUDIO + + + + No documentation. + + + WAVE_FORMAT_TELUM_IA_AUDIO + WAVE_FORMAT_TELUM_IA_AUDIO + + + + No documentation. + + + WAVE_FORMAT_NORCOM_VOICE_SYSTEMS_ADPCM + WAVE_FORMAT_NORCOM_VOICE_SYSTEMS_ADPCM + + + + No documentation. + + + WAVE_FORMAT_FM_TOWNS_SND + WAVE_FORMAT_FM_TOWNS_SND + + + + No documentation. + + + WAVE_FORMAT_MICRONAS + WAVE_FORMAT_MICRONAS + + + + No documentation. + + + WAVE_FORMAT_MICRONAS_CELP833 + WAVE_FORMAT_MICRONAS_CELP833 + + + + No documentation. + + + WAVE_FORMAT_BTV_DIGITAL + WAVE_FORMAT_BTV_DIGITAL + + + + No documentation. + + + WAVE_FORMAT_INTEL_MUSIC_CODER + WAVE_FORMAT_INTEL_MUSIC_CODER + + + + No documentation. + + + WAVE_FORMAT_INDEO_AUDIO + WAVE_FORMAT_INDEO_AUDIO + + + + No documentation. + + + WAVE_FORMAT_QDESIGN_MUSIC + WAVE_FORMAT_QDESIGN_MUSIC + + + + No documentation. + + + WAVE_FORMAT_ON2_VP7_AUDIO + WAVE_FORMAT_ON2_VP7_AUDIO + + + + No documentation. + + + WAVE_FORMAT_ON2_VP6_AUDIO + WAVE_FORMAT_ON2_VP6_AUDIO + + + + No documentation. + + + WAVE_FORMAT_VME_VMPCM + WAVE_FORMAT_VME_VMPCM + + + + No documentation. + + + WAVE_FORMAT_TPC + WAVE_FORMAT_TPC + + + + No documentation. + + + WAVE_FORMAT_LIGHTWAVE_LOSSLESS + WAVE_FORMAT_LIGHTWAVE_LOSSLESS + + + + No documentation. + + + WAVE_FORMAT_OLIGSM + WAVE_FORMAT_OLIGSM + + + + No documentation. + + + WAVE_FORMAT_OLIADPCM + WAVE_FORMAT_OLIADPCM + + + + No documentation. + + + WAVE_FORMAT_OLICELP + WAVE_FORMAT_OLICELP + + + + No documentation. + + + WAVE_FORMAT_OLISBC + WAVE_FORMAT_OLISBC + + + + No documentation. + + + WAVE_FORMAT_OLIOPR + WAVE_FORMAT_OLIOPR + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC + WAVE_FORMAT_LH_CODEC + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC_CELP + WAVE_FORMAT_LH_CODEC_CELP + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC_SBC8 + WAVE_FORMAT_LH_CODEC_SBC8 + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC_SBC12 + WAVE_FORMAT_LH_CODEC_SBC12 + + + + No documentation. + + + WAVE_FORMAT_LH_CODEC_SBC16 + WAVE_FORMAT_LH_CODEC_SBC16 + + + + No documentation. + + + WAVE_FORMAT_NORRIS + WAVE_FORMAT_NORRIS + + + + No documentation. + + + WAVE_FORMAT_ISIAUDIO_2 + WAVE_FORMAT_ISIAUDIO_2 + + + + No documentation. + + + WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS + WAVE_FORMAT_SOUNDSPACE_MUSICOMPRESS + + + + No documentation. + + + WAVE_FORMAT_MPEG_ADTS_AAC + WAVE_FORMAT_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_RAW_AAC + WAVE_FORMAT_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_LOAS + WAVE_FORMAT_MPEG_LOAS + + + + No documentation. + + + WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC + WAVE_FORMAT_NOKIA_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_NOKIA_MPEG_RAW_AAC + WAVE_FORMAT_NOKIA_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC + WAVE_FORMAT_VODAFONE_MPEG_ADTS_AAC + + + + No documentation. + + + WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC + WAVE_FORMAT_VODAFONE_MPEG_RAW_AAC + + + + No documentation. + + + WAVE_FORMAT_MPEG_HEAAC + WAVE_FORMAT_MPEG_HEAAC + + + + No documentation. + + + WAVE_FORMAT_VOXWARE_RT24_SPEECH + WAVE_FORMAT_VOXWARE_RT24_SPEECH + + + + No documentation. + + + WAVE_FORMAT_SONICFOUNDRY_LOSSLESS + WAVE_FORMAT_SONICFOUNDRY_LOSSLESS + + + + No documentation. + + + WAVE_FORMAT_INNINGS_TELECOM_ADPCM + WAVE_FORMAT_INNINGS_TELECOM_ADPCM + + + + No documentation. + + + WAVE_FORMAT_LUCENT_SX8300P + WAVE_FORMAT_LUCENT_SX8300P + + + + No documentation. + + + WAVE_FORMAT_LUCENT_SX5363S + WAVE_FORMAT_LUCENT_SX5363S + + + + No documentation. + + + WAVE_FORMAT_CUSEEME + WAVE_FORMAT_CUSEEME + + + + No documentation. + + + WAVE_FORMAT_NTCSOFT_ALF2CM_ACM + WAVE_FORMAT_NTCSOFT_ALF2CM_ACM + + + + No documentation. + + + WAVE_FORMAT_DVM + WAVE_FORMAT_DVM + + + + No documentation. + + + WAVE_FORMAT_DTS2 + WAVE_FORMAT_DTS2 + + + + No documentation. + + + WAVE_FORMAT_MAKEAVIS + WAVE_FORMAT_MAKEAVIS + + + + No documentation. + + + WAVE_FORMAT_DIVIO_MPEG4_AAC + WAVE_FORMAT_DIVIO_MPEG4_AAC + + + + No documentation. + + + WAVE_FORMAT_NOKIA_ADAPTIVE_MULTIRATE + WAVE_FORMAT_NOKIA_ADAPTIVE_MULTIRATE + + + + No documentation. + + + WAVE_FORMAT_DIVIO_G726 + WAVE_FORMAT_DIVIO_G726 + + + + No documentation. + + + WAVE_FORMAT_LEAD_SPEECH + WAVE_FORMAT_LEAD_SPEECH + + + + No documentation. + + + WAVE_FORMAT_LEAD_VORBIS + WAVE_FORMAT_LEAD_VORBIS + + + + No documentation. + + + WAVE_FORMAT_WAVPACK_AUDIO + WAVE_FORMAT_WAVPACK_AUDIO + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_1 + WAVE_FORMAT_OGG_VORBIS_MODE_1 + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_2 + WAVE_FORMAT_OGG_VORBIS_MODE_2 + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_3 + WAVE_FORMAT_OGG_VORBIS_MODE_3 + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_1_PLUS + WAVE_FORMAT_OGG_VORBIS_MODE_1_PLUS + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_2_PLUS + WAVE_FORMAT_OGG_VORBIS_MODE_2_PLUS + + + + No documentation. + + + WAVE_FORMAT_OGG_VORBIS_MODE_3_PLUS + WAVE_FORMAT_OGG_VORBIS_MODE_3_PLUS + + + + No documentation. + + + WAVE_FORMAT_3COM_NBX + WAVE_FORMAT_3COM_NBX + + + + No documentation. + + + WAVE_FORMAT_FAAD_AAC + WAVE_FORMAT_FAAD_AAC + + + + No documentation. + + + WAVE_FORMAT_GSM_AMR_CBR + WAVE_FORMAT_GSM_AMR_CBR + + + + No documentation. + + + WAVE_FORMAT_GSM_AMR_VBR_SID + WAVE_FORMAT_GSM_AMR_VBR_SID + + + + No documentation. + + + WAVE_FORMAT_COMVERSE_INFOSYS_G723_1 + WAVE_FORMAT_COMVERSE_INFOSYS_G723_1 + + + + No documentation. + + + WAVE_FORMAT_COMVERSE_INFOSYS_AVQSBC + WAVE_FORMAT_COMVERSE_INFOSYS_AVQSBC + + + + No documentation. + + + WAVE_FORMAT_COMVERSE_INFOSYS_SBC + WAVE_FORMAT_COMVERSE_INFOSYS_SBC + + + + No documentation. + + + WAVE_FORMAT_SYMBOL_G729_A + WAVE_FORMAT_SYMBOL_G729_A + + + + No documentation. + + + WAVE_FORMAT_VOICEAGE_AMR_WB + WAVE_FORMAT_VOICEAGE_AMR_WB + + + + No documentation. + + + WAVE_FORMAT_INGENIENT_G726 + WAVE_FORMAT_INGENIENT_G726 + + + + No documentation. + + + WAVE_FORMAT_MPEG4_AAC + WAVE_FORMAT_MPEG4_AAC + + + + No documentation. + + + WAVE_FORMAT_ENCORE_G726 + WAVE_FORMAT_ENCORE_G726 + + + + No documentation. + + + WAVE_FORMAT_ZOLL_ASAO + WAVE_FORMAT_ZOLL_ASAO + + + + No documentation. + + + WAVE_FORMAT_SPEEX_VOICE + WAVE_FORMAT_SPEEX_VOICE + + + + No documentation. + + + WAVE_FORMAT_VIANIX_MASC + WAVE_FORMAT_VIANIX_MASC + + + + No documentation. + + + WAVE_FORMAT_WM9_SPECTRUM_ANALYZER + WAVE_FORMAT_WM9_SPECTRUM_ANALYZER + + + + No documentation. + + + WAVE_FORMAT_WMF_SPECTRUM_ANAYZER + WAVE_FORMAT_WMF_SPECTRUM_ANAYZER + + + + No documentation. + + + WAVE_FORMAT_GSM_610 + WAVE_FORMAT_GSM_610 + + + + No documentation. + + + WAVE_FORMAT_GSM_620 + WAVE_FORMAT_GSM_620 + + + + No documentation. + + + WAVE_FORMAT_GSM_660 + WAVE_FORMAT_GSM_660 + + + + No documentation. + + + WAVE_FORMAT_GSM_690 + WAVE_FORMAT_GSM_690 + + + + No documentation. + + + WAVE_FORMAT_GSM_ADAPTIVE_MULTIRATE_WB + WAVE_FORMAT_GSM_ADAPTIVE_MULTIRATE_WB + + + + No documentation. + + + WAVE_FORMAT_POLYCOM_G722 + WAVE_FORMAT_POLYCOM_G722 + + + + No documentation. + + + WAVE_FORMAT_POLYCOM_G728 + WAVE_FORMAT_POLYCOM_G728 + + + + No documentation. + + + WAVE_FORMAT_POLYCOM_G729_A + WAVE_FORMAT_POLYCOM_G729_A + + + + No documentation. + + + WAVE_FORMAT_POLYCOM_SIREN + WAVE_FORMAT_POLYCOM_SIREN + + + + No documentation. + + + WAVE_FORMAT_GLOBAL_IP_ILBC + WAVE_FORMAT_GLOBAL_IP_ILBC + + + + No documentation. + + + WAVE_FORMAT_RADIOTIME_TIME_SHIFT_RADIO + WAVE_FORMAT_RADIOTIME_TIME_SHIFT_RADIO + + + + No documentation. + + + WAVE_FORMAT_NICE_ACA + WAVE_FORMAT_NICE_ACA + + + + No documentation. + + + WAVE_FORMAT_NICE_ADPCM + WAVE_FORMAT_NICE_ADPCM + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G721 + WAVE_FORMAT_VOCORD_G721 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G726 + WAVE_FORMAT_VOCORD_G726 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G722_1 + WAVE_FORMAT_VOCORD_G722_1 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G728 + WAVE_FORMAT_VOCORD_G728 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G729 + WAVE_FORMAT_VOCORD_G729 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G729_A + WAVE_FORMAT_VOCORD_G729_A + + + + No documentation. + + + WAVE_FORMAT_VOCORD_G723_1 + WAVE_FORMAT_VOCORD_G723_1 + + + + No documentation. + + + WAVE_FORMAT_VOCORD_LBC + WAVE_FORMAT_VOCORD_LBC + + + + No documentation. + + + WAVE_FORMAT_NICE_G728 + WAVE_FORMAT_NICE_G728 + + + + No documentation. + + + WAVE_FORMAT_FRACE_TELECOM_G729 + WAVE_FORMAT_FRACE_TELECOM_G729 + + + + No documentation. + + + WAVE_FORMAT_CODIAN + WAVE_FORMAT_CODIAN + + + + No documentation. + + + WAVE_FORMAT_FLAC + WAVE_FORMAT_FLAC + + + + No documentation. + + + WAVE_FORMAT_EXTENSIBLE + WAVE_FORMAT_EXTENSIBLE + + + + No documentation. + + + WAVE_FORMAT_DEVELOPMENT + WAVE_FORMAT_DEVELOPMENT + + + + No documentation. + + + WAVE_FORMAT_PCM + WAVE_FORMAT_PCM + + + + No documentation. + + + STGC + STGC + + + + No documentation. + + + STGC_DEFAULT + STGC_DEFAULT + + + + No documentation. + + + STGC_OVERWRITE + STGC_OVERWRITE + + + + No documentation. + + + STGC_ONLYIFCURRENT + STGC_ONLYIFCURRENT + + + + No documentation. + + + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE + STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE + + + + No documentation. + + + STGC_CONSOLIDATE + STGC_CONSOLIDATE + + + + No documentation. + + + SHARPDX_ERRORCODE + SHARPDX_ERRORCODE + + + + No documentation. + + + ERROR_SUCCESS + ERROR_SUCCESS + + + + No documentation. + + + ERROR_INVALID_FUNCTION + ERROR_INVALID_FUNCTION + + + + No documentation. + + + ERROR_FILE_NOT_FOUND + ERROR_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_PATH_NOT_FOUND + ERROR_PATH_NOT_FOUND + + + + No documentation. + + + ERROR_TOO_MANY_OPEN_FILES + ERROR_TOO_MANY_OPEN_FILES + + + + No documentation. + + + ERROR_ACCESS_DENIED + ERROR_ACCESS_DENIED + + + + No documentation. + + + ERROR_INVALID_HANDLE + ERROR_INVALID_HANDLE + + + + No documentation. + + + ERROR_ARENA_TRASHED + ERROR_ARENA_TRASHED + + + + No documentation. + + + ERROR_NOT_ENOUGH_MEMORY + ERROR_NOT_ENOUGH_MEMORY + + + + No documentation. + + + ERROR_INVALID_BLOCK + ERROR_INVALID_BLOCK + + + + No documentation. + + + ERROR_BAD_ENVIRONMENT + ERROR_BAD_ENVIRONMENT + + + + No documentation. + + + ERROR_BAD_FORMAT + ERROR_BAD_FORMAT + + + + No documentation. + + + ERROR_INVALID_ACCESS + ERROR_INVALID_ACCESS + + + + No documentation. + + + ERROR_INVALID_DATA + ERROR_INVALID_DATA + + + + No documentation. + + + ERROR_OUTOFMEMORY + ERROR_OUTOFMEMORY + + + + No documentation. + + + ERROR_INVALID_DRIVE + ERROR_INVALID_DRIVE + + + + No documentation. + + + ERROR_CURRENT_DIRECTORY + ERROR_CURRENT_DIRECTORY + + + + No documentation. + + + ERROR_NOT_SAME_DEVICE + ERROR_NOT_SAME_DEVICE + + + + No documentation. + + + ERROR_NO_MORE_FILES + ERROR_NO_MORE_FILES + + + + No documentation. + + + ERROR_WRITE_PROTECT + ERROR_WRITE_PROTECT + + + + No documentation. + + + ERROR_BAD_UNIT + ERROR_BAD_UNIT + + + + No documentation. + + + ERROR_NOT_READY + ERROR_NOT_READY + + + + No documentation. + + + ERROR_BAD_COMMAND + ERROR_BAD_COMMAND + + + + No documentation. + + + ERROR_CRC + ERROR_CRC + + + + No documentation. + + + ERROR_BAD_LENGTH + ERROR_BAD_LENGTH + + + + No documentation. + + + ERROR_SEEK + ERROR_SEEK + + + + No documentation. + + + ERROR_NOT_DOS_DISK + ERROR_NOT_DOS_DISK + + + + No documentation. + + + ERROR_SECTOR_NOT_FOUND + ERROR_SECTOR_NOT_FOUND + + + + No documentation. + + + ERROR_OUT_OF_PAPER + ERROR_OUT_OF_PAPER + + + + No documentation. + + + ERROR_WRITE_FAULT + ERROR_WRITE_FAULT + + + + No documentation. + + + ERROR_READ_FAULT + ERROR_READ_FAULT + + + + No documentation. + + + ERROR_GEN_FAILURE + ERROR_GEN_FAILURE + + + + No documentation. + + + ERROR_SHARING_VIOLATION + ERROR_SHARING_VIOLATION + + + + No documentation. + + + ERROR_LOCK_VIOLATION + ERROR_LOCK_VIOLATION + + + + No documentation. + + + ERROR_WRONG_DISK + ERROR_WRONG_DISK + + + + No documentation. + + + ERROR_SHARING_BUFFER_EXCEEDED + ERROR_SHARING_BUFFER_EXCEEDED + + + + No documentation. + + + ERROR_HANDLE_EOF + ERROR_HANDLE_EOF + + + + No documentation. + + + ERROR_HANDLE_DISK_FULL + ERROR_HANDLE_DISK_FULL + + + + No documentation. + + + ERROR_NOT_SUPPORTED + ERROR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_REM_NOT_LIST + ERROR_REM_NOT_LIST + + + + No documentation. + + + ERROR_DUP_NAME + ERROR_DUP_NAME + + + + No documentation. + + + ERROR_BAD_NETPATH + ERROR_BAD_NETPATH + + + + No documentation. + + + ERROR_NETWORK_BUSY + ERROR_NETWORK_BUSY + + + + No documentation. + + + ERROR_DEV_NOT_EXIST + ERROR_DEV_NOT_EXIST + + + + No documentation. + + + ERROR_TOO_MANY_CMDS + ERROR_TOO_MANY_CMDS + + + + No documentation. + + + ERROR_ADAP_HDW_ERR + ERROR_ADAP_HDW_ERR + + + + No documentation. + + + ERROR_BAD_NET_RESP + ERROR_BAD_NET_RESP + + + + No documentation. + + + ERROR_UNEXP_NET_ERR + ERROR_UNEXP_NET_ERR + + + + No documentation. + + + ERROR_BAD_REM_ADAP + ERROR_BAD_REM_ADAP + + + + No documentation. + + + ERROR_PRINTQ_FULL + ERROR_PRINTQ_FULL + + + + No documentation. + + + ERROR_NO_SPOOL_SPACE + ERROR_NO_SPOOL_SPACE + + + + No documentation. + + + ERROR_PRINT_CANCELLED + ERROR_PRINT_CANCELLED + + + + No documentation. + + + ERROR_NETNAME_DELETED + ERROR_NETNAME_DELETED + + + + No documentation. + + + ERROR_NETWORK_ACCESS_DENIED + ERROR_NETWORK_ACCESS_DENIED + + + + No documentation. + + + ERROR_BAD_DEV_TYPE + ERROR_BAD_DEV_TYPE + + + + No documentation. + + + ERROR_BAD_NET_NAME + ERROR_BAD_NET_NAME + + + + No documentation. + + + ERROR_TOO_MANY_NAMES + ERROR_TOO_MANY_NAMES + + + + No documentation. + + + ERROR_TOO_MANY_SESS + ERROR_TOO_MANY_SESS + + + + No documentation. + + + ERROR_SHARING_PAUSED + ERROR_SHARING_PAUSED + + + + No documentation. + + + ERROR_REQ_NOT_ACCEP + ERROR_REQ_NOT_ACCEP + + + + No documentation. + + + ERROR_REDIR_PAUSED + ERROR_REDIR_PAUSED + + + + No documentation. + + + ERROR_FILE_EXISTS + ERROR_FILE_EXISTS + + + + No documentation. + + + ERROR_CANNOT_MAKE + ERROR_CANNOT_MAKE + + + + No documentation. + + + ERROR_FAIL_I24 + ERROR_FAIL_I24 + + + + No documentation. + + + ERROR_OUT_OF_STRUCTURES + ERROR_OUT_OF_STRUCTURES + + + + No documentation. + + + ERROR_ALREADY_ASSIGNED + ERROR_ALREADY_ASSIGNED + + + + No documentation. + + + ERROR_INVALID_PASSWORD + ERROR_INVALID_PASSWORD + + + + No documentation. + + + ERROR_INVALID_PARAMETER + ERROR_INVALID_PARAMETER + + + + No documentation. + + + ERROR_NET_WRITE_FAULT + ERROR_NET_WRITE_FAULT + + + + No documentation. + + + ERROR_NO_PROC_SLOTS + ERROR_NO_PROC_SLOTS + + + + No documentation. + + + ERROR_TOO_MANY_SEMAPHORES + ERROR_TOO_MANY_SEMAPHORES + + + + No documentation. + + + ERROR_EXCL_SEM_ALREADY_OWNED + ERROR_EXCL_SEM_ALREADY_OWNED + + + + No documentation. + + + ERROR_SEM_IS_SET + ERROR_SEM_IS_SET + + + + No documentation. + + + ERROR_TOO_MANY_SEM_REQUESTS + ERROR_TOO_MANY_SEM_REQUESTS + + + + No documentation. + + + ERROR_INVALID_AT_INTERRUPT_TIME + ERROR_INVALID_AT_INTERRUPT_TIME + + + + No documentation. + + + ERROR_SEM_OWNER_DIED + ERROR_SEM_OWNER_DIED + + + + No documentation. + + + ERROR_SEM_USER_LIMIT + ERROR_SEM_USER_LIMIT + + + + No documentation. + + + ERROR_DISK_CHANGE + ERROR_DISK_CHANGE + + + + No documentation. + + + ERROR_DRIVE_LOCKED + ERROR_DRIVE_LOCKED + + + + No documentation. + + + ERROR_BROKEN_PIPE + ERROR_BROKEN_PIPE + + + + No documentation. + + + ERROR_OPEN_FAILED + ERROR_OPEN_FAILED + + + + No documentation. + + + ERROR_BUFFER_OVERFLOW + ERROR_BUFFER_OVERFLOW + + + + No documentation. + + + ERROR_DISK_FULL + ERROR_DISK_FULL + + + + No documentation. + + + ERROR_NO_MORE_SEARCH_HANDLES + ERROR_NO_MORE_SEARCH_HANDLES + + + + No documentation. + + + ERROR_INVALID_TARGET_HANDLE + ERROR_INVALID_TARGET_HANDLE + + + + No documentation. + + + ERROR_INVALID_CATEGORY + ERROR_INVALID_CATEGORY + + + + No documentation. + + + ERROR_INVALID_VERIFY_SWITCH + ERROR_INVALID_VERIFY_SWITCH + + + + No documentation. + + + ERROR_BAD_DRIVER_LEVEL + ERROR_BAD_DRIVER_LEVEL + + + + No documentation. + + + ERROR_CALL_NOT_IMPLEMENTED + ERROR_CALL_NOT_IMPLEMENTED + + + + No documentation. + + + ERROR_SEM_TIMEOUT + ERROR_SEM_TIMEOUT + + + + No documentation. + + + ERROR_INSUFFICIENT_BUFFER + ERROR_INSUFFICIENT_BUFFER + + + + No documentation. + + + ERROR_INVALID_NAME + ERROR_INVALID_NAME + + + + No documentation. + + + ERROR_INVALID_LEVEL + ERROR_INVALID_LEVEL + + + + No documentation. + + + ERROR_NO_VOLUME_LABEL + ERROR_NO_VOLUME_LABEL + + + + No documentation. + + + ERROR_MOD_NOT_FOUND + ERROR_MOD_NOT_FOUND + + + + No documentation. + + + ERROR_PROC_NOT_FOUND + ERROR_PROC_NOT_FOUND + + + + No documentation. + + + ERROR_WAIT_NO_CHILDREN + ERROR_WAIT_NO_CHILDREN + + + + No documentation. + + + ERROR_CHILD_NOT_COMPLETE + ERROR_CHILD_NOT_COMPLETE + + + + No documentation. + + + ERROR_DIRECT_ACCESS_HANDLE + ERROR_DIRECT_ACCESS_HANDLE + + + + No documentation. + + + ERROR_NEGATIVE_SEEK + ERROR_NEGATIVE_SEEK + + + + No documentation. + + + ERROR_SEEK_ON_DEVICE + ERROR_SEEK_ON_DEVICE + + + + No documentation. + + + ERROR_IS_JOIN_TARGET + ERROR_IS_JOIN_TARGET + + + + No documentation. + + + ERROR_IS_JOINED + ERROR_IS_JOINED + + + + No documentation. + + + ERROR_IS_SUBSTED + ERROR_IS_SUBSTED + + + + No documentation. + + + ERROR_NOT_JOINED + ERROR_NOT_JOINED + + + + No documentation. + + + ERROR_NOT_SUBSTED + ERROR_NOT_SUBSTED + + + + No documentation. + + + ERROR_JOIN_TO_JOIN + ERROR_JOIN_TO_JOIN + + + + No documentation. + + + ERROR_SUBST_TO_SUBST + ERROR_SUBST_TO_SUBST + + + + No documentation. + + + ERROR_JOIN_TO_SUBST + ERROR_JOIN_TO_SUBST + + + + No documentation. + + + ERROR_SUBST_TO_JOIN + ERROR_SUBST_TO_JOIN + + + + No documentation. + + + ERROR_BUSY_DRIVE + ERROR_BUSY_DRIVE + + + + No documentation. + + + ERROR_SAME_DRIVE + ERROR_SAME_DRIVE + + + + No documentation. + + + ERROR_DIR_NOT_ROOT + ERROR_DIR_NOT_ROOT + + + + No documentation. + + + ERROR_DIR_NOT_EMPTY + ERROR_DIR_NOT_EMPTY + + + + No documentation. + + + ERROR_IS_SUBST_PATH + ERROR_IS_SUBST_PATH + + + + No documentation. + + + ERROR_IS_JOIN_PATH + ERROR_IS_JOIN_PATH + + + + No documentation. + + + ERROR_PATH_BUSY + ERROR_PATH_BUSY + + + + No documentation. + + + ERROR_IS_SUBST_TARGET + ERROR_IS_SUBST_TARGET + + + + No documentation. + + + ERROR_SYSTEM_TRACE + ERROR_SYSTEM_TRACE + + + + No documentation. + + + ERROR_INVALID_EVENT_COUNT + ERROR_INVALID_EVENT_COUNT + + + + No documentation. + + + ERROR_TOO_MANY_MUXWAITERS + ERROR_TOO_MANY_MUXWAITERS + + + + No documentation. + + + ERROR_INVALID_LIST_FORMAT + ERROR_INVALID_LIST_FORMAT + + + + No documentation. + + + ERROR_LABEL_TOO_LONG + ERROR_LABEL_TOO_LONG + + + + No documentation. + + + ERROR_TOO_MANY_TCBS + ERROR_TOO_MANY_TCBS + + + + No documentation. + + + ERROR_SIGNAL_REFUSED + ERROR_SIGNAL_REFUSED + + + + No documentation. + + + ERROR_DISCARDED + ERROR_DISCARDED + + + + No documentation. + + + ERROR_NOT_LOCKED + ERROR_NOT_LOCKED + + + + No documentation. + + + ERROR_BAD_THREADID_ADDR + ERROR_BAD_THREADID_ADDR + + + + No documentation. + + + ERROR_BAD_ARGUMENTS + ERROR_BAD_ARGUMENTS + + + + No documentation. + + + ERROR_BAD_PATHNAME + ERROR_BAD_PATHNAME + + + + No documentation. + + + ERROR_SIGNAL_PENDING + ERROR_SIGNAL_PENDING + + + + No documentation. + + + ERROR_MAX_THRDS_REACHED + ERROR_MAX_THRDS_REACHED + + + + No documentation. + + + ERROR_LOCK_FAILED + ERROR_LOCK_FAILED + + + + No documentation. + + + ERROR_BUSY + ERROR_BUSY + + + + No documentation. + + + ERROR_DEVICE_SUPPORT_IN_PROGRESS + ERROR_DEVICE_SUPPORT_IN_PROGRESS + + + + No documentation. + + + ERROR_CANCEL_VIOLATION + ERROR_CANCEL_VIOLATION + + + + No documentation. + + + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED + ERROR_ATOMIC_LOCKS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_INVALID_SEGMENT_NUMBER + ERROR_INVALID_SEGMENT_NUMBER + + + + No documentation. + + + ERROR_INVALID_ORDINAL + ERROR_INVALID_ORDINAL + + + + No documentation. + + + ERROR_ALREADY_EXISTS + ERROR_ALREADY_EXISTS + + + + No documentation. + + + ERROR_INVALID_FLAG_NUMBER + ERROR_INVALID_FLAG_NUMBER + + + + No documentation. + + + ERROR_SEM_NOT_FOUND + ERROR_SEM_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_STARTING_CODESEG + ERROR_INVALID_STARTING_CODESEG + + + + No documentation. + + + ERROR_INVALID_STACKSEG + ERROR_INVALID_STACKSEG + + + + No documentation. + + + ERROR_INVALID_MODULETYPE + ERROR_INVALID_MODULETYPE + + + + No documentation. + + + ERROR_INVALID_EXE_SIGNATURE + ERROR_INVALID_EXE_SIGNATURE + + + + No documentation. + + + ERROR_EXE_MARKED_INVALID + ERROR_EXE_MARKED_INVALID + + + + No documentation. + + + ERROR_BAD_EXE_FORMAT + ERROR_BAD_EXE_FORMAT + + + + No documentation. + + + ERROR_ITERATED_DATA_EXCEEDS_64k + ERROR_ITERATED_DATA_EXCEEDS_64k + + + + No documentation. + + + ERROR_INVALID_MINALLOCSIZE + ERROR_INVALID_MINALLOCSIZE + + + + No documentation. + + + ERROR_DYNLINK_FROM_INVALID_RING + ERROR_DYNLINK_FROM_INVALID_RING + + + + No documentation. + + + ERROR_IOPL_NOT_ENABLED + ERROR_IOPL_NOT_ENABLED + + + + No documentation. + + + ERROR_INVALID_SEGDPL + ERROR_INVALID_SEGDPL + + + + No documentation. + + + ERROR_AUTODATASEG_EXCEEDS_64k + ERROR_AUTODATASEG_EXCEEDS_64k + + + + No documentation. + + + ERROR_RING2SEG_MUST_BE_MOVABLE + ERROR_RING2SEG_MUST_BE_MOVABLE + + + + No documentation. + + + ERROR_RELOC_CHAIN_XEEDS_SEGLIM + ERROR_RELOC_CHAIN_XEEDS_SEGLIM + + + + No documentation. + + + ERROR_INFLOOP_IN_RELOC_CHAIN + ERROR_INFLOOP_IN_RELOC_CHAIN + + + + No documentation. + + + ERROR_ENVVAR_NOT_FOUND + ERROR_ENVVAR_NOT_FOUND + + + + No documentation. + + + ERROR_NO_SIGNAL_SENT + ERROR_NO_SIGNAL_SENT + + + + No documentation. + + + ERROR_FILENAME_EXCED_RANGE + ERROR_FILENAME_EXCED_RANGE + + + + No documentation. + + + ERROR_RING2_STACK_IN_USE + ERROR_RING2_STACK_IN_USE + + + + No documentation. + + + ERROR_META_EXPANSION_TOO_LONG + ERROR_META_EXPANSION_TOO_LONG + + + + No documentation. + + + ERROR_INVALID_SIGNAL_NUMBER + ERROR_INVALID_SIGNAL_NUMBER + + + + No documentation. + + + ERROR_THREAD_1_INACTIVE + ERROR_THREAD_1_INACTIVE + + + + No documentation. + + + ERROR_LOCKED + ERROR_LOCKED + + + + No documentation. + + + ERROR_TOO_MANY_MODULES + ERROR_TOO_MANY_MODULES + + + + No documentation. + + + ERROR_NESTING_NOT_ALLOWED + ERROR_NESTING_NOT_ALLOWED + + + + No documentation. + + + ERROR_EXE_MACHINE_TYPE_MISMATCH + ERROR_EXE_MACHINE_TYPE_MISMATCH + + + + No documentation. + + + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY + ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY + + + + No documentation. + + + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY + ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY + + + + No documentation. + + + ERROR_FILE_CHECKED_OUT + ERROR_FILE_CHECKED_OUT + + + + No documentation. + + + ERROR_CHECKOUT_REQUIRED + ERROR_CHECKOUT_REQUIRED + + + + No documentation. + + + ERROR_BAD_FILE_TYPE + ERROR_BAD_FILE_TYPE + + + + No documentation. + + + ERROR_FILE_TOO_LARGE + ERROR_FILE_TOO_LARGE + + + + No documentation. + + + ERROR_FORMS_AUTH_REQUIRED + ERROR_FORMS_AUTH_REQUIRED + + + + No documentation. + + + ERROR_VIRUS_INFECTED + ERROR_VIRUS_INFECTED + + + + No documentation. + + + ERROR_VIRUS_DELETED + ERROR_VIRUS_DELETED + + + + No documentation. + + + ERROR_PIPE_LOCAL + ERROR_PIPE_LOCAL + + + + No documentation. + + + ERROR_BAD_PIPE + ERROR_BAD_PIPE + + + + No documentation. + + + ERROR_PIPE_BUSY + ERROR_PIPE_BUSY + + + + No documentation. + + + ERROR_NO_DATA + ERROR_NO_DATA + + + + No documentation. + + + ERROR_PIPE_NOT_CONNECTED + ERROR_PIPE_NOT_CONNECTED + + + + No documentation. + + + ERROR_MORE_DATA + ERROR_MORE_DATA + + + + No documentation. + + + ERROR_VC_DISCONNECTED + ERROR_VC_DISCONNECTED + + + + No documentation. + + + ERROR_INVALID_EA_NAME + ERROR_INVALID_EA_NAME + + + + No documentation. + + + ERROR_EA_LIST_INCONSISTENT + ERROR_EA_LIST_INCONSISTENT + + + + No documentation. + + + ERROR_NO_MORE_ITEMS + ERROR_NO_MORE_ITEMS + + + + No documentation. + + + ERROR_CANNOT_COPY + ERROR_CANNOT_COPY + + + + No documentation. + + + ERROR_DIRECTORY + ERROR_DIRECTORY + + + + No documentation. + + + ERROR_EAS_DIDNT_FIT + ERROR_EAS_DIDNT_FIT + + + + No documentation. + + + ERROR_EA_FILE_CORRUPT + ERROR_EA_FILE_CORRUPT + + + + No documentation. + + + ERROR_EA_TABLE_FULL + ERROR_EA_TABLE_FULL + + + + No documentation. + + + ERROR_INVALID_EA_HANDLE + ERROR_INVALID_EA_HANDLE + + + + No documentation. + + + ERROR_EAS_NOT_SUPPORTED + ERROR_EAS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_NOT_OWNER + ERROR_NOT_OWNER + + + + No documentation. + + + ERROR_TOO_MANY_POSTS + ERROR_TOO_MANY_POSTS + + + + No documentation. + + + ERROR_PARTIAL_COPY + ERROR_PARTIAL_COPY + + + + No documentation. + + + ERROR_OPLOCK_NOT_GRANTED + ERROR_OPLOCK_NOT_GRANTED + + + + No documentation. + + + ERROR_INVALID_OPLOCK_PROTOCOL + ERROR_INVALID_OPLOCK_PROTOCOL + + + + No documentation. + + + ERROR_DISK_TOO_FRAGMENTED + ERROR_DISK_TOO_FRAGMENTED + + + + No documentation. + + + ERROR_DELETE_PENDING + ERROR_DELETE_PENDING + + + + No documentation. + + + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING + ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING + + + + No documentation. + + + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME + ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME + + + + No documentation. + + + ERROR_SECURITY_STREAM_IS_INCONSISTENT + ERROR_SECURITY_STREAM_IS_INCONSISTENT + + + + No documentation. + + + ERROR_INVALID_LOCK_RANGE + ERROR_INVALID_LOCK_RANGE + + + + No documentation. + + + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT + ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT + + + + No documentation. + + + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED + ERROR_NOTIFICATION_GUID_ALREADY_DEFINED + + + + No documentation. + + + ERROR_INVALID_EXCEPTION_HANDLER + ERROR_INVALID_EXCEPTION_HANDLER + + + + No documentation. + + + ERROR_DUPLICATE_PRIVILEGES + ERROR_DUPLICATE_PRIVILEGES + + + + No documentation. + + + ERROR_NO_RANGES_PROCESSED + ERROR_NO_RANGES_PROCESSED + + + + No documentation. + + + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE + ERROR_NOT_ALLOWED_ON_SYSTEM_FILE + + + + No documentation. + + + ERROR_DISK_RESOURCES_EXHAUSTED + ERROR_DISK_RESOURCES_EXHAUSTED + + + + No documentation. + + + ERROR_INVALID_TOKEN + ERROR_INVALID_TOKEN + + + + No documentation. + + + ERROR_DEVICE_FEATURE_NOT_SUPPORTED + ERROR_DEVICE_FEATURE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_MR_MID_NOT_FOUND + ERROR_MR_MID_NOT_FOUND + + + + No documentation. + + + ERROR_SCOPE_NOT_FOUND + ERROR_SCOPE_NOT_FOUND + + + + No documentation. + + + ERROR_UNDEFINED_SCOPE + ERROR_UNDEFINED_SCOPE + + + + No documentation. + + + ERROR_INVALID_CAP + ERROR_INVALID_CAP + + + + No documentation. + + + ERROR_DEVICE_UNREACHABLE + ERROR_DEVICE_UNREACHABLE + + + + No documentation. + + + ERROR_DEVICE_NO_RESOURCES + ERROR_DEVICE_NO_RESOURCES + + + + No documentation. + + + ERROR_DATA_CHECKSUM_ERROR + ERROR_DATA_CHECKSUM_ERROR + + + + No documentation. + + + ERROR_INTERMIXED_KERNEL_EA_OPERATION + ERROR_INTERMIXED_KERNEL_EA_OPERATION + + + + No documentation. + + + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED + ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED + + + + No documentation. + + + ERROR_OFFSET_ALIGNMENT_VIOLATION + ERROR_OFFSET_ALIGNMENT_VIOLATION + + + + No documentation. + + + ERROR_INVALID_FIELD_IN_PARAMETER_LIST + ERROR_INVALID_FIELD_IN_PARAMETER_LIST + + + + No documentation. + + + ERROR_OPERATION_IN_PROGRESS + ERROR_OPERATION_IN_PROGRESS + + + + No documentation. + + + ERROR_BAD_DEVICE_PATH + ERROR_BAD_DEVICE_PATH + + + + No documentation. + + + ERROR_TOO_MANY_DESCRIPTORS + ERROR_TOO_MANY_DESCRIPTORS + + + + No documentation. + + + ERROR_SCRUB_DATA_DISABLED + ERROR_SCRUB_DATA_DISABLED + + + + No documentation. + + + ERROR_NOT_REDUNDANT_STORAGE + ERROR_NOT_REDUNDANT_STORAGE + + + + No documentation. + + + ERROR_RESIDENT_FILE_NOT_SUPPORTED + ERROR_RESIDENT_FILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_COMPRESSED_FILE_NOT_SUPPORTED + ERROR_COMPRESSED_FILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DIRECTORY_NOT_SUPPORTED + ERROR_DIRECTORY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_NOT_READ_FROM_COPY + ERROR_NOT_READ_FROM_COPY + + + + No documentation. + + + ERROR_FT_WRITE_FAILURE + ERROR_FT_WRITE_FAILURE + + + + No documentation. + + + ERROR_FT_DI_SCAN_REQUIRED + ERROR_FT_DI_SCAN_REQUIRED + + + + No documentation. + + + ERROR_INVALID_KERNEL_INFO_VERSION + ERROR_INVALID_KERNEL_INFO_VERSION + + + + No documentation. + + + ERROR_INVALID_PEP_INFO_VERSION + ERROR_INVALID_PEP_INFO_VERSION + + + + No documentation. + + + ERROR_FAIL_NOACTION_REBOOT + ERROR_FAIL_NOACTION_REBOOT + + + + No documentation. + + + ERROR_FAIL_SHUTDOWN + ERROR_FAIL_SHUTDOWN + + + + No documentation. + + + ERROR_FAIL_RESTART + ERROR_FAIL_RESTART + + + + No documentation. + + + ERROR_MAX_SESSIONS_REACHED + ERROR_MAX_SESSIONS_REACHED + + + + No documentation. + + + ERROR_THREAD_MODE_ALREADY_BACKGROUND + ERROR_THREAD_MODE_ALREADY_BACKGROUND + + + + No documentation. + + + ERROR_THREAD_MODE_NOT_BACKGROUND + ERROR_THREAD_MODE_NOT_BACKGROUND + + + + No documentation. + + + ERROR_PROCESS_MODE_ALREADY_BACKGROUND + ERROR_PROCESS_MODE_ALREADY_BACKGROUND + + + + No documentation. + + + ERROR_PROCESS_MODE_NOT_BACKGROUND + ERROR_PROCESS_MODE_NOT_BACKGROUND + + + + No documentation. + + + ERROR_INVALID_ADDRESS + ERROR_INVALID_ADDRESS + + + + No documentation. + + + ERROR_USER_PROFILE_LOAD + ERROR_USER_PROFILE_LOAD + + + + No documentation. + + + ERROR_ARITHMETIC_OVERFLOW + ERROR_ARITHMETIC_OVERFLOW + + + + No documentation. + + + ERROR_PIPE_CONNECTED + ERROR_PIPE_CONNECTED + + + + No documentation. + + + ERROR_PIPE_LISTENING + ERROR_PIPE_LISTENING + + + + No documentation. + + + ERROR_VERIFIER_STOP + ERROR_VERIFIER_STOP + + + + No documentation. + + + ERROR_ABIOS_ERROR + ERROR_ABIOS_ERROR + + + + No documentation. + + + ERROR_WX86_WARNING + ERROR_WX86_WARNING + + + + No documentation. + + + ERROR_WX86_ERROR + ERROR_WX86_ERROR + + + + No documentation. + + + ERROR_TIMER_NOT_CANCELED + ERROR_TIMER_NOT_CANCELED + + + + No documentation. + + + ERROR_UNWIND + ERROR_UNWIND + + + + No documentation. + + + ERROR_BAD_STACK + ERROR_BAD_STACK + + + + No documentation. + + + ERROR_INVALID_UNWIND_TARGET + ERROR_INVALID_UNWIND_TARGET + + + + No documentation. + + + ERROR_INVALID_PORT_ATTRIBUTES + ERROR_INVALID_PORT_ATTRIBUTES + + + + No documentation. + + + ERROR_PORT_MESSAGE_TOO_LONG + ERROR_PORT_MESSAGE_TOO_LONG + + + + No documentation. + + + ERROR_INVALID_QUOTA_LOWER + ERROR_INVALID_QUOTA_LOWER + + + + No documentation. + + + ERROR_DEVICE_ALREADY_ATTACHED + ERROR_DEVICE_ALREADY_ATTACHED + + + + No documentation. + + + ERROR_INSTRUCTION_MISALIGNMENT + ERROR_INSTRUCTION_MISALIGNMENT + + + + No documentation. + + + ERROR_PROFILING_NOT_STARTED + ERROR_PROFILING_NOT_STARTED + + + + No documentation. + + + ERROR_PROFILING_NOT_STOPPED + ERROR_PROFILING_NOT_STOPPED + + + + No documentation. + + + ERROR_COULD_NOT_INTERPRET + ERROR_COULD_NOT_INTERPRET + + + + No documentation. + + + ERROR_PROFILING_AT_LIMIT + ERROR_PROFILING_AT_LIMIT + + + + No documentation. + + + ERROR_CANT_WAIT + ERROR_CANT_WAIT + + + + No documentation. + + + ERROR_CANT_TERMINATE_SELF + ERROR_CANT_TERMINATE_SELF + + + + No documentation. + + + ERROR_UNEXPECTED_MM_CREATE_ERR + ERROR_UNEXPECTED_MM_CREATE_ERR + + + + No documentation. + + + ERROR_UNEXPECTED_MM_MAP_ERROR + ERROR_UNEXPECTED_MM_MAP_ERROR + + + + No documentation. + + + ERROR_UNEXPECTED_MM_EXTEND_ERR + ERROR_UNEXPECTED_MM_EXTEND_ERR + + + + No documentation. + + + ERROR_BAD_FUNCTION_TABLE + ERROR_BAD_FUNCTION_TABLE + + + + No documentation. + + + ERROR_NO_GUID_TRANSLATION + ERROR_NO_GUID_TRANSLATION + + + + No documentation. + + + ERROR_INVALID_LDT_SIZE + ERROR_INVALID_LDT_SIZE + + + + No documentation. + + + ERROR_INVALID_LDT_OFFSET + ERROR_INVALID_LDT_OFFSET + + + + No documentation. + + + ERROR_INVALID_LDT_DESCRIPTOR + ERROR_INVALID_LDT_DESCRIPTOR + + + + No documentation. + + + ERROR_TOO_MANY_THREADS + ERROR_TOO_MANY_THREADS + + + + No documentation. + + + ERROR_THREAD_NOT_IN_PROCESS + ERROR_THREAD_NOT_IN_PROCESS + + + + No documentation. + + + ERROR_PAGEFILE_QUOTA_EXCEEDED + ERROR_PAGEFILE_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_LOGON_SERVER_CONFLICT + ERROR_LOGON_SERVER_CONFLICT + + + + No documentation. + + + ERROR_SYNCHRONIZATION_REQUIRED + ERROR_SYNCHRONIZATION_REQUIRED + + + + No documentation. + + + ERROR_NET_OPEN_FAILED + ERROR_NET_OPEN_FAILED + + + + No documentation. + + + ERROR_IO_PRIVILEGE_FAILED + ERROR_IO_PRIVILEGE_FAILED + + + + No documentation. + + + ERROR_CONTROL_C_EXIT + ERROR_CONTROL_C_EXIT + + + + No documentation. + + + ERROR_MISSING_SYSTEMFILE + ERROR_MISSING_SYSTEMFILE + + + + No documentation. + + + ERROR_UNHANDLED_EXCEPTION + ERROR_UNHANDLED_EXCEPTION + + + + No documentation. + + + ERROR_APP_INIT_FAILURE + ERROR_APP_INIT_FAILURE + + + + No documentation. + + + ERROR_PAGEFILE_CREATE_FAILED + ERROR_PAGEFILE_CREATE_FAILED + + + + No documentation. + + + ERROR_INVALID_IMAGE_HASH + ERROR_INVALID_IMAGE_HASH + + + + No documentation. + + + ERROR_NO_PAGEFILE + ERROR_NO_PAGEFILE + + + + No documentation. + + + ERROR_ILLEGAL_FLOAT_CONTEXT + ERROR_ILLEGAL_FLOAT_CONTEXT + + + + No documentation. + + + ERROR_NO_EVENT_PAIR + ERROR_NO_EVENT_PAIR + + + + No documentation. + + + ERROR_DOMAIN_CTRLR_CONFIG_ERROR + ERROR_DOMAIN_CTRLR_CONFIG_ERROR + + + + No documentation. + + + ERROR_ILLEGAL_CHARACTER + ERROR_ILLEGAL_CHARACTER + + + + No documentation. + + + ERROR_UNDEFINED_CHARACTER + ERROR_UNDEFINED_CHARACTER + + + + No documentation. + + + ERROR_FLOPPY_VOLUME + ERROR_FLOPPY_VOLUME + + + + No documentation. + + + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT + ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT + + + + No documentation. + + + ERROR_BACKUP_CONTROLLER + ERROR_BACKUP_CONTROLLER + + + + No documentation. + + + ERROR_MUTANT_LIMIT_EXCEEDED + ERROR_MUTANT_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_FS_DRIVER_REQUIRED + ERROR_FS_DRIVER_REQUIRED + + + + No documentation. + + + ERROR_CANNOT_LOAD_REGISTRY_FILE + ERROR_CANNOT_LOAD_REGISTRY_FILE + + + + No documentation. + + + ERROR_DEBUG_ATTACH_FAILED + ERROR_DEBUG_ATTACH_FAILED + + + + No documentation. + + + ERROR_SYSTEM_PROCESS_TERMINATED + ERROR_SYSTEM_PROCESS_TERMINATED + + + + No documentation. + + + ERROR_DATA_NOT_ACCEPTED + ERROR_DATA_NOT_ACCEPTED + + + + No documentation. + + + ERROR_VDM_HARD_ERROR + ERROR_VDM_HARD_ERROR + + + + No documentation. + + + ERROR_DRIVER_CANCEL_TIMEOUT + ERROR_DRIVER_CANCEL_TIMEOUT + + + + No documentation. + + + ERROR_REPLY_MESSAGE_MISMATCH + ERROR_REPLY_MESSAGE_MISMATCH + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA + ERROR_LOST_WRITEBEHIND_DATA + + + + No documentation. + + + ERROR_CLIENT_SERVER_PARAMETERS_INVALID + ERROR_CLIENT_SERVER_PARAMETERS_INVALID + + + + No documentation. + + + ERROR_NOT_TINY_STREAM + ERROR_NOT_TINY_STREAM + + + + No documentation. + + + ERROR_STACK_OVERFLOW_READ + ERROR_STACK_OVERFLOW_READ + + + + No documentation. + + + ERROR_CONVERT_TO_LARGE + ERROR_CONVERT_TO_LARGE + + + + No documentation. + + + ERROR_FOUND_OUT_OF_SCOPE + ERROR_FOUND_OUT_OF_SCOPE + + + + No documentation. + + + ERROR_ALLOCATE_BUCKET + ERROR_ALLOCATE_BUCKET + + + + No documentation. + + + ERROR_MARSHALL_OVERFLOW + ERROR_MARSHALL_OVERFLOW + + + + No documentation. + + + ERROR_INVALID_VARIANT + ERROR_INVALID_VARIANT + + + + No documentation. + + + ERROR_BAD_COMPRESSION_BUFFER + ERROR_BAD_COMPRESSION_BUFFER + + + + No documentation. + + + ERROR_AUDIT_FAILED + ERROR_AUDIT_FAILED + + + + No documentation. + + + ERROR_TIMER_RESOLUTION_NOT_SET + ERROR_TIMER_RESOLUTION_NOT_SET + + + + No documentation. + + + ERROR_INSUFFICIENT_LOGON_INFO + ERROR_INSUFFICIENT_LOGON_INFO + + + + No documentation. + + + ERROR_BAD_DLL_ENTRYPOINT + ERROR_BAD_DLL_ENTRYPOINT + + + + No documentation. + + + ERROR_BAD_SERVICE_ENTRYPOINT + ERROR_BAD_SERVICE_ENTRYPOINT + + + + No documentation. + + + ERROR_IP_ADDRESS_CONFLICT1 + ERROR_IP_ADDRESS_CONFLICT1 + + + + No documentation. + + + ERROR_IP_ADDRESS_CONFLICT2 + ERROR_IP_ADDRESS_CONFLICT2 + + + + No documentation. + + + ERROR_REGISTRY_QUOTA_LIMIT + ERROR_REGISTRY_QUOTA_LIMIT + + + + No documentation. + + + ERROR_NO_CALLBACK_ACTIVE + ERROR_NO_CALLBACK_ACTIVE + + + + No documentation. + + + ERROR_PWD_TOO_SHORT + ERROR_PWD_TOO_SHORT + + + + No documentation. + + + ERROR_PWD_TOO_RECENT + ERROR_PWD_TOO_RECENT + + + + No documentation. + + + ERROR_PWD_HISTORY_CONFLICT + ERROR_PWD_HISTORY_CONFLICT + + + + No documentation. + + + ERROR_UNSUPPORTED_COMPRESSION + ERROR_UNSUPPORTED_COMPRESSION + + + + No documentation. + + + ERROR_INVALID_HW_PROFILE + ERROR_INVALID_HW_PROFILE + + + + No documentation. + + + ERROR_INVALID_PLUGPLAY_DEVICE_PATH + ERROR_INVALID_PLUGPLAY_DEVICE_PATH + + + + No documentation. + + + ERROR_QUOTA_LIST_INCONSISTENT + ERROR_QUOTA_LIST_INCONSISTENT + + + + No documentation. + + + ERROR_EVALUATION_EXPIRATION + ERROR_EVALUATION_EXPIRATION + + + + No documentation. + + + ERROR_ILLEGAL_DLL_RELOCATION + ERROR_ILLEGAL_DLL_RELOCATION + + + + No documentation. + + + ERROR_DLL_INIT_FAILED_LOGOFF + ERROR_DLL_INIT_FAILED_LOGOFF + + + + No documentation. + + + ERROR_VALIDATE_CONTINUE + ERROR_VALIDATE_CONTINUE + + + + No documentation. + + + ERROR_NO_MORE_MATCHES + ERROR_NO_MORE_MATCHES + + + + No documentation. + + + ERROR_RANGE_LIST_CONFLICT + ERROR_RANGE_LIST_CONFLICT + + + + No documentation. + + + ERROR_SERVER_SID_MISMATCH + ERROR_SERVER_SID_MISMATCH + + + + No documentation. + + + ERROR_CANT_ENABLE_DENY_ONLY + ERROR_CANT_ENABLE_DENY_ONLY + + + + No documentation. + + + ERROR_FLOAT_MULTIPLE_FAULTS + ERROR_FLOAT_MULTIPLE_FAULTS + + + + No documentation. + + + ERROR_FLOAT_MULTIPLE_TRAPS + ERROR_FLOAT_MULTIPLE_TRAPS + + + + No documentation. + + + ERROR_NOINTERFACE + ERROR_NOINTERFACE + + + + No documentation. + + + ERROR_DRIVER_FAILED_SLEEP + ERROR_DRIVER_FAILED_SLEEP + + + + No documentation. + + + ERROR_CORRUPT_SYSTEM_FILE + ERROR_CORRUPT_SYSTEM_FILE + + + + No documentation. + + + ERROR_COMMITMENT_MINIMUM + ERROR_COMMITMENT_MINIMUM + + + + No documentation. + + + ERROR_PNP_RESTART_ENUMERATION + ERROR_PNP_RESTART_ENUMERATION + + + + No documentation. + + + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE + ERROR_SYSTEM_IMAGE_BAD_SIGNATURE + + + + No documentation. + + + ERROR_PNP_REBOOT_REQUIRED + ERROR_PNP_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_INSUFFICIENT_POWER + ERROR_INSUFFICIENT_POWER + + + + No documentation. + + + ERROR_MULTIPLE_FAULT_VIOLATION + ERROR_MULTIPLE_FAULT_VIOLATION + + + + No documentation. + + + ERROR_SYSTEM_SHUTDOWN + ERROR_SYSTEM_SHUTDOWN + + + + No documentation. + + + ERROR_PORT_NOT_SET + ERROR_PORT_NOT_SET + + + + No documentation. + + + ERROR_DS_VERSION_CHECK_FAILURE + ERROR_DS_VERSION_CHECK_FAILURE + + + + No documentation. + + + ERROR_RANGE_NOT_FOUND + ERROR_RANGE_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_SAFE_MODE_DRIVER + ERROR_NOT_SAFE_MODE_DRIVER + + + + No documentation. + + + ERROR_FAILED_DRIVER_ENTRY + ERROR_FAILED_DRIVER_ENTRY + + + + No documentation. + + + ERROR_DEVICE_ENUMERATION_ERROR + ERROR_DEVICE_ENUMERATION_ERROR + + + + No documentation. + + + ERROR_MOUNT_POINT_NOT_RESOLVED + ERROR_MOUNT_POINT_NOT_RESOLVED + + + + No documentation. + + + ERROR_INVALID_DEVICE_OBJECT_PARAMETER + ERROR_INVALID_DEVICE_OBJECT_PARAMETER + + + + No documentation. + + + ERROR_MCA_OCCURED + ERROR_MCA_OCCURED + + + + No documentation. + + + ERROR_DRIVER_DATABASE_ERROR + ERROR_DRIVER_DATABASE_ERROR + + + + No documentation. + + + ERROR_SYSTEM_HIVE_TOO_LARGE + ERROR_SYSTEM_HIVE_TOO_LARGE + + + + No documentation. + + + ERROR_DRIVER_FAILED_PRIOR_UNLOAD + ERROR_DRIVER_FAILED_PRIOR_UNLOAD + + + + No documentation. + + + ERROR_VOLSNAP_PREPARE_HIBERNATE + ERROR_VOLSNAP_PREPARE_HIBERNATE + + + + No documentation. + + + ERROR_HIBERNATION_FAILURE + ERROR_HIBERNATION_FAILURE + + + + No documentation. + + + ERROR_PWD_TOO_LONG + ERROR_PWD_TOO_LONG + + + + No documentation. + + + ERROR_FILE_SYSTEM_LIMITATION + ERROR_FILE_SYSTEM_LIMITATION + + + + No documentation. + + + ERROR_ASSERTION_FAILURE + ERROR_ASSERTION_FAILURE + + + + No documentation. + + + ERROR_ACPI_ERROR + ERROR_ACPI_ERROR + + + + No documentation. + + + ERROR_WOW_ASSERTION + ERROR_WOW_ASSERTION + + + + No documentation. + + + ERROR_PNP_BAD_MPS_TABLE + ERROR_PNP_BAD_MPS_TABLE + + + + No documentation. + + + ERROR_PNP_TRANSLATION_FAILED + ERROR_PNP_TRANSLATION_FAILED + + + + No documentation. + + + ERROR_PNP_IRQ_TRANSLATION_FAILED + ERROR_PNP_IRQ_TRANSLATION_FAILED + + + + No documentation. + + + ERROR_PNP_INVALID_ID + ERROR_PNP_INVALID_ID + + + + No documentation. + + + ERROR_WAKE_SYSTEM_DEBUGGER + ERROR_WAKE_SYSTEM_DEBUGGER + + + + No documentation. + + + ERROR_HANDLES_CLOSED + ERROR_HANDLES_CLOSED + + + + No documentation. + + + ERROR_EXTRANEOUS_INFORMATION + ERROR_EXTRANEOUS_INFORMATION + + + + No documentation. + + + ERROR_RXACT_COMMIT_NECESSARY + ERROR_RXACT_COMMIT_NECESSARY + + + + No documentation. + + + ERROR_MEDIA_CHECK + ERROR_MEDIA_CHECK + + + + No documentation. + + + ERROR_GUID_SUBSTITUTION_MADE + ERROR_GUID_SUBSTITUTION_MADE + + + + No documentation. + + + ERROR_STOPPED_ON_SYMLINK + ERROR_STOPPED_ON_SYMLINK + + + + No documentation. + + + ERROR_LONGJUMP + ERROR_LONGJUMP + + + + No documentation. + + + ERROR_PLUGPLAY_QUERY_VETOED + ERROR_PLUGPLAY_QUERY_VETOED + + + + No documentation. + + + ERROR_UNWIND_CONSOLIDATE + ERROR_UNWIND_CONSOLIDATE + + + + No documentation. + + + ERROR_REGISTRY_HIVE_RECOVERED + ERROR_REGISTRY_HIVE_RECOVERED + + + + No documentation. + + + ERROR_DLL_MIGHT_BE_INSECURE + ERROR_DLL_MIGHT_BE_INSECURE + + + + No documentation. + + + ERROR_DLL_MIGHT_BE_INCOMPATIBLE + ERROR_DLL_MIGHT_BE_INCOMPATIBLE + + + + No documentation. + + + ERROR_DBG_EXCEPTION_NOT_HANDLED + ERROR_DBG_EXCEPTION_NOT_HANDLED + + + + No documentation. + + + ERROR_DBG_REPLY_LATER + ERROR_DBG_REPLY_LATER + + + + No documentation. + + + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE + ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE + + + + No documentation. + + + ERROR_DBG_TERMINATE_THREAD + ERROR_DBG_TERMINATE_THREAD + + + + No documentation. + + + ERROR_DBG_TERMINATE_PROCESS + ERROR_DBG_TERMINATE_PROCESS + + + + No documentation. + + + ERROR_DBG_CONTROL_C + ERROR_DBG_CONTROL_C + + + + No documentation. + + + ERROR_DBG_PRINTEXCEPTION_C + ERROR_DBG_PRINTEXCEPTION_C + + + + No documentation. + + + ERROR_DBG_RIPEXCEPTION + ERROR_DBG_RIPEXCEPTION + + + + No documentation. + + + ERROR_DBG_CONTROL_BREAK + ERROR_DBG_CONTROL_BREAK + + + + No documentation. + + + ERROR_DBG_COMMAND_EXCEPTION + ERROR_DBG_COMMAND_EXCEPTION + + + + No documentation. + + + ERROR_OBJECT_NAME_EXISTS + ERROR_OBJECT_NAME_EXISTS + + + + No documentation. + + + ERROR_THREAD_WAS_SUSPENDED + ERROR_THREAD_WAS_SUSPENDED + + + + No documentation. + + + ERROR_IMAGE_NOT_AT_BASE + ERROR_IMAGE_NOT_AT_BASE + + + + No documentation. + + + ERROR_RXACT_STATE_CREATED + ERROR_RXACT_STATE_CREATED + + + + No documentation. + + + ERROR_SEGMENT_NOTIFICATION + ERROR_SEGMENT_NOTIFICATION + + + + No documentation. + + + ERROR_BAD_CURRENT_DIRECTORY + ERROR_BAD_CURRENT_DIRECTORY + + + + No documentation. + + + ERROR_FT_READ_RECOVERY_FROM_BACKUP + ERROR_FT_READ_RECOVERY_FROM_BACKUP + + + + No documentation. + + + ERROR_FT_WRITE_RECOVERY + ERROR_FT_WRITE_RECOVERY + + + + No documentation. + + + ERROR_IMAGE_MACHINE_TYPE_MISMATCH + ERROR_IMAGE_MACHINE_TYPE_MISMATCH + + + + No documentation. + + + ERROR_RECEIVE_PARTIAL + ERROR_RECEIVE_PARTIAL + + + + No documentation. + + + ERROR_RECEIVE_EXPEDITED + ERROR_RECEIVE_EXPEDITED + + + + No documentation. + + + ERROR_RECEIVE_PARTIAL_EXPEDITED + ERROR_RECEIVE_PARTIAL_EXPEDITED + + + + No documentation. + + + ERROR_EVENT_DONE + ERROR_EVENT_DONE + + + + No documentation. + + + ERROR_EVENT_PENDING + ERROR_EVENT_PENDING + + + + No documentation. + + + ERROR_CHECKING_FILE_SYSTEM + ERROR_CHECKING_FILE_SYSTEM + + + + No documentation. + + + ERROR_FATAL_APP_EXIT + ERROR_FATAL_APP_EXIT + + + + No documentation. + + + ERROR_PREDEFINED_HANDLE + ERROR_PREDEFINED_HANDLE + + + + No documentation. + + + ERROR_WAS_UNLOCKED + ERROR_WAS_UNLOCKED + + + + No documentation. + + + ERROR_SERVICE_NOTIFICATION + ERROR_SERVICE_NOTIFICATION + + + + No documentation. + + + ERROR_WAS_LOCKED + ERROR_WAS_LOCKED + + + + No documentation. + + + ERROR_LOG_HARD_ERROR + ERROR_LOG_HARD_ERROR + + + + No documentation. + + + ERROR_ALREADY_WIN32 + ERROR_ALREADY_WIN32 + + + + No documentation. + + + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE + ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE + + + + No documentation. + + + ERROR_NO_YIELD_PERFORMED + ERROR_NO_YIELD_PERFORMED + + + + No documentation. + + + ERROR_TIMER_RESUME_IGNORED + ERROR_TIMER_RESUME_IGNORED + + + + No documentation. + + + ERROR_ARBITRATION_UNHANDLED + ERROR_ARBITRATION_UNHANDLED + + + + No documentation. + + + ERROR_CARDBUS_NOT_SUPPORTED + ERROR_CARDBUS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_MP_PROCESSOR_MISMATCH + ERROR_MP_PROCESSOR_MISMATCH + + + + No documentation. + + + ERROR_HIBERNATED + ERROR_HIBERNATED + + + + No documentation. + + + ERROR_RESUME_HIBERNATION + ERROR_RESUME_HIBERNATION + + + + No documentation. + + + ERROR_FIRMWARE_UPDATED + ERROR_FIRMWARE_UPDATED + + + + No documentation. + + + ERROR_DRIVERS_LEAKING_LOCKED_PAGES + ERROR_DRIVERS_LEAKING_LOCKED_PAGES + + + + No documentation. + + + ERROR_WAKE_SYSTEM + ERROR_WAKE_SYSTEM + + + + No documentation. + + + ERROR_WAIT_1 + ERROR_WAIT_1 + + + + No documentation. + + + ERROR_WAIT_2 + ERROR_WAIT_2 + + + + No documentation. + + + ERROR_WAIT_3 + ERROR_WAIT_3 + + + + No documentation. + + + ERROR_WAIT_63 + ERROR_WAIT_63 + + + + No documentation. + + + ERROR_ABANDONED_WAIT_0 + ERROR_ABANDONED_WAIT_0 + + + + No documentation. + + + ERROR_ABANDONED_WAIT_63 + ERROR_ABANDONED_WAIT_63 + + + + No documentation. + + + ERROR_USER_APC + ERROR_USER_APC + + + + No documentation. + + + ERROR_KERNEL_APC + ERROR_KERNEL_APC + + + + No documentation. + + + ERROR_ALERTED + ERROR_ALERTED + + + + No documentation. + + + ERROR_ELEVATION_REQUIRED + ERROR_ELEVATION_REQUIRED + + + + No documentation. + + + ERROR_REPARSE + ERROR_REPARSE + + + + No documentation. + + + ERROR_OPLOCK_BREAK_IN_PROGRESS + ERROR_OPLOCK_BREAK_IN_PROGRESS + + + + No documentation. + + + ERROR_VOLUME_MOUNTED + ERROR_VOLUME_MOUNTED + + + + No documentation. + + + ERROR_RXACT_COMMITTED + ERROR_RXACT_COMMITTED + + + + No documentation. + + + ERROR_NOTIFY_CLEANUP + ERROR_NOTIFY_CLEANUP + + + + No documentation. + + + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED + ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED + + + + No documentation. + + + ERROR_PAGE_FAULT_TRANSITION + ERROR_PAGE_FAULT_TRANSITION + + + + No documentation. + + + ERROR_PAGE_FAULT_DEMAND_ZERO + ERROR_PAGE_FAULT_DEMAND_ZERO + + + + No documentation. + + + ERROR_PAGE_FAULT_COPY_ON_WRITE + ERROR_PAGE_FAULT_COPY_ON_WRITE + + + + No documentation. + + + ERROR_PAGE_FAULT_GUARD_PAGE + ERROR_PAGE_FAULT_GUARD_PAGE + + + + No documentation. + + + ERROR_PAGE_FAULT_PAGING_FILE + ERROR_PAGE_FAULT_PAGING_FILE + + + + No documentation. + + + ERROR_CACHE_PAGE_LOCKED + ERROR_CACHE_PAGE_LOCKED + + + + No documentation. + + + ERROR_CRASH_DUMP + ERROR_CRASH_DUMP + + + + No documentation. + + + ERROR_BUFFER_ALL_ZEROS + ERROR_BUFFER_ALL_ZEROS + + + + No documentation. + + + ERROR_REPARSE_OBJECT + ERROR_REPARSE_OBJECT + + + + No documentation. + + + ERROR_RESOURCE_REQUIREMENTS_CHANGED + ERROR_RESOURCE_REQUIREMENTS_CHANGED + + + + No documentation. + + + ERROR_TRANSLATION_COMPLETE + ERROR_TRANSLATION_COMPLETE + + + + No documentation. + + + ERROR_NOTHING_TO_TERMINATE + ERROR_NOTHING_TO_TERMINATE + + + + No documentation. + + + ERROR_PROCESS_NOT_IN_JOB + ERROR_PROCESS_NOT_IN_JOB + + + + No documentation. + + + ERROR_PROCESS_IN_JOB + ERROR_PROCESS_IN_JOB + + + + No documentation. + + + ERROR_VOLSNAP_HIBERNATE_READY + ERROR_VOLSNAP_HIBERNATE_READY + + + + No documentation. + + + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY + ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY + + + + No documentation. + + + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED + ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED + + + + No documentation. + + + ERROR_INTERRUPT_STILL_CONNECTED + ERROR_INTERRUPT_STILL_CONNECTED + + + + No documentation. + + + ERROR_WAIT_FOR_OPLOCK + ERROR_WAIT_FOR_OPLOCK + + + + No documentation. + + + ERROR_DBG_EXCEPTION_HANDLED + ERROR_DBG_EXCEPTION_HANDLED + + + + No documentation. + + + ERROR_DBG_CONTINUE + ERROR_DBG_CONTINUE + + + + No documentation. + + + ERROR_CALLBACK_POP_STACK + ERROR_CALLBACK_POP_STACK + + + + No documentation. + + + ERROR_COMPRESSION_DISABLED + ERROR_COMPRESSION_DISABLED + + + + No documentation. + + + ERROR_CANTFETCHBACKWARDS + ERROR_CANTFETCHBACKWARDS + + + + No documentation. + + + ERROR_CANTSCROLLBACKWARDS + ERROR_CANTSCROLLBACKWARDS + + + + No documentation. + + + ERROR_ROWSNOTRELEASED + ERROR_ROWSNOTRELEASED + + + + No documentation. + + + ERROR_BAD_ACCESSOR_FLAGS + ERROR_BAD_ACCESSOR_FLAGS + + + + No documentation. + + + ERROR_ERRORS_ENCOUNTERED + ERROR_ERRORS_ENCOUNTERED + + + + No documentation. + + + ERROR_NOT_CAPABLE + ERROR_NOT_CAPABLE + + + + No documentation. + + + ERROR_REQUEST_OUT_OF_SEQUENCE + ERROR_REQUEST_OUT_OF_SEQUENCE + + + + No documentation. + + + ERROR_VERSION_PARSE_ERROR + ERROR_VERSION_PARSE_ERROR + + + + No documentation. + + + ERROR_BADSTARTPOSITION + ERROR_BADSTARTPOSITION + + + + No documentation. + + + ERROR_MEMORY_HARDWARE + ERROR_MEMORY_HARDWARE + + + + No documentation. + + + ERROR_DISK_REPAIR_DISABLED + ERROR_DISK_REPAIR_DISABLED + + + + No documentation. + + + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE + ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE + + + + No documentation. + + + ERROR_SYSTEM_POWERSTATE_TRANSITION + ERROR_SYSTEM_POWERSTATE_TRANSITION + + + + No documentation. + + + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION + ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION + + + + No documentation. + + + ERROR_MCA_EXCEPTION + ERROR_MCA_EXCEPTION + + + + No documentation. + + + ERROR_ACCESS_AUDIT_BY_POLICY + ERROR_ACCESS_AUDIT_BY_POLICY + + + + No documentation. + + + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY + ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY + + + + No documentation. + + + ERROR_ABANDON_HIBERFILE + ERROR_ABANDON_HIBERFILE + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR + ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR + + + + No documentation. + + + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR + ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR + + + + No documentation. + + + ERROR_BAD_MCFG_TABLE + ERROR_BAD_MCFG_TABLE + + + + No documentation. + + + ERROR_DISK_REPAIR_REDIRECTED + ERROR_DISK_REPAIR_REDIRECTED + + + + No documentation. + + + ERROR_DISK_REPAIR_UNSUCCESSFUL + ERROR_DISK_REPAIR_UNSUCCESSFUL + + + + No documentation. + + + ERROR_CORRUPT_LOG_OVERFULL + ERROR_CORRUPT_LOG_OVERFULL + + + + No documentation. + + + ERROR_CORRUPT_LOG_CORRUPTED + ERROR_CORRUPT_LOG_CORRUPTED + + + + No documentation. + + + ERROR_CORRUPT_LOG_UNAVAILABLE + ERROR_CORRUPT_LOG_UNAVAILABLE + + + + No documentation. + + + ERROR_CORRUPT_LOG_DELETED_FULL + ERROR_CORRUPT_LOG_DELETED_FULL + + + + No documentation. + + + ERROR_CORRUPT_LOG_CLEARED + ERROR_CORRUPT_LOG_CLEARED + + + + No documentation. + + + ERROR_ORPHAN_NAME_EXHAUSTED + ERROR_ORPHAN_NAME_EXHAUSTED + + + + No documentation. + + + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE + ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE + + + + No documentation. + + + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK + ERROR_CANNOT_GRANT_REQUESTED_OPLOCK + + + + No documentation. + + + ERROR_CANNOT_BREAK_OPLOCK + ERROR_CANNOT_BREAK_OPLOCK + + + + No documentation. + + + ERROR_OPLOCK_HANDLE_CLOSED + ERROR_OPLOCK_HANDLE_CLOSED + + + + No documentation. + + + ERROR_NO_ACE_CONDITION + ERROR_NO_ACE_CONDITION + + + + No documentation. + + + ERROR_INVALID_ACE_CONDITION + ERROR_INVALID_ACE_CONDITION + + + + No documentation. + + + ERROR_FILE_HANDLE_REVOKED + ERROR_FILE_HANDLE_REVOKED + + + + No documentation. + + + ERROR_IMAGE_AT_DIFFERENT_BASE + ERROR_IMAGE_AT_DIFFERENT_BASE + + + + No documentation. + + + ERROR_EA_ACCESS_DENIED + ERROR_EA_ACCESS_DENIED + + + + No documentation. + + + ERROR_OPERATION_ABORTED + ERROR_OPERATION_ABORTED + + + + No documentation. + + + ERROR_IO_INCOMPLETE + ERROR_IO_INCOMPLETE + + + + No documentation. + + + ERROR_IO_PENDING + ERROR_IO_PENDING + + + + No documentation. + + + ERROR_NOACCESS + ERROR_NOACCESS + + + + No documentation. + + + ERROR_SWAPERROR + ERROR_SWAPERROR + + + + No documentation. + + + ERROR_STACK_OVERFLOW + ERROR_STACK_OVERFLOW + + + + No documentation. + + + ERROR_INVALID_MESSAGE + ERROR_INVALID_MESSAGE + + + + No documentation. + + + ERROR_CAN_NOT_COMPLETE + ERROR_CAN_NOT_COMPLETE + + + + No documentation. + + + ERROR_INVALID_FLAGS + ERROR_INVALID_FLAGS + + + + No documentation. + + + ERROR_UNRECOGNIZED_VOLUME + ERROR_UNRECOGNIZED_VOLUME + + + + No documentation. + + + ERROR_FILE_INVALID + ERROR_FILE_INVALID + + + + No documentation. + + + ERROR_FULLSCREEN_MODE + ERROR_FULLSCREEN_MODE + + + + No documentation. + + + ERROR_NO_TOKEN + ERROR_NO_TOKEN + + + + No documentation. + + + ERROR_BADDB + ERROR_BADDB + + + + No documentation. + + + ERROR_BADKEY + ERROR_BADKEY + + + + No documentation. + + + ERROR_CANTOPEN + ERROR_CANTOPEN + + + + No documentation. + + + ERROR_CANTREAD + ERROR_CANTREAD + + + + No documentation. + + + ERROR_CANTWRITE + ERROR_CANTWRITE + + + + No documentation. + + + ERROR_REGISTRY_RECOVERED + ERROR_REGISTRY_RECOVERED + + + + No documentation. + + + ERROR_REGISTRY_CORRUPT + ERROR_REGISTRY_CORRUPT + + + + No documentation. + + + ERROR_REGISTRY_IO_FAILED + ERROR_REGISTRY_IO_FAILED + + + + No documentation. + + + ERROR_NOT_REGISTRY_FILE + ERROR_NOT_REGISTRY_FILE + + + + No documentation. + + + ERROR_KEY_DELETED + ERROR_KEY_DELETED + + + + No documentation. + + + ERROR_NO_LOG_SPACE + ERROR_NO_LOG_SPACE + + + + No documentation. + + + ERROR_KEY_HAS_CHILDREN + ERROR_KEY_HAS_CHILDREN + + + + No documentation. + + + ERROR_CHILD_MUST_BE_VOLATILE + ERROR_CHILD_MUST_BE_VOLATILE + + + + No documentation. + + + ERROR_NOTIFY_ENUM_DIR + ERROR_NOTIFY_ENUM_DIR + + + + No documentation. + + + ERROR_DEPENDENT_SERVICES_RUNNING + ERROR_DEPENDENT_SERVICES_RUNNING + + + + No documentation. + + + ERROR_INVALID_SERVICE_CONTROL + ERROR_INVALID_SERVICE_CONTROL + + + + No documentation. + + + ERROR_SERVICE_REQUEST_TIMEOUT + ERROR_SERVICE_REQUEST_TIMEOUT + + + + No documentation. + + + ERROR_SERVICE_NO_THREAD + ERROR_SERVICE_NO_THREAD + + + + No documentation. + + + ERROR_SERVICE_DATABASE_LOCKED + ERROR_SERVICE_DATABASE_LOCKED + + + + No documentation. + + + ERROR_SERVICE_ALREADY_RUNNING + ERROR_SERVICE_ALREADY_RUNNING + + + + No documentation. + + + ERROR_INVALID_SERVICE_ACCOUNT + ERROR_INVALID_SERVICE_ACCOUNT + + + + No documentation. + + + ERROR_SERVICE_DISABLED + ERROR_SERVICE_DISABLED + + + + No documentation. + + + ERROR_CIRCULAR_DEPENDENCY + ERROR_CIRCULAR_DEPENDENCY + + + + No documentation. + + + ERROR_SERVICE_DOES_NOT_EXIST + ERROR_SERVICE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_SERVICE_CANNOT_ACCEPT_CTRL + ERROR_SERVICE_CANNOT_ACCEPT_CTRL + + + + No documentation. + + + ERROR_SERVICE_NOT_ACTIVE + ERROR_SERVICE_NOT_ACTIVE + + + + No documentation. + + + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT + ERROR_FAILED_SERVICE_CONTROLLER_CONNECT + + + + No documentation. + + + ERROR_EXCEPTION_IN_SERVICE + ERROR_EXCEPTION_IN_SERVICE + + + + No documentation. + + + ERROR_DATABASE_DOES_NOT_EXIST + ERROR_DATABASE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_SERVICE_SPECIFIC_ERROR + ERROR_SERVICE_SPECIFIC_ERROR + + + + No documentation. + + + ERROR_PROCESS_ABORTED + ERROR_PROCESS_ABORTED + + + + No documentation. + + + ERROR_SERVICE_DEPENDENCY_FAIL + ERROR_SERVICE_DEPENDENCY_FAIL + + + + No documentation. + + + ERROR_SERVICE_LOGON_FAILED + ERROR_SERVICE_LOGON_FAILED + + + + No documentation. + + + ERROR_SERVICE_START_HANG + ERROR_SERVICE_START_HANG + + + + No documentation. + + + ERROR_INVALID_SERVICE_LOCK + ERROR_INVALID_SERVICE_LOCK + + + + No documentation. + + + ERROR_SERVICE_MARKED_FOR_DELETE + ERROR_SERVICE_MARKED_FOR_DELETE + + + + No documentation. + + + ERROR_SERVICE_EXISTS + ERROR_SERVICE_EXISTS + + + + No documentation. + + + ERROR_ALREADY_RUNNING_LKG + ERROR_ALREADY_RUNNING_LKG + + + + No documentation. + + + ERROR_SERVICE_DEPENDENCY_DELETED + ERROR_SERVICE_DEPENDENCY_DELETED + + + + No documentation. + + + ERROR_BOOT_ALREADY_ACCEPTED + ERROR_BOOT_ALREADY_ACCEPTED + + + + No documentation. + + + ERROR_SERVICE_NEVER_STARTED + ERROR_SERVICE_NEVER_STARTED + + + + No documentation. + + + ERROR_DUPLICATE_SERVICE_NAME + ERROR_DUPLICATE_SERVICE_NAME + + + + No documentation. + + + ERROR_DIFFERENT_SERVICE_ACCOUNT + ERROR_DIFFERENT_SERVICE_ACCOUNT + + + + No documentation. + + + ERROR_CANNOT_DETECT_DRIVER_FAILURE + ERROR_CANNOT_DETECT_DRIVER_FAILURE + + + + No documentation. + + + ERROR_CANNOT_DETECT_PROCESS_ABORT + ERROR_CANNOT_DETECT_PROCESS_ABORT + + + + No documentation. + + + ERROR_NO_RECOVERY_PROGRAM + ERROR_NO_RECOVERY_PROGRAM + + + + No documentation. + + + ERROR_SERVICE_NOT_IN_EXE + ERROR_SERVICE_NOT_IN_EXE + + + + No documentation. + + + ERROR_NOT_SAFEBOOT_SERVICE + ERROR_NOT_SAFEBOOT_SERVICE + + + + No documentation. + + + ERROR_END_OF_MEDIA + ERROR_END_OF_MEDIA + + + + No documentation. + + + ERROR_FILEMARK_DETECTED + ERROR_FILEMARK_DETECTED + + + + No documentation. + + + ERROR_BEGINNING_OF_MEDIA + ERROR_BEGINNING_OF_MEDIA + + + + No documentation. + + + ERROR_SETMARK_DETECTED + ERROR_SETMARK_DETECTED + + + + No documentation. + + + ERROR_NO_DATA_DETECTED + ERROR_NO_DATA_DETECTED + + + + No documentation. + + + ERROR_PARTITION_FAILURE + ERROR_PARTITION_FAILURE + + + + No documentation. + + + ERROR_INVALID_BLOCK_LENGTH + ERROR_INVALID_BLOCK_LENGTH + + + + No documentation. + + + ERROR_DEVICE_NOT_PARTITIONED + ERROR_DEVICE_NOT_PARTITIONED + + + + No documentation. + + + ERROR_UNABLE_TO_LOCK_MEDIA + ERROR_UNABLE_TO_LOCK_MEDIA + + + + No documentation. + + + ERROR_UNABLE_TO_UNLOAD_MEDIA + ERROR_UNABLE_TO_UNLOAD_MEDIA + + + + No documentation. + + + ERROR_MEDIA_CHANGED + ERROR_MEDIA_CHANGED + + + + No documentation. + + + ERROR_BUS_RESET + ERROR_BUS_RESET + + + + No documentation. + + + ERROR_NO_MEDIA_IN_DRIVE + ERROR_NO_MEDIA_IN_DRIVE + + + + No documentation. + + + ERROR_NO_UNICODE_TRANSLATION + ERROR_NO_UNICODE_TRANSLATION + + + + No documentation. + + + ERROR_DLL_INIT_FAILED + ERROR_DLL_INIT_FAILED + + + + No documentation. + + + ERROR_SHUTDOWN_IN_PROGRESS + ERROR_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_NO_SHUTDOWN_IN_PROGRESS + ERROR_NO_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_IO_DEVICE + ERROR_IO_DEVICE + + + + No documentation. + + + ERROR_SERIAL_NO_DEVICE + ERROR_SERIAL_NO_DEVICE + + + + No documentation. + + + ERROR_IRQ_BUSY + ERROR_IRQ_BUSY + + + + No documentation. + + + ERROR_MORE_WRITES + ERROR_MORE_WRITES + + + + No documentation. + + + ERROR_COUNTER_TIMEOUT + ERROR_COUNTER_TIMEOUT + + + + No documentation. + + + ERROR_FLOPPY_ID_MARK_NOT_FOUND + ERROR_FLOPPY_ID_MARK_NOT_FOUND + + + + No documentation. + + + ERROR_FLOPPY_WRONG_CYLINDER + ERROR_FLOPPY_WRONG_CYLINDER + + + + No documentation. + + + ERROR_FLOPPY_UNKNOWN_ERROR + ERROR_FLOPPY_UNKNOWN_ERROR + + + + No documentation. + + + ERROR_FLOPPY_BAD_REGISTERS + ERROR_FLOPPY_BAD_REGISTERS + + + + No documentation. + + + ERROR_DISK_RECALIBRATE_FAILED + ERROR_DISK_RECALIBRATE_FAILED + + + + No documentation. + + + ERROR_DISK_OPERATION_FAILED + ERROR_DISK_OPERATION_FAILED + + + + No documentation. + + + ERROR_DISK_RESET_FAILED + ERROR_DISK_RESET_FAILED + + + + No documentation. + + + ERROR_EOM_OVERFLOW + ERROR_EOM_OVERFLOW + + + + No documentation. + + + ERROR_NOT_ENOUGH_SERVER_MEMORY + ERROR_NOT_ENOUGH_SERVER_MEMORY + + + + No documentation. + + + ERROR_POSSIBLE_DEADLOCK + ERROR_POSSIBLE_DEADLOCK + + + + No documentation. + + + ERROR_MAPPED_ALIGNMENT + ERROR_MAPPED_ALIGNMENT + + + + No documentation. + + + ERROR_SET_POWER_STATE_VETOED + ERROR_SET_POWER_STATE_VETOED + + + + No documentation. + + + ERROR_SET_POWER_STATE_FAILED + ERROR_SET_POWER_STATE_FAILED + + + + No documentation. + + + ERROR_TOO_MANY_LINKS + ERROR_TOO_MANY_LINKS + + + + No documentation. + + + ERROR_OLD_WIN_VERSION + ERROR_OLD_WIN_VERSION + + + + No documentation. + + + ERROR_APP_WRONG_OS + ERROR_APP_WRONG_OS + + + + No documentation. + + + ERROR_SINGLE_INSTANCE_APP + ERROR_SINGLE_INSTANCE_APP + + + + No documentation. + + + ERROR_RMODE_APP + ERROR_RMODE_APP + + + + No documentation. + + + ERROR_INVALID_DLL + ERROR_INVALID_DLL + + + + No documentation. + + + ERROR_NO_ASSOCIATION + ERROR_NO_ASSOCIATION + + + + No documentation. + + + ERROR_DDE_FAIL + ERROR_DDE_FAIL + + + + No documentation. + + + ERROR_DLL_NOT_FOUND + ERROR_DLL_NOT_FOUND + + + + No documentation. + + + ERROR_NO_MORE_USER_HANDLES + ERROR_NO_MORE_USER_HANDLES + + + + No documentation. + + + ERROR_MESSAGE_SYNC_ONLY + ERROR_MESSAGE_SYNC_ONLY + + + + No documentation. + + + ERROR_SOURCE_ELEMENT_EMPTY + ERROR_SOURCE_ELEMENT_EMPTY + + + + No documentation. + + + ERROR_DESTINATION_ELEMENT_FULL + ERROR_DESTINATION_ELEMENT_FULL + + + + No documentation. + + + ERROR_ILLEGAL_ELEMENT_ADDRESS + ERROR_ILLEGAL_ELEMENT_ADDRESS + + + + No documentation. + + + ERROR_MAGAZINE_NOT_PRESENT + ERROR_MAGAZINE_NOT_PRESENT + + + + No documentation. + + + ERROR_DEVICE_REINITIALIZATION_NEEDED + ERROR_DEVICE_REINITIALIZATION_NEEDED + + + + No documentation. + + + ERROR_DEVICE_REQUIRES_CLEANING + ERROR_DEVICE_REQUIRES_CLEANING + + + + No documentation. + + + ERROR_DEVICE_DOOR_OPEN + ERROR_DEVICE_DOOR_OPEN + + + + No documentation. + + + ERROR_DEVICE_NOT_CONNECTED + ERROR_DEVICE_NOT_CONNECTED + + + + No documentation. + + + ERROR_NOT_FOUND + ERROR_NOT_FOUND + + + + No documentation. + + + ERROR_NO_MATCH + ERROR_NO_MATCH + + + + No documentation. + + + ERROR_SET_NOT_FOUND + ERROR_SET_NOT_FOUND + + + + No documentation. + + + ERROR_POINT_NOT_FOUND + ERROR_POINT_NOT_FOUND + + + + No documentation. + + + ERROR_NO_TRACKING_SERVICE + ERROR_NO_TRACKING_SERVICE + + + + No documentation. + + + ERROR_NO_VOLUME_ID + ERROR_NO_VOLUME_ID + + + + No documentation. + + + ERROR_UNABLE_TO_REMOVE_REPLACED + ERROR_UNABLE_TO_REMOVE_REPLACED + + + + No documentation. + + + ERROR_UNABLE_TO_MOVE_REPLACEMENT + ERROR_UNABLE_TO_MOVE_REPLACEMENT + + + + No documentation. + + + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 + ERROR_UNABLE_TO_MOVE_REPLACEMENT_2 + + + + No documentation. + + + ERROR_JOURNAL_DELETE_IN_PROGRESS + ERROR_JOURNAL_DELETE_IN_PROGRESS + + + + No documentation. + + + ERROR_JOURNAL_NOT_ACTIVE + ERROR_JOURNAL_NOT_ACTIVE + + + + No documentation. + + + ERROR_POTENTIAL_FILE_FOUND + ERROR_POTENTIAL_FILE_FOUND + + + + No documentation. + + + ERROR_JOURNAL_ENTRY_DELETED + ERROR_JOURNAL_ENTRY_DELETED + + + + No documentation. + + + ERROR_SHUTDOWN_IS_SCHEDULED + ERROR_SHUTDOWN_IS_SCHEDULED + + + + No documentation. + + + ERROR_SHUTDOWN_USERS_LOGGED_ON + ERROR_SHUTDOWN_USERS_LOGGED_ON + + + + No documentation. + + + ERROR_BAD_DEVICE + ERROR_BAD_DEVICE + + + + No documentation. + + + ERROR_CONNECTION_UNAVAIL + ERROR_CONNECTION_UNAVAIL + + + + No documentation. + + + ERROR_DEVICE_ALREADY_REMEMBERED + ERROR_DEVICE_ALREADY_REMEMBERED + + + + No documentation. + + + ERROR_NO_NET_OR_BAD_PATH + ERROR_NO_NET_OR_BAD_PATH + + + + No documentation. + + + ERROR_BAD_PROVIDER + ERROR_BAD_PROVIDER + + + + No documentation. + + + ERROR_CANNOT_OPEN_PROFILE + ERROR_CANNOT_OPEN_PROFILE + + + + No documentation. + + + ERROR_BAD_PROFILE + ERROR_BAD_PROFILE + + + + No documentation. + + + ERROR_NOT_CONTAINER + ERROR_NOT_CONTAINER + + + + No documentation. + + + ERROR_EXTENDED_ERROR + ERROR_EXTENDED_ERROR + + + + No documentation. + + + ERROR_INVALID_GROUPNAME + ERROR_INVALID_GROUPNAME + + + + No documentation. + + + ERROR_INVALID_COMPUTERNAME + ERROR_INVALID_COMPUTERNAME + + + + No documentation. + + + ERROR_INVALID_EVENTNAME + ERROR_INVALID_EVENTNAME + + + + No documentation. + + + ERROR_INVALID_DOMAINNAME + ERROR_INVALID_DOMAINNAME + + + + No documentation. + + + ERROR_INVALID_SERVICENAME + ERROR_INVALID_SERVICENAME + + + + No documentation. + + + ERROR_INVALID_NETNAME + ERROR_INVALID_NETNAME + + + + No documentation. + + + ERROR_INVALID_SHARENAME + ERROR_INVALID_SHARENAME + + + + No documentation. + + + ERROR_INVALID_PASSWORDNAME + ERROR_INVALID_PASSWORDNAME + + + + No documentation. + + + ERROR_INVALID_MESSAGENAME + ERROR_INVALID_MESSAGENAME + + + + No documentation. + + + ERROR_INVALID_MESSAGEDEST + ERROR_INVALID_MESSAGEDEST + + + + No documentation. + + + ERROR_SESSION_CREDENTIAL_CONFLICT + ERROR_SESSION_CREDENTIAL_CONFLICT + + + + No documentation. + + + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED + ERROR_REMOTE_SESSION_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DUP_DOMAINNAME + ERROR_DUP_DOMAINNAME + + + + No documentation. + + + ERROR_NO_NETWORK + ERROR_NO_NETWORK + + + + No documentation. + + + ERROR_CANCELLED + ERROR_CANCELLED + + + + No documentation. + + + ERROR_USER_MAPPED_FILE + ERROR_USER_MAPPED_FILE + + + + No documentation. + + + ERROR_CONNECTION_REFUSED + ERROR_CONNECTION_REFUSED + + + + No documentation. + + + ERROR_GRACEFUL_DISCONNECT + ERROR_GRACEFUL_DISCONNECT + + + + No documentation. + + + ERROR_ADDRESS_ALREADY_ASSOCIATED + ERROR_ADDRESS_ALREADY_ASSOCIATED + + + + No documentation. + + + ERROR_ADDRESS_NOT_ASSOCIATED + ERROR_ADDRESS_NOT_ASSOCIATED + + + + No documentation. + + + ERROR_CONNECTION_INVALID + ERROR_CONNECTION_INVALID + + + + No documentation. + + + ERROR_CONNECTION_ACTIVE + ERROR_CONNECTION_ACTIVE + + + + No documentation. + + + ERROR_NETWORK_UNREACHABLE + ERROR_NETWORK_UNREACHABLE + + + + No documentation. + + + ERROR_HOST_UNREACHABLE + ERROR_HOST_UNREACHABLE + + + + No documentation. + + + ERROR_PROTOCOL_UNREACHABLE + ERROR_PROTOCOL_UNREACHABLE + + + + No documentation. + + + ERROR_PORT_UNREACHABLE + ERROR_PORT_UNREACHABLE + + + + No documentation. + + + ERROR_REQUEST_ABORTED + ERROR_REQUEST_ABORTED + + + + No documentation. + + + ERROR_CONNECTION_ABORTED + ERROR_CONNECTION_ABORTED + + + + No documentation. + + + ERROR_RETRY + ERROR_RETRY + + + + No documentation. + + + ERROR_CONNECTION_COUNT_LIMIT + ERROR_CONNECTION_COUNT_LIMIT + + + + No documentation. + + + ERROR_LOGIN_TIME_RESTRICTION + ERROR_LOGIN_TIME_RESTRICTION + + + + No documentation. + + + ERROR_LOGIN_WKSTA_RESTRICTION + ERROR_LOGIN_WKSTA_RESTRICTION + + + + No documentation. + + + ERROR_INCORRECT_ADDRESS + ERROR_INCORRECT_ADDRESS + + + + No documentation. + + + ERROR_ALREADY_REGISTERED + ERROR_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_SERVICE_NOT_FOUND + ERROR_SERVICE_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_AUTHENTICATED + ERROR_NOT_AUTHENTICATED + + + + No documentation. + + + ERROR_NOT_LOGGED_ON + ERROR_NOT_LOGGED_ON + + + + No documentation. + + + ERROR_CONTINUE + ERROR_CONTINUE + + + + No documentation. + + + ERROR_ALREADY_INITIALIZED + ERROR_ALREADY_INITIALIZED + + + + No documentation. + + + ERROR_NO_MORE_DEVICES + ERROR_NO_MORE_DEVICES + + + + No documentation. + + + ERROR_NO_SUCH_SITE + ERROR_NO_SUCH_SITE + + + + No documentation. + + + ERROR_DOMAIN_CONTROLLER_EXISTS + ERROR_DOMAIN_CONTROLLER_EXISTS + + + + No documentation. + + + ERROR_ONLY_IF_CONNECTED + ERROR_ONLY_IF_CONNECTED + + + + No documentation. + + + ERROR_OVERRIDE_NOCHANGES + ERROR_OVERRIDE_NOCHANGES + + + + No documentation. + + + ERROR_BAD_USER_PROFILE + ERROR_BAD_USER_PROFILE + + + + No documentation. + + + ERROR_NOT_SUPPORTED_ON_SBS + ERROR_NOT_SUPPORTED_ON_SBS + + + + No documentation. + + + ERROR_SERVER_SHUTDOWN_IN_PROGRESS + ERROR_SERVER_SHUTDOWN_IN_PROGRESS + + + + No documentation. + + + ERROR_HOST_DOWN + ERROR_HOST_DOWN + + + + No documentation. + + + ERROR_NON_ACCOUNT_SID + ERROR_NON_ACCOUNT_SID + + + + No documentation. + + + ERROR_NON_DOMAIN_SID + ERROR_NON_DOMAIN_SID + + + + No documentation. + + + ERROR_APPHELP_BLOCK + ERROR_APPHELP_BLOCK + + + + No documentation. + + + ERROR_ACCESS_DISABLED_BY_POLICY + ERROR_ACCESS_DISABLED_BY_POLICY + + + + No documentation. + + + ERROR_REG_NAT_CONSUMPTION + ERROR_REG_NAT_CONSUMPTION + + + + No documentation. + + + ERROR_CSCSHARE_OFFLINE + ERROR_CSCSHARE_OFFLINE + + + + No documentation. + + + ERROR_PKINIT_FAILURE + ERROR_PKINIT_FAILURE + + + + No documentation. + + + ERROR_SMARTCARD_SUBSYSTEM_FAILURE + ERROR_SMARTCARD_SUBSYSTEM_FAILURE + + + + No documentation. + + + ERROR_DOWNGRADE_DETECTED + ERROR_DOWNGRADE_DETECTED + + + + No documentation. + + + ERROR_MACHINE_LOCKED + ERROR_MACHINE_LOCKED + + + + No documentation. + + + ERROR_CALLBACK_SUPPLIED_INVALID_DATA + ERROR_CALLBACK_SUPPLIED_INVALID_DATA + + + + No documentation. + + + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED + ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED + + + + No documentation. + + + ERROR_DRIVER_BLOCKED + ERROR_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_INVALID_IMPORT_OF_NON_DLL + ERROR_INVALID_IMPORT_OF_NON_DLL + + + + No documentation. + + + ERROR_ACCESS_DISABLED_WEBBLADE + ERROR_ACCESS_DISABLED_WEBBLADE + + + + No documentation. + + + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER + ERROR_ACCESS_DISABLED_WEBBLADE_TAMPER + + + + No documentation. + + + ERROR_RECOVERY_FAILURE + ERROR_RECOVERY_FAILURE + + + + No documentation. + + + ERROR_ALREADY_FIBER + ERROR_ALREADY_FIBER + + + + No documentation. + + + ERROR_ALREADY_THREAD + ERROR_ALREADY_THREAD + + + + No documentation. + + + ERROR_STACK_BUFFER_OVERRUN + ERROR_STACK_BUFFER_OVERRUN + + + + No documentation. + + + ERROR_PARAMETER_QUOTA_EXCEEDED + ERROR_PARAMETER_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_DEBUGGER_INACTIVE + ERROR_DEBUGGER_INACTIVE + + + + No documentation. + + + ERROR_DELAY_LOAD_FAILED + ERROR_DELAY_LOAD_FAILED + + + + No documentation. + + + ERROR_VDM_DISALLOWED + ERROR_VDM_DISALLOWED + + + + No documentation. + + + ERROR_UNIDENTIFIED_ERROR + ERROR_UNIDENTIFIED_ERROR + + + + No documentation. + + + ERROR_INVALID_CRUNTIME_PARAMETER + ERROR_INVALID_CRUNTIME_PARAMETER + + + + No documentation. + + + ERROR_BEYOND_VDL + ERROR_BEYOND_VDL + + + + No documentation. + + + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE + ERROR_INCOMPATIBLE_SERVICE_SID_TYPE + + + + No documentation. + + + ERROR_DRIVER_PROCESS_TERMINATED + ERROR_DRIVER_PROCESS_TERMINATED + + + + No documentation. + + + ERROR_IMPLEMENTATION_LIMIT + ERROR_IMPLEMENTATION_LIMIT + + + + No documentation. + + + ERROR_PROCESS_IS_PROTECTED + ERROR_PROCESS_IS_PROTECTED + + + + No documentation. + + + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING + ERROR_SERVICE_NOTIFY_CLIENT_LAGGING + + + + No documentation. + + + ERROR_DISK_QUOTA_EXCEEDED + ERROR_DISK_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_CONTENT_BLOCKED + ERROR_CONTENT_BLOCKED + + + + No documentation. + + + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE + ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE + + + + No documentation. + + + ERROR_APP_HANG + ERROR_APP_HANG + + + + No documentation. + + + ERROR_INVALID_LABEL + ERROR_INVALID_LABEL + + + + No documentation. + + + ERROR_NOT_ALL_ASSIGNED + ERROR_NOT_ALL_ASSIGNED + + + + No documentation. + + + ERROR_SOME_NOT_MAPPED + ERROR_SOME_NOT_MAPPED + + + + No documentation. + + + ERROR_NO_QUOTAS_FOR_ACCOUNT + ERROR_NO_QUOTAS_FOR_ACCOUNT + + + + No documentation. + + + ERROR_LOCAL_USER_SESSION_KEY + ERROR_LOCAL_USER_SESSION_KEY + + + + No documentation. + + + ERROR_NULL_LM_PASSWORD + ERROR_NULL_LM_PASSWORD + + + + No documentation. + + + ERROR_UNKNOWN_REVISION + ERROR_UNKNOWN_REVISION + + + + No documentation. + + + ERROR_REVISION_MISMATCH + ERROR_REVISION_MISMATCH + + + + No documentation. + + + ERROR_INVALID_OWNER + ERROR_INVALID_OWNER + + + + No documentation. + + + ERROR_INVALID_PRIMARY_GROUP + ERROR_INVALID_PRIMARY_GROUP + + + + No documentation. + + + ERROR_NO_IMPERSONATION_TOKEN + ERROR_NO_IMPERSONATION_TOKEN + + + + No documentation. + + + ERROR_CANT_DISABLE_MANDATORY + ERROR_CANT_DISABLE_MANDATORY + + + + No documentation. + + + ERROR_NO_LOGON_SERVERS + ERROR_NO_LOGON_SERVERS + + + + No documentation. + + + ERROR_NO_SUCH_LOGON_SESSION + ERROR_NO_SUCH_LOGON_SESSION + + + + No documentation. + + + ERROR_NO_SUCH_PRIVILEGE + ERROR_NO_SUCH_PRIVILEGE + + + + No documentation. + + + ERROR_PRIVILEGE_NOT_HELD + ERROR_PRIVILEGE_NOT_HELD + + + + No documentation. + + + ERROR_INVALID_ACCOUNT_NAME + ERROR_INVALID_ACCOUNT_NAME + + + + No documentation. + + + ERROR_USER_EXISTS + ERROR_USER_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_USER + ERROR_NO_SUCH_USER + + + + No documentation. + + + ERROR_GROUP_EXISTS + ERROR_GROUP_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_GROUP + ERROR_NO_SUCH_GROUP + + + + No documentation. + + + ERROR_MEMBER_IN_GROUP + ERROR_MEMBER_IN_GROUP + + + + No documentation. + + + ERROR_MEMBER_NOT_IN_GROUP + ERROR_MEMBER_NOT_IN_GROUP + + + + No documentation. + + + ERROR_LAST_ADMIN + ERROR_LAST_ADMIN + + + + No documentation. + + + ERROR_WRONG_PASSWORD + ERROR_WRONG_PASSWORD + + + + No documentation. + + + ERROR_ILL_FORMED_PASSWORD + ERROR_ILL_FORMED_PASSWORD + + + + No documentation. + + + ERROR_PASSWORD_RESTRICTION + ERROR_PASSWORD_RESTRICTION + + + + No documentation. + + + ERROR_LOGON_FAILURE + ERROR_LOGON_FAILURE + + + + No documentation. + + + ERROR_ACCOUNT_RESTRICTION + ERROR_ACCOUNT_RESTRICTION + + + + No documentation. + + + ERROR_INVALID_LOGON_HOURS + ERROR_INVALID_LOGON_HOURS + + + + No documentation. + + + ERROR_INVALID_WORKSTATION + ERROR_INVALID_WORKSTATION + + + + No documentation. + + + ERROR_PASSWORD_EXPIRED + ERROR_PASSWORD_EXPIRED + + + + No documentation. + + + ERROR_ACCOUNT_DISABLED + ERROR_ACCOUNT_DISABLED + + + + No documentation. + + + ERROR_NONE_MAPPED + ERROR_NONE_MAPPED + + + + No documentation. + + + ERROR_TOO_MANY_LUIDS_REQUESTED + ERROR_TOO_MANY_LUIDS_REQUESTED + + + + No documentation. + + + ERROR_LUIDS_EXHAUSTED + ERROR_LUIDS_EXHAUSTED + + + + No documentation. + + + ERROR_INVALID_SUB_AUTHORITY + ERROR_INVALID_SUB_AUTHORITY + + + + No documentation. + + + ERROR_INVALID_ACL + ERROR_INVALID_ACL + + + + No documentation. + + + ERROR_INVALID_SID + ERROR_INVALID_SID + + + + No documentation. + + + ERROR_INVALID_SECURITY_DESCR + ERROR_INVALID_SECURITY_DESCR + + + + No documentation. + + + ERROR_BAD_INHERITANCE_ACL + ERROR_BAD_INHERITANCE_ACL + + + + No documentation. + + + ERROR_SERVER_DISABLED + ERROR_SERVER_DISABLED + + + + No documentation. + + + ERROR_SERVER_NOT_DISABLED + ERROR_SERVER_NOT_DISABLED + + + + No documentation. + + + ERROR_INVALID_ID_AUTHORITY + ERROR_INVALID_ID_AUTHORITY + + + + No documentation. + + + ERROR_ALLOTTED_SPACE_EXCEEDED + ERROR_ALLOTTED_SPACE_EXCEEDED + + + + No documentation. + + + ERROR_INVALID_GROUP_ATTRIBUTES + ERROR_INVALID_GROUP_ATTRIBUTES + + + + No documentation. + + + ERROR_BAD_IMPERSONATION_LEVEL + ERROR_BAD_IMPERSONATION_LEVEL + + + + No documentation. + + + ERROR_CANT_OPEN_ANONYMOUS + ERROR_CANT_OPEN_ANONYMOUS + + + + No documentation. + + + ERROR_BAD_VALIDATION_CLASS + ERROR_BAD_VALIDATION_CLASS + + + + No documentation. + + + ERROR_BAD_TOKEN_TYPE + ERROR_BAD_TOKEN_TYPE + + + + No documentation. + + + ERROR_NO_SECURITY_ON_OBJECT + ERROR_NO_SECURITY_ON_OBJECT + + + + No documentation. + + + ERROR_CANT_ACCESS_DOMAIN_INFO + ERROR_CANT_ACCESS_DOMAIN_INFO + + + + No documentation. + + + ERROR_INVALID_SERVER_STATE + ERROR_INVALID_SERVER_STATE + + + + No documentation. + + + ERROR_INVALID_DOMAIN_STATE + ERROR_INVALID_DOMAIN_STATE + + + + No documentation. + + + ERROR_INVALID_DOMAIN_ROLE + ERROR_INVALID_DOMAIN_ROLE + + + + No documentation. + + + ERROR_NO_SUCH_DOMAIN + ERROR_NO_SUCH_DOMAIN + + + + No documentation. + + + ERROR_DOMAIN_EXISTS + ERROR_DOMAIN_EXISTS + + + + No documentation. + + + ERROR_DOMAIN_LIMIT_EXCEEDED + ERROR_DOMAIN_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_INTERNAL_DB_CORRUPTION + ERROR_INTERNAL_DB_CORRUPTION + + + + No documentation. + + + ERROR_INTERNAL_ERROR + ERROR_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GENERIC_NOT_MAPPED + ERROR_GENERIC_NOT_MAPPED + + + + No documentation. + + + ERROR_BAD_DESCRIPTOR_FORMAT + ERROR_BAD_DESCRIPTOR_FORMAT + + + + No documentation. + + + ERROR_NOT_LOGON_PROCESS + ERROR_NOT_LOGON_PROCESS + + + + No documentation. + + + ERROR_LOGON_SESSION_EXISTS + ERROR_LOGON_SESSION_EXISTS + + + + No documentation. + + + ERROR_NO_SUCH_PACKAGE + ERROR_NO_SUCH_PACKAGE + + + + No documentation. + + + ERROR_BAD_LOGON_SESSION_STATE + ERROR_BAD_LOGON_SESSION_STATE + + + + No documentation. + + + ERROR_LOGON_SESSION_COLLISION + ERROR_LOGON_SESSION_COLLISION + + + + No documentation. + + + ERROR_INVALID_LOGON_TYPE + ERROR_INVALID_LOGON_TYPE + + + + No documentation. + + + ERROR_CANNOT_IMPERSONATE + ERROR_CANNOT_IMPERSONATE + + + + No documentation. + + + ERROR_RXACT_INVALID_STATE + ERROR_RXACT_INVALID_STATE + + + + No documentation. + + + ERROR_RXACT_COMMIT_FAILURE + ERROR_RXACT_COMMIT_FAILURE + + + + No documentation. + + + ERROR_SPECIAL_ACCOUNT + ERROR_SPECIAL_ACCOUNT + + + + No documentation. + + + ERROR_SPECIAL_GROUP + ERROR_SPECIAL_GROUP + + + + No documentation. + + + ERROR_SPECIAL_USER + ERROR_SPECIAL_USER + + + + No documentation. + + + ERROR_MEMBERS_PRIMARY_GROUP + ERROR_MEMBERS_PRIMARY_GROUP + + + + No documentation. + + + ERROR_TOKEN_ALREADY_IN_USE + ERROR_TOKEN_ALREADY_IN_USE + + + + No documentation. + + + ERROR_NO_SUCH_ALIAS + ERROR_NO_SUCH_ALIAS + + + + No documentation. + + + ERROR_MEMBER_NOT_IN_ALIAS + ERROR_MEMBER_NOT_IN_ALIAS + + + + No documentation. + + + ERROR_MEMBER_IN_ALIAS + ERROR_MEMBER_IN_ALIAS + + + + No documentation. + + + ERROR_ALIAS_EXISTS + ERROR_ALIAS_EXISTS + + + + No documentation. + + + ERROR_LOGON_NOT_GRANTED + ERROR_LOGON_NOT_GRANTED + + + + No documentation. + + + ERROR_TOO_MANY_SECRETS + ERROR_TOO_MANY_SECRETS + + + + No documentation. + + + ERROR_SECRET_TOO_LONG + ERROR_SECRET_TOO_LONG + + + + No documentation. + + + ERROR_INTERNAL_DB_ERROR + ERROR_INTERNAL_DB_ERROR + + + + No documentation. + + + ERROR_TOO_MANY_CONTEXT_IDS + ERROR_TOO_MANY_CONTEXT_IDS + + + + No documentation. + + + ERROR_LOGON_TYPE_NOT_GRANTED + ERROR_LOGON_TYPE_NOT_GRANTED + + + + No documentation. + + + ERROR_NT_CROSS_ENCRYPTION_REQUIRED + ERROR_NT_CROSS_ENCRYPTION_REQUIRED + + + + No documentation. + + + ERROR_NO_SUCH_MEMBER + ERROR_NO_SUCH_MEMBER + + + + No documentation. + + + ERROR_INVALID_MEMBER + ERROR_INVALID_MEMBER + + + + No documentation. + + + ERROR_TOO_MANY_SIDS + ERROR_TOO_MANY_SIDS + + + + No documentation. + + + ERROR_LM_CROSS_ENCRYPTION_REQUIRED + ERROR_LM_CROSS_ENCRYPTION_REQUIRED + + + + No documentation. + + + ERROR_NO_INHERITANCE + ERROR_NO_INHERITANCE + + + + No documentation. + + + ERROR_FILE_CORRUPT + ERROR_FILE_CORRUPT + + + + No documentation. + + + ERROR_DISK_CORRUPT + ERROR_DISK_CORRUPT + + + + No documentation. + + + ERROR_NO_USER_SESSION_KEY + ERROR_NO_USER_SESSION_KEY + + + + No documentation. + + + ERROR_LICENSE_QUOTA_EXCEEDED + ERROR_LICENSE_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_WRONG_TARGET_NAME + ERROR_WRONG_TARGET_NAME + + + + No documentation. + + + ERROR_MUTUAL_AUTH_FAILED + ERROR_MUTUAL_AUTH_FAILED + + + + No documentation. + + + ERROR_TIME_SKEW + ERROR_TIME_SKEW + + + + No documentation. + + + ERROR_CURRENT_DOMAIN_NOT_ALLOWED + ERROR_CURRENT_DOMAIN_NOT_ALLOWED + + + + No documentation. + + + ERROR_INVALID_WINDOW_HANDLE + ERROR_INVALID_WINDOW_HANDLE + + + + No documentation. + + + ERROR_INVALID_MENU_HANDLE + ERROR_INVALID_MENU_HANDLE + + + + No documentation. + + + ERROR_INVALID_CURSOR_HANDLE + ERROR_INVALID_CURSOR_HANDLE + + + + No documentation. + + + ERROR_INVALID_ACCEL_HANDLE + ERROR_INVALID_ACCEL_HANDLE + + + + No documentation. + + + ERROR_INVALID_HOOK_HANDLE + ERROR_INVALID_HOOK_HANDLE + + + + No documentation. + + + ERROR_INVALID_DWP_HANDLE + ERROR_INVALID_DWP_HANDLE + + + + No documentation. + + + ERROR_TLW_WITH_WSCHILD + ERROR_TLW_WITH_WSCHILD + + + + No documentation. + + + ERROR_CANNOT_FIND_WND_CLASS + ERROR_CANNOT_FIND_WND_CLASS + + + + No documentation. + + + ERROR_WINDOW_OF_OTHER_THREAD + ERROR_WINDOW_OF_OTHER_THREAD + + + + No documentation. + + + ERROR_HOTKEY_ALREADY_REGISTERED + ERROR_HOTKEY_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_CLASS_ALREADY_EXISTS + ERROR_CLASS_ALREADY_EXISTS + + + + No documentation. + + + ERROR_CLASS_DOES_NOT_EXIST + ERROR_CLASS_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_CLASS_HAS_WINDOWS + ERROR_CLASS_HAS_WINDOWS + + + + No documentation. + + + ERROR_INVALID_INDEX + ERROR_INVALID_INDEX + + + + No documentation. + + + ERROR_INVALID_ICON_HANDLE + ERROR_INVALID_ICON_HANDLE + + + + No documentation. + + + ERROR_PRIVATE_DIALOG_INDEX + ERROR_PRIVATE_DIALOG_INDEX + + + + No documentation. + + + ERROR_LISTBOX_ID_NOT_FOUND + ERROR_LISTBOX_ID_NOT_FOUND + + + + No documentation. + + + ERROR_NO_WILDCARD_CHARACTERS + ERROR_NO_WILDCARD_CHARACTERS + + + + No documentation. + + + ERROR_CLIPBOARD_NOT_OPEN + ERROR_CLIPBOARD_NOT_OPEN + + + + No documentation. + + + ERROR_HOTKEY_NOT_REGISTERED + ERROR_HOTKEY_NOT_REGISTERED + + + + No documentation. + + + ERROR_WINDOW_NOT_DIALOG + ERROR_WINDOW_NOT_DIALOG + + + + No documentation. + + + ERROR_CONTROL_ID_NOT_FOUND + ERROR_CONTROL_ID_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_COMBOBOX_MESSAGE + ERROR_INVALID_COMBOBOX_MESSAGE + + + + No documentation. + + + ERROR_WINDOW_NOT_COMBOBOX + ERROR_WINDOW_NOT_COMBOBOX + + + + No documentation. + + + ERROR_INVALID_EDIT_HEIGHT + ERROR_INVALID_EDIT_HEIGHT + + + + No documentation. + + + ERROR_DC_NOT_FOUND + ERROR_DC_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_HOOK_FILTER + ERROR_INVALID_HOOK_FILTER + + + + No documentation. + + + ERROR_INVALID_FILTER_PROC + ERROR_INVALID_FILTER_PROC + + + + No documentation. + + + ERROR_HOOK_NEEDS_HMOD + ERROR_HOOK_NEEDS_HMOD + + + + No documentation. + + + ERROR_GLOBAL_ONLY_HOOK + ERROR_GLOBAL_ONLY_HOOK + + + + No documentation. + + + ERROR_JOURNAL_HOOK_SET + ERROR_JOURNAL_HOOK_SET + + + + No documentation. + + + ERROR_HOOK_NOT_INSTALLED + ERROR_HOOK_NOT_INSTALLED + + + + No documentation. + + + ERROR_INVALID_LB_MESSAGE + ERROR_INVALID_LB_MESSAGE + + + + No documentation. + + + ERROR_SETCOUNT_ON_BAD_LB + ERROR_SETCOUNT_ON_BAD_LB + + + + No documentation. + + + ERROR_LB_WITHOUT_TABSTOPS + ERROR_LB_WITHOUT_TABSTOPS + + + + No documentation. + + + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD + ERROR_DESTROY_OBJECT_OF_OTHER_THREAD + + + + No documentation. + + + ERROR_CHILD_WINDOW_MENU + ERROR_CHILD_WINDOW_MENU + + + + No documentation. + + + ERROR_NO_SYSTEM_MENU + ERROR_NO_SYSTEM_MENU + + + + No documentation. + + + ERROR_INVALID_MSGBOX_STYLE + ERROR_INVALID_MSGBOX_STYLE + + + + No documentation. + + + ERROR_INVALID_SPI_VALUE + ERROR_INVALID_SPI_VALUE + + + + No documentation. + + + ERROR_SCREEN_ALREADY_LOCKED + ERROR_SCREEN_ALREADY_LOCKED + + + + No documentation. + + + ERROR_HWNDS_HAVE_DIFF_PARENT + ERROR_HWNDS_HAVE_DIFF_PARENT + + + + No documentation. + + + ERROR_NOT_CHILD_WINDOW + ERROR_NOT_CHILD_WINDOW + + + + No documentation. + + + ERROR_INVALID_GW_COMMAND + ERROR_INVALID_GW_COMMAND + + + + No documentation. + + + ERROR_INVALID_THREAD_ID + ERROR_INVALID_THREAD_ID + + + + No documentation. + + + ERROR_NON_MDICHILD_WINDOW + ERROR_NON_MDICHILD_WINDOW + + + + No documentation. + + + ERROR_POPUP_ALREADY_ACTIVE + ERROR_POPUP_ALREADY_ACTIVE + + + + No documentation. + + + ERROR_NO_SCROLLBARS + ERROR_NO_SCROLLBARS + + + + No documentation. + + + ERROR_INVALID_SCROLLBAR_RANGE + ERROR_INVALID_SCROLLBAR_RANGE + + + + No documentation. + + + ERROR_INVALID_SHOWWIN_COMMAND + ERROR_INVALID_SHOWWIN_COMMAND + + + + No documentation. + + + ERROR_NO_SYSTEM_RESOURCES + ERROR_NO_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_NONPAGED_SYSTEM_RESOURCES + ERROR_NONPAGED_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_PAGED_SYSTEM_RESOURCES + ERROR_PAGED_SYSTEM_RESOURCES + + + + No documentation. + + + ERROR_WORKING_SET_QUOTA + ERROR_WORKING_SET_QUOTA + + + + No documentation. + + + ERROR_PAGEFILE_QUOTA + ERROR_PAGEFILE_QUOTA + + + + No documentation. + + + ERROR_COMMITMENT_LIMIT + ERROR_COMMITMENT_LIMIT + + + + No documentation. + + + ERROR_MENU_ITEM_NOT_FOUND + ERROR_MENU_ITEM_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_KEYBOARD_HANDLE + ERROR_INVALID_KEYBOARD_HANDLE + + + + No documentation. + + + ERROR_HOOK_TYPE_NOT_ALLOWED + ERROR_HOOK_TYPE_NOT_ALLOWED + + + + No documentation. + + + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION + ERROR_REQUIRES_INTERACTIVE_WINDOWSTATION + + + + No documentation. + + + ERROR_TIMEOUT + ERROR_TIMEOUT + + + + No documentation. + + + ERROR_INVALID_MONITOR_HANDLE + ERROR_INVALID_MONITOR_HANDLE + + + + No documentation. + + + ERROR_INCORRECT_SIZE + ERROR_INCORRECT_SIZE + + + + No documentation. + + + ERROR_SYMLINK_CLASS_DISABLED + ERROR_SYMLINK_CLASS_DISABLED + + + + No documentation. + + + ERROR_SYMLINK_NOT_SUPPORTED + ERROR_SYMLINK_NOT_SUPPORTED + + + + No documentation. + + + ERROR_XML_PARSE_ERROR + ERROR_XML_PARSE_ERROR + + + + No documentation. + + + ERROR_XMLDSIG_ERROR + ERROR_XMLDSIG_ERROR + + + + No documentation. + + + ERROR_RESTART_APPLICATION + ERROR_RESTART_APPLICATION + + + + No documentation. + + + ERROR_WRONG_COMPARTMENT + ERROR_WRONG_COMPARTMENT + + + + No documentation. + + + ERROR_AUTHIP_FAILURE + ERROR_AUTHIP_FAILURE + + + + No documentation. + + + ERROR_NO_NVRAM_RESOURCES + ERROR_NO_NVRAM_RESOURCES + + + + No documentation. + + + ERROR_NOT_GUI_PROCESS + ERROR_NOT_GUI_PROCESS + + + + No documentation. + + + ERROR_EVENTLOG_FILE_CORRUPT + ERROR_EVENTLOG_FILE_CORRUPT + + + + No documentation. + + + ERROR_EVENTLOG_CANT_START + ERROR_EVENTLOG_CANT_START + + + + No documentation. + + + ERROR_LOG_FILE_FULL + ERROR_LOG_FILE_FULL + + + + No documentation. + + + ERROR_EVENTLOG_FILE_CHANGED + ERROR_EVENTLOG_FILE_CHANGED + + + + No documentation. + + + ERROR_INVALID_TASK_NAME + ERROR_INVALID_TASK_NAME + + + + No documentation. + + + ERROR_INVALID_TASK_INDEX + ERROR_INVALID_TASK_INDEX + + + + No documentation. + + + ERROR_THREAD_ALREADY_IN_TASK + ERROR_THREAD_ALREADY_IN_TASK + + + + No documentation. + + + ERROR_INSTALL_SERVICE_FAILURE + ERROR_INSTALL_SERVICE_FAILURE + + + + No documentation. + + + ERROR_INSTALL_USEREXIT + ERROR_INSTALL_USEREXIT + + + + No documentation. + + + ERROR_INSTALL_FAILURE + ERROR_INSTALL_FAILURE + + + + No documentation. + + + ERROR_INSTALL_SUSPEND + ERROR_INSTALL_SUSPEND + + + + No documentation. + + + ERROR_UNKNOWN_PRODUCT + ERROR_UNKNOWN_PRODUCT + + + + No documentation. + + + ERROR_UNKNOWN_FEATURE + ERROR_UNKNOWN_FEATURE + + + + No documentation. + + + ERROR_UNKNOWN_COMPONENT + ERROR_UNKNOWN_COMPONENT + + + + No documentation. + + + ERROR_UNKNOWN_PROPERTY + ERROR_UNKNOWN_PROPERTY + + + + No documentation. + + + ERROR_INVALID_HANDLE_STATE + ERROR_INVALID_HANDLE_STATE + + + + No documentation. + + + ERROR_BAD_CONFIGURATION + ERROR_BAD_CONFIGURATION + + + + No documentation. + + + ERROR_INDEX_ABSENT + ERROR_INDEX_ABSENT + + + + No documentation. + + + ERROR_INSTALL_SOURCE_ABSENT + ERROR_INSTALL_SOURCE_ABSENT + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_VERSION + ERROR_INSTALL_PACKAGE_VERSION + + + + No documentation. + + + ERROR_PRODUCT_UNINSTALLED + ERROR_PRODUCT_UNINSTALLED + + + + No documentation. + + + ERROR_BAD_QUERY_SYNTAX + ERROR_BAD_QUERY_SYNTAX + + + + No documentation. + + + ERROR_INVALID_FIELD + ERROR_INVALID_FIELD + + + + No documentation. + + + ERROR_DEVICE_REMOVED + ERROR_DEVICE_REMOVED + + + + No documentation. + + + ERROR_INSTALL_ALREADY_RUNNING + ERROR_INSTALL_ALREADY_RUNNING + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_OPEN_FAILED + ERROR_INSTALL_PACKAGE_OPEN_FAILED + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_INVALID + ERROR_INSTALL_PACKAGE_INVALID + + + + No documentation. + + + ERROR_INSTALL_UI_FAILURE + ERROR_INSTALL_UI_FAILURE + + + + No documentation. + + + ERROR_INSTALL_LOG_FAILURE + ERROR_INSTALL_LOG_FAILURE + + + + No documentation. + + + ERROR_INSTALL_LANGUAGE_UNSUPPORTED + ERROR_INSTALL_LANGUAGE_UNSUPPORTED + + + + No documentation. + + + ERROR_INSTALL_TRANSFORM_FAILURE + ERROR_INSTALL_TRANSFORM_FAILURE + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_REJECTED + ERROR_INSTALL_PACKAGE_REJECTED + + + + No documentation. + + + ERROR_FUNCTION_NOT_CALLED + ERROR_FUNCTION_NOT_CALLED + + + + No documentation. + + + ERROR_FUNCTION_FAILED + ERROR_FUNCTION_FAILED + + + + No documentation. + + + ERROR_INVALID_TABLE + ERROR_INVALID_TABLE + + + + No documentation. + + + ERROR_DATATYPE_MISMATCH + ERROR_DATATYPE_MISMATCH + + + + No documentation. + + + ERROR_UNSUPPORTED_TYPE + ERROR_UNSUPPORTED_TYPE + + + + No documentation. + + + ERROR_CREATE_FAILED + ERROR_CREATE_FAILED + + + + No documentation. + + + ERROR_INSTALL_TEMP_UNWRITABLE + ERROR_INSTALL_TEMP_UNWRITABLE + + + + No documentation. + + + ERROR_INSTALL_PLATFORM_UNSUPPORTED + ERROR_INSTALL_PLATFORM_UNSUPPORTED + + + + No documentation. + + + ERROR_INSTALL_NOTUSED + ERROR_INSTALL_NOTUSED + + + + No documentation. + + + ERROR_PATCH_PACKAGE_OPEN_FAILED + ERROR_PATCH_PACKAGE_OPEN_FAILED + + + + No documentation. + + + ERROR_PATCH_PACKAGE_INVALID + ERROR_PATCH_PACKAGE_INVALID + + + + No documentation. + + + ERROR_PATCH_PACKAGE_UNSUPPORTED + ERROR_PATCH_PACKAGE_UNSUPPORTED + + + + No documentation. + + + ERROR_PRODUCT_VERSION + ERROR_PRODUCT_VERSION + + + + No documentation. + + + ERROR_INVALID_COMMAND_LINE + ERROR_INVALID_COMMAND_LINE + + + + No documentation. + + + ERROR_INSTALL_REMOTE_DISALLOWED + ERROR_INSTALL_REMOTE_DISALLOWED + + + + No documentation. + + + ERROR_SUCCESS_REBOOT_INITIATED + ERROR_SUCCESS_REBOOT_INITIATED + + + + No documentation. + + + ERROR_PATCH_TARGET_NOT_FOUND + ERROR_PATCH_TARGET_NOT_FOUND + + + + No documentation. + + + ERROR_PATCH_PACKAGE_REJECTED + ERROR_PATCH_PACKAGE_REJECTED + + + + No documentation. + + + ERROR_INSTALL_TRANSFORM_REJECTED + ERROR_INSTALL_TRANSFORM_REJECTED + + + + No documentation. + + + ERROR_INSTALL_REMOTE_PROHIBITED + ERROR_INSTALL_REMOTE_PROHIBITED + + + + No documentation. + + + ERROR_PATCH_REMOVAL_UNSUPPORTED + ERROR_PATCH_REMOVAL_UNSUPPORTED + + + + No documentation. + + + ERROR_UNKNOWN_PATCH + ERROR_UNKNOWN_PATCH + + + + No documentation. + + + ERROR_PATCH_NO_SEQUENCE + ERROR_PATCH_NO_SEQUENCE + + + + No documentation. + + + ERROR_PATCH_REMOVAL_DISALLOWED + ERROR_PATCH_REMOVAL_DISALLOWED + + + + No documentation. + + + ERROR_INVALID_PATCH_XML + ERROR_INVALID_PATCH_XML + + + + No documentation. + + + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT + ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT + + + + No documentation. + + + ERROR_INSTALL_SERVICE_SAFEBOOT + ERROR_INSTALL_SERVICE_SAFEBOOT + + + + No documentation. + + + ERROR_FAIL_FAST_EXCEPTION + ERROR_FAIL_FAST_EXCEPTION + + + + No documentation. + + + ERROR_INSTALL_REJECTED + ERROR_INSTALL_REJECTED + + + + No documentation. + + + ERROR_INVALID_USER_BUFFER + ERROR_INVALID_USER_BUFFER + + + + No documentation. + + + ERROR_UNRECOGNIZED_MEDIA + ERROR_UNRECOGNIZED_MEDIA + + + + No documentation. + + + ERROR_NO_TRUST_LSA_SECRET + ERROR_NO_TRUST_LSA_SECRET + + + + No documentation. + + + ERROR_NO_TRUST_SAM_ACCOUNT + ERROR_NO_TRUST_SAM_ACCOUNT + + + + No documentation. + + + ERROR_TRUSTED_DOMAIN_FAILURE + ERROR_TRUSTED_DOMAIN_FAILURE + + + + No documentation. + + + ERROR_TRUSTED_RELATIONSHIP_FAILURE + ERROR_TRUSTED_RELATIONSHIP_FAILURE + + + + No documentation. + + + ERROR_TRUST_FAILURE + ERROR_TRUST_FAILURE + + + + No documentation. + + + ERROR_NETLOGON_NOT_STARTED + ERROR_NETLOGON_NOT_STARTED + + + + No documentation. + + + ERROR_ACCOUNT_EXPIRED + ERROR_ACCOUNT_EXPIRED + + + + No documentation. + + + ERROR_REDIRECTOR_HAS_OPEN_HANDLES + ERROR_REDIRECTOR_HAS_OPEN_HANDLES + + + + No documentation. + + + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED + ERROR_PRINTER_DRIVER_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_UNKNOWN_PORT + ERROR_UNKNOWN_PORT + + + + No documentation. + + + ERROR_UNKNOWN_PRINTER_DRIVER + ERROR_UNKNOWN_PRINTER_DRIVER + + + + No documentation. + + + ERROR_UNKNOWN_PRINTPROCESSOR + ERROR_UNKNOWN_PRINTPROCESSOR + + + + No documentation. + + + ERROR_INVALID_SEPARATOR_FILE + ERROR_INVALID_SEPARATOR_FILE + + + + No documentation. + + + ERROR_INVALID_PRIORITY + ERROR_INVALID_PRIORITY + + + + No documentation. + + + ERROR_INVALID_PRINTER_NAME + ERROR_INVALID_PRINTER_NAME + + + + No documentation. + + + ERROR_PRINTER_ALREADY_EXISTS + ERROR_PRINTER_ALREADY_EXISTS + + + + No documentation. + + + ERROR_INVALID_PRINTER_COMMAND + ERROR_INVALID_PRINTER_COMMAND + + + + No documentation. + + + ERROR_INVALID_DATATYPE + ERROR_INVALID_DATATYPE + + + + No documentation. + + + ERROR_INVALID_ENVIRONMENT + ERROR_INVALID_ENVIRONMENT + + + + No documentation. + + + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT + ERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT + ERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT + ERROR_NOLOGON_SERVER_TRUST_ACCOUNT + + + + No documentation. + + + ERROR_DOMAIN_TRUST_INCONSISTENT + ERROR_DOMAIN_TRUST_INCONSISTENT + + + + No documentation. + + + ERROR_SERVER_HAS_OPEN_HANDLES + ERROR_SERVER_HAS_OPEN_HANDLES + + + + No documentation. + + + ERROR_RESOURCE_DATA_NOT_FOUND + ERROR_RESOURCE_DATA_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_TYPE_NOT_FOUND + ERROR_RESOURCE_TYPE_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_NAME_NOT_FOUND + ERROR_RESOURCE_NAME_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCE_LANG_NOT_FOUND + ERROR_RESOURCE_LANG_NOT_FOUND + + + + No documentation. + + + ERROR_NOT_ENOUGH_QUOTA + ERROR_NOT_ENOUGH_QUOTA + + + + No documentation. + + + ERROR_INVALID_TIME + ERROR_INVALID_TIME + + + + No documentation. + + + ERROR_INVALID_FORM_NAME + ERROR_INVALID_FORM_NAME + + + + No documentation. + + + ERROR_INVALID_FORM_SIZE + ERROR_INVALID_FORM_SIZE + + + + No documentation. + + + ERROR_ALREADY_WAITING + ERROR_ALREADY_WAITING + + + + No documentation. + + + ERROR_PRINTER_DELETED + ERROR_PRINTER_DELETED + + + + No documentation. + + + ERROR_INVALID_PRINTER_STATE + ERROR_INVALID_PRINTER_STATE + + + + No documentation. + + + ERROR_PASSWORD_MUST_CHANGE + ERROR_PASSWORD_MUST_CHANGE + + + + No documentation. + + + ERROR_DOMAIN_CONTROLLER_NOT_FOUND + ERROR_DOMAIN_CONTROLLER_NOT_FOUND + + + + No documentation. + + + ERROR_ACCOUNT_LOCKED_OUT + ERROR_ACCOUNT_LOCKED_OUT + + + + No documentation. + + + ERROR_NO_SITENAME + ERROR_NO_SITENAME + + + + No documentation. + + + ERROR_CANT_ACCESS_FILE + ERROR_CANT_ACCESS_FILE + + + + No documentation. + + + ERROR_CANT_RESOLVE_FILENAME + ERROR_CANT_RESOLVE_FILENAME + + + + No documentation. + + + ERROR_KM_DRIVER_BLOCKED + ERROR_KM_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_CONTEXT_EXPIRED + ERROR_CONTEXT_EXPIRED + + + + No documentation. + + + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED + ERROR_PER_USER_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED + ERROR_ALL_USER_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED + ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_AUTHENTICATION_FIREWALL_FAILED + ERROR_AUTHENTICATION_FIREWALL_FAILED + + + + No documentation. + + + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED + ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED + + + + No documentation. + + + ERROR_NTLM_BLOCKED + ERROR_NTLM_BLOCKED + + + + No documentation. + + + ERROR_PASSWORD_CHANGE_REQUIRED + ERROR_PASSWORD_CHANGE_REQUIRED + + + + No documentation. + + + ERROR_INVALID_PIXEL_FORMAT + ERROR_INVALID_PIXEL_FORMAT + + + + No documentation. + + + ERROR_BAD_DRIVER + ERROR_BAD_DRIVER + + + + No documentation. + + + ERROR_INVALID_WINDOW_STYLE + ERROR_INVALID_WINDOW_STYLE + + + + No documentation. + + + ERROR_METAFILE_NOT_SUPPORTED + ERROR_METAFILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_TRANSFORM_NOT_SUPPORTED + ERROR_TRANSFORM_NOT_SUPPORTED + + + + No documentation. + + + ERROR_CLIPPING_NOT_SUPPORTED + ERROR_CLIPPING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_INVALID_CMM + ERROR_INVALID_CMM + + + + No documentation. + + + ERROR_INVALID_PROFILE + ERROR_INVALID_PROFILE + + + + No documentation. + + + ERROR_TAG_NOT_FOUND + ERROR_TAG_NOT_FOUND + + + + No documentation. + + + ERROR_TAG_NOT_PRESENT + ERROR_TAG_NOT_PRESENT + + + + No documentation. + + + ERROR_DUPLICATE_TAG + ERROR_DUPLICATE_TAG + + + + No documentation. + + + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE + ERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE + + + + No documentation. + + + ERROR_PROFILE_NOT_FOUND + ERROR_PROFILE_NOT_FOUND + + + + No documentation. + + + ERROR_INVALID_COLORSPACE + ERROR_INVALID_COLORSPACE + + + + No documentation. + + + ERROR_ICM_NOT_ENABLED + ERROR_ICM_NOT_ENABLED + + + + No documentation. + + + ERROR_DELETING_ICM_XFORM + ERROR_DELETING_ICM_XFORM + + + + No documentation. + + + ERROR_INVALID_TRANSFORM + ERROR_INVALID_TRANSFORM + + + + No documentation. + + + ERROR_COLORSPACE_MISMATCH + ERROR_COLORSPACE_MISMATCH + + + + No documentation. + + + ERROR_INVALID_COLORINDEX + ERROR_INVALID_COLORINDEX + + + + No documentation. + + + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE + ERROR_PROFILE_DOES_NOT_MATCH_DEVICE + + + + No documentation. + + + ERROR_CONNECTED_OTHER_PASSWORD + ERROR_CONNECTED_OTHER_PASSWORD + + + + No documentation. + + + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT + ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT + + + + No documentation. + + + ERROR_BAD_USERNAME + ERROR_BAD_USERNAME + + + + No documentation. + + + ERROR_NOT_CONNECTED + ERROR_NOT_CONNECTED + + + + No documentation. + + + ERROR_OPEN_FILES + ERROR_OPEN_FILES + + + + No documentation. + + + ERROR_ACTIVE_CONNECTIONS + ERROR_ACTIVE_CONNECTIONS + + + + No documentation. + + + ERROR_DEVICE_IN_USE + ERROR_DEVICE_IN_USE + + + + No documentation. + + + ERROR_UNKNOWN_PRINT_MONITOR + ERROR_UNKNOWN_PRINT_MONITOR + + + + No documentation. + + + ERROR_PRINTER_DRIVER_IN_USE + ERROR_PRINTER_DRIVER_IN_USE + + + + No documentation. + + + ERROR_SPOOL_FILE_NOT_FOUND + ERROR_SPOOL_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_SPL_NO_STARTDOC + ERROR_SPL_NO_STARTDOC + + + + No documentation. + + + ERROR_SPL_NO_ADDJOB + ERROR_SPL_NO_ADDJOB + + + + No documentation. + + + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED + ERROR_PRINT_PROCESSOR_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_PRINT_MONITOR_ALREADY_INSTALLED + ERROR_PRINT_MONITOR_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_INVALID_PRINT_MONITOR + ERROR_INVALID_PRINT_MONITOR + + + + No documentation. + + + ERROR_PRINT_MONITOR_IN_USE + ERROR_PRINT_MONITOR_IN_USE + + + + No documentation. + + + ERROR_PRINTER_HAS_JOBS_QUEUED + ERROR_PRINTER_HAS_JOBS_QUEUED + + + + No documentation. + + + ERROR_SUCCESS_REBOOT_REQUIRED + ERROR_SUCCESS_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_SUCCESS_RESTART_REQUIRED + ERROR_SUCCESS_RESTART_REQUIRED + + + + No documentation. + + + ERROR_PRINTER_NOT_FOUND + ERROR_PRINTER_NOT_FOUND + + + + No documentation. + + + ERROR_PRINTER_DRIVER_WARNED + ERROR_PRINTER_DRIVER_WARNED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_BLOCKED + ERROR_PRINTER_DRIVER_BLOCKED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE + ERROR_PRINTER_DRIVER_PACKAGE_IN_USE + + + + No documentation. + + + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND + ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND + + + + No documentation. + + + ERROR_FAIL_REBOOT_REQUIRED + ERROR_FAIL_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_FAIL_REBOOT_INITIATED + ERROR_FAIL_REBOOT_INITIATED + + + + No documentation. + + + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED + ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED + + + + No documentation. + + + ERROR_PRINT_JOB_RESTART_REQUIRED + ERROR_PRINT_JOB_RESTART_REQUIRED + + + + No documentation. + + + ERROR_INVALID_PRINTER_DRIVER_MANIFEST + ERROR_INVALID_PRINTER_DRIVER_MANIFEST + + + + No documentation. + + + ERROR_PRINTER_NOT_SHAREABLE + ERROR_PRINTER_NOT_SHAREABLE + + + + No documentation. + + + ERROR_REQUEST_PAUSED + ERROR_REQUEST_PAUSED + + + + No documentation. + + + ERROR_IO_REISSUE_AS_CACHED + ERROR_IO_REISSUE_AS_CACHED + + + + No documentation. + + + ERROR_WINS_INTERNAL + ERROR_WINS_INTERNAL + + + + No documentation. + + + ERROR_CAN_NOT_DEL_LOCAL_WINS + ERROR_CAN_NOT_DEL_LOCAL_WINS + + + + No documentation. + + + ERROR_STATIC_INIT + ERROR_STATIC_INIT + + + + No documentation. + + + ERROR_INC_BACKUP + ERROR_INC_BACKUP + + + + No documentation. + + + ERROR_FULL_BACKUP + ERROR_FULL_BACKUP + + + + No documentation. + + + ERROR_REC_NON_EXISTENT + ERROR_REC_NON_EXISTENT + + + + No documentation. + + + ERROR_RPL_NOT_ALLOWED + ERROR_RPL_NOT_ALLOWED + + + + No documentation. + + + ERROR_DHCP_ADDRESS_CONFLICT + ERROR_DHCP_ADDRESS_CONFLICT + + + + No documentation. + + + ERROR_WMI_GUID_NOT_FOUND + ERROR_WMI_GUID_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_INSTANCE_NOT_FOUND + ERROR_WMI_INSTANCE_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_ITEMID_NOT_FOUND + ERROR_WMI_ITEMID_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_TRY_AGAIN + ERROR_WMI_TRY_AGAIN + + + + No documentation. + + + ERROR_WMI_DP_NOT_FOUND + ERROR_WMI_DP_NOT_FOUND + + + + No documentation. + + + ERROR_WMI_UNRESOLVED_INSTANCE_REF + ERROR_WMI_UNRESOLVED_INSTANCE_REF + + + + No documentation. + + + ERROR_WMI_ALREADY_ENABLED + ERROR_WMI_ALREADY_ENABLED + + + + No documentation. + + + ERROR_WMI_GUID_DISCONNECTED + ERROR_WMI_GUID_DISCONNECTED + + + + No documentation. + + + ERROR_WMI_SERVER_UNAVAILABLE + ERROR_WMI_SERVER_UNAVAILABLE + + + + No documentation. + + + ERROR_WMI_DP_FAILED + ERROR_WMI_DP_FAILED + + + + No documentation. + + + ERROR_WMI_INVALID_MOF + ERROR_WMI_INVALID_MOF + + + + No documentation. + + + ERROR_WMI_INVALID_REGINFO + ERROR_WMI_INVALID_REGINFO + + + + No documentation. + + + ERROR_WMI_ALREADY_DISABLED + ERROR_WMI_ALREADY_DISABLED + + + + No documentation. + + + ERROR_WMI_READ_ONLY + ERROR_WMI_READ_ONLY + + + + No documentation. + + + ERROR_WMI_SET_FAILURE + ERROR_WMI_SET_FAILURE + + + + No documentation. + + + ERROR_NOT_APPCONTAINER + ERROR_NOT_APPCONTAINER + + + + No documentation. + + + ERROR_APPCONTAINER_REQUIRED + ERROR_APPCONTAINER_REQUIRED + + + + No documentation. + + + ERROR_NOT_SUPPORTED_IN_APPCONTAINER + ERROR_NOT_SUPPORTED_IN_APPCONTAINER + + + + No documentation. + + + ERROR_INVALID_PACKAGE_SID_LENGTH + ERROR_INVALID_PACKAGE_SID_LENGTH + + + + No documentation. + + + ERROR_INVALID_MEDIA + ERROR_INVALID_MEDIA + + + + No documentation. + + + ERROR_INVALID_LIBRARY + ERROR_INVALID_LIBRARY + + + + No documentation. + + + ERROR_INVALID_MEDIA_POOL + ERROR_INVALID_MEDIA_POOL + + + + No documentation. + + + ERROR_DRIVE_MEDIA_MISMATCH + ERROR_DRIVE_MEDIA_MISMATCH + + + + No documentation. + + + ERROR_MEDIA_OFFLINE + ERROR_MEDIA_OFFLINE + + + + No documentation. + + + ERROR_LIBRARY_OFFLINE + ERROR_LIBRARY_OFFLINE + + + + No documentation. + + + ERROR_EMPTY + ERROR_EMPTY + + + + No documentation. + + + ERROR_NOT_EMPTY + ERROR_NOT_EMPTY + + + + No documentation. + + + ERROR_MEDIA_UNAVAILABLE + ERROR_MEDIA_UNAVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_DISABLED + ERROR_RESOURCE_DISABLED + + + + No documentation. + + + ERROR_INVALID_CLEANER + ERROR_INVALID_CLEANER + + + + No documentation. + + + ERROR_UNABLE_TO_CLEAN + ERROR_UNABLE_TO_CLEAN + + + + No documentation. + + + ERROR_OBJECT_NOT_FOUND + ERROR_OBJECT_NOT_FOUND + + + + No documentation. + + + ERROR_DATABASE_FAILURE + ERROR_DATABASE_FAILURE + + + + No documentation. + + + ERROR_DATABASE_FULL + ERROR_DATABASE_FULL + + + + No documentation. + + + ERROR_MEDIA_INCOMPATIBLE + ERROR_MEDIA_INCOMPATIBLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_PRESENT + ERROR_RESOURCE_NOT_PRESENT + + + + No documentation. + + + ERROR_INVALID_OPERATION + ERROR_INVALID_OPERATION + + + + No documentation. + + + ERROR_MEDIA_NOT_AVAILABLE + ERROR_MEDIA_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DEVICE_NOT_AVAILABLE + ERROR_DEVICE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_REQUEST_REFUSED + ERROR_REQUEST_REFUSED + + + + No documentation. + + + ERROR_INVALID_DRIVE_OBJECT + ERROR_INVALID_DRIVE_OBJECT + + + + No documentation. + + + ERROR_LIBRARY_FULL + ERROR_LIBRARY_FULL + + + + No documentation. + + + ERROR_MEDIUM_NOT_ACCESSIBLE + ERROR_MEDIUM_NOT_ACCESSIBLE + + + + No documentation. + + + ERROR_UNABLE_TO_LOAD_MEDIUM + ERROR_UNABLE_TO_LOAD_MEDIUM + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_DRIVE + ERROR_UNABLE_TO_INVENTORY_DRIVE + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_SLOT + ERROR_UNABLE_TO_INVENTORY_SLOT + + + + No documentation. + + + ERROR_UNABLE_TO_INVENTORY_TRANSPORT + ERROR_UNABLE_TO_INVENTORY_TRANSPORT + + + + No documentation. + + + ERROR_TRANSPORT_FULL + ERROR_TRANSPORT_FULL + + + + No documentation. + + + ERROR_CONTROLLING_IEPORT + ERROR_CONTROLLING_IEPORT + + + + No documentation. + + + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA + ERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA + + + + No documentation. + + + ERROR_CLEANER_SLOT_SET + ERROR_CLEANER_SLOT_SET + + + + No documentation. + + + ERROR_CLEANER_SLOT_NOT_SET + ERROR_CLEANER_SLOT_NOT_SET + + + + No documentation. + + + ERROR_CLEANER_CARTRIDGE_SPENT + ERROR_CLEANER_CARTRIDGE_SPENT + + + + No documentation. + + + ERROR_UNEXPECTED_OMID + ERROR_UNEXPECTED_OMID + + + + No documentation. + + + ERROR_CANT_DELETE_LAST_ITEM + ERROR_CANT_DELETE_LAST_ITEM + + + + No documentation. + + + ERROR_MESSAGE_EXCEEDS_MAX_SIZE + ERROR_MESSAGE_EXCEEDS_MAX_SIZE + + + + No documentation. + + + ERROR_VOLUME_CONTAINS_SYS_FILES + ERROR_VOLUME_CONTAINS_SYS_FILES + + + + No documentation. + + + ERROR_INDIGENOUS_TYPE + ERROR_INDIGENOUS_TYPE + + + + No documentation. + + + ERROR_NO_SUPPORTING_DRIVES + ERROR_NO_SUPPORTING_DRIVES + + + + No documentation. + + + ERROR_CLEANER_CARTRIDGE_INSTALLED + ERROR_CLEANER_CARTRIDGE_INSTALLED + + + + No documentation. + + + ERROR_IEPORT_FULL + ERROR_IEPORT_FULL + + + + No documentation. + + + ERROR_FILE_OFFLINE + ERROR_FILE_OFFLINE + + + + No documentation. + + + ERROR_REMOTE_STORAGE_NOT_ACTIVE + ERROR_REMOTE_STORAGE_NOT_ACTIVE + + + + No documentation. + + + ERROR_REMOTE_STORAGE_MEDIA_ERROR + ERROR_REMOTE_STORAGE_MEDIA_ERROR + + + + No documentation. + + + ERROR_NOT_A_REPARSE_POINT + ERROR_NOT_A_REPARSE_POINT + + + + No documentation. + + + ERROR_REPARSE_ATTRIBUTE_CONFLICT + ERROR_REPARSE_ATTRIBUTE_CONFLICT + + + + No documentation. + + + ERROR_INVALID_REPARSE_DATA + ERROR_INVALID_REPARSE_DATA + + + + No documentation. + + + ERROR_REPARSE_TAG_INVALID + ERROR_REPARSE_TAG_INVALID + + + + No documentation. + + + ERROR_REPARSE_TAG_MISMATCH + ERROR_REPARSE_TAG_MISMATCH + + + + No documentation. + + + ERROR_APP_DATA_NOT_FOUND + ERROR_APP_DATA_NOT_FOUND + + + + No documentation. + + + ERROR_APP_DATA_EXPIRED + ERROR_APP_DATA_EXPIRED + + + + No documentation. + + + ERROR_APP_DATA_CORRUPT + ERROR_APP_DATA_CORRUPT + + + + No documentation. + + + ERROR_APP_DATA_LIMIT_EXCEEDED + ERROR_APP_DATA_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_APP_DATA_REBOOT_REQUIRED + ERROR_APP_DATA_REBOOT_REQUIRED + + + + No documentation. + + + ERROR_SECUREBOOT_ROLLBACK_DETECTED + ERROR_SECUREBOOT_ROLLBACK_DETECTED + + + + No documentation. + + + ERROR_SECUREBOOT_POLICY_VIOLATION + ERROR_SECUREBOOT_POLICY_VIOLATION + + + + No documentation. + + + ERROR_SECUREBOOT_INVALID_POLICY + ERROR_SECUREBOOT_INVALID_POLICY + + + + No documentation. + + + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND + ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND + + + + No documentation. + + + ERROR_SECUREBOOT_POLICY_NOT_SIGNED + ERROR_SECUREBOOT_POLICY_NOT_SIGNED + + + + No documentation. + + + ERROR_SECUREBOOT_NOT_ENABLED + ERROR_SECUREBOOT_NOT_ENABLED + + + + No documentation. + + + ERROR_SECUREBOOT_FILE_REPLACED + ERROR_SECUREBOOT_FILE_REPLACED + + + + No documentation. + + + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED + ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED + + + + No documentation. + + + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED + ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED + + + + No documentation. + + + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED + ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED + ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLUME_NOT_SIS_ENABLED + ERROR_VOLUME_NOT_SIS_ENABLED + + + + No documentation. + + + ERROR_DEPENDENT_RESOURCE_EXISTS + ERROR_DEPENDENT_RESOURCE_EXISTS + + + + No documentation. + + + ERROR_DEPENDENCY_NOT_FOUND + ERROR_DEPENDENCY_NOT_FOUND + + + + No documentation. + + + ERROR_DEPENDENCY_ALREADY_EXISTS + ERROR_DEPENDENCY_ALREADY_EXISTS + + + + No documentation. + + + ERROR_RESOURCE_NOT_ONLINE + ERROR_RESOURCE_NOT_ONLINE + + + + No documentation. + + + ERROR_HOST_NODE_NOT_AVAILABLE + ERROR_HOST_NODE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_AVAILABLE + ERROR_RESOURCE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_FOUND + ERROR_RESOURCE_NOT_FOUND + + + + No documentation. + + + ERROR_SHUTDOWN_CLUSTER + ERROR_SHUTDOWN_CLUSTER + + + + No documentation. + + + ERROR_CANT_EVICT_ACTIVE_NODE + ERROR_CANT_EVICT_ACTIVE_NODE + + + + No documentation. + + + ERROR_OBJECT_ALREADY_EXISTS + ERROR_OBJECT_ALREADY_EXISTS + + + + No documentation. + + + ERROR_OBJECT_IN_LIST + ERROR_OBJECT_IN_LIST + + + + No documentation. + + + ERROR_GROUP_NOT_AVAILABLE + ERROR_GROUP_NOT_AVAILABLE + + + + No documentation. + + + ERROR_GROUP_NOT_FOUND + ERROR_GROUP_NOT_FOUND + + + + No documentation. + + + ERROR_GROUP_NOT_ONLINE + ERROR_GROUP_NOT_ONLINE + + + + No documentation. + + + ERROR_HOST_NODE_NOT_RESOURCE_OWNER + ERROR_HOST_NODE_NOT_RESOURCE_OWNER + + + + No documentation. + + + ERROR_HOST_NODE_NOT_GROUP_OWNER + ERROR_HOST_NODE_NOT_GROUP_OWNER + + + + No documentation. + + + ERROR_RESMON_CREATE_FAILED + ERROR_RESMON_CREATE_FAILED + + + + No documentation. + + + ERROR_RESMON_ONLINE_FAILED + ERROR_RESMON_ONLINE_FAILED + + + + No documentation. + + + ERROR_RESOURCE_ONLINE + ERROR_RESOURCE_ONLINE + + + + No documentation. + + + ERROR_QUORUM_RESOURCE + ERROR_QUORUM_RESOURCE + + + + No documentation. + + + ERROR_NOT_QUORUM_CAPABLE + ERROR_NOT_QUORUM_CAPABLE + + + + No documentation. + + + ERROR_CLUSTER_SHUTTING_DOWN + ERROR_CLUSTER_SHUTTING_DOWN + + + + No documentation. + + + ERROR_INVALID_STATE + ERROR_INVALID_STATE + + + + No documentation. + + + ERROR_RESOURCE_PROPERTIES_STORED + ERROR_RESOURCE_PROPERTIES_STORED + + + + No documentation. + + + ERROR_NOT_QUORUM_CLASS + ERROR_NOT_QUORUM_CLASS + + + + No documentation. + + + ERROR_CORE_RESOURCE + ERROR_CORE_RESOURCE + + + + No documentation. + + + ERROR_QUORUM_RESOURCE_ONLINE_FAILED + ERROR_QUORUM_RESOURCE_ONLINE_FAILED + + + + No documentation. + + + ERROR_QUORUMLOG_OPEN_FAILED + ERROR_QUORUMLOG_OPEN_FAILED + + + + No documentation. + + + ERROR_CLUSTERLOG_CORRUPT + ERROR_CLUSTERLOG_CORRUPT + + + + No documentation. + + + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE + ERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE + + + + No documentation. + + + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE + ERROR_CLUSTERLOG_EXCEEDS_MAXSIZE + + + + No documentation. + + + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND + ERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE + ERROR_CLUSTERLOG_NOT_ENOUGH_SPACE + + + + No documentation. + + + ERROR_QUORUM_OWNER_ALIVE + ERROR_QUORUM_OWNER_ALIVE + + + + No documentation. + + + ERROR_NETWORK_NOT_AVAILABLE + ERROR_NETWORK_NOT_AVAILABLE + + + + No documentation. + + + ERROR_NODE_NOT_AVAILABLE + ERROR_NODE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_ALL_NODES_NOT_AVAILABLE + ERROR_ALL_NODES_NOT_AVAILABLE + + + + No documentation. + + + ERROR_RESOURCE_FAILED + ERROR_RESOURCE_FAILED + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NODE + ERROR_CLUSTER_INVALID_NODE + + + + No documentation. + + + ERROR_CLUSTER_NODE_EXISTS + ERROR_CLUSTER_NODE_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_JOIN_IN_PROGRESS + ERROR_CLUSTER_JOIN_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_FOUND + ERROR_CLUSTER_NODE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND + ERROR_CLUSTER_LOCAL_NODE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_EXISTS + ERROR_CLUSTER_NETWORK_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_FOUND + ERROR_CLUSTER_NETWORK_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NETINTERFACE_EXISTS + ERROR_CLUSTER_NETINTERFACE_EXISTS + + + + No documentation. + + + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND + ERROR_CLUSTER_NETINTERFACE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_INVALID_REQUEST + ERROR_CLUSTER_INVALID_REQUEST + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER + ERROR_CLUSTER_INVALID_NETWORK_PROVIDER + + + + No documentation. + + + ERROR_CLUSTER_NODE_DOWN + ERROR_CLUSTER_NODE_DOWN + + + + No documentation. + + + ERROR_CLUSTER_NODE_UNREACHABLE + ERROR_CLUSTER_NODE_UNREACHABLE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_MEMBER + ERROR_CLUSTER_NODE_NOT_MEMBER + + + + No documentation. + + + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS + ERROR_CLUSTER_JOIN_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NETWORK + ERROR_CLUSTER_INVALID_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_NODE_UP + ERROR_CLUSTER_NODE_UP + + + + No documentation. + + + ERROR_CLUSTER_IPADDR_IN_USE + ERROR_CLUSTER_IPADDR_IN_USE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_PAUSED + ERROR_CLUSTER_NODE_NOT_PAUSED + + + + No documentation. + + + ERROR_CLUSTER_NO_SECURITY_CONTEXT + ERROR_CLUSTER_NO_SECURITY_CONTEXT + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_INTERNAL + ERROR_CLUSTER_NETWORK_NOT_INTERNAL + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_UP + ERROR_CLUSTER_NODE_ALREADY_UP + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_DOWN + ERROR_CLUSTER_NODE_ALREADY_DOWN + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE + ERROR_CLUSTER_NETWORK_ALREADY_ONLINE + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE + ERROR_CLUSTER_NETWORK_ALREADY_OFFLINE + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_MEMBER + ERROR_CLUSTER_NODE_ALREADY_MEMBER + + + + No documentation. + + + ERROR_CLUSTER_LAST_INTERNAL_NETWORK + ERROR_CLUSTER_LAST_INTERNAL_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS + ERROR_CLUSTER_NETWORK_HAS_DEPENDENTS + + + + No documentation. + + + ERROR_INVALID_OPERATION_ON_QUORUM + ERROR_INVALID_OPERATION_ON_QUORUM + + + + No documentation. + + + ERROR_DEPENDENCY_NOT_ALLOWED + ERROR_DEPENDENCY_NOT_ALLOWED + + + + No documentation. + + + ERROR_CLUSTER_NODE_PAUSED + ERROR_CLUSTER_NODE_PAUSED + + + + No documentation. + + + ERROR_NODE_CANT_HOST_RESOURCE + ERROR_NODE_CANT_HOST_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_NODE_NOT_READY + ERROR_CLUSTER_NODE_NOT_READY + + + + No documentation. + + + ERROR_CLUSTER_NODE_SHUTTING_DOWN + ERROR_CLUSTER_NODE_SHUTTING_DOWN + + + + No documentation. + + + ERROR_CLUSTER_JOIN_ABORTED + ERROR_CLUSTER_JOIN_ABORTED + + + + No documentation. + + + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS + ERROR_CLUSTER_INCOMPATIBLE_VERSIONS + + + + No documentation. + + + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED + ERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED + + + + No documentation. + + + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED + ERROR_CLUSTER_SYSTEM_CONFIG_CHANGED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND + ERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED + ERROR_CLUSTER_RESTYPE_NOT_SUPPORTED + + + + No documentation. + + + ERROR_CLUSTER_RESNAME_NOT_FOUND + ERROR_CLUSTER_RESNAME_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED + ERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED + + + + No documentation. + + + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST + ERROR_CLUSTER_OWNER_NOT_IN_PREFLIST + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_SEQMISMATCH + ERROR_CLUSTER_DATABASE_SEQMISMATCH + + + + No documentation. + + + ERROR_RESMON_INVALID_STATE + ERROR_RESMON_INVALID_STATE + + + + No documentation. + + + ERROR_CLUSTER_GUM_NOT_LOCKER + ERROR_CLUSTER_GUM_NOT_LOCKER + + + + No documentation. + + + ERROR_QUORUM_DISK_NOT_FOUND + ERROR_QUORUM_DISK_NOT_FOUND + + + + No documentation. + + + ERROR_DATABASE_BACKUP_CORRUPT + ERROR_DATABASE_BACKUP_CORRUPT + + + + No documentation. + + + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT + ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT + + + + No documentation. + + + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE + ERROR_RESOURCE_PROPERTY_UNCHANGEABLE + + + + No documentation. + + + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE + ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE + + + + No documentation. + + + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND + ERROR_CLUSTER_QUORUMLOG_NOT_FOUND + + + + No documentation. + + + ERROR_CLUSTER_MEMBERSHIP_HALT + ERROR_CLUSTER_MEMBERSHIP_HALT + + + + No documentation. + + + ERROR_CLUSTER_INSTANCE_ID_MISMATCH + ERROR_CLUSTER_INSTANCE_ID_MISMATCH + + + + No documentation. + + + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP + ERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP + + + + No documentation. + + + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH + ERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH + + + + No documentation. + + + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP + ERROR_CLUSTER_EVICT_WITHOUT_CLEANUP + + + + No documentation. + + + ERROR_CLUSTER_PARAMETER_MISMATCH + ERROR_CLUSTER_PARAMETER_MISMATCH + + + + No documentation. + + + ERROR_NODE_CANNOT_BE_CLUSTERED + ERROR_NODE_CANNOT_BE_CLUSTERED + + + + No documentation. + + + ERROR_CLUSTER_WRONG_OS_VERSION + ERROR_CLUSTER_WRONG_OS_VERSION + + + + No documentation. + + + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME + ERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME + + + + No documentation. + + + ERROR_CLUSCFG_ALREADY_COMMITTED + ERROR_CLUSCFG_ALREADY_COMMITTED + + + + No documentation. + + + ERROR_CLUSCFG_ROLLBACK_FAILED + ERROR_CLUSCFG_ROLLBACK_FAILED + + + + No documentation. + + + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT + ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_OLD_VERSION + ERROR_CLUSTER_OLD_VERSION + + + + No documentation. + + + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME + ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME + + + + No documentation. + + + ERROR_CLUSTER_NO_NET_ADAPTERS + ERROR_CLUSTER_NO_NET_ADAPTERS + + + + No documentation. + + + ERROR_CLUSTER_POISONED + ERROR_CLUSTER_POISONED + + + + No documentation. + + + ERROR_CLUSTER_GROUP_MOVING + ERROR_CLUSTER_GROUP_MOVING + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_TYPE_BUSY + ERROR_CLUSTER_RESOURCE_TYPE_BUSY + + + + No documentation. + + + ERROR_RESOURCE_CALL_TIMED_OUT + ERROR_RESOURCE_CALL_TIMED_OUT + + + + No documentation. + + + ERROR_INVALID_CLUSTER_IPV6_ADDRESS + ERROR_INVALID_CLUSTER_IPV6_ADDRESS + + + + No documentation. + + + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION + ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION + + + + No documentation. + + + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS + ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_SEND + ERROR_CLUSTER_PARTIAL_SEND + + + + No documentation. + + + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION + ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION + + + + No documentation. + + + ERROR_CLUSTER_INVALID_STRING_TERMINATION + ERROR_CLUSTER_INVALID_STRING_TERMINATION + + + + No documentation. + + + ERROR_CLUSTER_INVALID_STRING_FORMAT + ERROR_CLUSTER_INVALID_STRING_FORMAT + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS + ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS + ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_NULL_DATA + ERROR_CLUSTER_NULL_DATA + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_READ + ERROR_CLUSTER_PARTIAL_READ + + + + No documentation. + + + ERROR_CLUSTER_PARTIAL_WRITE + ERROR_CLUSTER_PARTIAL_WRITE + + + + No documentation. + + + ERROR_CLUSTER_CANT_DESERIALIZE_DATA + ERROR_CLUSTER_CANT_DESERIALIZE_DATA + + + + No documentation. + + + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT + ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_NO_QUORUM + ERROR_CLUSTER_NO_QUORUM + + + + No documentation. + + + ERROR_CLUSTER_INVALID_IPV6_NETWORK + ERROR_CLUSTER_INVALID_IPV6_NETWORK + + + + No documentation. + + + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK + ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK + + + + No documentation. + + + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP + ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP + + + + No documentation. + + + ERROR_DEPENDENCY_TREE_TOO_COMPLEX + ERROR_DEPENDENCY_TREE_TOO_COMPLEX + + + + No documentation. + + + ERROR_EXCEPTION_IN_RESOURCE_CALL + ERROR_EXCEPTION_IN_RESOURCE_CALL + + + + No documentation. + + + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION + ERROR_CLUSTER_RHS_FAILED_INITIALIZATION + + + + No documentation. + + + ERROR_CLUSTER_NOT_INSTALLED + ERROR_CLUSTER_NOT_INSTALLED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE + ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE + + + + No documentation. + + + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER + ERROR_CLUSTER_MAX_NODES_IN_CLUSTER + + + + No documentation. + + + ERROR_CLUSTER_TOO_MANY_NODES + ERROR_CLUSTER_TOO_MANY_NODES + + + + No documentation. + + + ERROR_CLUSTER_OBJECT_ALREADY_USED + ERROR_CLUSTER_OBJECT_ALREADY_USED + + + + No documentation. + + + ERROR_NONCORE_GROUPS_FOUND + ERROR_NONCORE_GROUPS_FOUND + + + + No documentation. + + + ERROR_FILE_SHARE_RESOURCE_CONFLICT + ERROR_FILE_SHARE_RESOURCE_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_EVICT_INVALID_REQUEST + ERROR_CLUSTER_EVICT_INVALID_REQUEST + + + + No documentation. + + + ERROR_CLUSTER_SINGLETON_RESOURCE + ERROR_CLUSTER_SINGLETON_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE + ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED + ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR + ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR + + + + No documentation. + + + ERROR_CLUSTER_GROUP_BUSY + ERROR_CLUSTER_GROUP_BUSY + + + + No documentation. + + + ERROR_CLUSTER_NOT_SHARED_VOLUME + ERROR_CLUSTER_NOT_SHARED_VOLUME + + + + No documentation. + + + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR + ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR + + + + No documentation. + + + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE + ERROR_CLUSTER_SHARED_VOLUMES_IN_USE + + + + No documentation. + + + ERROR_CLUSTER_USE_SHARED_VOLUMES_API + ERROR_CLUSTER_USE_SHARED_VOLUMES_API + + + + No documentation. + + + ERROR_CLUSTER_BACKUP_IN_PROGRESS + ERROR_CLUSTER_BACKUP_IN_PROGRESS + + + + No documentation. + + + ERROR_NON_CSV_PATH + ERROR_NON_CSV_PATH + + + + No documentation. + + + ERROR_CSV_VOLUME_NOT_LOCAL + ERROR_CSV_VOLUME_NOT_LOCAL + + + + No documentation. + + + ERROR_CLUSTER_WATCHDOG_TERMINATING + ERROR_CLUSTER_WATCHDOG_TERMINATING + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES + + + + No documentation. + + + ERROR_CLUSTER_INVALID_NODE_WEIGHT + ERROR_CLUSTER_INVALID_NODE_WEIGHT + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_VETOED_CALL + ERROR_CLUSTER_RESOURCE_VETOED_CALL + + + + No documentation. + + + ERROR_RESMON_SYSTEM_RESOURCES_LACKING + ERROR_RESMON_SYSTEM_RESOURCES_LACKING + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE + ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE + + + + No documentation. + + + ERROR_CLUSTER_GROUP_QUEUED + ERROR_CLUSTER_GROUP_QUEUED + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS + ERROR_CLUSTER_RESOURCE_LOCKED_STATUS + + + + No documentation. + + + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED + ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED + + + + No documentation. + + + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS + ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS + + + + No documentation. + + + ERROR_CLUSTER_DISK_NOT_CONNECTED + ERROR_CLUSTER_DISK_NOT_CONNECTED + + + + No documentation. + + + ERROR_DISK_NOT_CSV_CAPABLE + ERROR_DISK_NOT_CSV_CAPABLE + + + + No documentation. + + + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE + ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE + + + + No documentation. + + + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED + ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED + + + + No documentation. + + + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED + ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED + + + + No documentation. + + + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES + ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES + ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE + ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE + + + + No documentation. + + + ERROR_CLUSTER_AFFINITY_CONFLICT + ERROR_CLUSTER_AFFINITY_CONFLICT + + + + No documentation. + + + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE + ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE + + + + No documentation. + + + ERROR_ENCRYPTION_FAILED + ERROR_ENCRYPTION_FAILED + + + + No documentation. + + + ERROR_DECRYPTION_FAILED + ERROR_DECRYPTION_FAILED + + + + No documentation. + + + ERROR_FILE_ENCRYPTED + ERROR_FILE_ENCRYPTED + + + + No documentation. + + + ERROR_NO_RECOVERY_POLICY + ERROR_NO_RECOVERY_POLICY + + + + No documentation. + + + ERROR_NO_EFS + ERROR_NO_EFS + + + + No documentation. + + + ERROR_WRONG_EFS + ERROR_WRONG_EFS + + + + No documentation. + + + ERROR_NO_USER_KEYS + ERROR_NO_USER_KEYS + + + + No documentation. + + + ERROR_FILE_NOT_ENCRYPTED + ERROR_FILE_NOT_ENCRYPTED + + + + No documentation. + + + ERROR_NOT_EXPORT_FORMAT + ERROR_NOT_EXPORT_FORMAT + + + + No documentation. + + + ERROR_FILE_READ_ONLY + ERROR_FILE_READ_ONLY + + + + No documentation. + + + ERROR_DIR_EFS_DISALLOWED + ERROR_DIR_EFS_DISALLOWED + + + + No documentation. + + + ERROR_EFS_SERVER_NOT_TRUSTED + ERROR_EFS_SERVER_NOT_TRUSTED + + + + No documentation. + + + ERROR_BAD_RECOVERY_POLICY + ERROR_BAD_RECOVERY_POLICY + + + + No documentation. + + + ERROR_EFS_ALG_BLOB_TOO_BIG + ERROR_EFS_ALG_BLOB_TOO_BIG + + + + No documentation. + + + ERROR_VOLUME_NOT_SUPPORT_EFS + ERROR_VOLUME_NOT_SUPPORT_EFS + + + + No documentation. + + + ERROR_EFS_DISABLED + ERROR_EFS_DISABLED + + + + No documentation. + + + ERROR_EFS_VERSION_NOT_SUPPORT + ERROR_EFS_VERSION_NOT_SUPPORT + + + + No documentation. + + + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE + ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER + ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER + + + + No documentation. + + + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE + ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE + ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE + + + + No documentation. + + + ERROR_CS_ENCRYPTION_FILE_NOT_CSE + ERROR_CS_ENCRYPTION_FILE_NOT_CSE + + + + No documentation. + + + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION + ERROR_ENCRYPTION_POLICY_DENIES_OPERATION + + + + No documentation. + + + ERROR_NO_BROWSER_SERVERS_FOUND + ERROR_NO_BROWSER_SERVERS_FOUND + + + + No documentation. + + + ERROR_LOG_SECTOR_INVALID + ERROR_LOG_SECTOR_INVALID + + + + No documentation. + + + ERROR_LOG_SECTOR_PARITY_INVALID + ERROR_LOG_SECTOR_PARITY_INVALID + + + + No documentation. + + + ERROR_LOG_SECTOR_REMAPPED + ERROR_LOG_SECTOR_REMAPPED + + + + No documentation. + + + ERROR_LOG_BLOCK_INCOMPLETE + ERROR_LOG_BLOCK_INCOMPLETE + + + + No documentation. + + + ERROR_LOG_INVALID_RANGE + ERROR_LOG_INVALID_RANGE + + + + No documentation. + + + ERROR_LOG_BLOCKS_EXHAUSTED + ERROR_LOG_BLOCKS_EXHAUSTED + + + + No documentation. + + + ERROR_LOG_READ_CONTEXT_INVALID + ERROR_LOG_READ_CONTEXT_INVALID + + + + No documentation. + + + ERROR_LOG_RESTART_INVALID + ERROR_LOG_RESTART_INVALID + + + + No documentation. + + + ERROR_LOG_BLOCK_VERSION + ERROR_LOG_BLOCK_VERSION + + + + No documentation. + + + ERROR_LOG_BLOCK_INVALID + ERROR_LOG_BLOCK_INVALID + + + + No documentation. + + + ERROR_LOG_READ_MODE_INVALID + ERROR_LOG_READ_MODE_INVALID + + + + No documentation. + + + ERROR_LOG_NO_RESTART + ERROR_LOG_NO_RESTART + + + + No documentation. + + + ERROR_LOG_METADATA_CORRUPT + ERROR_LOG_METADATA_CORRUPT + + + + No documentation. + + + ERROR_LOG_METADATA_INVALID + ERROR_LOG_METADATA_INVALID + + + + No documentation. + + + ERROR_LOG_METADATA_INCONSISTENT + ERROR_LOG_METADATA_INCONSISTENT + + + + No documentation. + + + ERROR_LOG_RESERVATION_INVALID + ERROR_LOG_RESERVATION_INVALID + + + + No documentation. + + + ERROR_LOG_CANT_DELETE + ERROR_LOG_CANT_DELETE + + + + No documentation. + + + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED + ERROR_LOG_CONTAINER_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_LOG_START_OF_LOG + ERROR_LOG_START_OF_LOG + + + + No documentation. + + + ERROR_LOG_POLICY_ALREADY_INSTALLED + ERROR_LOG_POLICY_ALREADY_INSTALLED + + + + No documentation. + + + ERROR_LOG_POLICY_NOT_INSTALLED + ERROR_LOG_POLICY_NOT_INSTALLED + + + + No documentation. + + + ERROR_LOG_POLICY_INVALID + ERROR_LOG_POLICY_INVALID + + + + No documentation. + + + ERROR_LOG_POLICY_CONFLICT + ERROR_LOG_POLICY_CONFLICT + + + + No documentation. + + + ERROR_LOG_PINNED_ARCHIVE_TAIL + ERROR_LOG_PINNED_ARCHIVE_TAIL + + + + No documentation. + + + ERROR_LOG_RECORD_NONEXISTENT + ERROR_LOG_RECORD_NONEXISTENT + + + + No documentation. + + + ERROR_LOG_RECORDS_RESERVED_INVALID + ERROR_LOG_RECORDS_RESERVED_INVALID + + + + No documentation. + + + ERROR_LOG_SPACE_RESERVED_INVALID + ERROR_LOG_SPACE_RESERVED_INVALID + + + + No documentation. + + + ERROR_LOG_TAIL_INVALID + ERROR_LOG_TAIL_INVALID + + + + No documentation. + + + ERROR_LOG_FULL + ERROR_LOG_FULL + + + + No documentation. + + + ERROR_COULD_NOT_RESIZE_LOG + ERROR_COULD_NOT_RESIZE_LOG + + + + No documentation. + + + ERROR_LOG_MULTIPLEXED + ERROR_LOG_MULTIPLEXED + + + + No documentation. + + + ERROR_LOG_DEDICATED + ERROR_LOG_DEDICATED + + + + No documentation. + + + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS + ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_ARCHIVE_IN_PROGRESS + ERROR_LOG_ARCHIVE_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_EPHEMERAL + ERROR_LOG_EPHEMERAL + + + + No documentation. + + + ERROR_LOG_NOT_ENOUGH_CONTAINERS + ERROR_LOG_NOT_ENOUGH_CONTAINERS + + + + No documentation. + + + ERROR_LOG_CLIENT_ALREADY_REGISTERED + ERROR_LOG_CLIENT_ALREADY_REGISTERED + + + + No documentation. + + + ERROR_LOG_CLIENT_NOT_REGISTERED + ERROR_LOG_CLIENT_NOT_REGISTERED + + + + No documentation. + + + ERROR_LOG_FULL_HANDLER_IN_PROGRESS + ERROR_LOG_FULL_HANDLER_IN_PROGRESS + + + + No documentation. + + + ERROR_LOG_CONTAINER_READ_FAILED + ERROR_LOG_CONTAINER_READ_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_WRITE_FAILED + ERROR_LOG_CONTAINER_WRITE_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_OPEN_FAILED + ERROR_LOG_CONTAINER_OPEN_FAILED + + + + No documentation. + + + ERROR_LOG_CONTAINER_STATE_INVALID + ERROR_LOG_CONTAINER_STATE_INVALID + + + + No documentation. + + + ERROR_LOG_STATE_INVALID + ERROR_LOG_STATE_INVALID + + + + No documentation. + + + ERROR_LOG_PINNED + ERROR_LOG_PINNED + + + + No documentation. + + + ERROR_LOG_METADATA_FLUSH_FAILED + ERROR_LOG_METADATA_FLUSH_FAILED + + + + No documentation. + + + ERROR_LOG_INCONSISTENT_SECURITY + ERROR_LOG_INCONSISTENT_SECURITY + + + + No documentation. + + + ERROR_LOG_APPENDED_FLUSH_FAILED + ERROR_LOG_APPENDED_FLUSH_FAILED + + + + No documentation. + + + ERROR_LOG_PINNED_RESERVATION + ERROR_LOG_PINNED_RESERVATION + + + + No documentation. + + + ERROR_INVALID_TRANSACTION + ERROR_INVALID_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ACTIVE + ERROR_TRANSACTION_NOT_ACTIVE + + + + No documentation. + + + ERROR_TRANSACTION_REQUEST_NOT_VALID + ERROR_TRANSACTION_REQUEST_NOT_VALID + + + + No documentation. + + + ERROR_TRANSACTION_NOT_REQUESTED + ERROR_TRANSACTION_NOT_REQUESTED + + + + No documentation. + + + ERROR_TRANSACTION_ALREADY_ABORTED + ERROR_TRANSACTION_ALREADY_ABORTED + + + + No documentation. + + + ERROR_TRANSACTION_ALREADY_COMMITTED + ERROR_TRANSACTION_ALREADY_COMMITTED + + + + No documentation. + + + ERROR_TM_INITIALIZATION_FAILED + ERROR_TM_INITIALIZATION_FAILED + + + + No documentation. + + + ERROR_RESOURCEMANAGER_READ_ONLY + ERROR_RESOURCEMANAGER_READ_ONLY + + + + No documentation. + + + ERROR_TRANSACTION_NOT_JOINED + ERROR_TRANSACTION_NOT_JOINED + + + + No documentation. + + + ERROR_TRANSACTION_SUPERIOR_EXISTS + ERROR_TRANSACTION_SUPERIOR_EXISTS + + + + No documentation. + + + ERROR_CRM_PROTOCOL_ALREADY_EXISTS + ERROR_CRM_PROTOCOL_ALREADY_EXISTS + + + + No documentation. + + + ERROR_TRANSACTION_PROPAGATION_FAILED + ERROR_TRANSACTION_PROPAGATION_FAILED + + + + No documentation. + + + ERROR_CRM_PROTOCOL_NOT_FOUND + ERROR_CRM_PROTOCOL_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER + ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER + + + + No documentation. + + + ERROR_CURRENT_TRANSACTION_NOT_VALID + ERROR_CURRENT_TRANSACTION_NOT_VALID + + + + No documentation. + + + ERROR_TRANSACTION_NOT_FOUND + ERROR_TRANSACTION_NOT_FOUND + + + + No documentation. + + + ERROR_RESOURCEMANAGER_NOT_FOUND + ERROR_RESOURCEMANAGER_NOT_FOUND + + + + No documentation. + + + ERROR_ENLISTMENT_NOT_FOUND + ERROR_ENLISTMENT_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_NOT_FOUND + ERROR_TRANSACTIONMANAGER_NOT_FOUND + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_NOT_ONLINE + ERROR_TRANSACTIONMANAGER_NOT_ONLINE + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION + ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ROOT + ERROR_TRANSACTION_NOT_ROOT + + + + No documentation. + + + ERROR_TRANSACTION_OBJECT_EXPIRED + ERROR_TRANSACTION_OBJECT_EXPIRED + + + + No documentation. + + + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED + ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED + + + + No documentation. + + + ERROR_TRANSACTION_RECORD_TOO_LONG + ERROR_TRANSACTION_RECORD_TOO_LONG + + + + No documentation. + + + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED + ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED + + + + No documentation. + + + ERROR_TRANSACTION_INTEGRITY_VIOLATED + ERROR_TRANSACTION_INTEGRITY_VIOLATED + + + + No documentation. + + + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH + ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH + + + + No documentation. + + + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT + ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT + + + + No documentation. + + + ERROR_TRANSACTION_MUST_WRITETHROUGH + ERROR_TRANSACTION_MUST_WRITETHROUGH + + + + No documentation. + + + ERROR_TRANSACTION_NO_SUPERIOR + ERROR_TRANSACTION_NO_SUPERIOR + + + + No documentation. + + + ERROR_HEURISTIC_DAMAGE_POSSIBLE + ERROR_HEURISTIC_DAMAGE_POSSIBLE + + + + No documentation. + + + ERROR_TRANSACTIONAL_CONFLICT + ERROR_TRANSACTIONAL_CONFLICT + + + + No documentation. + + + ERROR_RM_NOT_ACTIVE + ERROR_RM_NOT_ACTIVE + + + + No documentation. + + + ERROR_RM_METADATA_CORRUPT + ERROR_RM_METADATA_CORRUPT + + + + No documentation. + + + ERROR_DIRECTORY_NOT_RM + ERROR_DIRECTORY_NOT_RM + + + + No documentation. + + + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE + ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE + + + + No documentation. + + + ERROR_LOG_RESIZE_INVALID_SIZE + ERROR_LOG_RESIZE_INVALID_SIZE + + + + No documentation. + + + ERROR_OBJECT_NO_LONGER_EXISTS + ERROR_OBJECT_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_STREAM_MINIVERSION_NOT_FOUND + ERROR_STREAM_MINIVERSION_NOT_FOUND + + + + No documentation. + + + ERROR_STREAM_MINIVERSION_NOT_VALID + ERROR_STREAM_MINIVERSION_NOT_VALID + + + + No documentation. + + + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION + ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION + + + + No documentation. + + + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT + ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT + + + + No documentation. + + + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS + ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS + + + + No documentation. + + + ERROR_REMOTE_FILE_VERSION_MISMATCH + ERROR_REMOTE_FILE_VERSION_MISMATCH + + + + No documentation. + + + ERROR_HANDLE_NO_LONGER_VALID + ERROR_HANDLE_NO_LONGER_VALID + + + + No documentation. + + + ERROR_NO_TXF_METADATA + ERROR_NO_TXF_METADATA + + + + No documentation. + + + ERROR_LOG_CORRUPTION_DETECTED + ERROR_LOG_CORRUPTION_DETECTED + + + + No documentation. + + + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN + ERROR_CANT_RECOVER_WITH_HANDLE_OPEN + + + + No documentation. + + + ERROR_RM_DISCONNECTED + ERROR_RM_DISCONNECTED + + + + No documentation. + + + ERROR_ENLISTMENT_NOT_SUPERIOR + ERROR_ENLISTMENT_NOT_SUPERIOR + + + + No documentation. + + + ERROR_RECOVERY_NOT_NEEDED + ERROR_RECOVERY_NOT_NEEDED + + + + No documentation. + + + ERROR_RM_ALREADY_STARTED + ERROR_RM_ALREADY_STARTED + + + + No documentation. + + + ERROR_FILE_IDENTITY_NOT_PERSISTENT + ERROR_FILE_IDENTITY_NOT_PERSISTENT + + + + No documentation. + + + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY + ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY + + + + No documentation. + + + ERROR_CANT_CROSS_RM_BOUNDARY + ERROR_CANT_CROSS_RM_BOUNDARY + + + + No documentation. + + + ERROR_TXF_DIR_NOT_EMPTY + ERROR_TXF_DIR_NOT_EMPTY + + + + No documentation. + + + ERROR_INDOUBT_TRANSACTIONS_EXIST + ERROR_INDOUBT_TRANSACTIONS_EXIST + + + + No documentation. + + + ERROR_TM_VOLATILE + ERROR_TM_VOLATILE + + + + No documentation. + + + ERROR_ROLLBACK_TIMER_EXPIRED + ERROR_ROLLBACK_TIMER_EXPIRED + + + + No documentation. + + + ERROR_TXF_ATTRIBUTE_CORRUPT + ERROR_TXF_ATTRIBUTE_CORRUPT + + + + No documentation. + + + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION + ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED + ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED + + + + No documentation. + + + ERROR_LOG_GROWTH_FAILED + ERROR_LOG_GROWTH_FAILED + + + + No documentation. + + + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE + ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE + + + + No documentation. + + + ERROR_TXF_METADATA_ALREADY_PRESENT + ERROR_TXF_METADATA_ALREADY_PRESENT + + + + No documentation. + + + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET + ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET + + + + No documentation. + + + ERROR_TRANSACTION_REQUIRED_PROMOTION + ERROR_TRANSACTION_REQUIRED_PROMOTION + + + + No documentation. + + + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION + ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION + + + + No documentation. + + + ERROR_TRANSACTIONS_NOT_FROZEN + ERROR_TRANSACTIONS_NOT_FROZEN + + + + No documentation. + + + ERROR_TRANSACTION_FREEZE_IN_PROGRESS + ERROR_TRANSACTION_FREEZE_IN_PROGRESS + + + + No documentation. + + + ERROR_NOT_SNAPSHOT_VOLUME + ERROR_NOT_SNAPSHOT_VOLUME + + + + No documentation. + + + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES + ERROR_NO_SAVEPOINT_WITH_OPEN_FILES + + + + No documentation. + + + ERROR_DATA_LOST_REPAIR + ERROR_DATA_LOST_REPAIR + + + + No documentation. + + + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION + ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_TM_IDENTITY_MISMATCH + ERROR_TM_IDENTITY_MISMATCH + + + + No documentation. + + + ERROR_FLOATED_SECTION + ERROR_FLOATED_SECTION + + + + No documentation. + + + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK + ERROR_CANNOT_ACCEPT_TRANSACTED_WORK + + + + No documentation. + + + ERROR_CANNOT_ABORT_TRANSACTIONS + ERROR_CANNOT_ABORT_TRANSACTIONS + + + + No documentation. + + + ERROR_BAD_CLUSTERS + ERROR_BAD_CLUSTERS + + + + No documentation. + + + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION + ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION + + + + No documentation. + + + ERROR_VOLUME_DIRTY + ERROR_VOLUME_DIRTY + + + + No documentation. + + + ERROR_NO_LINK_TRACKING_IN_TRANSACTION + ERROR_NO_LINK_TRACKING_IN_TRANSACTION + + + + No documentation. + + + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION + ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION + + + + No documentation. + + + ERROR_EXPIRED_HANDLE + ERROR_EXPIRED_HANDLE + + + + No documentation. + + + ERROR_TRANSACTION_NOT_ENLISTED + ERROR_TRANSACTION_NOT_ENLISTED + + + + No documentation. + + + ERROR_CTX_WINSTATION_NAME_INVALID + ERROR_CTX_WINSTATION_NAME_INVALID + + + + No documentation. + + + ERROR_CTX_INVALID_PD + ERROR_CTX_INVALID_PD + + + + No documentation. + + + ERROR_CTX_PD_NOT_FOUND + ERROR_CTX_PD_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_WD_NOT_FOUND + ERROR_CTX_WD_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY + ERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY + + + + No documentation. + + + ERROR_CTX_SERVICE_NAME_COLLISION + ERROR_CTX_SERVICE_NAME_COLLISION + + + + No documentation. + + + ERROR_CTX_CLOSE_PENDING + ERROR_CTX_CLOSE_PENDING + + + + No documentation. + + + ERROR_CTX_NO_OUTBUF + ERROR_CTX_NO_OUTBUF + + + + No documentation. + + + ERROR_CTX_MODEM_INF_NOT_FOUND + ERROR_CTX_MODEM_INF_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_INVALID_MODEMNAME + ERROR_CTX_INVALID_MODEMNAME + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_ERROR + ERROR_CTX_MODEM_RESPONSE_ERROR + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_TIMEOUT + ERROR_CTX_MODEM_RESPONSE_TIMEOUT + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER + ERROR_CTX_MODEM_RESPONSE_NO_CARRIER + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE + ERROR_CTX_MODEM_RESPONSE_NO_DIALTONE + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_BUSY + ERROR_CTX_MODEM_RESPONSE_BUSY + + + + No documentation. + + + ERROR_CTX_MODEM_RESPONSE_VOICE + ERROR_CTX_MODEM_RESPONSE_VOICE + + + + No documentation. + + + ERROR_CTX_TD_ERROR + ERROR_CTX_TD_ERROR + + + + No documentation. + + + ERROR_CTX_WINSTATION_NOT_FOUND + ERROR_CTX_WINSTATION_NOT_FOUND + + + + No documentation. + + + ERROR_CTX_WINSTATION_ALREADY_EXISTS + ERROR_CTX_WINSTATION_ALREADY_EXISTS + + + + No documentation. + + + ERROR_CTX_WINSTATION_BUSY + ERROR_CTX_WINSTATION_BUSY + + + + No documentation. + + + ERROR_CTX_BAD_VIDEO_MODE + ERROR_CTX_BAD_VIDEO_MODE + + + + No documentation. + + + ERROR_CTX_GRAPHICS_INVALID + ERROR_CTX_GRAPHICS_INVALID + + + + No documentation. + + + ERROR_CTX_LOGON_DISABLED + ERROR_CTX_LOGON_DISABLED + + + + No documentation. + + + ERROR_CTX_NOT_CONSOLE + ERROR_CTX_NOT_CONSOLE + + + + No documentation. + + + ERROR_CTX_CLIENT_QUERY_TIMEOUT + ERROR_CTX_CLIENT_QUERY_TIMEOUT + + + + No documentation. + + + ERROR_CTX_CONSOLE_DISCONNECT + ERROR_CTX_CONSOLE_DISCONNECT + + + + No documentation. + + + ERROR_CTX_CONSOLE_CONNECT + ERROR_CTX_CONSOLE_CONNECT + + + + No documentation. + + + ERROR_CTX_SHADOW_DENIED + ERROR_CTX_SHADOW_DENIED + + + + No documentation. + + + ERROR_CTX_WINSTATION_ACCESS_DENIED + ERROR_CTX_WINSTATION_ACCESS_DENIED + + + + No documentation. + + + ERROR_CTX_INVALID_WD + ERROR_CTX_INVALID_WD + + + + No documentation. + + + ERROR_CTX_SHADOW_INVALID + ERROR_CTX_SHADOW_INVALID + + + + No documentation. + + + ERROR_CTX_SHADOW_DISABLED + ERROR_CTX_SHADOW_DISABLED + + + + No documentation. + + + ERROR_CTX_CLIENT_LICENSE_IN_USE + ERROR_CTX_CLIENT_LICENSE_IN_USE + + + + No documentation. + + + ERROR_CTX_CLIENT_LICENSE_NOT_SET + ERROR_CTX_CLIENT_LICENSE_NOT_SET + + + + No documentation. + + + ERROR_CTX_LICENSE_NOT_AVAILABLE + ERROR_CTX_LICENSE_NOT_AVAILABLE + + + + No documentation. + + + ERROR_CTX_LICENSE_CLIENT_INVALID + ERROR_CTX_LICENSE_CLIENT_INVALID + + + + No documentation. + + + ERROR_CTX_LICENSE_EXPIRED + ERROR_CTX_LICENSE_EXPIRED + + + + No documentation. + + + ERROR_CTX_SHADOW_NOT_RUNNING + ERROR_CTX_SHADOW_NOT_RUNNING + + + + No documentation. + + + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE + ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE + + + + No documentation. + + + ERROR_ACTIVATION_COUNT_EXCEEDED + ERROR_ACTIVATION_COUNT_EXCEEDED + + + + No documentation. + + + ERROR_CTX_WINSTATIONS_DISABLED + ERROR_CTX_WINSTATIONS_DISABLED + + + + No documentation. + + + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED + ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED + + + + No documentation. + + + ERROR_CTX_SESSION_IN_USE + ERROR_CTX_SESSION_IN_USE + + + + No documentation. + + + ERROR_CTX_NO_FORCE_LOGOFF + ERROR_CTX_NO_FORCE_LOGOFF + + + + No documentation. + + + ERROR_CTX_ACCOUNT_RESTRICTION + ERROR_CTX_ACCOUNT_RESTRICTION + + + + No documentation. + + + ERROR_RDP_PROTOCOL_ERROR + ERROR_RDP_PROTOCOL_ERROR + + + + No documentation. + + + ERROR_CTX_CDM_CONNECT + ERROR_CTX_CDM_CONNECT + + + + No documentation. + + + ERROR_CTX_CDM_DISCONNECT + ERROR_CTX_CDM_DISCONNECT + + + + No documentation. + + + ERROR_CTX_SECURITY_LAYER_ERROR + ERROR_CTX_SECURITY_LAYER_ERROR + + + + No documentation. + + + ERROR_TS_INCOMPATIBLE_SESSIONS + ERROR_TS_INCOMPATIBLE_SESSIONS + + + + No documentation. + + + ERROR_TS_VIDEO_SUBSYSTEM_ERROR + ERROR_TS_VIDEO_SUBSYSTEM_ERROR + + + + No documentation. + + + ERROR_DS_NOT_INSTALLED + ERROR_DS_NOT_INSTALLED + + + + No documentation. + + + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY + ERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY + + + + No documentation. + + + ERROR_DS_NO_ATTRIBUTE_OR_VALUE + ERROR_DS_NO_ATTRIBUTE_OR_VALUE + + + + No documentation. + + + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX + ERROR_DS_INVALID_ATTRIBUTE_SYNTAX + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED + ERROR_DS_ATTRIBUTE_TYPE_UNDEFINED + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS + ERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS + + + + No documentation. + + + ERROR_DS_BUSY + ERROR_DS_BUSY + + + + No documentation. + + + ERROR_DS_UNAVAILABLE + ERROR_DS_UNAVAILABLE + + + + No documentation. + + + ERROR_DS_NO_RIDS_ALLOCATED + ERROR_DS_NO_RIDS_ALLOCATED + + + + No documentation. + + + ERROR_DS_NO_MORE_RIDS + ERROR_DS_NO_MORE_RIDS + + + + No documentation. + + + ERROR_DS_INCORRECT_ROLE_OWNER + ERROR_DS_INCORRECT_ROLE_OWNER + + + + No documentation. + + + ERROR_DS_RIDMGR_INIT_ERROR + ERROR_DS_RIDMGR_INIT_ERROR + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_VIOLATION + ERROR_DS_OBJ_CLASS_VIOLATION + + + + No documentation. + + + ERROR_DS_CANT_ON_NON_LEAF + ERROR_DS_CANT_ON_NON_LEAF + + + + No documentation. + + + ERROR_DS_CANT_ON_RDN + ERROR_DS_CANT_ON_RDN + + + + No documentation. + + + ERROR_DS_CANT_MOD_OBJ_CLASS + ERROR_DS_CANT_MOD_OBJ_CLASS + + + + No documentation. + + + ERROR_DS_CROSS_DOM_MOVE_ERROR + ERROR_DS_CROSS_DOM_MOVE_ERROR + + + + No documentation. + + + ERROR_DS_GC_NOT_AVAILABLE + ERROR_DS_GC_NOT_AVAILABLE + + + + No documentation. + + + ERROR_SHARED_POLICY + ERROR_SHARED_POLICY + + + + No documentation. + + + ERROR_POLICY_OBJECT_NOT_FOUND + ERROR_POLICY_OBJECT_NOT_FOUND + + + + No documentation. + + + ERROR_POLICY_ONLY_IN_DS + ERROR_POLICY_ONLY_IN_DS + + + + No documentation. + + + ERROR_PROMOTION_ACTIVE + ERROR_PROMOTION_ACTIVE + + + + No documentation. + + + ERROR_NO_PROMOTION_ACTIVE + ERROR_NO_PROMOTION_ACTIVE + + + + No documentation. + + + ERROR_DS_OPERATIONS_ERROR + ERROR_DS_OPERATIONS_ERROR + + + + No documentation. + + + ERROR_DS_PROTOCOL_ERROR + ERROR_DS_PROTOCOL_ERROR + + + + No documentation. + + + ERROR_DS_TIMELIMIT_EXCEEDED + ERROR_DS_TIMELIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_SIZELIMIT_EXCEEDED + ERROR_DS_SIZELIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_ADMIN_LIMIT_EXCEEDED + ERROR_DS_ADMIN_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_COMPARE_FALSE + ERROR_DS_COMPARE_FALSE + + + + No documentation. + + + ERROR_DS_COMPARE_TRUE + ERROR_DS_COMPARE_TRUE + + + + No documentation. + + + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED + ERROR_DS_AUTH_METHOD_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_STRONG_AUTH_REQUIRED + ERROR_DS_STRONG_AUTH_REQUIRED + + + + No documentation. + + + ERROR_DS_INAPPROPRIATE_AUTH + ERROR_DS_INAPPROPRIATE_AUTH + + + + No documentation. + + + ERROR_DS_AUTH_UNKNOWN + ERROR_DS_AUTH_UNKNOWN + + + + No documentation. + + + ERROR_DS_REFERRAL + ERROR_DS_REFERRAL + + + + No documentation. + + + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION + ERROR_DS_UNAVAILABLE_CRIT_EXTENSION + + + + No documentation. + + + ERROR_DS_CONFIDENTIALITY_REQUIRED + ERROR_DS_CONFIDENTIALITY_REQUIRED + + + + No documentation. + + + ERROR_DS_INAPPROPRIATE_MATCHING + ERROR_DS_INAPPROPRIATE_MATCHING + + + + No documentation. + + + ERROR_DS_CONSTRAINT_VIOLATION + ERROR_DS_CONSTRAINT_VIOLATION + + + + No documentation. + + + ERROR_DS_NO_SUCH_OBJECT + ERROR_DS_NO_SUCH_OBJECT + + + + No documentation. + + + ERROR_DS_ALIAS_PROBLEM + ERROR_DS_ALIAS_PROBLEM + + + + No documentation. + + + ERROR_DS_INVALID_DN_SYNTAX + ERROR_DS_INVALID_DN_SYNTAX + + + + No documentation. + + + ERROR_DS_IS_LEAF + ERROR_DS_IS_LEAF + + + + No documentation. + + + ERROR_DS_ALIAS_DEREF_PROBLEM + ERROR_DS_ALIAS_DEREF_PROBLEM + + + + No documentation. + + + ERROR_DS_UNWILLING_TO_PERFORM + ERROR_DS_UNWILLING_TO_PERFORM + + + + No documentation. + + + ERROR_DS_LOOP_DETECT + ERROR_DS_LOOP_DETECT + + + + No documentation. + + + ERROR_DS_NAMING_VIOLATION + ERROR_DS_NAMING_VIOLATION + + + + No documentation. + + + ERROR_DS_OBJECT_RESULTS_TOO_LARGE + ERROR_DS_OBJECT_RESULTS_TOO_LARGE + + + + No documentation. + + + ERROR_DS_AFFECTS_MULTIPLE_DSAS + ERROR_DS_AFFECTS_MULTIPLE_DSAS + + + + No documentation. + + + ERROR_DS_SERVER_DOWN + ERROR_DS_SERVER_DOWN + + + + No documentation. + + + ERROR_DS_LOCAL_ERROR + ERROR_DS_LOCAL_ERROR + + + + No documentation. + + + ERROR_DS_ENCODING_ERROR + ERROR_DS_ENCODING_ERROR + + + + No documentation. + + + ERROR_DS_DECODING_ERROR + ERROR_DS_DECODING_ERROR + + + + No documentation. + + + ERROR_DS_FILTER_UNKNOWN + ERROR_DS_FILTER_UNKNOWN + + + + No documentation. + + + ERROR_DS_PARAM_ERROR + ERROR_DS_PARAM_ERROR + + + + No documentation. + + + ERROR_DS_NOT_SUPPORTED + ERROR_DS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_NO_RESULTS_RETURNED + ERROR_DS_NO_RESULTS_RETURNED + + + + No documentation. + + + ERROR_DS_CONTROL_NOT_FOUND + ERROR_DS_CONTROL_NOT_FOUND + + + + No documentation. + + + ERROR_DS_CLIENT_LOOP + ERROR_DS_CLIENT_LOOP + + + + No documentation. + + + ERROR_DS_REFERRAL_LIMIT_EXCEEDED + ERROR_DS_REFERRAL_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_SORT_CONTROL_MISSING + ERROR_DS_SORT_CONTROL_MISSING + + + + No documentation. + + + ERROR_DS_OFFSET_RANGE_ERROR + ERROR_DS_OFFSET_RANGE_ERROR + + + + No documentation. + + + ERROR_DS_RIDMGR_DISABLED + ERROR_DS_RIDMGR_DISABLED + + + + No documentation. + + + ERROR_DS_ROOT_MUST_BE_NC + ERROR_DS_ROOT_MUST_BE_NC + + + + No documentation. + + + ERROR_DS_ADD_REPLICA_INHIBITED + ERROR_DS_ADD_REPLICA_INHIBITED + + + + No documentation. + + + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA + ERROR_DS_ATT_NOT_DEF_IN_SCHEMA + + + + No documentation. + + + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED + ERROR_DS_MAX_OBJ_SIZE_EXCEEDED + + + + No documentation. + + + ERROR_DS_OBJ_STRING_NAME_EXISTS + ERROR_DS_OBJ_STRING_NAME_EXISTS + + + + No documentation. + + + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA + ERROR_DS_NO_RDN_DEFINED_IN_SCHEMA + + + + No documentation. + + + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA + ERROR_DS_RDN_DOESNT_MATCH_SCHEMA + + + + No documentation. + + + ERROR_DS_NO_REQUESTED_ATTS_FOUND + ERROR_DS_NO_REQUESTED_ATTS_FOUND + + + + No documentation. + + + ERROR_DS_USER_BUFFER_TO_SMALL + ERROR_DS_USER_BUFFER_TO_SMALL + + + + No documentation. + + + ERROR_DS_ATT_IS_NOT_ON_OBJ + ERROR_DS_ATT_IS_NOT_ON_OBJ + + + + No documentation. + + + ERROR_DS_ILLEGAL_MOD_OPERATION + ERROR_DS_ILLEGAL_MOD_OPERATION + + + + No documentation. + + + ERROR_DS_OBJ_TOO_LARGE + ERROR_DS_OBJ_TOO_LARGE + + + + No documentation. + + + ERROR_DS_BAD_INSTANCE_TYPE + ERROR_DS_BAD_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_MASTERDSA_REQUIRED + ERROR_DS_MASTERDSA_REQUIRED + + + + No documentation. + + + ERROR_DS_OBJECT_CLASS_REQUIRED + ERROR_DS_OBJECT_CLASS_REQUIRED + + + + No documentation. + + + ERROR_DS_MISSING_REQUIRED_ATT + ERROR_DS_MISSING_REQUIRED_ATT + + + + No documentation. + + + ERROR_DS_ATT_NOT_DEF_FOR_CLASS + ERROR_DS_ATT_NOT_DEF_FOR_CLASS + + + + No documentation. + + + ERROR_DS_ATT_ALREADY_EXISTS + ERROR_DS_ATT_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_ADD_ATT_VALUES + ERROR_DS_CANT_ADD_ATT_VALUES + + + + No documentation. + + + ERROR_DS_SINGLE_VALUE_CONSTRAINT + ERROR_DS_SINGLE_VALUE_CONSTRAINT + + + + No documentation. + + + ERROR_DS_RANGE_CONSTRAINT + ERROR_DS_RANGE_CONSTRAINT + + + + No documentation. + + + ERROR_DS_ATT_VAL_ALREADY_EXISTS + ERROR_DS_ATT_VAL_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_REM_MISSING_ATT + ERROR_DS_CANT_REM_MISSING_ATT + + + + No documentation. + + + ERROR_DS_CANT_REM_MISSING_ATT_VAL + ERROR_DS_CANT_REM_MISSING_ATT_VAL + + + + No documentation. + + + ERROR_DS_ROOT_CANT_BE_SUBREF + ERROR_DS_ROOT_CANT_BE_SUBREF + + + + No documentation. + + + ERROR_DS_NO_CHAINING + ERROR_DS_NO_CHAINING + + + + No documentation. + + + ERROR_DS_NO_CHAINED_EVAL + ERROR_DS_NO_CHAINED_EVAL + + + + No documentation. + + + ERROR_DS_NO_PARENT_OBJECT + ERROR_DS_NO_PARENT_OBJECT + + + + No documentation. + + + ERROR_DS_PARENT_IS_AN_ALIAS + ERROR_DS_PARENT_IS_AN_ALIAS + + + + No documentation. + + + ERROR_DS_CANT_MIX_MASTER_AND_REPS + ERROR_DS_CANT_MIX_MASTER_AND_REPS + + + + No documentation. + + + ERROR_DS_CHILDREN_EXIST + ERROR_DS_CHILDREN_EXIST + + + + No documentation. + + + ERROR_DS_OBJ_NOT_FOUND + ERROR_DS_OBJ_NOT_FOUND + + + + No documentation. + + + ERROR_DS_ALIASED_OBJ_MISSING + ERROR_DS_ALIASED_OBJ_MISSING + + + + No documentation. + + + ERROR_DS_BAD_NAME_SYNTAX + ERROR_DS_BAD_NAME_SYNTAX + + + + No documentation. + + + ERROR_DS_ALIAS_POINTS_TO_ALIAS + ERROR_DS_ALIAS_POINTS_TO_ALIAS + + + + No documentation. + + + ERROR_DS_CANT_DEREF_ALIAS + ERROR_DS_CANT_DEREF_ALIAS + + + + No documentation. + + + ERROR_DS_OUT_OF_SCOPE + ERROR_DS_OUT_OF_SCOPE + + + + No documentation. + + + ERROR_DS_OBJECT_BEING_REMOVED + ERROR_DS_OBJECT_BEING_REMOVED + + + + No documentation. + + + ERROR_DS_CANT_DELETE_DSA_OBJ + ERROR_DS_CANT_DELETE_DSA_OBJ + + + + No documentation. + + + ERROR_DS_GENERIC_ERROR + ERROR_DS_GENERIC_ERROR + + + + No documentation. + + + ERROR_DS_DSA_MUST_BE_INT_MASTER + ERROR_DS_DSA_MUST_BE_INT_MASTER + + + + No documentation. + + + ERROR_DS_CLASS_NOT_DSA + ERROR_DS_CLASS_NOT_DSA + + + + No documentation. + + + ERROR_DS_INSUFF_ACCESS_RIGHTS + ERROR_DS_INSUFF_ACCESS_RIGHTS + + + + No documentation. + + + ERROR_DS_ILLEGAL_SUPERIOR + ERROR_DS_ILLEGAL_SUPERIOR + + + + No documentation. + + + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM + ERROR_DS_ATTRIBUTE_OWNED_BY_SAM + + + + No documentation. + + + ERROR_DS_NAME_TOO_MANY_PARTS + ERROR_DS_NAME_TOO_MANY_PARTS + + + + No documentation. + + + ERROR_DS_NAME_TOO_LONG + ERROR_DS_NAME_TOO_LONG + + + + No documentation. + + + ERROR_DS_NAME_VALUE_TOO_LONG + ERROR_DS_NAME_VALUE_TOO_LONG + + + + No documentation. + + + ERROR_DS_NAME_UNPARSEABLE + ERROR_DS_NAME_UNPARSEABLE + + + + No documentation. + + + ERROR_DS_NAME_TYPE_UNKNOWN + ERROR_DS_NAME_TYPE_UNKNOWN + + + + No documentation. + + + ERROR_DS_NOT_AN_OBJECT + ERROR_DS_NOT_AN_OBJECT + + + + No documentation. + + + ERROR_DS_SEC_DESC_TOO_SHORT + ERROR_DS_SEC_DESC_TOO_SHORT + + + + No documentation. + + + ERROR_DS_SEC_DESC_INVALID + ERROR_DS_SEC_DESC_INVALID + + + + No documentation. + + + ERROR_DS_NO_DELETED_NAME + ERROR_DS_NO_DELETED_NAME + + + + No documentation. + + + ERROR_DS_SUBREF_MUST_HAVE_PARENT + ERROR_DS_SUBREF_MUST_HAVE_PARENT + + + + No documentation. + + + ERROR_DS_NCNAME_MUST_BE_NC + ERROR_DS_NCNAME_MUST_BE_NC + + + + No documentation. + + + ERROR_DS_CANT_ADD_SYSTEM_ONLY + ERROR_DS_CANT_ADD_SYSTEM_ONLY + + + + No documentation. + + + ERROR_DS_CLASS_MUST_BE_CONCRETE + ERROR_DS_CLASS_MUST_BE_CONCRETE + + + + No documentation. + + + ERROR_DS_INVALID_DMD + ERROR_DS_INVALID_DMD + + + + No documentation. + + + ERROR_DS_OBJ_GUID_EXISTS + ERROR_DS_OBJ_GUID_EXISTS + + + + No documentation. + + + ERROR_DS_NOT_ON_BACKLINK + ERROR_DS_NOT_ON_BACKLINK + + + + No documentation. + + + ERROR_DS_NO_CROSSREF_FOR_NC + ERROR_DS_NO_CROSSREF_FOR_NC + + + + No documentation. + + + ERROR_DS_SHUTTING_DOWN + ERROR_DS_SHUTTING_DOWN + + + + No documentation. + + + ERROR_DS_UNKNOWN_OPERATION + ERROR_DS_UNKNOWN_OPERATION + + + + No documentation. + + + ERROR_DS_INVALID_ROLE_OWNER + ERROR_DS_INVALID_ROLE_OWNER + + + + No documentation. + + + ERROR_DS_COULDNT_CONTACT_FSMO + ERROR_DS_COULDNT_CONTACT_FSMO + + + + No documentation. + + + ERROR_DS_CROSS_NC_DN_RENAME + ERROR_DS_CROSS_NC_DN_RENAME + + + + No documentation. + + + ERROR_DS_CANT_MOD_SYSTEM_ONLY + ERROR_DS_CANT_MOD_SYSTEM_ONLY + + + + No documentation. + + + ERROR_DS_REPLICATOR_ONLY + ERROR_DS_REPLICATOR_ONLY + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_NOT_DEFINED + ERROR_DS_OBJ_CLASS_NOT_DEFINED + + + + No documentation. + + + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS + ERROR_DS_OBJ_CLASS_NOT_SUBCLASS + + + + No documentation. + + + ERROR_DS_NAME_REFERENCE_INVALID + ERROR_DS_NAME_REFERENCE_INVALID + + + + No documentation. + + + ERROR_DS_CROSS_REF_EXISTS + ERROR_DS_CROSS_REF_EXISTS + + + + No documentation. + + + ERROR_DS_CANT_DEL_MASTER_CROSSREF + ERROR_DS_CANT_DEL_MASTER_CROSSREF + + + + No documentation. + + + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD + ERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD + + + + No documentation. + + + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX + ERROR_DS_NOTIFY_FILTER_TOO_COMPLEX + + + + No documentation. + + + ERROR_DS_DUP_RDN + ERROR_DS_DUP_RDN + + + + No documentation. + + + ERROR_DS_DUP_OID + ERROR_DS_DUP_OID + + + + No documentation. + + + ERROR_DS_DUP_MAPI_ID + ERROR_DS_DUP_MAPI_ID + + + + No documentation. + + + ERROR_DS_DUP_SCHEMA_ID_GUID + ERROR_DS_DUP_SCHEMA_ID_GUID + + + + No documentation. + + + ERROR_DS_DUP_LDAP_DISPLAY_NAME + ERROR_DS_DUP_LDAP_DISPLAY_NAME + + + + No documentation. + + + ERROR_DS_SEMANTIC_ATT_TEST + ERROR_DS_SEMANTIC_ATT_TEST + + + + No documentation. + + + ERROR_DS_SYNTAX_MISMATCH + ERROR_DS_SYNTAX_MISMATCH + + + + No documentation. + + + ERROR_DS_EXISTS_IN_MUST_HAVE + ERROR_DS_EXISTS_IN_MUST_HAVE + + + + No documentation. + + + ERROR_DS_EXISTS_IN_MAY_HAVE + ERROR_DS_EXISTS_IN_MAY_HAVE + + + + No documentation. + + + ERROR_DS_NONEXISTENT_MAY_HAVE + ERROR_DS_NONEXISTENT_MAY_HAVE + + + + No documentation. + + + ERROR_DS_NONEXISTENT_MUST_HAVE + ERROR_DS_NONEXISTENT_MUST_HAVE + + + + No documentation. + + + ERROR_DS_AUX_CLS_TEST_FAIL + ERROR_DS_AUX_CLS_TEST_FAIL + + + + No documentation. + + + ERROR_DS_NONEXISTENT_POSS_SUP + ERROR_DS_NONEXISTENT_POSS_SUP + + + + No documentation. + + + ERROR_DS_SUB_CLS_TEST_FAIL + ERROR_DS_SUB_CLS_TEST_FAIL + + + + No documentation. + + + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX + ERROR_DS_BAD_RDN_ATT_ID_SYNTAX + + + + No documentation. + + + ERROR_DS_EXISTS_IN_AUX_CLS + ERROR_DS_EXISTS_IN_AUX_CLS + + + + No documentation. + + + ERROR_DS_EXISTS_IN_SUB_CLS + ERROR_DS_EXISTS_IN_SUB_CLS + + + + No documentation. + + + ERROR_DS_EXISTS_IN_POSS_SUP + ERROR_DS_EXISTS_IN_POSS_SUP + + + + No documentation. + + + ERROR_DS_RECALCSCHEMA_FAILED + ERROR_DS_RECALCSCHEMA_FAILED + + + + No documentation. + + + ERROR_DS_TREE_DELETE_NOT_FINISHED + ERROR_DS_TREE_DELETE_NOT_FINISHED + + + + No documentation. + + + ERROR_DS_CANT_DELETE + ERROR_DS_CANT_DELETE + + + + No documentation. + + + ERROR_DS_ATT_SCHEMA_REQ_ID + ERROR_DS_ATT_SCHEMA_REQ_ID + + + + No documentation. + + + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX + ERROR_DS_BAD_ATT_SCHEMA_SYNTAX + + + + No documentation. + + + ERROR_DS_CANT_CACHE_ATT + ERROR_DS_CANT_CACHE_ATT + + + + No documentation. + + + ERROR_DS_CANT_CACHE_CLASS + ERROR_DS_CANT_CACHE_CLASS + + + + No documentation. + + + ERROR_DS_CANT_REMOVE_ATT_CACHE + ERROR_DS_CANT_REMOVE_ATT_CACHE + + + + No documentation. + + + ERROR_DS_CANT_REMOVE_CLASS_CACHE + ERROR_DS_CANT_REMOVE_CLASS_CACHE + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_DN + ERROR_DS_CANT_RETRIEVE_DN + + + + No documentation. + + + ERROR_DS_MISSING_SUPREF + ERROR_DS_MISSING_SUPREF + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_INSTANCE + ERROR_DS_CANT_RETRIEVE_INSTANCE + + + + No documentation. + + + ERROR_DS_CODE_INCONSISTENCY + ERROR_DS_CODE_INCONSISTENCY + + + + No documentation. + + + ERROR_DS_DATABASE_ERROR + ERROR_DS_DATABASE_ERROR + + + + No documentation. + + + ERROR_DS_GOVERNSID_MISSING + ERROR_DS_GOVERNSID_MISSING + + + + No documentation. + + + ERROR_DS_MISSING_EXPECTED_ATT + ERROR_DS_MISSING_EXPECTED_ATT + + + + No documentation. + + + ERROR_DS_NCNAME_MISSING_CR_REF + ERROR_DS_NCNAME_MISSING_CR_REF + + + + No documentation. + + + ERROR_DS_SECURITY_CHECKING_ERROR + ERROR_DS_SECURITY_CHECKING_ERROR + + + + No documentation. + + + ERROR_DS_SCHEMA_NOT_LOADED + ERROR_DS_SCHEMA_NOT_LOADED + + + + No documentation. + + + ERROR_DS_SCHEMA_ALLOC_FAILED + ERROR_DS_SCHEMA_ALLOC_FAILED + + + + No documentation. + + + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX + ERROR_DS_ATT_SCHEMA_REQ_SYNTAX + + + + No documentation. + + + ERROR_DS_GCVERIFY_ERROR + ERROR_DS_GCVERIFY_ERROR + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_MISMATCH + ERROR_DS_DRA_SCHEMA_MISMATCH + + + + No documentation. + + + ERROR_DS_CANT_FIND_DSA_OBJ + ERROR_DS_CANT_FIND_DSA_OBJ + + + + No documentation. + + + ERROR_DS_CANT_FIND_EXPECTED_NC + ERROR_DS_CANT_FIND_EXPECTED_NC + + + + No documentation. + + + ERROR_DS_CANT_FIND_NC_IN_CACHE + ERROR_DS_CANT_FIND_NC_IN_CACHE + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_CHILD + ERROR_DS_CANT_RETRIEVE_CHILD + + + + No documentation. + + + ERROR_DS_SECURITY_ILLEGAL_MODIFY + ERROR_DS_SECURITY_ILLEGAL_MODIFY + + + + No documentation. + + + ERROR_DS_CANT_REPLACE_HIDDEN_REC + ERROR_DS_CANT_REPLACE_HIDDEN_REC + + + + No documentation. + + + ERROR_DS_BAD_HIERARCHY_FILE + ERROR_DS_BAD_HIERARCHY_FILE + + + + No documentation. + + + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED + ERROR_DS_BUILD_HIERARCHY_TABLE_FAILED + + + + No documentation. + + + ERROR_DS_CONFIG_PARAM_MISSING + ERROR_DS_CONFIG_PARAM_MISSING + + + + No documentation. + + + ERROR_DS_COUNTING_AB_INDICES_FAILED + ERROR_DS_COUNTING_AB_INDICES_FAILED + + + + No documentation. + + + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED + ERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED + + + + No documentation. + + + ERROR_DS_INTERNAL_FAILURE + ERROR_DS_INTERNAL_FAILURE + + + + No documentation. + + + ERROR_DS_UNKNOWN_ERROR + ERROR_DS_UNKNOWN_ERROR + + + + No documentation. + + + ERROR_DS_ROOT_REQUIRES_CLASS_TOP + ERROR_DS_ROOT_REQUIRES_CLASS_TOP + + + + No documentation. + + + ERROR_DS_REFUSING_FSMO_ROLES + ERROR_DS_REFUSING_FSMO_ROLES + + + + No documentation. + + + ERROR_DS_MISSING_FSMO_SETTINGS + ERROR_DS_MISSING_FSMO_SETTINGS + + + + No documentation. + + + ERROR_DS_UNABLE_TO_SURRENDER_ROLES + ERROR_DS_UNABLE_TO_SURRENDER_ROLES + + + + No documentation. + + + ERROR_DS_DRA_GENERIC + ERROR_DS_DRA_GENERIC + + + + No documentation. + + + ERROR_DS_DRA_INVALID_PARAMETER + ERROR_DS_DRA_INVALID_PARAMETER + + + + No documentation. + + + ERROR_DS_DRA_BUSY + ERROR_DS_DRA_BUSY + + + + No documentation. + + + ERROR_DS_DRA_BAD_DN + ERROR_DS_DRA_BAD_DN + + + + No documentation. + + + ERROR_DS_DRA_BAD_NC + ERROR_DS_DRA_BAD_NC + + + + No documentation. + + + ERROR_DS_DRA_DN_EXISTS + ERROR_DS_DRA_DN_EXISTS + + + + No documentation. + + + ERROR_DS_DRA_INTERNAL_ERROR + ERROR_DS_DRA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_DS_DRA_INCONSISTENT_DIT + ERROR_DS_DRA_INCONSISTENT_DIT + + + + No documentation. + + + ERROR_DS_DRA_CONNECTION_FAILED + ERROR_DS_DRA_CONNECTION_FAILED + + + + No documentation. + + + ERROR_DS_DRA_BAD_INSTANCE_TYPE + ERROR_DS_DRA_BAD_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_DRA_OUT_OF_MEM + ERROR_DS_DRA_OUT_OF_MEM + + + + No documentation. + + + ERROR_DS_DRA_MAIL_PROBLEM + ERROR_DS_DRA_MAIL_PROBLEM + + + + No documentation. + + + ERROR_DS_DRA_REF_ALREADY_EXISTS + ERROR_DS_DRA_REF_ALREADY_EXISTS + + + + No documentation. + + + ERROR_DS_DRA_REF_NOT_FOUND + ERROR_DS_DRA_REF_NOT_FOUND + + + + No documentation. + + + ERROR_DS_DRA_OBJ_IS_REP_SOURCE + ERROR_DS_DRA_OBJ_IS_REP_SOURCE + + + + No documentation. + + + ERROR_DS_DRA_DB_ERROR + ERROR_DS_DRA_DB_ERROR + + + + No documentation. + + + ERROR_DS_DRA_NO_REPLICA + ERROR_DS_DRA_NO_REPLICA + + + + No documentation. + + + ERROR_DS_DRA_ACCESS_DENIED + ERROR_DS_DRA_ACCESS_DENIED + + + + No documentation. + + + ERROR_DS_DRA_NOT_SUPPORTED + ERROR_DS_DRA_NOT_SUPPORTED + + + + No documentation. + + + ERROR_DS_DRA_RPC_CANCELLED + ERROR_DS_DRA_RPC_CANCELLED + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_DISABLED + ERROR_DS_DRA_SOURCE_DISABLED + + + + No documentation. + + + ERROR_DS_DRA_SINK_DISABLED + ERROR_DS_DRA_SINK_DISABLED + + + + No documentation. + + + ERROR_DS_DRA_NAME_COLLISION + ERROR_DS_DRA_NAME_COLLISION + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_REINSTALLED + ERROR_DS_DRA_SOURCE_REINSTALLED + + + + No documentation. + + + ERROR_DS_DRA_MISSING_PARENT + ERROR_DS_DRA_MISSING_PARENT + + + + No documentation. + + + ERROR_DS_DRA_PREEMPTED + ERROR_DS_DRA_PREEMPTED + + + + No documentation. + + + ERROR_DS_DRA_ABANDON_SYNC + ERROR_DS_DRA_ABANDON_SYNC + + + + No documentation. + + + ERROR_DS_DRA_SHUTDOWN + ERROR_DS_DRA_SHUTDOWN + + + + No documentation. + + + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET + ERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET + + + + No documentation. + + + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA + ERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA + + + + No documentation. + + + ERROR_DS_DRA_EXTN_CONNECTION_FAILED + ERROR_DS_DRA_EXTN_CONNECTION_FAILED + + + + No documentation. + + + ERROR_DS_INSTALL_SCHEMA_MISMATCH + ERROR_DS_INSTALL_SCHEMA_MISMATCH + + + + No documentation. + + + ERROR_DS_DUP_LINK_ID + ERROR_DS_DUP_LINK_ID + + + + No documentation. + + + ERROR_DS_NAME_ERROR_RESOLVING + ERROR_DS_NAME_ERROR_RESOLVING + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NOT_FOUND + ERROR_DS_NAME_ERROR_NOT_FOUND + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NOT_UNIQUE + ERROR_DS_NAME_ERROR_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NO_MAPPING + ERROR_DS_NAME_ERROR_NO_MAPPING + + + + No documentation. + + + ERROR_DS_NAME_ERROR_DOMAIN_ONLY + ERROR_DS_NAME_ERROR_DOMAIN_ONLY + + + + No documentation. + + + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING + ERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING + + + + No documentation. + + + ERROR_DS_CONSTRUCTED_ATT_MOD + ERROR_DS_CONSTRUCTED_ATT_MOD + + + + No documentation. + + + ERROR_DS_WRONG_OM_OBJ_CLASS + ERROR_DS_WRONG_OM_OBJ_CLASS + + + + No documentation. + + + ERROR_DS_DRA_REPL_PENDING + ERROR_DS_DRA_REPL_PENDING + + + + No documentation. + + + ERROR_DS_DS_REQUIRED + ERROR_DS_DS_REQUIRED + + + + No documentation. + + + ERROR_DS_INVALID_LDAP_DISPLAY_NAME + ERROR_DS_INVALID_LDAP_DISPLAY_NAME + + + + No documentation. + + + ERROR_DS_NON_BASE_SEARCH + ERROR_DS_NON_BASE_SEARCH + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_ATTS + ERROR_DS_CANT_RETRIEVE_ATTS + + + + No documentation. + + + ERROR_DS_BACKLINK_WITHOUT_LINK + ERROR_DS_BACKLINK_WITHOUT_LINK + + + + No documentation. + + + ERROR_DS_EPOCH_MISMATCH + ERROR_DS_EPOCH_MISMATCH + + + + No documentation. + + + ERROR_DS_SRC_NAME_MISMATCH + ERROR_DS_SRC_NAME_MISMATCH + + + + No documentation. + + + ERROR_DS_SRC_AND_DST_NC_IDENTICAL + ERROR_DS_SRC_AND_DST_NC_IDENTICAL + + + + No documentation. + + + ERROR_DS_DST_NC_MISMATCH + ERROR_DS_DST_NC_MISMATCH + + + + No documentation. + + + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC + ERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC + + + + No documentation. + + + ERROR_DS_SRC_GUID_MISMATCH + ERROR_DS_SRC_GUID_MISMATCH + + + + No documentation. + + + ERROR_DS_CANT_MOVE_DELETED_OBJECT + ERROR_DS_CANT_MOVE_DELETED_OBJECT + + + + No documentation. + + + ERROR_DS_PDC_OPERATION_IN_PROGRESS + ERROR_DS_PDC_OPERATION_IN_PROGRESS + + + + No documentation. + + + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD + ERROR_DS_CROSS_DOMAIN_CLEANUP_REQD + + + + No documentation. + + + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION + ERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION + + + + No documentation. + + + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS + ERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS + + + + No documentation. + + + ERROR_DS_NC_MUST_HAVE_NC_PARENT + ERROR_DS_NC_MUST_HAVE_NC_PARENT + + + + No documentation. + + + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE + + + + No documentation. + + + ERROR_DS_DST_DOMAIN_NOT_NATIVE + ERROR_DS_DST_DOMAIN_NOT_NATIVE + + + + No documentation. + + + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER + ERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER + + + + No documentation. + + + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP + ERROR_DS_CANT_MOVE_ACCOUNT_GROUP + + + + No documentation. + + + ERROR_DS_CANT_MOVE_RESOURCE_GROUP + ERROR_DS_CANT_MOVE_RESOURCE_GROUP + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG + ERROR_DS_INVALID_SEARCH_FLAG + + + + No documentation. + + + ERROR_DS_NO_TREE_DELETE_ABOVE_NC + ERROR_DS_NO_TREE_DELETE_ABOVE_NC + + + + No documentation. + + + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE + ERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE + + + + No documentation. + + + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE + ERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE + + + + No documentation. + + + ERROR_DS_SAM_INIT_FAILURE + ERROR_DS_SAM_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_SENSITIVE_GROUP_VIOLATION + ERROR_DS_SENSITIVE_GROUP_VIOLATION + + + + No documentation. + + + ERROR_DS_CANT_MOD_PRIMARYGROUPID + ERROR_DS_CANT_MOD_PRIMARYGROUPID + + + + No documentation. + + + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD + ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD + + + + No documentation. + + + ERROR_DS_NONSAFE_SCHEMA_CHANGE + ERROR_DS_NONSAFE_SCHEMA_CHANGE + + + + No documentation. + + + ERROR_DS_SCHEMA_UPDATE_DISALLOWED + ERROR_DS_SCHEMA_UPDATE_DISALLOWED + + + + No documentation. + + + ERROR_DS_CANT_CREATE_UNDER_SCHEMA + ERROR_DS_CANT_CREATE_UNDER_SCHEMA + + + + No documentation. + + + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION + ERROR_DS_INSTALL_NO_SRC_SCH_VERSION + + + + No documentation. + + + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE + ERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE + + + + No documentation. + + + ERROR_DS_INVALID_GROUP_TYPE + ERROR_DS_INVALID_GROUP_TYPE + + + + No documentation. + + + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN + ERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN + ERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER + + + + No documentation. + + + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER + ERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER + ERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER + + + + No documentation. + + + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER + ERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER + + + + No documentation. + + + ERROR_DS_HAVE_PRIMARY_MEMBERS + ERROR_DS_HAVE_PRIMARY_MEMBERS + + + + No documentation. + + + ERROR_DS_STRING_SD_CONVERSION_FAILED + ERROR_DS_STRING_SD_CONVERSION_FAILED + + + + No documentation. + + + ERROR_DS_NAMING_MASTER_GC + ERROR_DS_NAMING_MASTER_GC + + + + No documentation. + + + ERROR_DS_DNS_LOOKUP_FAILURE + ERROR_DS_DNS_LOOKUP_FAILURE + + + + No documentation. + + + ERROR_DS_COULDNT_UPDATE_SPNS + ERROR_DS_COULDNT_UPDATE_SPNS + + + + No documentation. + + + ERROR_DS_CANT_RETRIEVE_SD + ERROR_DS_CANT_RETRIEVE_SD + + + + No documentation. + + + ERROR_DS_KEY_NOT_UNIQUE + ERROR_DS_KEY_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_WRONG_LINKED_ATT_SYNTAX + ERROR_DS_WRONG_LINKED_ATT_SYNTAX + + + + No documentation. + + + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD + ERROR_DS_SAM_NEED_BOOTKEY_PASSWORD + + + + No documentation. + + + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY + ERROR_DS_SAM_NEED_BOOTKEY_FLOPPY + + + + No documentation. + + + ERROR_DS_CANT_START + ERROR_DS_CANT_START + + + + No documentation. + + + ERROR_DS_INIT_FAILURE + ERROR_DS_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION + ERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION + + + + No documentation. + + + ERROR_DS_SOURCE_DOMAIN_IN_FOREST + ERROR_DS_SOURCE_DOMAIN_IN_FOREST + + + + No documentation. + + + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST + ERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST + + + + No documentation. + + + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED + ERROR_DS_DESTINATION_AUDITING_NOT_ENABLED + + + + No documentation. + + + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN + ERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN + + + + No documentation. + + + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER + ERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER + + + + No documentation. + + + ERROR_DS_SRC_SID_EXISTS_IN_FOREST + ERROR_DS_SRC_SID_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH + ERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH + + + + No documentation. + + + ERROR_SAM_INIT_FAILURE + ERROR_SAM_INIT_FAILURE + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_INFO_SHIP + ERROR_DS_DRA_SCHEMA_INFO_SHIP + + + + No documentation. + + + ERROR_DS_DRA_SCHEMA_CONFLICT + ERROR_DS_DRA_SCHEMA_CONFLICT + + + + No documentation. + + + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT + ERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT + + + + No documentation. + + + ERROR_DS_DRA_OBJ_NC_MISMATCH + ERROR_DS_DRA_OBJ_NC_MISMATCH + + + + No documentation. + + + ERROR_DS_NC_STILL_HAS_DSAS + ERROR_DS_NC_STILL_HAS_DSAS + + + + No documentation. + + + ERROR_DS_GC_REQUIRED + ERROR_DS_GC_REQUIRED + + + + No documentation. + + + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY + ERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY + + + + No documentation. + + + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS + ERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS + + + + No documentation. + + + ERROR_DS_CANT_ADD_TO_GC + ERROR_DS_CANT_ADD_TO_GC + + + + No documentation. + + + ERROR_DS_NO_CHECKPOINT_WITH_PDC + ERROR_DS_NO_CHECKPOINT_WITH_PDC + + + + No documentation. + + + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED + ERROR_DS_SOURCE_AUDITING_NOT_ENABLED + + + + No documentation. + + + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC + ERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC + + + + No documentation. + + + ERROR_DS_INVALID_NAME_FOR_SPN + ERROR_DS_INVALID_NAME_FOR_SPN + + + + No documentation. + + + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS + ERROR_DS_FILTER_USES_CONTRUCTED_ATTRS + + + + No documentation. + + + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES + ERROR_DS_UNICODEPWD_NOT_IN_QUOTES + + + + No documentation. + + + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED + ERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED + + + + No documentation. + + + ERROR_DS_MUST_BE_RUN_ON_DST_DC + ERROR_DS_MUST_BE_RUN_ON_DST_DC + + + + No documentation. + + + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER + ERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER + + + + No documentation. + + + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ + ERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ + + + + No documentation. + + + ERROR_DS_INIT_FAILURE_CONSOLE + ERROR_DS_INIT_FAILURE_CONSOLE + + + + No documentation. + + + ERROR_DS_SAM_INIT_FAILURE_CONSOLE + ERROR_DS_SAM_INIT_FAILURE_CONSOLE + + + + No documentation. + + + ERROR_DS_FOREST_VERSION_TOO_HIGH + ERROR_DS_FOREST_VERSION_TOO_HIGH + + + + No documentation. + + + ERROR_DS_DOMAIN_VERSION_TOO_HIGH + ERROR_DS_DOMAIN_VERSION_TOO_HIGH + + + + No documentation. + + + ERROR_DS_FOREST_VERSION_TOO_LOW + ERROR_DS_FOREST_VERSION_TOO_LOW + + + + No documentation. + + + ERROR_DS_DOMAIN_VERSION_TOO_LOW + ERROR_DS_DOMAIN_VERSION_TOO_LOW + + + + No documentation. + + + ERROR_DS_INCOMPATIBLE_VERSION + ERROR_DS_INCOMPATIBLE_VERSION + + + + No documentation. + + + ERROR_DS_LOW_DSA_VERSION + ERROR_DS_LOW_DSA_VERSION + + + + No documentation. + + + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN + ERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN + + + + No documentation. + + + ERROR_DS_NOT_SUPPORTED_SORT_ORDER + ERROR_DS_NOT_SUPPORTED_SORT_ORDER + + + + No documentation. + + + ERROR_DS_NAME_NOT_UNIQUE + ERROR_DS_NAME_NOT_UNIQUE + + + + No documentation. + + + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 + ERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4 + + + + No documentation. + + + ERROR_DS_OUT_OF_VERSION_STORE + ERROR_DS_OUT_OF_VERSION_STORE + + + + No documentation. + + + ERROR_DS_INCOMPATIBLE_CONTROLS_USED + ERROR_DS_INCOMPATIBLE_CONTROLS_USED + + + + No documentation. + + + ERROR_DS_NO_REF_DOMAIN + ERROR_DS_NO_REF_DOMAIN + + + + No documentation. + + + ERROR_DS_RESERVED_LINK_ID + ERROR_DS_RESERVED_LINK_ID + + + + No documentation. + + + ERROR_DS_LINK_ID_NOT_AVAILABLE + ERROR_DS_LINK_ID_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER + ERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER + + + + No documentation. + + + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE + ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE + + + + No documentation. + + + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC + ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC + + + + No documentation. + + + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG + ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG + + + + No documentation. + + + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT + ERROR_DS_MODIFYDN_WRONG_GRANDPARENT + + + + No documentation. + + + ERROR_DS_NAME_ERROR_TRUST_REFERRAL + ERROR_DS_NAME_ERROR_TRUST_REFERRAL + + + + No documentation. + + + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER + ERROR_NOT_SUPPORTED_ON_STANDARD_SERVER + + + + No documentation. + + + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD + ERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD + + + + No documentation. + + + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 + ERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2 + + + + No documentation. + + + ERROR_DS_THREAD_LIMIT_EXCEEDED + ERROR_DS_THREAD_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_DS_NOT_CLOSEST + ERROR_DS_NOT_CLOSEST + + + + No documentation. + + + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF + ERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF + + + + No documentation. + + + ERROR_DS_SINGLE_USER_MODE_FAILED + ERROR_DS_SINGLE_USER_MODE_FAILED + + + + No documentation. + + + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR + ERROR_DS_NTDSCRIPT_SYNTAX_ERROR + + + + No documentation. + + + ERROR_DS_NTDSCRIPT_PROCESS_ERROR + ERROR_DS_NTDSCRIPT_PROCESS_ERROR + + + + No documentation. + + + ERROR_DS_DIFFERENT_REPL_EPOCHS + ERROR_DS_DIFFERENT_REPL_EPOCHS + + + + No documentation. + + + ERROR_DS_DRS_EXTENSIONS_CHANGED + ERROR_DS_DRS_EXTENSIONS_CHANGED + + + + No documentation. + + + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR + ERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR + + + + No documentation. + + + ERROR_DS_NO_MSDS_INTID + ERROR_DS_NO_MSDS_INTID + + + + No documentation. + + + ERROR_DS_DUP_MSDS_INTID + ERROR_DS_DUP_MSDS_INTID + + + + No documentation. + + + ERROR_DS_EXISTS_IN_RDNATTID + ERROR_DS_EXISTS_IN_RDNATTID + + + + No documentation. + + + ERROR_DS_AUTHORIZATION_FAILED + ERROR_DS_AUTHORIZATION_FAILED + + + + No documentation. + + + ERROR_DS_INVALID_SCRIPT + ERROR_DS_INVALID_SCRIPT + + + + No documentation. + + + ERROR_DS_REMOTE_CROSSREF_OP_FAILED + ERROR_DS_REMOTE_CROSSREF_OP_FAILED + + + + No documentation. + + + ERROR_DS_CROSS_REF_BUSY + ERROR_DS_CROSS_REF_BUSY + + + + No documentation. + + + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN + ERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN + + + + No documentation. + + + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC + ERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC + + + + No documentation. + + + ERROR_DS_DUPLICATE_ID_FOUND + ERROR_DS_DUPLICATE_ID_FOUND + + + + No documentation. + + + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT + ERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT + + + + No documentation. + + + ERROR_DS_GROUP_CONVERSION_ERROR + ERROR_DS_GROUP_CONVERSION_ERROR + + + + No documentation. + + + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP + ERROR_DS_CANT_MOVE_APP_BASIC_GROUP + + + + No documentation. + + + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP + ERROR_DS_CANT_MOVE_APP_QUERY_GROUP + + + + No documentation. + + + ERROR_DS_ROLE_NOT_VERIFIED + ERROR_DS_ROLE_NOT_VERIFIED + + + + No documentation. + + + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL + ERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL + + + + No documentation. + + + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS + ERROR_DS_DOMAIN_RENAME_IN_PROGRESS + + + + No documentation. + + + ERROR_DS_EXISTING_AD_CHILD_NC + ERROR_DS_EXISTING_AD_CHILD_NC + + + + No documentation. + + + ERROR_DS_REPL_LIFETIME_EXCEEDED + ERROR_DS_REPL_LIFETIME_EXCEEDED + + + + No documentation. + + + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER + ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER + + + + No documentation. + + + ERROR_DS_LDAP_SEND_QUEUE_FULL + ERROR_DS_LDAP_SEND_QUEUE_FULL + + + + No documentation. + + + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW + ERROR_DS_DRA_OUT_SCHEDULE_WINDOW + + + + No documentation. + + + ERROR_DS_POLICY_NOT_KNOWN + ERROR_DS_POLICY_NOT_KNOWN + + + + No documentation. + + + ERROR_NO_SITE_SETTINGS_OBJECT + ERROR_NO_SITE_SETTINGS_OBJECT + + + + No documentation. + + + ERROR_NO_SECRETS + ERROR_NO_SECRETS + + + + No documentation. + + + ERROR_NO_WRITABLE_DC_FOUND + ERROR_NO_WRITABLE_DC_FOUND + + + + No documentation. + + + ERROR_DS_NO_SERVER_OBJECT + ERROR_DS_NO_SERVER_OBJECT + + + + No documentation. + + + ERROR_DS_NO_NTDSA_OBJECT + ERROR_DS_NO_NTDSA_OBJECT + + + + No documentation. + + + ERROR_DS_NON_ASQ_SEARCH + ERROR_DS_NON_ASQ_SEARCH + + + + No documentation. + + + ERROR_DS_AUDIT_FAILURE + ERROR_DS_AUDIT_FAILURE + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE + ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE + + + + No documentation. + + + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE + ERROR_DS_INVALID_SEARCH_FLAG_TUPLE + + + + No documentation. + + + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP + ERROR_DS_HIERARCHY_TABLE_TOO_DEEP + + + + No documentation. + + + ERROR_DS_DRA_CORRUPT_UTD_VECTOR + ERROR_DS_DRA_CORRUPT_UTD_VECTOR + + + + No documentation. + + + ERROR_DS_DRA_SECRETS_DENIED + ERROR_DS_DRA_SECRETS_DENIED + + + + No documentation. + + + ERROR_DS_RESERVED_MAPI_ID + ERROR_DS_RESERVED_MAPI_ID + + + + No documentation. + + + ERROR_DS_MAPI_ID_NOT_AVAILABLE + ERROR_DS_MAPI_ID_NOT_AVAILABLE + + + + No documentation. + + + ERROR_DS_DRA_MISSING_KRBTGT_SECRET + ERROR_DS_DRA_MISSING_KRBTGT_SECRET + + + + No documentation. + + + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST + ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST + ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST + + + + No documentation. + + + ERROR_INVALID_USER_PRINCIPAL_NAME + ERROR_INVALID_USER_PRINCIPAL_NAME + + + + No documentation. + + + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS + ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS + + + + No documentation. + + + ERROR_DS_OID_NOT_FOUND + ERROR_DS_OID_NOT_FOUND + + + + No documentation. + + + ERROR_DS_DRA_RECYCLED_TARGET + ERROR_DS_DRA_RECYCLED_TARGET + + + + No documentation. + + + ERROR_DS_DISALLOWED_NC_REDIRECT + ERROR_DS_DISALLOWED_NC_REDIRECT + + + + No documentation. + + + ERROR_DS_HIGH_ADLDS_FFL + ERROR_DS_HIGH_ADLDS_FFL + + + + No documentation. + + + ERROR_DS_HIGH_DSA_VERSION + ERROR_DS_HIGH_DSA_VERSION + + + + No documentation. + + + ERROR_DS_LOW_ADLDS_FFL + ERROR_DS_LOW_ADLDS_FFL + + + + No documentation. + + + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION + ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION + + + + No documentation. + + + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED + ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED + + + + No documentation. + + + ERROR_INCORRECT_ACCOUNT_TYPE + ERROR_INCORRECT_ACCOUNT_TYPE + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_EXISTS + ERROR_IPSEC_QM_POLICY_EXISTS + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_NOT_FOUND + ERROR_IPSEC_QM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_IN_USE + ERROR_IPSEC_QM_POLICY_IN_USE + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_EXISTS + ERROR_IPSEC_MM_POLICY_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_NOT_FOUND + ERROR_IPSEC_MM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_IN_USE + ERROR_IPSEC_MM_POLICY_IN_USE + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_EXISTS + ERROR_IPSEC_MM_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_NOT_FOUND + ERROR_IPSEC_MM_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS + ERROR_IPSEC_TRANSPORT_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND + ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_EXISTS + ERROR_IPSEC_MM_AUTH_EXISTS + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_NOT_FOUND + ERROR_IPSEC_MM_AUTH_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_IN_USE + ERROR_IPSEC_MM_AUTH_IN_USE + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND + ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND + ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND + ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_EXISTS + ERROR_IPSEC_TUNNEL_FILTER_EXISTS + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND + ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_IPSEC_MM_FILTER_PENDING_DELETION + ERROR_IPSEC_MM_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION + ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION + ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_MM_POLICY_PENDING_DELETION + ERROR_IPSEC_MM_POLICY_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_MM_AUTH_PENDING_DELETION + ERROR_IPSEC_MM_AUTH_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_QM_POLICY_PENDING_DELETION + ERROR_IPSEC_QM_POLICY_PENDING_DELETION + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN + ERROR_IPSEC_IKE_NEG_STATUS_BEGIN + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTH_FAIL + ERROR_IPSEC_IKE_AUTH_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_ATTRIB_FAIL + ERROR_IPSEC_IKE_ATTRIB_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_NEGOTIATION_PENDING + ERROR_IPSEC_IKE_NEGOTIATION_PENDING + + + + No documentation. + + + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR + ERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_TIMED_OUT + ERROR_IPSEC_IKE_TIMED_OUT + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_CERT + ERROR_IPSEC_IKE_NO_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_SA_DELETED + ERROR_IPSEC_IKE_SA_DELETED + + + + No documentation. + + + ERROR_IPSEC_IKE_SA_REAPED + ERROR_IPSEC_IKE_SA_REAPED + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP + ERROR_IPSEC_IKE_MM_ACQUIRE_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP + ERROR_IPSEC_IKE_QM_ACQUIRE_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QUEUE_DROP_MM + ERROR_IPSEC_IKE_QUEUE_DROP_MM + + + + No documentation. + + + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM + ERROR_IPSEC_IKE_QUEUE_DROP_NO_MM + + + + No documentation. + + + ERROR_IPSEC_IKE_DROP_NO_RESPONSE + ERROR_IPSEC_IKE_DROP_NO_RESPONSE + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_DELAY_DROP + ERROR_IPSEC_IKE_MM_DELAY_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_DELAY_DROP + ERROR_IPSEC_IKE_QM_DELAY_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_ERROR + ERROR_IPSEC_IKE_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_CRL_FAILED + ERROR_IPSEC_IKE_CRL_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_KEY_USAGE + ERROR_IPSEC_IKE_INVALID_KEY_USAGE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_CERT_TYPE + ERROR_IPSEC_IKE_INVALID_CERT_TYPE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PRIVATE_KEY + ERROR_IPSEC_IKE_NO_PRIVATE_KEY + + + + No documentation. + + + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY + ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY + + + + No documentation. + + + ERROR_IPSEC_IKE_DH_FAIL + ERROR_IPSEC_IKE_DH_FAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED + ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HEADER + ERROR_IPSEC_IKE_INVALID_HEADER + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_POLICY + ERROR_IPSEC_IKE_NO_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SIGNATURE + ERROR_IPSEC_IKE_INVALID_SIGNATURE + + + + No documentation. + + + ERROR_IPSEC_IKE_KERBEROS_ERROR + ERROR_IPSEC_IKE_KERBEROS_ERROR + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PUBLIC_KEY + ERROR_IPSEC_IKE_NO_PUBLIC_KEY + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR + ERROR_IPSEC_IKE_PROCESS_ERR + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_SA + ERROR_IPSEC_IKE_PROCESS_ERR_SA + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_PROP + ERROR_IPSEC_IKE_PROCESS_ERR_PROP + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS + ERROR_IPSEC_IKE_PROCESS_ERR_TRANS + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_KE + ERROR_IPSEC_IKE_PROCESS_ERR_KE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_ID + ERROR_IPSEC_IKE_PROCESS_ERR_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_CERT + ERROR_IPSEC_IKE_PROCESS_ERR_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ + ERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_HASH + ERROR_IPSEC_IKE_PROCESS_ERR_HASH + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_SIG + ERROR_IPSEC_IKE_PROCESS_ERR_SIG + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE + ERROR_IPSEC_IKE_PROCESS_ERR_NONCE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY + ERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE + ERROR_IPSEC_IKE_PROCESS_ERR_DELETE + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR + ERROR_IPSEC_IKE_PROCESS_ERR_VENDOR + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_PAYLOAD + ERROR_IPSEC_IKE_INVALID_PAYLOAD + + + + No documentation. + + + ERROR_IPSEC_IKE_LOAD_SOFT_SA + ERROR_IPSEC_IKE_LOAD_SOFT_SA + + + + No documentation. + + + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN + ERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_COOKIE + ERROR_IPSEC_IKE_INVALID_COOKIE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_PEER_CERT + ERROR_IPSEC_IKE_NO_PEER_CERT + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_CRL_FAILED + ERROR_IPSEC_IKE_PEER_CRL_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_POLICY_CHANGE + ERROR_IPSEC_IKE_POLICY_CHANGE + + + + No documentation. + + + ERROR_IPSEC_IKE_NO_MM_POLICY + ERROR_IPSEC_IKE_NO_MM_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_NOTCBPRIV + ERROR_IPSEC_IKE_NOTCBPRIV + + + + No documentation. + + + ERROR_IPSEC_IKE_SECLOADFAIL + ERROR_IPSEC_IKE_SECLOADFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_FAILSSPINIT + ERROR_IPSEC_IKE_FAILSSPINIT + + + + No documentation. + + + ERROR_IPSEC_IKE_FAILQUERYSSP + ERROR_IPSEC_IKE_FAILQUERYSSP + + + + No documentation. + + + ERROR_IPSEC_IKE_SRVACQFAIL + ERROR_IPSEC_IKE_SRVACQFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_SRVQUERYCRED + ERROR_IPSEC_IKE_SRVQUERYCRED + + + + No documentation. + + + ERROR_IPSEC_IKE_GETSPIFAIL + ERROR_IPSEC_IKE_GETSPIFAIL + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_FILTER + ERROR_IPSEC_IKE_INVALID_FILTER + + + + No documentation. + + + ERROR_IPSEC_IKE_OUT_OF_MEMORY + ERROR_IPSEC_IKE_OUT_OF_MEMORY + + + + No documentation. + + + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED + ERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_POLICY + ERROR_IPSEC_IKE_INVALID_POLICY + + + + No documentation. + + + ERROR_IPSEC_IKE_UNKNOWN_DOI + ERROR_IPSEC_IKE_UNKNOWN_DOI + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SITUATION + ERROR_IPSEC_IKE_INVALID_SITUATION + + + + No documentation. + + + ERROR_IPSEC_IKE_DH_FAILURE + ERROR_IPSEC_IKE_DH_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_GROUP + ERROR_IPSEC_IKE_INVALID_GROUP + + + + No documentation. + + + ERROR_IPSEC_IKE_ENCRYPT + ERROR_IPSEC_IKE_ENCRYPT + + + + No documentation. + + + ERROR_IPSEC_IKE_DECRYPT + ERROR_IPSEC_IKE_DECRYPT + + + + No documentation. + + + ERROR_IPSEC_IKE_POLICY_MATCH + ERROR_IPSEC_IKE_POLICY_MATCH + + + + No documentation. + + + ERROR_IPSEC_IKE_UNSUPPORTED_ID + ERROR_IPSEC_IKE_UNSUPPORTED_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH + ERROR_IPSEC_IKE_INVALID_HASH + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH_ALG + ERROR_IPSEC_IKE_INVALID_HASH_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_HASH_SIZE + ERROR_IPSEC_IKE_INVALID_HASH_SIZE + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG + ERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_AUTH_ALG + ERROR_IPSEC_IKE_INVALID_AUTH_ALG + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_SIG + ERROR_IPSEC_IKE_INVALID_SIG + + + + No documentation. + + + ERROR_IPSEC_IKE_LOAD_FAILED + ERROR_IPSEC_IKE_LOAD_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_RPC_DELETE + ERROR_IPSEC_IKE_RPC_DELETE + + + + No documentation. + + + ERROR_IPSEC_IKE_BENIGN_REINIT + ERROR_IPSEC_IKE_BENIGN_REINIT + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY + ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION + ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN + ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_LIMIT + ERROR_IPSEC_IKE_MM_LIMIT + + + + No documentation. + + + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED + ERROR_IPSEC_IKE_NEGOTIATION_DISABLED + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_LIMIT + ERROR_IPSEC_IKE_QM_LIMIT + + + + No documentation. + + + ERROR_IPSEC_IKE_MM_EXPIRED + ERROR_IPSEC_IKE_MM_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID + ERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID + + + + No documentation. + + + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH + ERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH + + + + No documentation. + + + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID + ERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD + ERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD + + + + No documentation. + + + ERROR_IPSEC_IKE_DOS_COOKIE_SENT + ERROR_IPSEC_IKE_DOS_COOKIE_SENT + + + + No documentation. + + + ERROR_IPSEC_IKE_SHUTTING_DOWN + ERROR_IPSEC_IKE_SHUTTING_DOWN + + + + No documentation. + + + ERROR_IPSEC_IKE_CGA_AUTH_FAILED + ERROR_IPSEC_IKE_CGA_AUTH_FAILED + + + + No documentation. + + + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA + ERROR_IPSEC_IKE_PROCESS_ERR_NATOA + + + + No documentation. + + + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM + ERROR_IPSEC_IKE_INVALID_MM_FOR_QM + + + + No documentation. + + + ERROR_IPSEC_IKE_QM_EXPIRED + ERROR_IPSEC_IKE_QM_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_IKE_TOO_MANY_FILTERS + ERROR_IPSEC_IKE_TOO_MANY_FILTERS + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_END + ERROR_IPSEC_IKE_NEG_STATUS_END + + + + No documentation. + + + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL + ERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL + + + + No documentation. + + + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE + ERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING + ERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING + + + + No documentation. + + + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING + ERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING + + + + No documentation. + + + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS + ERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS + + + + No documentation. + + + ERROR_IPSEC_IKE_RATELIMIT_DROP + ERROR_IPSEC_IKE_RATELIMIT_DROP + + + + No documentation. + + + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE + ERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY + ERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY + + + + No documentation. + + + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE + ERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE + + + + No documentation. + + + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END + ERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END + + + + No documentation. + + + ERROR_IPSEC_BAD_SPI + ERROR_IPSEC_BAD_SPI + + + + No documentation. + + + ERROR_IPSEC_SA_LIFETIME_EXPIRED + ERROR_IPSEC_SA_LIFETIME_EXPIRED + + + + No documentation. + + + ERROR_IPSEC_WRONG_SA + ERROR_IPSEC_WRONG_SA + + + + No documentation. + + + ERROR_IPSEC_REPLAY_CHECK_FAILED + ERROR_IPSEC_REPLAY_CHECK_FAILED + + + + No documentation. + + + ERROR_IPSEC_INVALID_PACKET + ERROR_IPSEC_INVALID_PACKET + + + + No documentation. + + + ERROR_IPSEC_INTEGRITY_CHECK_FAILED + ERROR_IPSEC_INTEGRITY_CHECK_FAILED + + + + No documentation. + + + ERROR_IPSEC_CLEAR_TEXT_DROP + ERROR_IPSEC_CLEAR_TEXT_DROP + + + + No documentation. + + + ERROR_IPSEC_AUTH_FIREWALL_DROP + ERROR_IPSEC_AUTH_FIREWALL_DROP + + + + No documentation. + + + ERROR_IPSEC_THROTTLE_DROP + ERROR_IPSEC_THROTTLE_DROP + + + + No documentation. + + + ERROR_IPSEC_DOSP_BLOCK + ERROR_IPSEC_DOSP_BLOCK + + + + No documentation. + + + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST + ERROR_IPSEC_DOSP_RECEIVED_MULTICAST + + + + No documentation. + + + ERROR_IPSEC_DOSP_INVALID_PACKET + ERROR_IPSEC_DOSP_INVALID_PACKET + + + + No documentation. + + + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED + ERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED + + + + No documentation. + + + ERROR_IPSEC_DOSP_MAX_ENTRIES + ERROR_IPSEC_DOSP_MAX_ENTRIES + + + + No documentation. + + + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED + ERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED + + + + No documentation. + + + ERROR_IPSEC_DOSP_NOT_INSTALLED + ERROR_IPSEC_DOSP_NOT_INSTALLED + + + + No documentation. + + + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES + ERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES + + + + No documentation. + + + ERROR_SXS_SECTION_NOT_FOUND + ERROR_SXS_SECTION_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_CANT_GEN_ACTCTX + ERROR_SXS_CANT_GEN_ACTCTX + + + + No documentation. + + + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT + ERROR_SXS_INVALID_ACTCTXDATA_FORMAT + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_NOT_FOUND + ERROR_SXS_ASSEMBLY_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_MANIFEST_FORMAT_ERROR + ERROR_SXS_MANIFEST_FORMAT_ERROR + + + + No documentation. + + + ERROR_SXS_MANIFEST_PARSE_ERROR + ERROR_SXS_MANIFEST_PARSE_ERROR + + + + No documentation. + + + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED + ERROR_SXS_ACTIVATION_CONTEXT_DISABLED + + + + No documentation. + + + ERROR_SXS_KEY_NOT_FOUND + ERROR_SXS_KEY_NOT_FOUND + + + + No documentation. + + + ERROR_SXS_VERSION_CONFLICT + ERROR_SXS_VERSION_CONFLICT + + + + No documentation. + + + ERROR_SXS_WRONG_SECTION_TYPE + ERROR_SXS_WRONG_SECTION_TYPE + + + + No documentation. + + + ERROR_SXS_THREAD_QUERIES_DISABLED + ERROR_SXS_THREAD_QUERIES_DISABLED + + + + No documentation. + + + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET + ERROR_SXS_PROCESS_DEFAULT_ALREADY_SET + + + + No documentation. + + + ERROR_SXS_UNKNOWN_ENCODING_GROUP + ERROR_SXS_UNKNOWN_ENCODING_GROUP + + + + No documentation. + + + ERROR_SXS_UNKNOWN_ENCODING + ERROR_SXS_UNKNOWN_ENCODING + + + + No documentation. + + + ERROR_SXS_INVALID_XML_NAMESPACE_URI + ERROR_SXS_INVALID_XML_NAMESPACE_URI + + + + No documentation. + + + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED + ERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED + + + + No documentation. + + + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED + ERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED + + + + No documentation. + + + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE + ERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE + + + + No documentation. + + + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE + ERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE + + + + No documentation. + + + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT + ERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT + + + + No documentation. + + + ERROR_SXS_DUPLICATE_DLL_NAME + ERROR_SXS_DUPLICATE_DLL_NAME + + + + No documentation. + + + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME + ERROR_SXS_DUPLICATE_WINDOWCLASS_NAME + + + + No documentation. + + + ERROR_SXS_DUPLICATE_CLSID + ERROR_SXS_DUPLICATE_CLSID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_IID + ERROR_SXS_DUPLICATE_IID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_TLBID + ERROR_SXS_DUPLICATE_TLBID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_PROGID + ERROR_SXS_DUPLICATE_PROGID + + + + No documentation. + + + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME + ERROR_SXS_DUPLICATE_ASSEMBLY_NAME + + + + No documentation. + + + ERROR_SXS_FILE_HASH_MISMATCH + ERROR_SXS_FILE_HASH_MISMATCH + + + + No documentation. + + + ERROR_SXS_POLICY_PARSE_ERROR + ERROR_SXS_POLICY_PARSE_ERROR + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGQUOTE + ERROR_SXS_XML_E_MISSINGQUOTE + + + + No documentation. + + + ERROR_SXS_XML_E_COMMENTSYNTAX + ERROR_SXS_XML_E_COMMENTSYNTAX + + + + No documentation. + + + ERROR_SXS_XML_E_BADSTARTNAMECHAR + ERROR_SXS_XML_E_BADSTARTNAMECHAR + + + + No documentation. + + + ERROR_SXS_XML_E_BADNAMECHAR + ERROR_SXS_XML_E_BADNAMECHAR + + + + No documentation. + + + ERROR_SXS_XML_E_BADCHARINSTRING + ERROR_SXS_XML_E_BADCHARINSTRING + + + + No documentation. + + + ERROR_SXS_XML_E_XMLDECLSYNTAX + ERROR_SXS_XML_E_XMLDECLSYNTAX + + + + No documentation. + + + ERROR_SXS_XML_E_BADCHARDATA + ERROR_SXS_XML_E_BADCHARDATA + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGWHITESPACE + ERROR_SXS_XML_E_MISSINGWHITESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_EXPECTINGTAGEND + ERROR_SXS_XML_E_EXPECTINGTAGEND + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGSEMICOLON + ERROR_SXS_XML_E_MISSINGSEMICOLON + + + + No documentation. + + + ERROR_SXS_XML_E_UNBALANCEDPAREN + ERROR_SXS_XML_E_UNBALANCEDPAREN + + + + No documentation. + + + ERROR_SXS_XML_E_INTERNALERROR + ERROR_SXS_XML_E_INTERNALERROR + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE + ERROR_SXS_XML_E_UNEXPECTED_WHITESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_INCOMPLETE_ENCODING + ERROR_SXS_XML_E_INCOMPLETE_ENCODING + + + + No documentation. + + + ERROR_SXS_XML_E_MISSING_PAREN + ERROR_SXS_XML_E_MISSING_PAREN + + + + No documentation. + + + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE + ERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE + + + + No documentation. + + + ERROR_SXS_XML_E_MULTIPLE_COLONS + ERROR_SXS_XML_E_MULTIPLE_COLONS + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_DECIMAL + ERROR_SXS_XML_E_INVALID_DECIMAL + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL + ERROR_SXS_XML_E_INVALID_HEXIDECIMAL + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_UNICODE + ERROR_SXS_XML_E_INVALID_UNICODE + + + + No documentation. + + + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK + ERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTEDENDTAG + ERROR_SXS_XML_E_UNEXPECTEDENDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDTAG + ERROR_SXS_XML_E_UNCLOSEDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE + ERROR_SXS_XML_E_DUPLICATEATTRIBUTE + + + + No documentation. + + + ERROR_SXS_XML_E_MULTIPLEROOTS + ERROR_SXS_XML_E_MULTIPLEROOTS + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDATROOTLEVEL + ERROR_SXS_XML_E_INVALIDATROOTLEVEL + + + + No documentation. + + + ERROR_SXS_XML_E_BADXMLDECL + ERROR_SXS_XML_E_BADXMLDECL + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGROOT + ERROR_SXS_XML_E_MISSINGROOT + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTEDEOF + ERROR_SXS_XML_E_UNEXPECTEDEOF + + + + No documentation. + + + ERROR_SXS_XML_E_BADPEREFINSUBSET + ERROR_SXS_XML_E_BADPEREFINSUBSET + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG + ERROR_SXS_XML_E_UNCLOSEDSTARTTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDENDTAG + ERROR_SXS_XML_E_UNCLOSEDENDTAG + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDSTRING + ERROR_SXS_XML_E_UNCLOSEDSTRING + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDCOMMENT + ERROR_SXS_XML_E_UNCLOSEDCOMMENT + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDDECL + ERROR_SXS_XML_E_UNCLOSEDDECL + + + + No documentation. + + + ERROR_SXS_XML_E_UNCLOSEDCDATA + ERROR_SXS_XML_E_UNCLOSEDCDATA + + + + No documentation. + + + ERROR_SXS_XML_E_RESERVEDNAMESPACE + ERROR_SXS_XML_E_RESERVEDNAMESPACE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDENCODING + ERROR_SXS_XML_E_INVALIDENCODING + + + + No documentation. + + + ERROR_SXS_XML_E_INVALIDSWITCH + ERROR_SXS_XML_E_INVALIDSWITCH + + + + No documentation. + + + ERROR_SXS_XML_E_BADXMLCASE + ERROR_SXS_XML_E_BADXMLCASE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_STANDALONE + ERROR_SXS_XML_E_INVALID_STANDALONE + + + + No documentation. + + + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE + ERROR_SXS_XML_E_UNEXPECTED_STANDALONE + + + + No documentation. + + + ERROR_SXS_XML_E_INVALID_VERSION + ERROR_SXS_XML_E_INVALID_VERSION + + + + No documentation. + + + ERROR_SXS_XML_E_MISSINGEQUALS + ERROR_SXS_XML_E_MISSINGEQUALS + + + + No documentation. + + + ERROR_SXS_PROTECTION_RECOVERY_FAILED + ERROR_SXS_PROTECTION_RECOVERY_FAILED + + + + No documentation. + + + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT + ERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT + + + + No documentation. + + + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID + ERROR_SXS_PROTECTION_CATALOG_NOT_VALID + + + + No documentation. + + + ERROR_SXS_UNTRANSLATABLE_HRESULT + ERROR_SXS_UNTRANSLATABLE_HRESULT + + + + No documentation. + + + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING + ERROR_SXS_PROTECTION_CATALOG_FILE_MISSING + + + + No documentation. + + + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE + ERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME + ERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_MISSING + ERROR_SXS_ASSEMBLY_MISSING + + + + No documentation. + + + ERROR_SXS_CORRUPT_ACTIVATION_STACK + ERROR_SXS_CORRUPT_ACTIVATION_STACK + + + + No documentation. + + + ERROR_SXS_CORRUPTION + ERROR_SXS_CORRUPTION + + + + No documentation. + + + ERROR_SXS_EARLY_DEACTIVATION + ERROR_SXS_EARLY_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_INVALID_DEACTIVATION + ERROR_SXS_INVALID_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_MULTIPLE_DEACTIVATION + ERROR_SXS_MULTIPLE_DEACTIVATION + + + + No documentation. + + + ERROR_SXS_PROCESS_TERMINATION_REQUESTED + ERROR_SXS_PROCESS_TERMINATION_REQUESTED + + + + No documentation. + + + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT + ERROR_SXS_RELEASE_ACTIVATION_CONTEXT + + + + No documentation. + + + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY + ERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY + + + + No documentation. + + + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE + + + + No documentation. + + + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME + ERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME + + + + No documentation. + + + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE + ERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE + + + + No documentation. + + + ERROR_SXS_IDENTITY_PARSE_ERROR + ERROR_SXS_IDENTITY_PARSE_ERROR + + + + No documentation. + + + ERROR_MALFORMED_SUBSTITUTION_STRING + ERROR_MALFORMED_SUBSTITUTION_STRING + + + + No documentation. + + + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN + ERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN + + + + No documentation. + + + ERROR_UNMAPPED_SUBSTITUTION_STRING + ERROR_UNMAPPED_SUBSTITUTION_STRING + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_NOT_LOCKED + ERROR_SXS_ASSEMBLY_NOT_LOCKED + + + + No documentation. + + + ERROR_SXS_COMPONENT_STORE_CORRUPT + ERROR_SXS_COMPONENT_STORE_CORRUPT + + + + No documentation. + + + ERROR_ADVANCED_INSTALLER_FAILED + ERROR_ADVANCED_INSTALLER_FAILED + + + + No documentation. + + + ERROR_XML_ENCODING_MISMATCH + ERROR_XML_ENCODING_MISMATCH + + + + No documentation. + + + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT + ERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT + + + + No documentation. + + + ERROR_SXS_IDENTITIES_DIFFERENT + ERROR_SXS_IDENTITIES_DIFFERENT + + + + No documentation. + + + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT + ERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT + + + + No documentation. + + + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY + ERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY + + + + No documentation. + + + ERROR_SXS_MANIFEST_TOO_BIG + ERROR_SXS_MANIFEST_TOO_BIG + + + + No documentation. + + + ERROR_SXS_SETTING_NOT_REGISTERED + ERROR_SXS_SETTING_NOT_REGISTERED + + + + No documentation. + + + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE + ERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE + + + + No documentation. + + + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED + ERROR_SMI_PRIMITIVE_INSTALLER_FAILED + + + + No documentation. + + + ERROR_GENERIC_COMMAND_FAILED + ERROR_GENERIC_COMMAND_FAILED + + + + No documentation. + + + ERROR_SXS_FILE_HASH_MISSING + ERROR_SXS_FILE_HASH_MISSING + + + + No documentation. + + + ERROR_EVT_INVALID_CHANNEL_PATH + ERROR_EVT_INVALID_CHANNEL_PATH + + + + No documentation. + + + ERROR_EVT_INVALID_QUERY + ERROR_EVT_INVALID_QUERY + + + + No documentation. + + + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND + ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND + ERROR_EVT_EVENT_TEMPLATE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_INVALID_PUBLISHER_NAME + ERROR_EVT_INVALID_PUBLISHER_NAME + + + + No documentation. + + + ERROR_EVT_INVALID_EVENT_DATA + ERROR_EVT_INVALID_EVENT_DATA + + + + No documentation. + + + ERROR_EVT_CHANNEL_NOT_FOUND + ERROR_EVT_CHANNEL_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MALFORMED_XML_TEXT + ERROR_EVT_MALFORMED_XML_TEXT + + + + No documentation. + + + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL + ERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL + + + + No documentation. + + + ERROR_EVT_CONFIGURATION_ERROR + ERROR_EVT_CONFIGURATION_ERROR + + + + No documentation. + + + ERROR_EVT_QUERY_RESULT_STALE + ERROR_EVT_QUERY_RESULT_STALE + + + + No documentation. + + + ERROR_EVT_QUERY_RESULT_INVALID_POSITION + ERROR_EVT_QUERY_RESULT_INVALID_POSITION + + + + No documentation. + + + ERROR_EVT_NON_VALIDATING_MSXML + ERROR_EVT_NON_VALIDATING_MSXML + + + + No documentation. + + + ERROR_EVT_FILTER_ALREADYSCOPED + ERROR_EVT_FILTER_ALREADYSCOPED + + + + No documentation. + + + ERROR_EVT_FILTER_NOTELTSET + ERROR_EVT_FILTER_NOTELTSET + + + + No documentation. + + + ERROR_EVT_FILTER_INVARG + ERROR_EVT_FILTER_INVARG + + + + No documentation. + + + ERROR_EVT_FILTER_INVTEST + ERROR_EVT_FILTER_INVTEST + + + + No documentation. + + + ERROR_EVT_FILTER_INVTYPE + ERROR_EVT_FILTER_INVTYPE + + + + No documentation. + + + ERROR_EVT_FILTER_PARSEERR + ERROR_EVT_FILTER_PARSEERR + + + + No documentation. + + + ERROR_EVT_FILTER_UNSUPPORTEDOP + ERROR_EVT_FILTER_UNSUPPORTEDOP + + + + No documentation. + + + ERROR_EVT_FILTER_UNEXPECTEDTOKEN + ERROR_EVT_FILTER_UNEXPECTEDTOKEN + + + + No documentation. + + + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL + ERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL + + + + No documentation. + + + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE + ERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE + + + + No documentation. + + + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE + ERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE + + + + No documentation. + + + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE + ERROR_EVT_CHANNEL_CANNOT_ACTIVATE + + + + No documentation. + + + ERROR_EVT_FILTER_TOO_COMPLEX + ERROR_EVT_FILTER_TOO_COMPLEX + + + + No documentation. + + + ERROR_EVT_MESSAGE_NOT_FOUND + ERROR_EVT_MESSAGE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MESSAGE_ID_NOT_FOUND + ERROR_EVT_MESSAGE_ID_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_UNRESOLVED_VALUE_INSERT + ERROR_EVT_UNRESOLVED_VALUE_INSERT + + + + No documentation. + + + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT + ERROR_EVT_UNRESOLVED_PARAMETER_INSERT + + + + No documentation. + + + ERROR_EVT_MAX_INSERTS_REACHED + ERROR_EVT_MAX_INSERTS_REACHED + + + + No documentation. + + + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND + ERROR_EVT_EVENT_DEFINITION_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND + ERROR_EVT_MESSAGE_LOCALE_NOT_FOUND + + + + No documentation. + + + ERROR_EVT_VERSION_TOO_OLD + ERROR_EVT_VERSION_TOO_OLD + + + + No documentation. + + + ERROR_EVT_VERSION_TOO_NEW + ERROR_EVT_VERSION_TOO_NEW + + + + No documentation. + + + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY + ERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY + + + + No documentation. + + + ERROR_EVT_PUBLISHER_DISABLED + ERROR_EVT_PUBLISHER_DISABLED + + + + No documentation. + + + ERROR_EVT_FILTER_OUT_OF_RANGE + ERROR_EVT_FILTER_OUT_OF_RANGE + + + + No documentation. + + + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE + ERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE + + + + No documentation. + + + ERROR_EC_LOG_DISABLED + ERROR_EC_LOG_DISABLED + + + + No documentation. + + + ERROR_EC_CIRCULAR_FORWARDING + ERROR_EC_CIRCULAR_FORWARDING + + + + No documentation. + + + ERROR_EC_CREDSTORE_FULL + ERROR_EC_CREDSTORE_FULL + + + + No documentation. + + + ERROR_EC_CRED_NOT_FOUND + ERROR_EC_CRED_NOT_FOUND + + + + No documentation. + + + ERROR_EC_NO_ACTIVE_CHANNEL + ERROR_EC_NO_ACTIVE_CHANNEL + + + + No documentation. + + + ERROR_MUI_FILE_NOT_FOUND + ERROR_MUI_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_MUI_INVALID_FILE + ERROR_MUI_INVALID_FILE + + + + No documentation. + + + ERROR_MUI_INVALID_RC_CONFIG + ERROR_MUI_INVALID_RC_CONFIG + + + + No documentation. + + + ERROR_MUI_INVALID_LOCALE_NAME + ERROR_MUI_INVALID_LOCALE_NAME + + + + No documentation. + + + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME + ERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME + + + + No documentation. + + + ERROR_MUI_FILE_NOT_LOADED + ERROR_MUI_FILE_NOT_LOADED + + + + No documentation. + + + ERROR_RESOURCE_ENUM_USER_STOP + ERROR_RESOURCE_ENUM_USER_STOP + + + + No documentation. + + + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED + ERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED + + + + No documentation. + + + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME + ERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME + + + + No documentation. + + + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE + ERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE + + + + No documentation. + + + ERROR_MRM_INVALID_PRICONFIG + ERROR_MRM_INVALID_PRICONFIG + + + + No documentation. + + + ERROR_MRM_INVALID_FILE_TYPE + ERROR_MRM_INVALID_FILE_TYPE + + + + No documentation. + + + ERROR_MRM_UNKNOWN_QUALIFIER + ERROR_MRM_UNKNOWN_QUALIFIER + + + + No documentation. + + + ERROR_MRM_INVALID_QUALIFIER_VALUE + ERROR_MRM_INVALID_QUALIFIER_VALUE + + + + No documentation. + + + ERROR_MRM_NO_CANDIDATE + ERROR_MRM_NO_CANDIDATE + + + + No documentation. + + + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE + ERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE + + + + No documentation. + + + ERROR_MRM_RESOURCE_TYPE_MISMATCH + ERROR_MRM_RESOURCE_TYPE_MISMATCH + + + + No documentation. + + + ERROR_MRM_DUPLICATE_MAP_NAME + ERROR_MRM_DUPLICATE_MAP_NAME + + + + No documentation. + + + ERROR_MRM_DUPLICATE_ENTRY + ERROR_MRM_DUPLICATE_ENTRY + + + + No documentation. + + + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER + ERROR_MRM_INVALID_RESOURCE_IDENTIFIER + + + + No documentation. + + + ERROR_MRM_FILEPATH_TOO_LONG + ERROR_MRM_FILEPATH_TOO_LONG + + + + No documentation. + + + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE + ERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE + + + + No documentation. + + + ERROR_MRM_INVALID_PRI_FILE + ERROR_MRM_INVALID_PRI_FILE + + + + No documentation. + + + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND + ERROR_MRM_NAMED_RESOURCE_NOT_FOUND + + + + No documentation. + + + ERROR_MRM_MAP_NOT_FOUND + ERROR_MRM_MAP_NOT_FOUND + + + + No documentation. + + + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE + ERROR_MRM_UNSUPPORTED_PROFILE_TYPE + + + + No documentation. + + + ERROR_MRM_INVALID_QUALIFIER_OPERATOR + ERROR_MRM_INVALID_QUALIFIER_OPERATOR + + + + No documentation. + + + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE + ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE + + + + No documentation. + + + ERROR_MRM_AUTOMERGE_ENABLED + ERROR_MRM_AUTOMERGE_ENABLED + + + + No documentation. + + + ERROR_MRM_TOO_MANY_RESOURCES + ERROR_MRM_TOO_MANY_RESOURCES + + + + No documentation. + + + ERROR_MCA_INVALID_CAPABILITIES_STRING + ERROR_MCA_INVALID_CAPABILITIES_STRING + + + + No documentation. + + + ERROR_MCA_INVALID_VCP_VERSION + ERROR_MCA_INVALID_VCP_VERSION + + + + No documentation. + + + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + + + + No documentation. + + + ERROR_MCA_MCCS_VERSION_MISMATCH + ERROR_MCA_MCCS_VERSION_MISMATCH + + + + No documentation. + + + ERROR_MCA_UNSUPPORTED_MCCS_VERSION + ERROR_MCA_UNSUPPORTED_MCCS_VERSION + + + + No documentation. + + + ERROR_MCA_INTERNAL_ERROR + ERROR_MCA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + ERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + + + + No documentation. + + + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE + ERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE + + + + No documentation. + + + ERROR_AMBIGUOUS_SYSTEM_DEVICE + ERROR_AMBIGUOUS_SYSTEM_DEVICE + + + + No documentation. + + + ERROR_SYSTEM_DEVICE_NOT_FOUND + ERROR_SYSTEM_DEVICE_NOT_FOUND + + + + No documentation. + + + ERROR_HASH_NOT_SUPPORTED + ERROR_HASH_NOT_SUPPORTED + + + + No documentation. + + + ERROR_HASH_NOT_PRESENT + ERROR_HASH_NOT_PRESENT + + + + No documentation. + + + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED + ERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED + + + + No documentation. + + + ERROR_GPIO_CLIENT_INFORMATION_INVALID + ERROR_GPIO_CLIENT_INFORMATION_INVALID + + + + No documentation. + + + ERROR_GPIO_VERSION_NOT_SUPPORTED + ERROR_GPIO_VERSION_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GPIO_INVALID_REGISTRATION_PACKET + ERROR_GPIO_INVALID_REGISTRATION_PACKET + + + + No documentation. + + + ERROR_GPIO_OPERATION_DENIED + ERROR_GPIO_OPERATION_DENIED + + + + No documentation. + + + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE + ERROR_GPIO_INCOMPATIBLE_CONNECT_MODE + + + + No documentation. + + + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED + ERROR_GPIO_INTERRUPT_ALREADY_UNMASKED + + + + No documentation. + + + ERROR_CANNOT_SWITCH_RUNLEVEL + ERROR_CANNOT_SWITCH_RUNLEVEL + + + + No documentation. + + + ERROR_INVALID_RUNLEVEL_SETTING + ERROR_INVALID_RUNLEVEL_SETTING + + + + No documentation. + + + ERROR_RUNLEVEL_SWITCH_TIMEOUT + ERROR_RUNLEVEL_SWITCH_TIMEOUT + + + + No documentation. + + + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT + ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT + + + + No documentation. + + + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS + ERROR_RUNLEVEL_SWITCH_IN_PROGRESS + + + + No documentation. + + + ERROR_SERVICES_FAILED_AUTOSTART + ERROR_SERVICES_FAILED_AUTOSTART + + + + No documentation. + + + ERROR_COM_TASK_STOP_PENDING + ERROR_COM_TASK_STOP_PENDING + + + + No documentation. + + + ERROR_INSTALL_OPEN_PACKAGE_FAILED + ERROR_INSTALL_OPEN_PACKAGE_FAILED + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_NOT_FOUND + ERROR_INSTALL_PACKAGE_NOT_FOUND + + + + No documentation. + + + ERROR_INSTALL_INVALID_PACKAGE + ERROR_INSTALL_INVALID_PACKAGE + + + + No documentation. + + + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED + ERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED + + + + No documentation. + + + ERROR_INSTALL_OUT_OF_DISK_SPACE + ERROR_INSTALL_OUT_OF_DISK_SPACE + + + + No documentation. + + + ERROR_INSTALL_NETWORK_FAILURE + ERROR_INSTALL_NETWORK_FAILURE + + + + No documentation. + + + ERROR_INSTALL_REGISTRATION_FAILURE + ERROR_INSTALL_REGISTRATION_FAILURE + + + + No documentation. + + + ERROR_INSTALL_DEREGISTRATION_FAILURE + ERROR_INSTALL_DEREGISTRATION_FAILURE + + + + No documentation. + + + ERROR_INSTALL_CANCEL + ERROR_INSTALL_CANCEL + + + + No documentation. + + + ERROR_INSTALL_FAILED + ERROR_INSTALL_FAILED + + + + No documentation. + + + ERROR_REMOVE_FAILED + ERROR_REMOVE_FAILED + + + + No documentation. + + + ERROR_PACKAGE_ALREADY_EXISTS + ERROR_PACKAGE_ALREADY_EXISTS + + + + No documentation. + + + ERROR_NEEDS_REMEDIATION + ERROR_NEEDS_REMEDIATION + + + + No documentation. + + + ERROR_INSTALL_PREREQUISITE_FAILED + ERROR_INSTALL_PREREQUISITE_FAILED + + + + No documentation. + + + ERROR_PACKAGE_REPOSITORY_CORRUPTED + ERROR_PACKAGE_REPOSITORY_CORRUPTED + + + + No documentation. + + + ERROR_INSTALL_POLICY_FAILURE + ERROR_INSTALL_POLICY_FAILURE + + + + No documentation. + + + ERROR_PACKAGE_UPDATING + ERROR_PACKAGE_UPDATING + + + + No documentation. + + + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY + ERROR_DEPLOYMENT_BLOCKED_BY_POLICY + + + + No documentation. + + + ERROR_PACKAGES_IN_USE + ERROR_PACKAGES_IN_USE + + + + No documentation. + + + ERROR_RECOVERY_FILE_CORRUPT + ERROR_RECOVERY_FILE_CORRUPT + + + + No documentation. + + + ERROR_INVALID_STAGED_SIGNATURE + ERROR_INVALID_STAGED_SIGNATURE + + + + No documentation. + + + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED + ERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED + + + + No documentation. + + + ERROR_INSTALL_PACKAGE_DOWNGRADE + ERROR_INSTALL_PACKAGE_DOWNGRADE + + + + No documentation. + + + ERROR_SYSTEM_NEEDS_REMEDIATION + ERROR_SYSTEM_NEEDS_REMEDIATION + + + + No documentation. + + + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN + ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN + + + + No documentation. + + + ERROR_RESILIENCY_FILE_CORRUPT + ERROR_RESILIENCY_FILE_CORRUPT + + + + No documentation. + + + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING + ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING + + + + No documentation. + + + ERROR_STATE_LOAD_STORE_FAILED + ERROR_STATE_LOAD_STORE_FAILED + + + + No documentation. + + + ERROR_STATE_GET_VERSION_FAILED + ERROR_STATE_GET_VERSION_FAILED + + + + No documentation. + + + ERROR_STATE_SET_VERSION_FAILED + ERROR_STATE_SET_VERSION_FAILED + + + + No documentation. + + + ERROR_STATE_STRUCTURED_RESET_FAILED + ERROR_STATE_STRUCTURED_RESET_FAILED + + + + No documentation. + + + ERROR_STATE_OPEN_CONTAINER_FAILED + ERROR_STATE_OPEN_CONTAINER_FAILED + + + + No documentation. + + + ERROR_STATE_CREATE_CONTAINER_FAILED + ERROR_STATE_CREATE_CONTAINER_FAILED + + + + No documentation. + + + ERROR_STATE_DELETE_CONTAINER_FAILED + ERROR_STATE_DELETE_CONTAINER_FAILED + + + + No documentation. + + + ERROR_STATE_READ_SETTING_FAILED + ERROR_STATE_READ_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_WRITE_SETTING_FAILED + ERROR_STATE_WRITE_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_DELETE_SETTING_FAILED + ERROR_STATE_DELETE_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_QUERY_SETTING_FAILED + ERROR_STATE_QUERY_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED + ERROR_STATE_READ_COMPOSITE_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED + ERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED + + + + No documentation. + + + ERROR_STATE_ENUMERATE_CONTAINER_FAILED + ERROR_STATE_ENUMERATE_CONTAINER_FAILED + + + + No documentation. + + + ERROR_STATE_ENUMERATE_SETTINGS_FAILED + ERROR_STATE_ENUMERATE_SETTINGS_FAILED + + + + No documentation. + + + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED + ERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED + ERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED + ERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED + ERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_API_UNAVAILABLE + ERROR_API_UNAVAILABLE + + + + No documentation. + + + ERROR_AUDITING_DISABLED + ERROR_AUDITING_DISABLED + + + + No documentation. + + + ERROR_ALL_SIDS_FILTERED + ERROR_ALL_SIDS_FILTERED + + + + No documentation. + + + ERROR_BIZRULES_NOT_ENABLED + ERROR_BIZRULES_NOT_ENABLED + + + + No documentation. + + + ERROR_CRED_REQUIRES_CONFIRMATION + ERROR_CRED_REQUIRES_CONFIRMATION + + + + No documentation. + + + ERROR_FLT_IO_COMPLETE + ERROR_FLT_IO_COMPLETE + + + + No documentation. + + + ERROR_FLT_NO_HANDLER_DEFINED + ERROR_FLT_NO_HANDLER_DEFINED + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALREADY_DEFINED + ERROR_FLT_CONTEXT_ALREADY_DEFINED + + + + No documentation. + + + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST + ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST + + + + No documentation. + + + ERROR_FLT_DISALLOW_FAST_IO + ERROR_FLT_DISALLOW_FAST_IO + + + + No documentation. + + + ERROR_FLT_INVALID_NAME_REQUEST + ERROR_FLT_INVALID_NAME_REQUEST + + + + No documentation. + + + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION + ERROR_FLT_NOT_SAFE_TO_POST_OPERATION + + + + No documentation. + + + ERROR_FLT_NOT_INITIALIZED + ERROR_FLT_NOT_INITIALIZED + + + + No documentation. + + + ERROR_FLT_FILTER_NOT_READY + ERROR_FLT_FILTER_NOT_READY + + + + No documentation. + + + ERROR_FLT_POST_OPERATION_CLEANUP + ERROR_FLT_POST_OPERATION_CLEANUP + + + + No documentation. + + + ERROR_FLT_INTERNAL_ERROR + ERROR_FLT_INTERNAL_ERROR + + + + No documentation. + + + ERROR_FLT_DELETING_OBJECT + ERROR_FLT_DELETING_OBJECT + + + + No documentation. + + + ERROR_FLT_MUST_BE_NONPAGED_POOL + ERROR_FLT_MUST_BE_NONPAGED_POOL + + + + No documentation. + + + ERROR_FLT_DUPLICATE_ENTRY + ERROR_FLT_DUPLICATE_ENTRY + + + + No documentation. + + + ERROR_FLT_CBDQ_DISABLED + ERROR_FLT_CBDQ_DISABLED + + + + No documentation. + + + ERROR_FLT_DO_NOT_ATTACH + ERROR_FLT_DO_NOT_ATTACH + + + + No documentation. + + + ERROR_FLT_DO_NOT_DETACH + ERROR_FLT_DO_NOT_DETACH + + + + No documentation. + + + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION + ERROR_FLT_INSTANCE_ALTITUDE_COLLISION + + + + No documentation. + + + ERROR_FLT_INSTANCE_NAME_COLLISION + ERROR_FLT_INSTANCE_NAME_COLLISION + + + + No documentation. + + + ERROR_FLT_FILTER_NOT_FOUND + ERROR_FLT_FILTER_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_VOLUME_NOT_FOUND + ERROR_FLT_VOLUME_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_INSTANCE_NOT_FOUND + ERROR_FLT_INSTANCE_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND + ERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND + + + + No documentation. + + + ERROR_FLT_INVALID_CONTEXT_REGISTRATION + ERROR_FLT_INVALID_CONTEXT_REGISTRATION + + + + No documentation. + + + ERROR_FLT_NAME_CACHE_MISS + ERROR_FLT_NAME_CACHE_MISS + + + + No documentation. + + + ERROR_FLT_NO_DEVICE_OBJECT + ERROR_FLT_NO_DEVICE_OBJECT + + + + No documentation. + + + ERROR_FLT_VOLUME_ALREADY_MOUNTED + ERROR_FLT_VOLUME_ALREADY_MOUNTED + + + + No documentation. + + + ERROR_FLT_ALREADY_ENLISTED + ERROR_FLT_ALREADY_ENLISTED + + + + No documentation. + + + ERROR_FLT_CONTEXT_ALREADY_LINKED + ERROR_FLT_CONTEXT_ALREADY_LINKED + + + + No documentation. + + + ERROR_FLT_NO_WAITER_FOR_REPLY + ERROR_FLT_NO_WAITER_FOR_REPLY + + + + No documentation. + + + ERROR_FLT_REGISTRATION_BUSY + ERROR_FLT_REGISTRATION_BUSY + + + + No documentation. + + + ERROR_HUNG_DISPLAY_DRIVER_THREAD + ERROR_HUNG_DISPLAY_DRIVER_THREAD + + + + No documentation. + + + ERROR_MONITOR_NO_DESCRIPTOR + ERROR_MONITOR_NO_DESCRIPTOR + + + + No documentation. + + + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT + ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT + + + + No documentation. + + + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM + ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM + + + + No documentation. + + + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK + ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK + + + + No documentation. + + + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED + ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED + + + + No documentation. + + + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK + ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK + + + + No documentation. + + + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK + ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK + + + + No documentation. + + + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA + ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA + + + + No documentation. + + + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK + ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK + + + + No documentation. + + + ERROR_MONITOR_INVALID_MANUFACTURE_DATE + ERROR_MONITOR_INVALID_MANUFACTURE_DATE + + + + No documentation. + + + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER + ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER + + + + No documentation. + + + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER + ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER + ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_WAS_RESET + ERROR_GRAPHICS_ADAPTER_WAS_RESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_DRIVER_MODEL + ERROR_GRAPHICS_INVALID_DRIVER_MODEL + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_MODE_CHANGED + ERROR_GRAPHICS_PRESENT_MODE_CHANGED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_OCCLUDED + ERROR_GRAPHICS_PRESENT_OCCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_DENIED + ERROR_GRAPHICS_PRESENT_DENIED + + + + No documentation. + + + ERROR_GRAPHICS_CANNOTCOLORCONVERT + ERROR_GRAPHICS_CANNOTCOLORCONVERT + + + + No documentation. + + + ERROR_GRAPHICS_DRIVER_MISMATCH + ERROR_GRAPHICS_DRIVER_MISMATCH + + + + No documentation. + + + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED + ERROR_GRAPHICS_PARTIAL_DATA_POPULATED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED + ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED + + + + No documentation. + + + ERROR_GRAPHICS_PRESENT_UNOCCLUDED + ERROR_GRAPHICS_PRESENT_UNOCCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE + ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE + + + + No documentation. + + + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED + ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED + + + + No documentation. + + + ERROR_GRAPHICS_NO_VIDEO_MEMORY + ERROR_GRAPHICS_NO_VIDEO_MEMORY + + + + No documentation. + + + ERROR_GRAPHICS_CANT_LOCK_MEMORY + ERROR_GRAPHICS_CANT_LOCK_MEMORY + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_BUSY + ERROR_GRAPHICS_ALLOCATION_BUSY + + + + No documentation. + + + ERROR_GRAPHICS_TOO_MANY_REFERENCES + ERROR_GRAPHICS_TOO_MANY_REFERENCES + + + + No documentation. + + + ERROR_GRAPHICS_TRY_AGAIN_LATER + ERROR_GRAPHICS_TRY_AGAIN_LATER + + + + No documentation. + + + ERROR_GRAPHICS_TRY_AGAIN_NOW + ERROR_GRAPHICS_TRY_AGAIN_NOW + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_INVALID + ERROR_GRAPHICS_ALLOCATION_INVALID + + + + No documentation. + + + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE + + + + No documentation. + + + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED + ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION + ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE + ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE + + + + No documentation. + + + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION + ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_CLOSED + ERROR_GRAPHICS_ALLOCATION_CLOSED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE + ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE + ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE + ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST + ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST + + + + No documentation. + + + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE + ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION + ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN + ERROR_GRAPHICS_INVALID_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED + ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MODE_NOT_PINNED + ERROR_GRAPHICS_MODE_NOT_PINNED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET + ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET + ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_FREQUENCY + ERROR_GRAPHICS_INVALID_FREQUENCY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_ACTIVE_REGION + ERROR_GRAPHICS_INVALID_ACTIVE_REGION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_TOTAL_REGION + ERROR_GRAPHICS_INVALID_TOTAL_REGION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE + ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE + + + + No documentation. + + + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET + ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY + ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET + ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET + ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET + ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET + ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET + ERROR_GRAPHICS_TARGET_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH + ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH + + + + No documentation. + + + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY + ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE + + + + No documentation. + + + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET + ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_NO_PREFERRED_MODE + ERROR_GRAPHICS_NO_PREFERRED_MODE + + + + No documentation. + + + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET + ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_STALE_MODESET + ERROR_GRAPHICS_STALE_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET + ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE + ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE + + + + No documentation. + + + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN + ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION + ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION + + + + No documentation. + + + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES + ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES + + + + No documentation. + + + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET + ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR + ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET + ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET + ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET + + + + No documentation. + + + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE + ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_RESOURCES_NOT_RELATED + ERROR_GRAPHICS_RESOURCES_NOT_RELATED + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE + ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE + + + + No documentation. + + + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET + ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER + ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_NO_VIDPNMGR + ERROR_GRAPHICS_NO_VIDPNMGR + + + + No documentation. + + + ERROR_GRAPHICS_NO_ACTIVE_VIDPN + ERROR_GRAPHICS_NO_ACTIVE_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY + ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED + ERROR_GRAPHICS_MONITOR_NOT_CONNECTED + + + + No documentation. + + + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE + ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE + ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_STRIDE + ERROR_GRAPHICS_INVALID_STRIDE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PIXELFORMAT + ERROR_GRAPHICS_INVALID_PIXELFORMAT + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_COLORBASIS + ERROR_GRAPHICS_INVALID_COLORBASIS + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE + ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE + + + + No documentation. + + + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY + ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY + + + + No documentation. + + + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT + ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT + + + + No documentation. + + + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE + + + + No documentation. + + + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN + ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL + ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION + ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION + + + + No documentation. + + + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_GAMMA_RAMP + ERROR_GRAPHICS_INVALID_GAMMA_RAMP + + + + No documentation. + + + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED + ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED + ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_MODE_NOT_IN_MODESET + ERROR_GRAPHICS_MODE_NOT_IN_MODESET + + + + No documentation. + + + ERROR_GRAPHICS_DATASET_IS_EMPTY + ERROR_GRAPHICS_DATASET_IS_EMPTY + + + + No documentation. + + + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET + ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON + ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE + ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE + ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS + ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED + ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING + ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING + + + + No documentation. + + + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED + ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED + + + + No documentation. + + + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS + ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS + + + + No documentation. + + + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT + ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM + ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN + ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT + ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT + + + + No documentation. + + + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED + ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED + + + + No documentation. + + + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION + ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_CLIENT_TYPE + ERROR_GRAPHICS_INVALID_CLIENT_TYPE + + + + No documentation. + + + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET + ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET + + + + No documentation. + + + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED + ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED + + + + No documentation. + + + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED + ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS + ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS + + + + No documentation. + + + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER + ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER + + + + No documentation. + + + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED + ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED + ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY + ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED + ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED + + + + No documentation. + + + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON + ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON + + + + No documentation. + + + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE + ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE + + + + No documentation. + + + ERROR_GRAPHICS_LEADLINK_START_DEFERRED + ERROR_GRAPHICS_LEADLINK_START_DEFERRED + + + + No documentation. + + + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER + ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER + + + + No documentation. + + + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY + ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY + + + + No documentation. + + + ERROR_GRAPHICS_START_DEFERRED + ERROR_GRAPHICS_START_DEFERRED + + + + No documentation. + + + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED + ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_NOT_SUPPORTED + ERROR_GRAPHICS_OPM_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_COPP_NOT_SUPPORTED + ERROR_GRAPHICS_COPP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_UAB_NOT_SUPPORTED + ERROR_GRAPHICS_UAB_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS + ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST + ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INTERNAL_ERROR + ERROR_GRAPHICS_OPM_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_HANDLE + ERROR_GRAPHICS_OPM_INVALID_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH + ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED + ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED + ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED + + + + No documentation. + + + ERROR_GRAPHICS_PVP_HFS_FAILED + ERROR_GRAPHICS_PVP_HFS_FAILED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_SRM + ERROR_GRAPHICS_OPM_INVALID_SRM + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP + + + + No documentation. + + + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA + ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA + + + + No documentation. + + + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET + ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET + + + + No documentation. + + + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH + ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH + + + + No documentation. + + + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE + ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS + ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST + ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST + + + + No documentation. + + + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR + ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS + ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS + + + + No documentation. + + + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED + ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST + ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST + + + + No documentation. + + + ERROR_GRAPHICS_I2C_NOT_SUPPORTED + ERROR_GRAPHICS_I2C_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST + ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA + ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA + + + + No documentation. + + + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA + ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED + ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_DATA + ERROR_GRAPHICS_DDCCI_INVALID_DATA + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE + ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING + ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INTERNAL_ERROR + ERROR_GRAPHICS_MCA_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM + ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE + ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE + + + + No documentation. + + + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS + ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS + + + + No documentation. + + + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE + ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION + ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH + ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH + + + + No documentation. + + + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION + ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION + + + + No documentation. + + + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED + + + + No documentation. + + + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE + ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE + + + + No documentation. + + + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED + ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME + ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME + + + + No documentation. + + + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP + ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP + + + + No documentation. + + + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED + ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED + + + + No documentation. + + + ERROR_GRAPHICS_INVALID_POINTER + ERROR_GRAPHICS_INVALID_POINTER + + + + No documentation. + + + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE + ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE + + + + No documentation. + + + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL + ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL + + + + No documentation. + + + ERROR_GRAPHICS_INTERNAL_ERROR + ERROR_GRAPHICS_INTERNAL_ERROR + + + + No documentation. + + + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS + ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS + + + + No documentation. + + + ERROR_NDIS_INTERFACE_CLOSING + ERROR_NDIS_INTERFACE_CLOSING + + + + No documentation. + + + ERROR_NDIS_BAD_VERSION + ERROR_NDIS_BAD_VERSION + + + + No documentation. + + + ERROR_NDIS_BAD_CHARACTERISTICS + ERROR_NDIS_BAD_CHARACTERISTICS + + + + No documentation. + + + ERROR_NDIS_ADAPTER_NOT_FOUND + ERROR_NDIS_ADAPTER_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_OPEN_FAILED + ERROR_NDIS_OPEN_FAILED + + + + No documentation. + + + ERROR_NDIS_DEVICE_FAILED + ERROR_NDIS_DEVICE_FAILED + + + + No documentation. + + + ERROR_NDIS_MULTICAST_FULL + ERROR_NDIS_MULTICAST_FULL + + + + No documentation. + + + ERROR_NDIS_MULTICAST_EXISTS + ERROR_NDIS_MULTICAST_EXISTS + + + + No documentation. + + + ERROR_NDIS_MULTICAST_NOT_FOUND + ERROR_NDIS_MULTICAST_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_REQUEST_ABORTED + ERROR_NDIS_REQUEST_ABORTED + + + + No documentation. + + + ERROR_NDIS_RESET_IN_PROGRESS + ERROR_NDIS_RESET_IN_PROGRESS + + + + No documentation. + + + ERROR_NDIS_NOT_SUPPORTED + ERROR_NDIS_NOT_SUPPORTED + + + + No documentation. + + + ERROR_NDIS_INVALID_PACKET + ERROR_NDIS_INVALID_PACKET + + + + No documentation. + + + ERROR_NDIS_ADAPTER_NOT_READY + ERROR_NDIS_ADAPTER_NOT_READY + + + + No documentation. + + + ERROR_NDIS_INVALID_LENGTH + ERROR_NDIS_INVALID_LENGTH + + + + No documentation. + + + ERROR_NDIS_INVALID_DATA + ERROR_NDIS_INVALID_DATA + + + + No documentation. + + + ERROR_NDIS_BUFFER_TOO_SHORT + ERROR_NDIS_BUFFER_TOO_SHORT + + + + No documentation. + + + ERROR_NDIS_INVALID_OID + ERROR_NDIS_INVALID_OID + + + + No documentation. + + + ERROR_NDIS_ADAPTER_REMOVED + ERROR_NDIS_ADAPTER_REMOVED + + + + No documentation. + + + ERROR_NDIS_UNSUPPORTED_MEDIA + ERROR_NDIS_UNSUPPORTED_MEDIA + + + + No documentation. + + + ERROR_NDIS_GROUP_ADDRESS_IN_USE + ERROR_NDIS_GROUP_ADDRESS_IN_USE + + + + No documentation. + + + ERROR_NDIS_FILE_NOT_FOUND + ERROR_NDIS_FILE_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_ERROR_READING_FILE + ERROR_NDIS_ERROR_READING_FILE + + + + No documentation. + + + ERROR_NDIS_ALREADY_MAPPED + ERROR_NDIS_ALREADY_MAPPED + + + + No documentation. + + + ERROR_NDIS_RESOURCE_CONFLICT + ERROR_NDIS_RESOURCE_CONFLICT + + + + No documentation. + + + ERROR_NDIS_MEDIA_DISCONNECTED + ERROR_NDIS_MEDIA_DISCONNECTED + + + + No documentation. + + + ERROR_NDIS_INVALID_ADDRESS + ERROR_NDIS_INVALID_ADDRESS + + + + No documentation. + + + ERROR_NDIS_INVALID_DEVICE_REQUEST + ERROR_NDIS_INVALID_DEVICE_REQUEST + + + + No documentation. + + + ERROR_NDIS_PAUSED + ERROR_NDIS_PAUSED + + + + No documentation. + + + ERROR_NDIS_INTERFACE_NOT_FOUND + ERROR_NDIS_INTERFACE_NOT_FOUND + + + + No documentation. + + + ERROR_NDIS_UNSUPPORTED_REVISION + ERROR_NDIS_UNSUPPORTED_REVISION + + + + No documentation. + + + ERROR_NDIS_INVALID_PORT + ERROR_NDIS_INVALID_PORT + + + + No documentation. + + + ERROR_NDIS_INVALID_PORT_STATE + ERROR_NDIS_INVALID_PORT_STATE + + + + No documentation. + + + ERROR_NDIS_LOW_POWER_STATE + ERROR_NDIS_LOW_POWER_STATE + + + + No documentation. + + + ERROR_NDIS_REINIT_REQUIRED + ERROR_NDIS_REINIT_REQUIRED + + + + No documentation. + + + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED + ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED + + + + No documentation. + + + ERROR_NDIS_DOT11_MEDIA_IN_USE + ERROR_NDIS_DOT11_MEDIA_IN_USE + + + + No documentation. + + + ERROR_NDIS_DOT11_POWER_STATE_INVALID + ERROR_NDIS_DOT11_POWER_STATE_INVALID + + + + No documentation. + + + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL + ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL + + + + No documentation. + + + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL + ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL + + + + No documentation. + + + ERROR_NDIS_INDICATION_REQUIRED + ERROR_NDIS_INDICATION_REQUIRED + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_POLICY + ERROR_NDIS_OFFLOAD_POLICY + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED + ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED + + + + No documentation. + + + ERROR_NDIS_OFFLOAD_PATH_REJECTED + ERROR_NDIS_OFFLOAD_PATH_REJECTED + + + + No documentation. + + + ERROR_HV_INVALID_HYPERCALL_CODE + ERROR_HV_INVALID_HYPERCALL_CODE + + + + No documentation. + + + ERROR_HV_INVALID_HYPERCALL_INPUT + ERROR_HV_INVALID_HYPERCALL_INPUT + + + + No documentation. + + + ERROR_HV_INVALID_ALIGNMENT + ERROR_HV_INVALID_ALIGNMENT + + + + No documentation. + + + ERROR_HV_INVALID_PARAMETER + ERROR_HV_INVALID_PARAMETER + + + + No documentation. + + + ERROR_HV_ACCESS_DENIED + ERROR_HV_ACCESS_DENIED + + + + No documentation. + + + ERROR_HV_INVALID_PARTITION_STATE + ERROR_HV_INVALID_PARTITION_STATE + + + + No documentation. + + + ERROR_HV_OPERATION_DENIED + ERROR_HV_OPERATION_DENIED + + + + No documentation. + + + ERROR_HV_UNKNOWN_PROPERTY + ERROR_HV_UNKNOWN_PROPERTY + + + + No documentation. + + + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE + ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE + + + + No documentation. + + + ERROR_HV_INSUFFICIENT_MEMORY + ERROR_HV_INSUFFICIENT_MEMORY + + + + No documentation. + + + ERROR_HV_PARTITION_TOO_DEEP + ERROR_HV_PARTITION_TOO_DEEP + + + + No documentation. + + + ERROR_HV_INVALID_PARTITION_ID + ERROR_HV_INVALID_PARTITION_ID + + + + No documentation. + + + ERROR_HV_INVALID_VP_INDEX + ERROR_HV_INVALID_VP_INDEX + + + + No documentation. + + + ERROR_HV_INVALID_PORT_ID + ERROR_HV_INVALID_PORT_ID + + + + No documentation. + + + ERROR_HV_INVALID_CONNECTION_ID + ERROR_HV_INVALID_CONNECTION_ID + + + + No documentation. + + + ERROR_HV_INSUFFICIENT_BUFFERS + ERROR_HV_INSUFFICIENT_BUFFERS + + + + No documentation. + + + ERROR_HV_NOT_ACKNOWLEDGED + ERROR_HV_NOT_ACKNOWLEDGED + + + + No documentation. + + + ERROR_HV_ACKNOWLEDGED + ERROR_HV_ACKNOWLEDGED + + + + No documentation. + + + ERROR_HV_INVALID_SAVE_RESTORE_STATE + ERROR_HV_INVALID_SAVE_RESTORE_STATE + + + + No documentation. + + + ERROR_HV_INVALID_SYNIC_STATE + ERROR_HV_INVALID_SYNIC_STATE + + + + No documentation. + + + ERROR_HV_OBJECT_IN_USE + ERROR_HV_OBJECT_IN_USE + + + + No documentation. + + + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO + ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO + + + + No documentation. + + + ERROR_HV_NO_DATA + ERROR_HV_NO_DATA + + + + No documentation. + + + ERROR_HV_INACTIVE + ERROR_HV_INACTIVE + + + + No documentation. + + + ERROR_HV_NO_RESOURCES + ERROR_HV_NO_RESOURCES + + + + No documentation. + + + ERROR_HV_FEATURE_UNAVAILABLE + ERROR_HV_FEATURE_UNAVAILABLE + + + + No documentation. + + + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS + ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS + + + + No documentation. + + + ERROR_HV_INVALID_LP_INDEX + ERROR_HV_INVALID_LP_INDEX + + + + No documentation. + + + ERROR_HV_NOT_PRESENT + ERROR_HV_NOT_PRESENT + + + + No documentation. + + + ERROR_VID_DUPLICATE_HANDLER + ERROR_VID_DUPLICATE_HANDLER + + + + No documentation. + + + ERROR_VID_TOO_MANY_HANDLERS + ERROR_VID_TOO_MANY_HANDLERS + + + + No documentation. + + + ERROR_VID_QUEUE_FULL + ERROR_VID_QUEUE_FULL + + + + No documentation. + + + ERROR_VID_HANDLER_NOT_PRESENT + ERROR_VID_HANDLER_NOT_PRESENT + + + + No documentation. + + + ERROR_VID_INVALID_OBJECT_NAME + ERROR_VID_INVALID_OBJECT_NAME + + + + No documentation. + + + ERROR_VID_PARTITION_NAME_TOO_LONG + ERROR_VID_PARTITION_NAME_TOO_LONG + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG + ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG + + + + No documentation. + + + ERROR_VID_PARTITION_ALREADY_EXISTS + ERROR_VID_PARTITION_ALREADY_EXISTS + + + + No documentation. + + + ERROR_VID_PARTITION_DOES_NOT_EXIST + ERROR_VID_PARTITION_DOES_NOT_EXIST + + + + No documentation. + + + ERROR_VID_PARTITION_NAME_NOT_FOUND + ERROR_VID_PARTITION_NAME_NOT_FOUND + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS + ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS + + + + No documentation. + + + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT + ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT + + + + No documentation. + + + ERROR_VID_MB_STILL_REFERENCED + ERROR_VID_MB_STILL_REFERENCED + + + + No documentation. + + + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED + ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED + + + + No documentation. + + + ERROR_VID_INVALID_NUMA_SETTINGS + ERROR_VID_INVALID_NUMA_SETTINGS + + + + No documentation. + + + ERROR_VID_INVALID_NUMA_NODE_INDEX + ERROR_VID_INVALID_NUMA_NODE_INDEX + + + + No documentation. + + + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED + ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED + + + + No documentation. + + + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE + ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE + + + + No documentation. + + + ERROR_VID_PAGE_RANGE_OVERFLOW + ERROR_VID_PAGE_RANGE_OVERFLOW + + + + No documentation. + + + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE + ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE + + + + No documentation. + + + ERROR_VID_INVALID_GPA_RANGE_HANDLE + ERROR_VID_INVALID_GPA_RANGE_HANDLE + + + + No documentation. + + + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE + ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE + + + + No documentation. + + + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED + ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED + + + + No documentation. + + + ERROR_VID_INVALID_PPM_HANDLE + ERROR_VID_INVALID_PPM_HANDLE + + + + No documentation. + + + ERROR_VID_MBPS_ARE_LOCKED + ERROR_VID_MBPS_ARE_LOCKED + + + + No documentation. + + + ERROR_VID_MESSAGE_QUEUE_CLOSED + ERROR_VID_MESSAGE_QUEUE_CLOSED + + + + No documentation. + + + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED + ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED + + + + No documentation. + + + ERROR_VID_STOP_PENDING + ERROR_VID_STOP_PENDING + + + + No documentation. + + + ERROR_VID_INVALID_PROCESSOR_STATE + ERROR_VID_INVALID_PROCESSOR_STATE + + + + No documentation. + + + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT + ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT + + + + No documentation. + + + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED + ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED + + + + No documentation. + + + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET + ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET + + + + No documentation. + + + ERROR_VID_MMIO_RANGE_DESTROYED + ERROR_VID_MMIO_RANGE_DESTROYED + + + + No documentation. + + + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET + ERROR_VID_INVALID_CHILD_GPA_PAGE_SET + + + + No documentation. + + + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED + ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED + + + + No documentation. + + + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL + ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL + + + + No documentation. + + + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE + ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE + + + + No documentation. + + + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT + ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT + + + + No documentation. + + + ERROR_VID_SAVED_STATE_CORRUPT + ERROR_VID_SAVED_STATE_CORRUPT + + + + No documentation. + + + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM + ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM + + + + No documentation. + + + ERROR_VID_SAVED_STATE_INCOMPATIBLE + ERROR_VID_SAVED_STATE_INCOMPATIBLE + + + + No documentation. + + + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED + ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED + + + + No documentation. + + + ERROR_VOLMGR_INCOMPLETE_REGENERATION + ERROR_VOLMGR_INCOMPLETE_REGENERATION + + + + No documentation. + + + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION + ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION + + + + No documentation. + + + ERROR_VOLMGR_DATABASE_FULL + ERROR_VOLMGR_DATABASE_FULL + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED + ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC + ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED + ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME + ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME + + + + No documentation. + + + ERROR_VOLMGR_DISK_DUPLICATE + ERROR_VOLMGR_DISK_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_DISK_DYNAMIC + ERROR_VOLMGR_DISK_DYNAMIC + + + + No documentation. + + + ERROR_VOLMGR_DISK_ID_INVALID + ERROR_VOLMGR_DISK_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_INVALID + ERROR_VOLMGR_DISK_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAST_VOTER + ERROR_VOLMGR_DISK_LAST_VOTER + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_INVALID + ERROR_VOLMGR_DISK_LAYOUT_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED + ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL + ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS + ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS + + + + No documentation. + + + ERROR_VOLMGR_DISK_MISSING + ERROR_VOLMGR_DISK_MISSING + + + + No documentation. + + + ERROR_VOLMGR_DISK_NOT_EMPTY + ERROR_VOLMGR_DISK_NOT_EMPTY + + + + No documentation. + + + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE + ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE + + + + No documentation. + + + ERROR_VOLMGR_DISK_REVECTORING_FAILED + ERROR_VOLMGR_DISK_REVECTORING_FAILED + + + + No documentation. + + + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID + ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED + ERROR_VOLMGR_DISK_SET_NOT_CONTAINED + + + + No documentation. + + + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS + + + + No documentation. + + + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES + ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES + + + + No documentation. + + + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED + ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_ALREADY_USED + ERROR_VOLMGR_EXTENT_ALREADY_USED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS + ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION + ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED + ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION + ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION + + + + No documentation. + + + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH + ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH + + + + No documentation. + + + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED + ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID + ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS + ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_IN_SYNC + ERROR_VOLMGR_MEMBER_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE + ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_INDEX_INVALID + ERROR_VOLMGR_MEMBER_INDEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_MISSING + ERROR_VOLMGR_MEMBER_MISSING + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_NOT_DETACHED + ERROR_VOLMGR_MEMBER_NOT_DETACHED + + + + No documentation. + + + ERROR_VOLMGR_MEMBER_REGENERATING + ERROR_VOLMGR_MEMBER_REGENERATING + + + + No documentation. + + + ERROR_VOLMGR_ALL_DISKS_FAILED + ERROR_VOLMGR_ALL_DISKS_FAILED + + + + No documentation. + + + ERROR_VOLMGR_NO_REGISTERED_USERS + ERROR_VOLMGR_NO_REGISTERED_USERS + + + + No documentation. + + + ERROR_VOLMGR_NO_SUCH_USER + ERROR_VOLMGR_NO_SUCH_USER + + + + No documentation. + + + ERROR_VOLMGR_NOTIFICATION_RESET + ERROR_VOLMGR_NOTIFICATION_RESET + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID + ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID + ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_DUPLICATE + ERROR_VOLMGR_PACK_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_PACK_ID_INVALID + ERROR_VOLMGR_PACK_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_INVALID + ERROR_VOLMGR_PACK_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_NAME_INVALID + ERROR_VOLMGR_PACK_NAME_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PACK_OFFLINE + ERROR_VOLMGR_PACK_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_PACK_HAS_QUORUM + ERROR_VOLMGR_PACK_HAS_QUORUM + + + + No documentation. + + + ERROR_VOLMGR_PACK_WITHOUT_QUORUM + ERROR_VOLMGR_PACK_WITHOUT_QUORUM + + + + No documentation. + + + ERROR_VOLMGR_PARTITION_STYLE_INVALID + ERROR_VOLMGR_PARTITION_STYLE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PARTITION_UPDATE_FAILED + ERROR_VOLMGR_PARTITION_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_PLEX_IN_SYNC + ERROR_VOLMGR_PLEX_IN_SYNC + + + + No documentation. + + + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE + ERROR_VOLMGR_PLEX_INDEX_DUPLICATE + + + + No documentation. + + + ERROR_VOLMGR_PLEX_INDEX_INVALID + ERROR_VOLMGR_PLEX_INDEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PLEX_LAST_ACTIVE + ERROR_VOLMGR_PLEX_LAST_ACTIVE + + + + No documentation. + + + ERROR_VOLMGR_PLEX_MISSING + ERROR_VOLMGR_PLEX_MISSING + + + + No documentation. + + + ERROR_VOLMGR_PLEX_REGENERATING + ERROR_VOLMGR_PLEX_REGENERATING + + + + No documentation. + + + ERROR_VOLMGR_PLEX_TYPE_INVALID + ERROR_VOLMGR_PLEX_TYPE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_RAID5 + ERROR_VOLMGR_PLEX_NOT_RAID5 + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_SIMPLE + ERROR_VOLMGR_PLEX_NOT_SIMPLE + + + + No documentation. + + + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID + ERROR_VOLMGR_STRUCTURE_SIZE_INVALID + + + + No documentation. + + + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS + ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS + + + + No documentation. + + + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS + ERROR_VOLMGR_TRANSACTION_IN_PROGRESS + + + + No documentation. + + + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE + ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK + ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_ID_INVALID + ERROR_VOLMGR_VOLUME_ID_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_LENGTH_INVALID + ERROR_VOLMGR_VOLUME_LENGTH_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE + ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_NOT_MIRRORED + ERROR_VOLMGR_VOLUME_NOT_MIRRORED + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_NOT_RETAINED + ERROR_VOLMGR_VOLUME_NOT_RETAINED + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_OFFLINE + ERROR_VOLMGR_VOLUME_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_RETAINED + ERROR_VOLMGR_VOLUME_RETAINED + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID + ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE + ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE + + + + No documentation. + + + ERROR_VOLMGR_BAD_BOOT_DISK + ERROR_VOLMGR_BAD_BOOT_DISK + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_OFFLINE + ERROR_VOLMGR_PACK_CONFIG_OFFLINE + + + + No documentation. + + + ERROR_VOLMGR_PACK_CONFIG_ONLINE + ERROR_VOLMGR_PACK_CONFIG_ONLINE + + + + No documentation. + + + ERROR_VOLMGR_NOT_PRIMARY_PACK + ERROR_VOLMGR_NOT_PRIMARY_PACK + + + + No documentation. + + + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED + ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID + + + + No documentation. + + + ERROR_VOLMGR_VOLUME_MIRRORED + ERROR_VOLMGR_VOLUME_MIRRORED + + + + No documentation. + + + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED + ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED + + + + No documentation. + + + ERROR_VOLMGR_NO_VALID_LOG_COPIES + ERROR_VOLMGR_NO_VALID_LOG_COPIES + + + + No documentation. + + + ERROR_VOLMGR_PRIMARY_PACK_PRESENT + ERROR_VOLMGR_PRIMARY_PACK_PRESENT + + + + No documentation. + + + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID + ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID + + + + No documentation. + + + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED + ERROR_VOLMGR_MIRROR_NOT_SUPPORTED + + + + No documentation. + + + ERROR_VOLMGR_RAID5_NOT_SUPPORTED + ERROR_VOLMGR_RAID5_NOT_SUPPORTED + + + + No documentation. + + + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED + ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED + + + + No documentation. + + + ERROR_BCD_TOO_MANY_ELEMENTS + ERROR_BCD_TOO_MANY_ELEMENTS + + + + No documentation. + + + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED + ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_MISSING + ERROR_VHD_DRIVE_FOOTER_MISSING + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH + ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH + + + + No documentation. + + + ERROR_VHD_DRIVE_FOOTER_CORRUPT + ERROR_VHD_DRIVE_FOOTER_CORRUPT + + + + No documentation. + + + ERROR_VHD_FORMAT_UNKNOWN + ERROR_VHD_FORMAT_UNKNOWN + + + + No documentation. + + + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION + ERROR_VHD_FORMAT_UNSUPPORTED_VERSION + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH + ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION + ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION + + + + No documentation. + + + ERROR_VHD_SPARSE_HEADER_CORRUPT + ERROR_VHD_SPARSE_HEADER_CORRUPT + + + + No documentation. + + + ERROR_VHD_BLOCK_ALLOCATION_FAILURE + ERROR_VHD_BLOCK_ALLOCATION_FAILURE + + + + No documentation. + + + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT + ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT + + + + No documentation. + + + ERROR_VHD_INVALID_BLOCK_SIZE + ERROR_VHD_INVALID_BLOCK_SIZE + + + + No documentation. + + + ERROR_VHD_BITMAP_MISMATCH + ERROR_VHD_BITMAP_MISMATCH + + + + No documentation. + + + ERROR_VHD_PARENT_VHD_NOT_FOUND + ERROR_VHD_PARENT_VHD_NOT_FOUND + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_ID_MISMATCH + ERROR_VHD_CHILD_PARENT_ID_MISMATCH + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH + ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH + + + + No documentation. + + + ERROR_VHD_METADATA_READ_FAILURE + ERROR_VHD_METADATA_READ_FAILURE + + + + No documentation. + + + ERROR_VHD_METADATA_WRITE_FAILURE + ERROR_VHD_METADATA_WRITE_FAILURE + + + + No documentation. + + + ERROR_VHD_INVALID_SIZE + ERROR_VHD_INVALID_SIZE + + + + No documentation. + + + ERROR_VHD_INVALID_FILE_SIZE + ERROR_VHD_INVALID_FILE_SIZE + + + + No documentation. + + + ERROR_VIRTDISK_PROVIDER_NOT_FOUND + ERROR_VIRTDISK_PROVIDER_NOT_FOUND + + + + No documentation. + + + ERROR_VIRTDISK_NOT_VIRTUAL_DISK + ERROR_VIRTDISK_NOT_VIRTUAL_DISK + + + + No documentation. + + + ERROR_VHD_PARENT_VHD_ACCESS_DENIED + ERROR_VHD_PARENT_VHD_ACCESS_DENIED + + + + No documentation. + + + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH + ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH + + + + No documentation. + + + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED + ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED + + + + No documentation. + + + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT + ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT + + + + No documentation. + + + ERROR_VIRTUAL_DISK_LIMITATION + ERROR_VIRTUAL_DISK_LIMITATION + + + + No documentation. + + + ERROR_VHD_INVALID_TYPE + ERROR_VHD_INVALID_TYPE + + + + No documentation. + + + ERROR_VHD_INVALID_STATE + ERROR_VHD_INVALID_STATE + + + + No documentation. + + + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE + ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE + + + + No documentation. + + + ERROR_VIRTDISK_DISK_ALREADY_OWNED + ERROR_VIRTDISK_DISK_ALREADY_OWNED + + + + No documentation. + + + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE + ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE + + + + No documentation. + + + ERROR_CTLOG_TRACKING_NOT_INITIALIZED + ERROR_CTLOG_TRACKING_NOT_INITIALIZED + + + + No documentation. + + + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE + ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE + + + + No documentation. + + + ERROR_CTLOG_VHD_CHANGED_OFFLINE + ERROR_CTLOG_VHD_CHANGED_OFFLINE + + + + No documentation. + + + ERROR_CTLOG_INVALID_TRACKING_STATE + ERROR_CTLOG_INVALID_TRACKING_STATE + + + + No documentation. + + + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE + ERROR_CTLOG_INCONSISTENT_TRACKING_FILE + + + + No documentation. + + + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA + ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA + + + + No documentation. + + + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE + ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE + + + + No documentation. + + + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE + ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE + + + + No documentation. + + + ERROR_VHD_METADATA_FULL + ERROR_VHD_METADATA_FULL + + + + No documentation. + + + ERROR_QUERY_STORAGE_ERROR + ERROR_QUERY_STORAGE_ERROR + + + + No documentation. + + + ERROR_SPACES_POOL_WAS_DELETED + ERROR_SPACES_POOL_WAS_DELETED + + + + No documentation. + + + ERROR_SPACES_RESILIENCY_TYPE_INVALID + ERROR_SPACES_RESILIENCY_TYPE_INVALID + + + + No documentation. + + + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID + ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID + + + + No documentation. + + + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID + ERROR_SPACES_DRIVE_REDUNDANCY_INVALID + + + + No documentation. + + + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID + ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID + + + + No documentation. + + + ERROR_SPACES_PARITY_LAYOUT_INVALID + ERROR_SPACES_PARITY_LAYOUT_INVALID + + + + No documentation. + + + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID + ERROR_SPACES_INTERLEAVE_LENGTH_INVALID + + + + No documentation. + + + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID + ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID + + + + No documentation. + + + ERROR_SPACES_NOT_ENOUGH_DRIVES + ERROR_SPACES_NOT_ENOUGH_DRIVES + + + + No documentation. + + + ERROR_VOLSNAP_BOOTFILE_NOT_VALID + ERROR_VOLSNAP_BOOTFILE_NOT_VALID + + + + No documentation. + + + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN + ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN + + + + No documentation. + + + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN + ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN + + + + No documentation. + + + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN + ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN + + + + No documentation. + + + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN + ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN + + + +

    The + enumeration values indicate the type of locking requested for the specified range of bytes. The values are used in the + ILockBytes::LockRegion and + methods.

    +
    + + aa380048 + LOCKTYPE + LOCKTYPE +
    + + + No documentation. + + + LOCK_WRITE + LOCK_WRITE + + + + No documentation. + + + LOCK_EXCLUSIVE + LOCK_EXCLUSIVE + + + + No documentation. + + + LOCK_ONLYONCE + LOCK_ONLYONCE + + + +

    The + enumeration values indicate whether the method should try to return a name in the pwcsName member of the + structure. The values are used in the + ILockBytes::Stat, + IStorage::Stat, and + methods to save memory when the pwcsName member is not required.

    +
    + + aa380316 + STATFLAG + STATFLAG +
    + + + No documentation. + + + STATFLAG_DEFAULT + STATFLAG_DEFAULT + + + + No documentation. + + + STATFLAG_NONAME + STATFLAG_NONAME + + + + None. + + + None + None + + + +

    The + interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.

    The + interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an + interface reference rather than a file handle.

    The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.

    Streams can remain open for long periods of time without consuming file-system resources. The IUnknown::Release method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.

    Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous + IMoniker::BindToStorage operation and for receiving asynchronous notifications. See + URL Monikers for more information. The following table compares the behavior of asynchronous + and + calls returned in IBindStatusCallback::OnDataAvailable in these two download models:

    +
    + + aa380034 + IStream + IStream +
    + + +

    The + interface supports simplified sequential access to stream objects. The + interface inherits its + Read and + Write methods from + .

    +
    + + aa380010 + ISequentialStream + ISequentialStream +
    + + +

    The + interface supports simplified sequential access to stream objects. The + interface inherits its + Read and + Write methods from + .

    +
    + + aa380010 + ISequentialStream + ISequentialStream +
    + + + Reads a specified number of bytes from the stream object into memory starting at the current seek pointer. + + The read buffer. + The number of bytes to read. + The actual number of bytes read from the stream object. + + + + Writes a specified number of bytes into the stream object starting at the current seek pointer. + + The buffer. + The number of bytes to read. + The actual number of bytes written to the stream object + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    The Read method reads a specified number of bytes from the stream object into memory, starting at the current seek reference.

    +
    +

    A reference to the buffer which the stream data is read into.

    +

    The number of bytes of data to read from the stream object.

    +

    A reference to a ULONG variable that receives the actual number of bytes read from the stream object.

    Note??The number of bytes read may be zero.

    + +

    This method reads bytes from this stream object into memory. The stream object must be opened in STGM_READ mode. This method adjusts the seek reference by the actual number of bytes read.

    The number of bytes actually read is also returned in the pcbRead parameter.

    Notes to Callers

    The actual number of bytes read can be less than the number of bytes requested if an error occurs or if the end of the stream is reached during the read operation. The number of bytes returned should always be compared to the number of bytes requested. If the number of bytes returned is less than the number of bytes requested, it usually means the Read method attempted to read past the end of the stream.

    The application should handle both a returned error and return values on end-of-stream read operations.

    +
    + + aa380011 + HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead) + ISequentialStream::Read +
    + + +

    The Write method writes a specified number of bytes into the stream object starting at the current seek reference.

    +
    +

    A reference to the buffer that contains the data that is to be written to the stream. A valid reference must be provided for this parameter even when cb is zero.

    +

    The number of bytes of data to attempt to write into the stream. This value can be zero.

    +

    A reference to a ULONG variable where this method writes the actual number of bytes written to the stream object. The caller can set this reference to null, in which case this method does not provide the actual number of bytes written.

    + +

    writes the specified data to a stream object. The seek reference is adjusted for the number of bytes actually written. The number of bytes actually written is returned in the pcbWritten parameter. If the byte count is zero bytes, the write operation has no effect.

    If the seek reference is currently past the end of the stream and the byte count is nonzero, this method increases the size of the stream to the seek reference and writes the specified bytes starting at the seek reference. The fill bytes written to the stream are not initialized to any particular value. This is the same as the end-of-file behavior in the MS-DOS FAT file system.

    With a zero byte count and a seek reference past the end of the stream, this method does not create the fill bytes to increase the stream to the seek reference. In this case, you must call the + method to increase the size of the stream and write the fill bytes.

    The pcbWritten parameter can have a value even if an error occurs.

    In the COM-provided implementation, stream objects are not sparse. Any fill bytes are eventually allocated on the disk and assigned to the stream.

    +
    + + aa380014 + HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten) + ISequentialStream::Write +
    + + +

    The + interface lets you read and write data to stream objects. Stream objects contain the data in a structured storage object, where storages provide the structure. Simple data can be written directly to a stream but, most frequently, streams are elements nested within a storage object. They are similar to standard files.

    The + interface defines methods similar to the MS-DOS FAT file functions. For example, each stream object has its own access rights and a seek reference. The main difference between a DOS file and a stream object is that in the latter case, streams are opened using an + interface reference rather than a file handle.

    The methods in this interface present your object's data as a contiguous sequence of bytes that you can read or write. There are also methods for committing and reverting changes on streams that are open in transacted mode and methods for restricting access to a range of bytes in the stream.

    Streams can remain open for long periods of time without consuming file-system resources. The IUnknown::Release method is similar to a close function on a file. Once released, the stream object is no longer valid and cannot be used.

    Clients of asynchronous monikers can choose between a data-pull or data-push model for driving an asynchronous + IMoniker::BindToStorage operation and for receiving asynchronous notifications. See + URL Monikers for more information. The following table compares the behavior of asynchronous + and + calls returned in IBindStatusCallback::OnDataAvailable in these two download models:

    +
    + + aa380034 + IStream + IStream +
    + + + Changes the seek pointer to a new location relative to the beginning of the stream, to the end of the stream, or to the current seek pointer. + + The offset. + The origin. + The offset of the seek pointer from the beginning of the stream. + + + + Changes the size of the stream object. + + The new size. + + + + Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream. + + The stream destination. + The number of bytes to copy. + The number of bytes written. + The number of bytes read + + + + Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, Commit has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode. + + The GRF commit flags. + + + + Discards all changes that have been made to a transacted stream since the last call. + + + + + Restricts access to a specified range of bytes in the stream. + + The offset. + The number of bytes to lock. + Type of the dw lock. + + + + Unlocks access to a specified range of bytes in the stream. + + The offset. + The number of bytes to lock. + Type of the dw lock. + + + + Gets the statistics. + + The storage statistics flags. + + + + + Clones this instance. + + + + + + Initializes a new instance of the class. + + The native pointer. + + + + Performs an explicit conversion from to . (This method is a shortcut to ) + + The native pointer. + + The result of the conversion. + + + + +

    The Seek method changes the seek reference to a new location. The new location is relative to either the beginning of the stream, the end of the stream, or the current seek reference.

    +
    +

    The displacement to be added to the location indicated by the dwOrigin parameter. If dwOrigin is STREAM_SEEK_SET, this is interpreted as an unsigned value rather than a signed value.

    +

    The origin for the displacement specified in dlibMove. The origin can be the beginning of the file (STREAM_SEEK_SET), the current seek reference (STREAM_SEEK_CUR), or the end of the file (STREAM_SEEK_END). For more information about values, see the STREAM_SEEK enumeration.

    +

    A reference to the location where this method writes the value of the new seek reference from the beginning of the stream.

    You can set this reference to null. In this case, this method does not provide the new seek reference.

    + +

    changes the seek reference so that subsequent read and write operations can be performed at a different location in the stream object. It is an error to seek before the beginning of the stream. It is not, however, an error to seek past the end of the stream. Seeking past the end of the stream is useful for subsequent write operations, as the stream byte range will be extended to the new seek position immediately before the write is complete.

    You can also use this method to obtain the current value of the seek reference by calling this method with the dwOrigin parameter set to STREAM_SEEK_CUR and the dlibMove parameter set to 0 so that the seek reference is not changed. The current seek reference is returned in the plibNewPosition parameter.

    +
    + + aa380043 + HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition) + IStream::Seek +
    + + +

    The SetSize method changes the size of the stream object.

    +
    +

    Specifies the new size of the stream as a number of bytes.

    +

    This method can return one of the following values.

    The size of the stream object was successfully changed.

    E_PENDING

    Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

    STG_E_MEDIUMFULL

    The stream size is not changed because there is no space left on the storage device.

    STG_E_INVALIDFUNCTION

    The value of the libNewSize parameter is not valid. Since streams cannot be greater than 232 bytes in the COM-provided implementation, the high DWORD data type of libNewSize must be 0. If it is nonzero, this parameter is not valid.

    STG_E_REVERTED

    The object has been invalidated by a revert operation above it in the transaction tree.

    + +

    changes the size of the stream object. Call this method to preallocate space for the stream. If the libNewSize parameter is larger than the current stream size, the stream is extended to the indicated size by filling the intervening space with bytes of undefined value. This operation is similar to the + method if the seek reference is past the current end of stream.

    If the libNewSize parameter is smaller than the current stream, the stream is truncated to the indicated size.

    The seek reference is not affected by the change in stream size.

    Calling can be an effective way to obtain a large chunk of contiguous space.

    +
    + + aa380044 + HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize) + IStream::SetSize +
    + + +

    The CopyTo method copies a specified number of bytes from the current seek reference in the stream to the current seek reference in another stream.

    +
    +

    A reference to the destination stream. The stream pointed to by pstm can be a new stream or a clone of the source stream.

    +

    The number of bytes to copy from the source stream.

    +

    A reference to the location where this method writes the actual number of bytes written to the destination. You can set this reference to null. In this case, this method does not provide the actual number of bytes written.

    +

    A reference to the location where this method writes the actual number of bytes read from the source. You can set this reference to null. In this case, this method does not provide the actual number of bytes read.

    + +

    The CopyTo method copies the specified bytes from one stream to another. It can also be used to copy a stream to itself. The seek reference in each stream instance is adjusted for the number of bytes read or written. This method is equivalent to reading cb bytes into memory using + and then immediately writing them to the destination stream using + , although will be more efficient.

    The destination stream can be a clone of the source stream created by calling the + method.

    If returns an error, you cannot assume that the seek references are valid for either the source or destination. Additionally, the values of pcbRead and pcbWritten are not meaningful even though they are returned.

    If returns successfully, the actual number of bytes read and written are the same.

    To copy the remainder of the source from the current seek reference, specify the maximum large integer value for the cb parameter. If the seek reference is the beginning of the stream, this operation copies the entire stream.

    +
    + + aa380038 + HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out] ULARGE_INTEGER* pcbRead,[Out] ULARGE_INTEGER* pcbWritten) + IStream::CopyTo +
    + + +

    The Commit method ensures that any changes made to a stream object open in transacted mode are reflected in the parent storage. If the stream object is open in direct mode, has no effect other than flushing all memory buffers to the next-level storage object. The COM compound file implementation of streams does not support opening streams in transacted mode.

    +
    +

    Controls how the changes for the stream object are committed. See the enumeration for a definition of these values.

    +

    This method can return one of the following values.

    Changes to the stream object were successfully committed to the parent level.

    E_PENDING

    Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

    STG_E_MEDIUMFULL

    The commit operation failed due to lack of space on the storage device.

    STG_E_REVERTED

    The object has been invalidated by a revert operation above it in the transaction tree.

    + +

    The Commit method ensures that changes to a stream object opened in transacted mode are reflected in the parent storage. Changes that have been made to the stream since it was opened or last committed are reflected to the parent storage object. If the parent is opened in transacted mode, the parent may revert at a later time, rolling back the changes to this stream object. The compound file implementation does not support the opening of streams in transacted mode, so this method has very little effect other than to flush memory buffers. For more information, see + - Compound File Implementation.

    If the stream is open in direct mode, this method ensures that any memory buffers have been flushed out to the underlying storage object. This is much like a flush in traditional file systems.

    The method is useful on a direct mode stream when the implementation of the + interface is a wrapper for underlying file system APIs. In this case, would be connected to the file system's flush call.

    +
    + + aa380036 + HRESULT IStream::Commit([In] STGC grfCommitFlags) + IStream::Commit +
    + + +

    The Revert method discards all changes that have been made to a transacted stream since the last + call. On streams open in direct mode and streams using the COM compound file implementation of , this method has no effect.

    +
    +

    This method can return one of the following values.

    The stream was successfully reverted to its previous version.

    E_PENDING

    Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information see IFillLockBytes and Asynchronous Storage.

    + +

    The Revert method discards changes made to a transacted stream since the last commit operation.

    +
    + + aa380042 + HRESULT IStream::Revert() + IStream::Revert +
    + + +

    The LockRegion method restricts access to a specified range of bytes in the stream. Supporting this functionality is optional since some file systems do not provide it.

    +
    +

    Integer that specifies the byte offset for the beginning of the range.

    +

    Integer that specifies the length of the range, in bytes, to be restricted.

    +

    Specifies the restrictions being requested on accessing the range.

    +

    This method can return one of the following values.

    The specified range of bytes was locked.

    E_PENDING

    Asynchronous Storage only: Part or all of the stream's data is currently unavailable. For more information, see IFillLockBytes and Asynchronous Storage.

    STG_E_INVALIDFUNCTION

    Locking is not supported at all or the specific type of lock requested is not supported.

    STG_E_LOCKVIOLATION

    Requested lock is supported, but cannot be granted because of an existing lock.

    STG_E_REVERTED

    The object has been invalidated by a revert operation above it in the transaction tree.

    + +

    The byte range of the stream can be extended. Locking an extended range for the stream is useful as a method of communication between different instances of the stream without changing data that is actually part of the stream.

    Three types of locking can be supported: locking to exclude other writers, locking to exclude other readers or writers, and locking that allows only one requester to obtain a lock on the given range, which is usually an alias for one of the other two lock types. A given stream instance might support either of the first two types, or both. The lock type is specified by dwLockType, using a value from the + enumeration.

    Any region locked with must later be explicitly unlocked by calling + with exactly the same values for the libOffset, cb, and dwLockType parameters. The region must be unlocked before the stream is released. Two adjacent regions cannot be locked separately and then unlocked with a single unlock call.

    Notes to Callers

    Since the type of locking supported is optional and can vary in different implementations of + , you must provide code to deal with the STG_E_INVALIDFUNCTION error.

    The LockRegion method has no effect in the compound file implementation, because the implementation does not support range locking.

    Notes to Implementers

    Support for this method is optional for implementations of stream objects since it may not be supported by the underlying file system. The type of locking supported is also optional. The STG_E_INVALIDFUNCTION error is returned if the requested type of locking is not supported.

    +
    + + aa380039 + HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + IStream::LockRegion +
    + + + No documentation. + + No documentation. + No documentation. + No documentation. + No documentation. + + HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + IStream::UnlockRegion + + + +

    The Stat method retrieves the + structure for this stream.

    +
    + No documentation. + No documentation. + +

    retrieves a reference to the + structure that contains information about this open stream. When this stream is within a structured storage and + IStorage::EnumElements is called, it creates an enumerator object with the + IEnumSTATSTG interface on it, which can be called to enumerate the storages and streams through the + structures associated with each of them.

    +
    + + aa380045 + HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag) + IStream::Stat +
    + + +

    The Clone method creates a new stream object with its own seek reference that references the same bytes as the original stream.

    +
    +

    When successful, reference to the location of an reference to the new stream object. If an error occurs, this parameter is null.

    + +

    The Clone method creates a new stream object for accessing the same bytes but using a separate seek reference. The new stream object sees the same data as the source-stream object. Changes written to one object are immediately visible in the other. Range locking is shared between the stream objects.

    The initial setting of the seek reference in the cloned stream instance is the same as the current setting of the seek reference in the original stream at the time of the clone operation.

    +
    + + aa380035 + HRESULT IStream::Clone([Out] IStream** ppstm) + IStream::Clone +
    + + + Copies a specified number of bytes from the current seek pointer in the stream to the current seek pointer in another stream. + + The stream destination. + The number of bytes to copy. + The bytes written. + The number of bytes read from this instance + + + + Gets a com pointer to the underlying object. + + The stream. + A Com pointer + + + +

    The + structure contains statistical data about an open storage, stream, or byte-array object. This structure is used in the + IEnumSTATSTG, + ILockBytes, + IStorage, and + interfaces.

    +
    + + aa380319 + STATSTG + STATSTG +
    + + + No documentation. + + + wchar_t* pwcsName + wchar_t pwcsName + + + + No documentation. + + + unsigned int type + unsigned int type + + + + No documentation. + + + ULARGE_INTEGER cbSize + ULARGE_INTEGER cbSize + + + + No documentation. + + + FILETIME mtime + FILETIME mtime + + + + No documentation. + + + FILETIME ctime + FILETIME ctime + + + + No documentation. + + + FILETIME atime + FILETIME atime + + + + No documentation. + + + unsigned int grfMode + unsigned int grfMode + + + + No documentation. + + + unsigned int grfLocksSupported + unsigned int grfLocksSupported + + + + No documentation. + + + GUID clsid + GUID clsid + + + + No documentation. + + + unsigned int grfStateBits + unsigned int grfStateBits + + + + No documentation. + + + unsigned int reserved + unsigned int reserved + + + + A half precision (16 bit) floating point value. + + + + + Number of decimal digits of precision. + + + + + Number of bits in the mantissa. + + + + + Maximum decimal exponent. + + + + + Maximum binary exponent. + + + + + Minimum decimal exponent. + + + + + Minimum binary exponent. + + + + + Exponent radix. + + + + + Additional rounding. + + + + + Smallest such that 1.0 + epsilon != 1.0 + + + + + Maximum value of the number. + + + + + Minimum value of the number. + + + + + Initializes a new instance of the structure. + + The floating point value that should be stored in 16 bit format. + + + + Converts an array of half precision values into full precision values. + + The values to be converted. + An array of converted values. + + + + Converts an array of full precision values into half precision values. + + The values to be converted. + An array of converted values. + + + + Performs an explicit conversion from to . + + The value to be converted. + The converted value. + + + + Performs an implicit conversion from to . + + The value to be converted. + The converted value. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Converts the value of the object to its equivalent string representation. + + The string representation of the value of this instance. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Gets or sets the raw 16 bit value used to back this half-float. + + + + + Defines a two component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + + + + Initializes a new instance of the structure. + + The value to set for both the X and Y components. + + + + 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. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Defines a three component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Gets or sets the Z component of the vector. + + The Z component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + + + + Initializes a new instance of the structure. + + The value to set for the X, Y, and Z components. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit 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. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Defines a four component vector, using half precision floating point coordinates. + + + + + Gets or sets the X component of the vector. + + The X component of the vector. + + + + Gets or sets the Y component of the vector. + + The Y component of the vector. + + + + Gets or sets the Z component of the vector. + + The Z component of the vector. + + + + Gets or sets the W component of the vector. + + The W component of the vector. + + + + Initializes a new instance of the structure. + + The X component. + The Y component. + The Z component. + The W component. + + + + Initializes a new instance of the structure. + + The value to set for the X, Y, Z, and W components. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit 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. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + + true if has a different value than ; otherwise, false. + + + + Returns the hash code for this instance. + + A 32-bit signed integer hash code. + + + + + + + Determines whether the specified object instances are considered equal. + + + + + true if is the same instance as or + if both are null references or if value1.Equals(value2) returns true; otherwise, false. + + + + Returns a value that indicates whether the current instance is equal to the specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + Object to make the comparison with. + + true if the current instance is equal to the specified object; false otherwise. + + + + Helper class to perform Half/Float conversion. + Code extract from paper : www.fox-toolkit.org/ftp/fasthalffloatconversion.pdf by Jeroen van der Zijp + + + + + Unpacks the specified h. + + The h. + + + + + Packs the specified f. + + The f. + + + + + Represents a four dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0, 0). + + + + + The Y unit (0, 1, 0, 0). + + + + + The Z unit (0, 0, 1, 0). + + + + + The W unit (0, 0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchange). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Performs an implicit conversion from array to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to array. + + The input. + The result of the conversion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + The implementation of this class is filled by InteropBuilder post-building-event. + + + + + Provides a fixed statement working with generics. + + + The data. + A fixed pointer to the referenced structure + + This is the only function in this class that is inlined in order to inline the fixed statement correctly. + + + + + The value for which all absolute numbers smaller than are considered equal to zero. + + + + + A value specifying the approximation of π which is 180 degrees. + + + + + A value specifying the approximation of 2π which is 360 degrees. + + + + + A value specifying the approximation of π/2 which is 90 degrees. + + + + + A value specifying the approximation of π/4 which is 45 degrees. + + + + + Checks if a - b are almost equals within a float epsilon. + + The left value to compare. + The right value to compare. + true if a almost equal to b within a float epsilon, false otherwise + + + + Does something with arrays. + + Most likely the type of elements in the array. + Who knows what this is for. + Probably the length of the array. + An array of who knows what. + + + + Converts revolutions to degrees. + + The value to convert. + The converted value. + + + + Converts revolutions to radians. + + The value to convert. + The converted value. + + + + Converts revolutions to gradians. + + The value to convert. + The converted value. + + + + Converts degrees to revolutions. + + The value to convert. + The converted value. + + + + Converts degrees to radians. + + The value to convert. + The converted value. + + + + Converts radians to revolutions. + + The value to convert. + The converted value. + + + + Converts radians to gradians. + + The value to convert. + The converted value. + + + + Converts gradians to revolutions. + + The value to convert. + The converted value. + + + + Converts gradians to degrees. + + The value to convert. + The converted value. + + + + Converts gradians to radians. + + The value to convert. + The converted value. + + + + Converts radians to degrees. + + The value to convert. + The converted value. + + + + Clamps the specified value. + + The value. + The min. + The max. + The result of clamiping a value between min and max + + + + Clamps the specified value. + + The value. + The min. + The max. + The result of clamiping a value between min and max + + + + Calculates the modulo of the specified value. + + The value. + The modulo. + The result of the modulo applied to value + + + + Calculates the modulo 2*PI of the specified value. + + The value. + The result of the modulo applied to value + + + + Wraps the specified value into a range. + + The value to wrap. + The min. + The max. + Result of the wrapping. + + + + Wraps the specified value into a range. + + The value. + The min. + The max. + Result of the wrapping. + + + + Gauss function. + + Curve amplitude. + Position X. + Position Y + Radius X. + Radius Y. + Curve sigma X. + Curve sigma Y. + The result of gaussian function. + + + + Gauss function. + + Curve amplitude. + Position X. + Position Y + Radius X. + Radius Y. + Curve sigma X. + Curve sigma Y. + The result of gaussian function. + + + + Get random float number within range. + + Current . + Minimum. + Maximum. + Random float number. + + + + Get random double number within range. + + Current . + Minimum. + Maximum. + Random double number. + + + + Get random long number. + + Current . + Random long number. + + + + Get random long number. + + Current . + Minimum. + Maximum. + Random long number. + + + + Get random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Get random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Get random within range. + + Current . + Minimum. + Maximum. + Random . + + + + Get random opaque + + Current . + Random . + + + + Get random opaque + + Current . + Minimum brightness. + Maximum brightness + Random . + + + + Get random . + + Current . + Minimum brightness. + Maximum brightness + Alpha value. + Random . + + + + Get random . + + Current . + Minimum brightness. + Maximum brightness + Minimum alpha. + Maximum alpha. + Random . + + + + Get random . + + Current . + Minimum. + Maximum. + Random . + + + + Get random . + + Current . + Minimum. + Maximum. + Random . + + + + Get random . + + Current . + Minimum. + Maximum. + Random . + + + + Represents a 4x4 mathematical matrix. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The identity . + + + + + Value at row 1 column 1 of the matrix. + + + + + Value at row 1 column 2 of the matrix. + + + + + Value at row 1 column 3 of the matrix. + + + + + Value at row 1 column 4 of the matrix. + + + + + Value at row 2 column 1 of the matrix. + + + + + Value at row 2 column 2 of the matrix. + + + + + Value at row 2 column 3 of the matrix. + + + + + Value at row 2 column 4 of the matrix. + + + + + Value at row 3 column 1 of the matrix. + + + + + Value at row 3 column 2 of the matrix. + + + + + Value at row 3 column 3 of the matrix. + + + + + Value at row 3 column 4 of the matrix. + + + + + Value at row 4 column 1 of the matrix. + + + + + Value at row 4 column 2 of the matrix. + + + + + Value at row 4 column 3 of the matrix. + + + + + Value at row 4 column 4 of the matrix. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The value to assign at row 1 column 1 of the matrix. + The value to assign at row 1 column 2 of the matrix. + The value to assign at row 1 column 3 of the matrix. + The value to assign at row 1 column 4 of the matrix. + The value to assign at row 2 column 1 of the matrix. + The value to assign at row 2 column 2 of the matrix. + The value to assign at row 2 column 3 of the matrix. + The value to assign at row 2 column 4 of the matrix. + The value to assign at row 3 column 1 of the matrix. + The value to assign at row 3 column 2 of the matrix. + The value to assign at row 3 column 3 of the matrix. + The value to assign at row 3 column 4 of the matrix. + The value to assign at row 4 column 1 of the matrix. + The value to assign at row 4 column 2 of the matrix. + The value to assign at row 4 column 3 of the matrix. + The value to assign at row 4 column 4 of the matrix. + + + + Initializes a new instance of the struct. + + The values to assign to the components of the matrix. This must be an array with sixteen elements. + Thrown when is null. + Thrown when contains more or less than sixteen elements. + + + + Calculates the determinant of the matrix. + + The determinant of the matrix. + + + + Inverts the matrix. + + + + + Transposes the matrix. + + + + + Orthogonalizes the specified matrix. + + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Decomposes a matrix into an orthonormalized matrix Q and a right traingular matrix R. + + When the method completes, contains the orthonormalized matrix of the decomposition. + When the method completes, contains the right triangular matrix of the decomposition. + + + + Decomposes a matrix into a lower triangular matrix L and an orthonormalized matrix Q. + + When the method completes, contains the lower triangular matrix of the decomposition. + When the method completes, contains the orthonormalized matrix of the decomposition. + + + + Decomposes a matrix into a scale, rotation, and translation. + + When the method completes, contains the scaling component of the decomposed matrix. + When the method completes, contains the rtoation component of the decomposed matrix. + When the method completes, contains the translation component of the decomposed matrix. + + This method is designed to decompose an SRT transformation matrix only. + + + + + Exchanges two rows in the matrix. + + The first row to exchange. This is an index of the row starting at zero. + The second row to exchange. This is an index of the row starting at zero. + + + + + + + + + + + Creates an array containing the elements of the matrix. + + A sixteen-element array containing the components of the matrix. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + When the method completes, contains the sum of the two matrices. + + + + Determines the sum of two matrices. + + The first matrix to add. + The second matrix to add. + The sum of the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + When the method completes, contains the difference between the two matrices. + + + + Determines the difference between two matrices. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Determines the product of two matrices. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matrices. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + When the method completes, contains the scaled matrix. + + + + Scales a matrix by the given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + When the method completes, contains the quotient of the two matrices. + + + + Determines the quotient of two matrices. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matrices. + + + + Performs the exponential operation on a matrix. + + The matrix to perform the operation on. + The exponent to raise the matrix to. + When the method completes, contains the exponential matrix. + Thrown when the is negative. + + + + Performs the exponential operation on a matrix. + + The matrix to perform the operation on. + The exponent to raise the matrix to. + The exponential matrix. + Thrown when the is negative. + + + + Negates a matrix. + + The matrix to be negated. + When the method completes, contains the negated matrix. + + + + Negates a matrix. + + The matrix to be negated. + The negated matrix. + + + + Performs a linear interpolation between two matricies. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two matricies. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two matricies. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two matrices. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two matricies. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two matrices. + + + + Performs a cubic interpolation between two matrices. + + Start matrix. + End matrix. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two matrices. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + When the method completes, contains the transpose of the specified matrix. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + When the method completes, contains the transpose of the specified matrix. + + + + Calculates the transpose of the specified matrix. + + The matrix whose transpose is to be calculated. + The transpose of the specified matrix. + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + When the method completes, contains the inverse of the specified matrix. + + + + Calculates the inverse of the specified matrix. + + The matrix whose inverse is to be calculated. + The inverse of the specified matrix. + + + + Orthogonalizes the specified matrix. + + The matrix to orthogonalize. + When the method completes, contains the orthogonalized matrix. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthogonalizes the specified matrix. + + The matrix to orthogonalize. + The orthogonalized matrix. + + Orthogonalization is the process of making all rows orthogonal to each other. This + means that any given row in the matrix will be orthogonal to any other given row in the + matrix. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + The matrix to orthonormalize. + When the method completes, contains the orthonormalized matrix. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Orthonormalizes the specified matrix. + + The matrix to orthonormalize. + The orthonormalized matrix. + + Orthonormalization is the process of making all rows and columns orthogonal to each + other and making all rows and columns of unit length. This means that any given row will + be orthogonal to any other given row and any given column will be orthogonal to any other + given column. Any given row will not be orthogonal to any given column. Every row and every + column will be of unit length. + Because this method uses the modified Gram-Schmidt process, the resulting matrix + tends to be numerically unstable. The numeric stability decreases according to the rows + so that the first row is the most stable and the last row is the least stable. + This operation is performed on the rows of the matrix rather than the columns. + If you wish for this operation to be performed on the columns, first transpose the + input and than transpose the output. + + + + + Brings the matrix into upper triangular form using elementry row operations. + + The matrix to put into upper triangular form. + When the method completes, contains the upper triangular matrix. + + If the matrix is not invertable (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into upper triangular form using elementry row operations. + + The matrix to put into upper triangular form. + The upper triangular matrix. + + If the matrix is not invertable (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into lower triangular form using elementry row operations. + + The matrix to put into lower triangular form. + When the method completes, contains the lower triangular matrix. + + If the matrix is not invertable (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into lower triangular form using elementry row operations. + + The matrix to put into lower triangular form. + The lower triangular matrix. + + If the matrix is not invertable (i.e. its determinant is zero) than the result of this + method may produce Single.Nan and Single.Inf values. When the matrix represents a system + of linear equations, than this often means that either no solution exists or an infinite + number of solutions exist. + + + + + Brings the matrix into row echelon form using elementry row operations; + + The matrix to put into row echelon form. + When the method completes, contains the row echelon form of the matrix. + + + + Brings the matrix into row echelon form using elementry row operations; + + The matrix to put into row echelon form. + When the method completes, contains the row echelon form of the matrix. + + + + Brings the matrix into reduced row echelon form using elementry row operations. + + The matrix to put into reduced row echelon form. + The fifth column of the matrix. + When the method completes, contains the resultant matrix after the operation. + When the method completes, contains the resultant fifth column of the matrix. + + The fifth column is often called the agumented part of the matrix. This is because the fifth + column is really just an extension of the matrix so that there is a place to put all of the + non-zero components after the operation is complete. + Often times the resultant matrix will the identity matrix or a matrix similar to the identity + matrix. Sometimes, however, that is not possible and numbers other than zero and one may appear. + This method can be used to solve systems of linear equations. Upon completion of this method, + the will contain the solution for the system. It is up to the user + to analyze both the input and the result to determine if a solution really exists. + + + + + Creates a spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + When the method completes, contains the created billboard matrix. + + + + Creates a spherical billboard that rotates around a specified object position. + + The position of the object around which the billboard will rotate. + The position of the camera. + The up vector of the camera. + The forward vector of the camera. + The created billboard matrix. + + + + Creates a left-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at matrix. + + + + Creates a left-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at matrix. + + + + Creates a right-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + When the method completes, contains the created look-at matrix. + + + + Creates a right-handed, look-at matrix. + + The position of the viewer's eye. + The camera look-at target. + The camera's up vector. + The created look-at matrix. + + + + Creates a left-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, orthographic projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, customized orthographic projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, perspective projection matrix. + + Width of the viewing volume. + Height of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, perspective projection matrix based on a field of view. + + Field of view in the y direction, in radians. + Aspect ratio, defined as view space width divided by height. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a left-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a left-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Creates a right-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + When the method completes, contains the created projection matrix. + + + + Creates a right-handed, customized perspective projection matrix. + + Minimum x-value of the viewing volume. + Maximum x-value of the viewing volume. + Minimum y-value of the viewing volume. + Maximum y-value of the viewing volume. + Minimum z-value of the viewing volume. + Maximum z-value of the viewing volume. + The created projection matrix. + + + + Builds a matrix that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + When the method completes, contains the reflection matrix. + + + + Builds a matrix that can be used to reflect vectors about a plane. + + The plane for which the reflection occurs. This parameter is assumed to be normalized. + The reflection matrix. + + + + Creates a matrix that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + When the method completes, contains the shadow matrix. + + + + Creates a matrix that flattens geometry into a shadow. + + The light direction. If the W component is 0, the light is directional light; if the + W component is 1, the light is a point light. + The plane onto which to project the geometry as a shadow. This parameter is assumed to be normalized. + The shadow matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor for all three axes. + The created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that scales along the x-axis, y-axis, and y-axis. + + Scaling factor that is applied along the x-axis. + Scaling factor that is applied along the y-axis. + Scaling factor that is applied along the z-axis. + The created scaling matrix. + + + + Creates a matrix that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + When the method completes, contains the created scaling matrix. + + + + Creates a matrix that uniformally scales along all three axis. + + The uniform scale that is applied along all axis. + The created scaling matrix. + + + + Creates a matrix that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the x-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the y-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around the z-axis. + + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a matrix that rotates around an arbitary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + When the method completes, contains the created rotation matrix. + + + + Creates a matrix that rotates around an arbitary axis. + + The axis around which to rotate. This parameter is assumed to be normalized. + Angle of rotation in radians. Angles are measured clockwise when looking along the rotation axis toward the origin. + The created rotation matrix. + + + + Creates a rotation matrix from a quaternion. + + The quaternion to use to build the matrix. + The created rotation matrix. + + + + Creates a rotation matrix from a quaternion. + + The quaternion to use to build the matrix. + The created rotation matrix. + + + + Creates a rotation matrix with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + When the method completes, contains the created rotation matrix. + + + + Creates a rotation matrix with a specified yaw, pitch, and roll. + + Yaw around the y-axis, in radians. + Pitch around the x-axis, in radians. + Roll around the z-axis, in radians. + The created rotation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + The offset for all three coordinate planes. + The created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + When the method completes, contains the created translation matrix. + + + + Creates a translation matrix using the specified offsets. + + X-coordinate offset. + Y-coordinate offset. + Z-coordinate offset. + The created translation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 3D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created affine transformation matrix. + + + + Creates a 2D affine transformation matrix. + + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created affine transformation matrix. + + + + Creates a transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created transformation matrix. + + + + Creates a transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created transformation matrix. + + + + Creates a 2D transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + When the method completes, contains the created transformation matrix. + + + + Creates a 2D transformation matrix. + + Center point of the scaling operation. + Scaling rotation amount. + Scaling factor. + The center of the rotation. + The rotation of the transformation. + The translation factor of the transformation. + The created transformation matrix. + + + + Adds two matricies. + + The first matrix to add. + The second matrix to add. + The sum of the two matricies. + + + + Assert a matrix (return it unchanged). + + The matrix to assert (unchange). + The asserted (unchanged) matrix. + + + + Subtracts two matricies. + + The first matrix to subtract. + The second matrix to subtract. + The difference between the two matricies. + + + + Negates a matrix. + + The matrix to negate. + The negated matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Multiplies two matricies. + + The first matrix to multiply. + The second matrix to multiply. + The product of the two matricies. + + + + Scales a matrix by a given value. + + The matrix to scale. + The amount by which to scale. + The scaled matrix. + + + + Divides two matricies. + + The first matrix to divide. + The second matrix to divide. + The quotient of the two matricies. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Gets or sets the up of the matrix; that is M21, M22, and M23. + + + + + Gets or sets the down of the matrix; that is -M21, -M22, and -M23. + + + + + Gets or sets the right of the matrix; that is M11, M12, and M13. + + + + + Gets or sets the left of the matrix; that is -M11, -M12, and -M13. + + + + + Gets or sets the forward of the matrix; that is -M31, -M32, and -M33. + + + + + Gets or sets the backward of the matrix; that is M31, M32, and M33. + + + + + Gets or sets the first row in the matrix; that is M11, M12, M13, and M14. + + + + + Gets or sets the second row in the matrix; that is M21, M22, M23, and M24. + + + + + Gets or sets the third row in the matrix; that is M31, M32, M33, and M34. + + + + + Gets or sets the fourth row in the matrix; that is M41, M42, M43, and M44. + + + + + Gets or sets the first column in the matrix; that is M11, M21, M31, and M41. + + + + + Gets or sets the second column in the matrix; that is M12, M22, M32, and M42. + + + + + Gets or sets the third column in the matrix; that is M13, M23, M33, and M43. + + + + + Gets or sets the fourth column in the matrix; that is M14, M24, M34, and M44. + + + + + Gets or sets the translation of the matrix; that is M41, M42, and M43. + + + + + Gets or sets the scale of the matrix; that is M11, M22, and M33. + + + + + Gets a value indicating whether this instance is an identity matrix. + + + true if this instance is an identity matrix; otherwise, false. + + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The zero-based index of the component to access. + The value of the component at the specified index. + Thrown when the is out of the range [0, 15]. + + + + Gets or sets the component at the specified index. + + The value of the matrix component, depending on the index. + The row of the matrix to access. + The column of the matrix to access. + The value of the component at the specified index. + Thrown when the or is out of the range [0, 3]. + + + + Generic sound input stream supporting WAV (Pcm,Float), ADPCM, xWMA sound file formats. + + + + + Initializes a new instance of the class. + + The sound stream. + + + + Initializes the specified stream. + + The stream. + + + + Converts this stream to a DataStream by loading all the data from the source stream. + + + + + + Performs an implicit conversion from to . + + The stream. + + The result of the conversion. + + + + + When overridden in a derived class, clears all buffers for this stream and causes any buffered data to be written to the underlying device. + + + An I/O error occurs. + + + + + When overridden in a derived class, sets the position within the current stream. + + A byte offset relative to the parameter. + A value of type indicating the reference point used to obtain the new position. + + The new position within the current stream. + + + An I/O error occurs. + + + + The stream does not support seeking, such as if the stream is constructed from a pipe or console output. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, sets the length of the current stream. + + The desired length of the current stream in bytes. + + An I/O error occurs. + + + + The stream does not support both writing and seeking, such as if the stream is constructed from a pipe or console output. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, 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. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source. + The zero-based byte offset in 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. This can be less than the number of bytes requested if that many bytes are not currently available, or zero (0) if the end of the stream has been reached. + + + The sum of and is larger than the buffer length. + + + + is null. + + + + or is negative. + + + + An I/O error occurs. + + + + The stream does not support reading. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. + + An array of bytes. This method copies bytes from to the current stream. + The zero-based byte offset in at which to begin copying bytes to the current stream. + The number of bytes to be written to the current stream. + + The sum of and is greater than the buffer length. + + + + is null. + + + + or is negative. + + + + An I/O error occurs. + + + + The stream does not support writing. + + + + Methods were called after the stream was closed. + + + + + Gets the decoded packets info. + + + This property is only valid for XWMA stream. + + + + Gets the wave format of this instance. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports reading. + + true if the stream supports reading; otherwise, false. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports seeking. + + true if the stream supports seeking; otherwise, false. + + + + + When overridden in a derived class, gets a value indicating whether the current stream supports writing. + + true if the stream supports writing; otherwise, false. + + + + + When overridden in a derived class, gets or sets the position within the current stream. + + + The current position within the stream. + + + + An I/O error occurs. + + + + The stream does not support seeking. + + + + Methods were called after the stream was closed. + + + + + When overridden in a derived class, gets the length in bytes of the stream. + + + A long value representing the length of the stream in bytes. + + + + A class derived from Stream does not support seeking. + + + + Methods were called after the stream was closed. + + + + + WaveFormatAdpcm + http://msdn.microsoft.com/en-us/library/microsoft.directx_sdk.xaudio2.adpcmwaveformat%28v=vs.85%29.aspx + Additional documentation: http://icculus.org/SDL_sound/downloads/external_documentation/wavecomp.htm + + WAVEFORMATADPCM + + + + Represents a Wave file format + + WAVEFORMATEX + + + format type + + + number of channels + + + sample rate + + + for buffer estimation + + + block size of data + + + number of bits per sample of mono data + + + number of following bytes + + + + Creates a new PCM 44.1Khz stereo 16 bit format + + + + + Creates a new 16 bit wave format with the specified sample + rate and channel count + + Sample Rate + Number of channels + + + + Gets the size of a wave buffer equivalent to the latency in milliseconds. + + The milliseconds. + + + + + Creates a WaveFormat with custom members + + The encoding + Sample Rate + Number of channels + Average Bytes Per Second + Block Align + Bits Per Sample + + + + + Creates an A-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a Mu-law wave format + + Sample Rate + Number of Channels + Wave Format + + + + Creates a new PCM format with the specified sample rate, bit depth and channels + + + + + Creates a new 32 bit IEEE floating point wave format + + sample rate + number of channels + + + + Helper function to retrieve a WaveFormat structure from a pointer + + Buffer to the WaveFormat rawdata + WaveFormat structure + + + + Helper function to retrieve a WaveFormat structure from a pointer + + Pointer to the WaveFormat rawdata + WaveFormat structure + + + + Helper function to marshal WaveFormat to an IntPtr + + WaveFormat + IntPtr to WaveFormat structure (needs to be freed by callee) + + + + Reads a new WaveFormat object from a stream + + A binary reader that wraps the stream + + + + Reports this WaveFormat as a string + + String describing the wave format + + + + Compares with another WaveFormat object + + Object to compare to + True if the objects are the same + + + + Provides a Hashcode for this WaveFormat + + A hashcode + + + + Returns the encoding type used + + + + + Returns the number of channels (1=mono,2=stereo etc) + + + + + Returns the sample rate (samples per second) + + + + + Returns the average number of bytes used per second + + + + + Returns the block alignment + + + + + Returns the number of bits per sample (usually 16 or 32, sometimes 24 or 8) + Can be 0 for some codecs + + + + + Returns the number of extra bytes used by this waveformat. Often 0, + except for compressed formats which store extra data after the WAVEFORMATEX header + + + + number of following bytes + + + format type + + + number of channels + + + sample rate + + + for buffer estimation + + + block size of data + + + number of bits per sample of mono data + + + + Parameterless constructor for marshalling + + + + + Creates a new WaveFormatAdpcm for MicrosoftADPCM + + The rate. + The channels. + The block align. If 0, then 256 for [0, 11KHz], 512 for ]11KHz, 22Khz], 1024 for ]22Khz, +inf] + + + + Gets or sets the samples per block. + + + The samples per block. + + + + + Gets or sets the coefficients. + + + The coefficients. + + + + + Gets or sets the coefficients. + + + The coefficients. + + + + + A FourCC descriptor. + + + + + Empty FourCC. + + + + + Initializes a new instance of the struct. + + The fourCC value as a string . + + + + Initializes a new instance of the struct. + + The byte1. + The byte2. + The byte3. + The byte4. + + + + Initializes a new instance of the struct. + + The fourCC value as an uint. + + + + Initializes a new instance of the struct. + + The fourCC value as an int. + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + Performs an implicit conversion from to . + + The d. + + The result of the conversion. + + + + + A chunk of a Riff stream. + + + + + Initializes a new instance of the class. + + The stream holding this chunk + The type. + The size. + The data offset. + if set to true [is list]. + if set to true [is header]. + + + + Gets the raw data contained in this chunk. + + + + + + Gets structured data contained in this chunk. + + The type of the data to return + + A structure filled with the chunk data + + + + + Gets structured data contained in this chunk. + + The type of the data to return + A structure filled with the chunk data + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the type. + + + + + Gets the of this chunk. + + + + + Gets the size of the data enbedded by this chunk. + + + + + Gets the position of the data embedded by this chunk relative to the stream. + + + + + Gets or sets a value indicating whether this instance is a list chunk. + + + true if this instance is list; otherwise, false. + + + + + Gets a value indicating whether this instance is a header chunk. + + + true if this instance is a header; otherwise, false. + + + + + Riff chunk enumerator. + + + + + Initializes a new instance of the class. + + The input. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Advances the enumerator to the next element of 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, which is before the first element in the collection. + + + The collection was modified after the enumerator was created. + + + + + Ascends to the outer chunk. + + + + + Descends to the current chunk. + + + + + Gets all chunks. + + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Gets the current stack of chunks. + + + + + Gets the element in the collection at the current position of the enumerator. + + + The element in the collection at the current position of the enumerator. + + + + + Helper class for Speaker mask. + + + + + Counts the channels from a speaker mask. + + The speakers mask. + + + + + WaveFormatExtensible + http://www.microsoft.com/whdc/device/audio/multichaud.mspx + + WAVEFORMATEXTENSIBLE + + + + Guid of the subformat. + + + + + Speaker configuration + + + + + Parameterless constructor for marshalling + + + + + Creates a new WaveFormatExtensible for PCM or IEEE + + + + + String representation + + + + + The namespace contains fundamental classes used by SharpDX. + + + + + A general purpose tag attribute. + + + + + Initializes a new instance of class. + + + + + + Gets the value. + + + + + Overrides in order to provide for Win8 Modern App. + + + + + + Provides a basic implementation to replace (not available on Win8 Modern App). + + + + + The namespace provides missing ASCIIEncoding for Win8 Modern platform. + + + + + This provides timing information similar to but an update occuring only on a method. + + + + + Initializes a new instance of the class. + + + + + Resets this instance. is set to zero. + + + + + Resumes this instance, only if a call to has been already issued. + + + + + Update the and , + + + This method must be called on a regular basis at every *tick*. + + + + + Pauses this instance. + + + + + Converts a raw time to a . + + The delta. + The . + + + + Gets the total time elasped since the last reset or when this timer was created. + + + + + Gets the elapsed adjusted time since the previous call to taking into account time. + + + + + Gets the elapsed time since the previous call to . + + + + + Gets a value indicating whether this instance is paused. + + true if this instance is paused; otherwise, false. + + + + Defines the viewport dimensions. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Position of the pixel coordinate of the upper-left corner of the viewport. + + + + + Width dimension of the viewport. + + + + + Height dimension of the viewport. + + + + + Gets or sets the minimum depth of the clip volume. + + + + + Gets or sets the maximum depth of the clip volume. + + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + + + + Initializes a new instance of the struct. + + The x coordinate of the upper-left corner of the viewport in pixels. + The y coordinate of the upper-left corner of the viewport in pixels. + The width of the viewport in pixels. + The height of the viewport in pixels. + The minimum depth of the clip volume. + The maximum depth of the clip volume. + + + + Initializes a new instance of the struct. + + A bounding box that defines the location and size of the viewport in a render target. + + + + Retrieves a string representation of this object. + + A that represents this instance. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + Vector3. + + + + Converts a screen space point into a corresponding point in world space. + + The vector to project. + The projection matrix. + The view matrix. + The world matrix. + Vector3. + + + + Gets the size of this resource. + + The bounds. + + + + Gets the aspect ratio used by the viewport + + The aspect ratio. + + + + Internal class to interact with Native Message + + + + + Represents a plane in three dimensional space. + + + + + The normal vector of the plane. + + + + + The distance of the plane along its normal from the origin. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + The X component of the normal. + The Y component of the normal. + The Z component of the normal. + The distance of the plane along its normal from the origin. + + + + Initializes a new instance of the class. + + Any point that lies along the plane. + The normal vector to the plane. + + + + Initializes a new instance of the struct. + + The normal of the plane. + The distance of the plane along its normal from the origin + + + + Initializes a new instance of the struct. + + First point of a triangle defining the plane. + Second point of a triangle defining the plane. + Third point of a triangle defining the plane. + + + + Initializes a new instance of the struct. + + The values to assign to the A, B, C, and D components of the plane. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + + + + Creates an array containing the elements of the plane. + + A four-element array containing the components of the plane. + + + + Determines if there is an intersection between the current object and a point. + + The point to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the line of intersection + as a , or a zero ray if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triagnle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Scales the plane by the given scaling factor. + + The plane to scale. + The amount by which to scale the plane. + When the method completes, contains the scaled plane. + + + + Scales the plane by the given scaling factor. + + The plane to scale. + The amount by which to scale the plane. + The scaled plane. + + + + Calculates the dot product of the specified vector and plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of the specified plane and vector. + + + + Calculates the dot product of the specified vector and plane. + + The source plane. + The source vector. + The dot product of the specified plane and vector. + + + + Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of a specified vector and the normal of the Plane plus the distance value of the plane. + + + + Calculates the dot product of a specified vector and the normal of the plane plus the distance value of the plane. + + The source plane. + The source vector. + The dot product of a specified vector and the normal of the Plane plus the distance value of the plane. + + + + Calculates the dot product of the specified vector and the normal of the plane. + + The source plane. + The source vector. + When the method completes, contains the dot product of the specified vector and the normal of the plane. + + + + Calculates the dot product of the specified vector and the normal of the plane. + + The source plane. + The source vector. + The dot product of the specified vector and the normal of the plane. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + The source plane. + When the method completes, contains the normalized plane. + + + + Changes the coefficients of the normal vector of the plane to make it of unit length. + + The source plane. + The normalized plane. + + + + Transforms a normalized plane by a quaternion rotation. + + The normalized source plane. + The quaternion rotation. + When the method completes, contains the transformed plane. + + + + Transforms a normalized plane by a quaternion rotation. + + The normalized source plane. + The quaternion rotation. + The transformed plane. + + + + Transforms an array of normalized planes by a quaternion rotation. + + The array of normalized planes to transform. + The quaternion rotation. + Thrown when is null. + + + + Transforms a normalized plane by a matrix. + + The normalized source plane. + The transformation matrix. + When the method completes, contains the transformed plane. + + + + Transforms a normalized plane by a matrix. + + The normalized source plane. + The transformation matrix. + When the method completes, contains the transformed plane. + + + + Transforms an array of normalized planes by a matrix. + + The array of normalized planes to transform. + The transformation matrix. + Thrown when is null. + + + + Scales a plane by the given value. + + The amount by which to scale the plane. + The plane to scale. + The scaled plane. + + + + Scales a plane by the given value. + + The plane to scale. + The amount by which to scale the plane. + The scaled plane. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Gets or sets the component at the specified index. + + The value of the A, B, C, or D component, depending on the index. + The index of the component to access. Use 0 for the A component, 1 for the B component, 2 for the C component, and 3 for the D component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a four dimensional mathematical quaternion. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + A with all of its components set to one. + + + + + The identity (0, 0, 0, 1). + + + + + The X component of the quaternion. + + + + + The Y component of the quaternion. + + + + + The Z component of the quaternion. + + + + + The W component of the quaternion. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the components. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X, Y, and Z components. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the quaternion. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the quaternion. + Initial value for the Y component of the quaternion. + Initial value for the Z component of the quaternion. + Initial value for the W component of the quaternion. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the quaternion. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Conjugates the quaternion. + + + + + Conjugates and renormalizes the quaternion. + + + + + Calculates the length of the quaternion. + + The length of the quaternion. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the quaternion. + + The squared length of the quaternion. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the quaternion into a unit quaternion. + + + + + Creates an array containing the elements of the quaternion. + + A four-element array containing the components of the quaternion. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + When the method completes, contains the sum of the two quaternions. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + The sum of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + When the method completes, contains the difference of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + The difference of the two quaternions. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + When the method completes, contains the scaled quaternion. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Modulates a quaternion by another. + + The first quaternion to modulate. + The second quaternion to modulate. + When the moethod completes, contains the modulated quaternion. + + + + Modulates a quaternion by another. + + The first quaternion to modulate. + The second quaternion to modulate. + The modulated quaternion. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + When the method completes, contains a quaternion facing in the opposite direction. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + A quaternion facing in the opposite direction. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains a new containing the 4D Cartesian coordinates of the specified point. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 4D Cartesian coordinates of the specified point. + + + + Conjugates a quaternion. + + The quaternion to conjugate. + When the method completes, contains the conjugated quaternion. + + + + Conjugates a quaternion. + + The quaternion to conjugate. + The conjugated quaternion. + + + + Calculates the dot product of two quaternions. + + First source quaternion. + Second source quaternion. + When the method completes, contains the dot product of the two quaternions. + + + + Calculates the dot product of two quaternions. + + First source quaternion. + Second source quaternion. + The dot product of the two quaternions. + + + + Exponentiates a quaternion. + + The quaternion to exponentiate. + When the method completes, contains the exponentiated quaternion. + + + + Exponentiates a quaternion. + + The quaternion to exponentiate. + The exponentiated quaternion. + + + + Conjugates and renormalizes the quaternion. + + The quaternion to conjugate and renormalize. + When the method completes, contains the conjugated and renormalized quaternion. + + + + Conjugates and renormalizes the quaternion. + + The quaternion to conjugate and renormalize. + The conjugated and renormalized quaternion. + + + + Performs a linear interpolation between two quaternions. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two quaternions. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two quaternion. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two quaternions. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Calculates the natural logarithm of the specified quaternion. + + The quaternion whose logarithm will be calculated. + When the method completes, contains the natural logarithm of the quaternion. + + + + Calculates the natural logarithm of the specified quaternion. + + The quaternion whose logarithm will be calculated. + The natural logarithm of the quaternion. + + + + Converts the quaternion into a unit quaternion. + + The quaternion to normalize. + When the method completes, contains the normalized quaternion. + + + + Converts the quaternion into a unit quaternion. + + The quaternion to normalize. + The normalized quaternion. + + + + Creates a quaternion given a rotation and an axis. + + The axis of rotation. + The angle of rotation. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a rotation and an axis. + + The axis of rotation. + The angle of rotation. + The newly created quaternion. + + + + Creates a quaternion given a rotation matrix. + + The rotation matrix. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a rotation matrix. + + The rotation matrix. + The newly created quaternion. + + + + Creates a quaternion given a yaw, pitch, and roll value. + + The yaw of rotation. + The pitch of rotation. + The roll of rotation. + When the method completes, contains the newly created quaternion. + + + + Creates a quaternion given a yaw, pitch, and roll value. + + The yaw of rotation. + The pitch of rotation. + The roll of rotation. + The newly created quaternion. + + + + Interpolates between two quaternions, using spherical linear interpolation. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the spherical linear interpolation of the two quaternions. + + + + Interpolates between two quaternions, using spherical linear interpolation. + + Start quaternion. + End quaternion. + Value between 0 and 1 indicating the weight of . + The spherical linear interpolation of the two quaternions. + + + + Interpolates between quaternions, using spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Thrid source quaternion. + Fourth source quaternion. + Value between 0 and 1 indicating the weight of interpolation. + When the method completes, contains the spherical quadrangle interpolation of the quaternions. + + + + Interpolates between quaternions, using spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Thrid source quaternion. + Fourth source quaternion. + Value between 0 and 1 indicating the weight of interpolation. + The spherical quadrangle interpolation of the quaternions. + + + + Sets up control points for spherical quadrangle interpolation. + + First source quaternion. + Second source quaternion. + Third source quaternion. + Fourth source quaternion. + An array of three quaternions that represent control points for spherical quadrangle interpolation. + + + + Adds two quaternions. + + The first quaternion to add. + The second quaternion to add. + The sum of the two quaternions. + + + + Subtracts two quaternions. + + The first quaternion to subtract. + The second quaternion to subtract. + The difference of the two quaternions. + + + + Reverses the direction of a given quaternion. + + The quaternion to negate. + A quaternion facing in the opposite direction. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Scales a quaternion by the given value. + + The quaternion to scale. + The amount by which to scale the quaternion. + The scaled quaternion. + + + + Multiplies a quaternion by another. + + The first quaternion to multiply. + The second quaternion to multiply. + The multiplied quaternion. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Gets a value indicating whether this instance is equivalent to the identity quaternion. + + + true if this instance is an identity quaternion; otherwise, false. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets the angle of the quaternion. + + The quaternion's angle. + + + + Gets the axis components of the quaternion. + + The axis components of the quaternion. + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Represents a three dimensional line based on a point in space and a direction. + + + + + The position in three dimensional space where the ray starts. + + + + + The normalized direction in which the ray points. + + + + + Initializes a new instance of the struct. + + The position in three dimensional space of the origin of the ray. + The normalized direction of the ray. + + + + Determines if there is an intersection between the current object and a point. + + The point to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The ray to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The plane to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a triangle. + + The first vertex of the triangle to test. + The second vertex of the triangle to test. + The third vertex of the triangle to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The box to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + When the method completes, contains the distance of the intersection, + or 0 if there was no intersection. + Whether the two objects intersected. + + + + Determines if there is an intersection between the current object and a . + + The sphere to test. + When the method completes, contains the point of intersection, + or if there was no intersection. + Whether the two objects intersected. + + + + Calculates a world space from 2d screen coordinates. + + X coordinate on 2d screen. + Y coordinate on 2d screen. + . + Transformation . + Resulting . + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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 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. + + + + + 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. + + + + + 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. + + + + + + + + Define a Rectangle. This structure is slightly different from System.Drawing.Rectangle as It is + internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height. + Although automatic casting from a to System.Drawing.Rectangle is provided by this class. + + + + + An empty rectangle + + + + + Initializes a new instance of the struct. + + The left. + The top. + The right. + The bottom. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + 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. + + + + + Performs an implicit conversion from to . + + The input. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The input. + The result of the conversion. + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + + + + Gets or sets the left. + + The left. + + + + Gets or sets the top. + + The top. + + + + Gets or sets the right. + + The right. + + + + Gets or sets the bottom. + + The bottom. + + + + Gets or sets the left position. + + The left position. + + + + Gets or sets the top position. + + The top position. + + + + Gets or sets the width. + + The width. + + + + Gets or sets the height. + + The height. + + + + Define a RectangleF. This structure is slightly different from System.Drawing.RectangleF as It is + internally storing Left,Top,Right,Bottom instead of Left,Top,Width,Height. + Although automatic casting from a to System.Drawing.Rectangle is provided by this class. + + + + + An empty rectangle + + + + + Initializes a new instance of the struct. + + The left. + The top. + The right. + The bottom. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified point is inside . + + X point coordinate. + Y point coordinate. + true if point is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + Checks, if specified is inside . + + Coordinate . + true if is inside , otherwise false. + + + + 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. + + + + + Performs an implicit conversion from to . + + The input. + The result of the conversion. + + + + Rectangles the F. + + The input. + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + + + + Gets or sets the left. + + The left. + + + + Gets or sets the top. + + The top. + + + + Gets or sets the right. + + The right. + + + + Gets or sets the bottom. + + The bottom. + + + + Gets or sets the left position. + + The left position. + + + + Gets or sets the top position. + + The top position. + + + + Gets or sets the width. + + The width. + + + + Gets or sets the height. + + The height. + + + + Result structure for COM methods. + + + + + Initializes a new instance of the struct. + + The HRESULT error code. + + + + Initializes a new instance of the struct. + + The HRESULT error code. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The result. + The result of the conversion. + + + + Equalses the specified other. + + The other. + + + + + 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. + + + + + + + + Implements the operator ==. + + The left. + The right. + The result of the operator. + + + + Implements the operator !=. + + The left. + The right. + The result of the operator. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Checks the error. + + + + + Gets a from an . + + The exception + The associated result code + + + + Gets the result from win32 error. + + The win32Error. + A HRESULT. + + + + Result code Ok + + + + + Result code False + + + + + Result code Abord + + + + + Result code AccessDenied + + + + + Result code Fail + + + + + Resuld code Handle + + + + + Result code invalid argument + + + + + Result code no interface + + + + + Result code not implemented + + + + + Result code out of memory + + + + + Result code Invalid pointer + + + + + Unexpected failure + + + + + Gets the HRESULT error code. + + The HRESULT error code. + + + + Gets a value indicating whether this is success. + + true if success; otherwise, false. + + + + Gets a value indicating whether this is failure. + + true if failure; otherwise, false. + + + + The maximum number of bytes to which a pointer can point. Use for a count that must span the full range of a pointer. + Equivalent to Windows type SIZE_T. + + + + + Initializes a new instance of the struct. + + The size. + + + + Default constructor. + + value to set + + + + Default constructor. + + value to set + + + + Default constructor. + + value to set + + + + 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 hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + 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. + + + + + 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. + + + + + Adds two sizes. + + The first size to add. + The second size to add. + The sum of the two sizes. + + + + Assert a size (return it unchanged). + + The size to assert (unchange). + The asserted (unchanged) size. + + + + Subtracts two sizes. + + The first size to subtract. + The second size to subtract. + The difference of the two sizes. + + + + Reverses the direction of a given size. + + The size to negate. + A size facing in the opposite direction. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Scales a size by the given value. + + The size to scale. + The amount by which to scale the size. + The scaled size. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from void* to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to void*. + + The value. + The result of the conversion. + + + + A Delegate to get a property value from an object. + + Type of the getter + The obj to get the property from + The value to get + + + + A Delegate to set a property value to an object. + + Type of the setter + The obj to set the property from + The value to set + + + + Utility class. + + + + + Native memcpy. + + The destination memory location + The source memory location. + The count. + + + + + Compares two block of memory. + + The pointer to compare from. + The pointer to compare against. + The size in bytes to compare. + True if the buffers are equivalent, false otherwise. + + + + Clears the memory. + + The dest. + The value. + The size in bytes to clear. + + + + Return the sizeof a struct from a CLR. Equivalent to sizeof operator but works on generics too. + + a struct to evaluate + sizeof this struct + + + + Return the sizeof an array of struct. Equivalent to sizeof operator but works on generics too. + + a struct + The array of struct to evaluate. + sizeof in bytes of this array of struct + + + + Pins the specified source and call an action with the pinned pointer. + + The type of the structure to pin + The source. + The pin action to perform on the pinned pointer. + + + + Pins the specified source and call an action with the pinned pointer. + + The type of the structure to pin + The source array. + The pin action to perform on the pinned pointer. + + + + Covnerts a structured array to an equivalent byte array. + + + The source. + + + + + Reads the specified T data from a memory location. + + Type of a data to read + Memory location to read from. + The data read from the memory location + + + + Reads the specified T data from a memory location. + + Type of a data to read + Memory location to read from. + The data write to. + source pointer + sizeof(T) + + + + Reads the specified T data from a memory location. + + Type of a data to read + Memory location to read from. + The data write to. + source pointer + sizeof(T) + + + + Reads the specified T data from a memory location. + + Type of a data to read + Memory location to read from. + The data write to. + source pointer + sizeof(T) + + + + Reads the specified array T[] data from a memory location. + + Type of a data to read + Memory location to read from. + The data write to. + The offset in the array to write to. + The number of T element to read from the memory location + source pointer + sizeof(T) * count + + + + Writes the specified T data to a memory location. + + Type of a data to write + Memory location to write to. + The data to write. + destination pointer + sizeof(T) + + + + Writes the specified T data to a memory location. + + Type of a data to write + Memory location to write to. + The data to write. + destination pointer + sizeof(T) + + + + Writes the specified array T[] data to a memory location. + + Type of a data to write + Memory location to write to. + The array of T data to write. + The offset in the array to read from. + The number of T element to write to the memory location + destination pointer + sizeof(T) * count + + + + Converts to int array. + + The array. + + + + + Converts to bool array. + + The array. + + + + + Gets the from a type. + + The type. + The guid associated with this type + + + + Allocate an aligned memory buffer. + + Size of the buffer to allocate. + Alignment, 16 bytes by default. + A pointer to a buffer aligned. + + To free this buffer, call + + + + + Allocate an aligned memory buffer and clear it with a specified value (0 by defaault). + + Size of the buffer to allocate. + Default value used to clear the buffer. + Alignment, 16 bytes by default. + A pointer to a buffer aligned. + + To free this buffer, call + + + + + Determines whether the specified memory pointer is aligned in memory. + + The memory pointer. + The align. + true if the specified memory pointer is aligned in memory; otherwise, false. + + + + Allocate an aligned memory buffer. + + A pointer to a buffer aligned. + + The buffer must have been allocated with + + + + + Converts a pointer to a null-terminating string up to maxLength characters to a .Net string. + + The pointer to an ansi null string. + Maximum length of the string + + + + + Converts a pointer to a null-terminating string up to maxLength characters to a .Net string. + + The pointer to an unicode null string. + Maximum length of the string + + + + + Gets the IUnknown from object. Similar to but accept null object + by returning an IntPtr.Zero IUnknown pointer. + + The managed object. + an IUnknown pointer to a managed object + + + + Gets an object from an IUnknown pointer. Similar to but accept IntPtr.Zero + by returning a null object. + + an IUnknown pointer to a managed object + The managed object. + + + + String helper join method to display an array of object as a single string. + + The separator. + The array. + a string with array elements serparated by the seperator + + + + String helper join method to display an enumrable of object as a single string. + + The separator. + The enumerable. + a string with array elements serparated by the seperator + + + + String helper join method to display an enumrable of object as a single string. + + The separator. + The enumerable. + a string with array elements serparated by the seperator + + + + Converts a blob to a string. + + A blob. + A string extracted from a blob. + + + + Equivalent to IntPtr.Add method from 3.5+ .NET Framework. + + A native pointer + The offset to add (number of bytes) + + + + + Read stream to a byte[] buffer + + input stream + a byte[] buffer + + + + Read stream to a byte[] buffer + + input stream + length to read + a byte[] buffer + + + + Compares two collection, element by elements. + + A "from" enumerator. + A "to" enumerator. + True if lists are identical. False otherwise. + + + + Compares two collection, element by elements. + + A "from" enumerator. + A "to" enumerator. + True if lists are identical. False otherwise. + + + + Compares two collection, element by elements. + + The collection to compare from. + The colllection to compare to. + True if lists are identical (but no necessarely of the same time). False otherwise. + + + + Gets the custom attribute. + + Type of the custom attribute + The member info. + if set to true [inherited]. + The custom attribute or null if not found + + + + Gets the custom attributes. + + Type of the custom attribute + The member info. + if set to true [inherited]. + The custom attribute or null if not found + + + + Determines whether fromType can be assigned to toType. + + To type. + From type. + + true if [is assignable from] [the specified to type]; otherwise, false. + + + + + Determines whether the specified type to test is an enum. + + The type to test. + + true if the specified type to test is an enum; otherwise, false. + + + + + Determines whether the specified type to test is a valuetype. + + The type to test. + + true if the specified type to test is a valuetype; otherwise, false. + + + + + Builds a fast property getter from a type and a property info. + + Type of the getter + Type of the custom effect. + The property info to get the value from. + A compiled delegate + + + + Builds a fast property setter from a type and a property info. + + Type of the setter + Type of the custom effect. + The property info to set the value to. + A compiled delegate + + + + Suspends the current thread of a . + + The duration to sleep in milliseconds. + + + + Finds an explicit converstion between a source type and a target type + + Type of the source. + Type of the target. + The method to perform the conversion. null if not found + + + + Loads a native library. + + Name of the DLL. + If dll was not found + + + + + Gets the proc address of a dll. + + The handle. + The DLL function to import. + If the function was not found + + + +
    + Data to compute the hash from. + A hash value + + + Determines the concurrency model used for incoming calls to objects created by this thread. This concurrency model can be either apartment-threaded or multi-threaded. + + + + Initializes the thread for apartment-threaded object concurrency. + + + + + Initializes the thread for multi-threaded object concurrency. + + + + + Disables DDE for OLE1 support. + + + + + Trade memory for speed. + + + + + Represents a two dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0). + + + + + The Y unit (0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X and Y components of the vector. This must be an array with two elements. + Thrown when is null. + Thrown when contains more or less than two elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A two-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 2D Cartesian coordinates of the specified point. + + + + Returns a containing the 2D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 2D triangle. + + A containing the 2D Cartesian coordinates of vertex 1 of the triangle. + A containing the 2D Cartesian coordinates of vertex 2 of the triangle. + A containing the 2D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 2D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + When the method completes, contains the reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + The reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 2D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 2D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 2D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 2D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 2D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + Thrown when or is null. + Thrown when is shorter in length than . + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + When the method completes, contains the transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + The transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation on an array of vectors using the given . + + The array of coordinate vectors to trasnform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + When the method completes, contains the transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + The transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation on an array of vectors using the given . + + The array of normal vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Modulates a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchange). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets or sets the component at the specified index. + + The value of the X or Y component, depending on the index. + The index of the component to access. Use 0 for the X component and 1 for the Y component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 1]. + + + + Represents a three dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0). + + + + + The Y unit (0, 1, 0). + + + + + The Z unit (0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, and Z components of the vector. This must be an array with three elements. + Thrown when is null. + Thrown when contains more or less than three elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A three-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. + + A containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 3D Cartesian coordinates of the specified point. + + + + Returns a containing the 3D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 3D triangle. + + A containing the 3D Cartesian coordinates of vertex 1 of the triangle. + A containing the 3D Cartesian coordinates of vertex 2 of the triangle. + A containing the 3D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 3D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Calculates the cross product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains he cross product of the two vectors. + + + + Calculates the cross product of two vectors. + + First source vector. + Second source vector. + The cross product of the two vectors. + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + When the method completes, contains the vector in screen space. + + + + Projects a 3D vector from object space into screen space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + The vector in screen space. + + + + Projects a 3D vector from screen space into object space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + When the method completes, contains the vector in object space. + + + + Projects a 3D vector from screen space into object space. + + The vector to project. + The X position of the viewport. + The Y position of the viewport. + The width of the viewport. + The height of the viewport. + The minimum depth of the viewport. + The maximum depth of the viewport. + The combined world-view-projection matrix. + The vector in object space. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + When the method completes, contains the reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Returns the reflection of a vector off a surface that has the specified normal. + + The source vector. + Normal of the surface. + The reflected vector. + Reflect only gives the direction of a reflection off a surface, it does not determine + whether the original vector was close enough to the surface to hit it. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 3D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 3D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 3D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + Thrown when or is null. + Thrown when is shorter in length than . + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + When the method completes, contains the transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation using the given . + + The coordinate vector to transform. + The transformation . + The transformed coordinates. + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a coordinate transformation on an array of vectors using the given . + + The array of coordinate vectors to trasnform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A coordinate transform performs the transformation with the assumption that the w component + is one. The four dimensional vector obtained from the transformation operation has each + component in the vector divided by the w component. This forces the wcomponent to be one and + therefore makes the vector homogeneous. The homogeneous vector is often prefered when working + with coordinates as the w component can safely be ignored. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + When the method completes, contains the transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation using the given . + + The normal vector to transform. + The transformation . + The transformed normal. + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Performs a normal transformation on an array of vectors using the given . + + The array of normal vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + A normal transform performs the transformation with the assumption that the w component + is zero. This causes the fourth row and fourth collumn of the matrix to be unused. The + end result is a vector that is not translated, but all other transformation properties + apply. This is often prefered for normal vectors as normals purely represent direction + rather than location because normal vectors should not be translated. + + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Modulates a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchange). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, or Z component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, and 2 for the Z component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 2]. + + + + Represents a four dimensional mathematical vector. + + + + + The size of the type, in bytes. + + + + + A with all of its components set to zero. + + + + + The X unit (1, 0, 0, 0). + + + + + The Y unit (0, 1, 0, 0). + + + + + The Z unit (0, 0, 1, 0). + + + + + The W unit (0, 0, 0, 1). + + + + + A with all of its components set to one. + + + + + The X component of the vector. + + + + + The Y component of the vector. + + + + + The Z component of the vector. + + + + + The W component of the vector. + + + + + Initializes a new instance of the struct. + + The value that will be assigned to all components. + + + + Initializes a new instance of the struct. + + Initial value for the X component of the vector. + Initial value for the Y component of the vector. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X, Y, and Z components. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + A vector containing the values with which to initialize the X and Y components. + Initial value for the Z component of the vector. + Initial value for the W component of the vector. + + + + Initializes a new instance of the struct. + + The values to assign to the X, Y, Z, and W components of the vector. This must be an array with four elements. + Thrown when is null. + Thrown when contains more or less than four elements. + + + + Calculates the length of the vector. + + The length of the vector. + + may be preferred when only the relative length is needed + and speed is of the essence. + + + + + Calculates the squared length of the vector. + + The squared length of the vector. + + This method may be preferred to when only a relative length is needed + and speed is of the essence. + + + + + Converts the vector into a unit vector. + + + + + Creates an array containing the elements of the vector. + + A four-element array containing the components of the vector. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + When the method completes, contains the sum of the two vectors. + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + When the method completes, contains the difference of the two vectors. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + When the method completes, contains the modulated vector. + + + + Modulates a vector with another by performing component-wise multiplication. + + The first vector to modulate. + The second vector to modulate. + The modulated vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + When the method completes, contains the scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Reverses the direction of a given vector. + + The vector to negate. + When the method completes, contains a vector facing in the opposite direction. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + When the method completes, contains the 4D Cartesian coordinates of the specified point. + + + + Returns a containing the 4D Cartesian coordinates of a point specified in Barycentric coordinates relative to a 4D triangle. + + A containing the 4D Cartesian coordinates of vertex 1 of the triangle. + A containing the 4D Cartesian coordinates of vertex 2 of the triangle. + A containing the 4D Cartesian coordinates of vertex 3 of the triangle. + Barycentric coordinate b2, which expresses the weighting factor toward vertex 2 (specified in ). + Barycentric coordinate b3, which expresses the weighting factor toward vertex 3 (specified in ). + A new containing the 4D Cartesian coordinates of the specified point. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + When the method completes, contains the clamped value. + + + + Restricts a value to be within a specified range. + + The value to clamp. + The minimum value. + The maximum value. + The clamped value. + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the distance between two vectors. + + The first vector. + The second vector. + The distance between the two vectors. + + may be preferred when only the relative distance is needed + and speed is of the essence. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + When the method completes, contains the squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the squared distance between two vectors. + + The first vector. + The second vector. + The squared distance between the two vectors. + Distance squared is the value before taking the square root. + Distance squared can often be used in place of distance if relative comparisons are being made. + For example, consider three points A, B, and C. To determine whether B or C is further from A, + compare the distance between A and B to the distance between A and C. Calculating the two distances + involves two square roots, which are computationally expensive. However, using distance squared + provides the same information and avoids calculating two square roots. + + + + + Calculates the dot product of two vectors. + + First source vector + Second source vector. + When the method completes, contains the dot product of the two vectors. + + + + Calculates the dot product of two vectors. + + First source vector. + Second source vector. + The dot product of the two vectors. + + + + Converts the vector into a unit vector. + + The vector to normalize. + When the method completes, contains the normalized vector. + + + + Converts the vector into a unit vector. + + The vector to normalize. + The normalized vector. + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a linear interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The linear interpolation of the two vectors. + + This method performs the linear interpolation based on the following formula. + start + (end - start) * amount + Passing a value of 0 will cause to be returned; a value of 1 will cause to be returned. + + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + When the method completes, contains the cubic interpolation of the two vectors. + + + + Performs a cubic interpolation between two vectors. + + Start vector. + End vector. + Value between 0 and 1 indicating the weight of . + The cubic interpolation of the two vectors. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + When the method completes, contains the result of the Hermite spline interpolation. + + + + Performs a Hermite spline interpolation. + + First source position vector. + First source tangent vector. + Second source position vector. + Second source tangent vector. + Weighting factor. + The result of the Hermite spline interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + When the method completes, contains the result of the Catmull-Rom interpolation. + + + + Performs a Catmull-Rom interpolation using the specified positions. + + The first position in the interpolation. + The second position in the interpolation. + The third position in the interpolation. + The fourth position in the interpolation. + Weighting factor. + A vector that is the result of the Catmull-Rom interpolation. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the largest components of the source vectors. + + + + Returns a vector containing the largest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the largest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + When the method completes, contains an new vector composed of the smallest components of the source vectors. + + + + Returns a vector containing the smallest components of the specified vectors. + + The first source vector. + The second source vector. + A vector containing the smallest components of the source vectors. + + + + Orthogonalizes a list of vectors. + + The list of orthogonalized vectors. + The list of vectors to orthogonalize. + + Orthogonalization is the process of making all vectors orthogonal to each other. This + means that any given vector in the list will be orthogonal to any other given vector in the + list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Orthonormalizes a list of vectors. + + The list of orthonormalized vectors. + The list of vectors to orthonormalize. + + Orthonormalization is the process of making all vectors orthogonal to each + other and making all vectors of unit length. This means that any given vector will + be orthogonal to any other given vector in the list. + Because this method uses the modified Gram-Schmidt process, the resulting vectors + tend to be numerically unstable. The numeric stability decreases according to the vectors + position in the list so that the first vector is the most stable and the last vector is the + least stable. + + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 4D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given rotation. + + The vector to rotate. + The rotation to apply. + The transformed . + + + + Transforms an array of vectors by the given rotation. + + The array of vectors to transform. + The rotation to apply. + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + When the method completes, contains the transformed . + + + + Transforms a 4D vector by the given . + + The source vector. + The transformation . + The transformed . + + + + Transforms an array of 4D vectors by the given . + + The array of vectors to transform. + The transformation . + The array for which the transformed vectors are stored. + This array may be the same array as . + Thrown when or is null. + Thrown when is shorter in length than . + + + + Adds two vectors. + + The first vector to add. + The second vector to add. + The sum of the two vectors. + + + + Modulates a vector with another by performing component-wise multiplication equivalent to . + + The first vector to multiply. + The second vector to multiply. + The multiplication of the two vectors. + + + + Assert a vector (return it unchanged). + + The vector to assert (unchange). + The asserted (unchanged) vector. + + + + Subtracts two vectors. + + The first vector to subtract. + The second vector to subtract. + The difference of the two vectors. + + + + Reverses the direction of a given vector. + + The vector to negate. + A vector facing in the opposite direction. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Scales a vector by the given value. + + The vector to scale. + The amount by which to scale the vector. + The scaled vector. + + + + Tests for equality between two objects. + + The first value to compare. + The second value to compare. + true if has the same value as ; otherwise, false. + + + + Tests for inequality between two objects. + + The first value to compare. + The second value to compare. + true if has a different value than ; otherwise, false. + + + + 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. + + + + 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 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. + + + + + + + + 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. + + + + + 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. + + + + + Gets a value indicting whether this instance is normalized. + + + + + Gets or sets the component at the specified index. + + The value of the X, Y, Z, or W component, depending on the index. + The index of the component to access. Use 0 for the X component, 1 for the Y component, 2 for the Z component, and 3 for the W component. + The value of the component at the specified index. + Thrown when the is out of the range [0, 3]. + + + + Internal FontFileEnumerator callback + + + + + Internal FontFileEnumerator Callback + + + + HRESULT ISequentialStream::Read([Out, Buffer] void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbRead) + + + HRESULT ISequentialStream::Write([In, Buffer] const void* pv,[In] unsigned int cb,[Out, Optional] unsigned int* pcbWritten) + + + + Callbacks to pointer. + + The stream. + + + + HRESULT IStream::Seek([In] LARGE_INTEGER dlibMove,[In] SHARPDX_SEEKORIGIN dwOrigin,[Out, Optional] ULARGE_INTEGER* plibNewPosition) + + + HRESULT IStream::SetSize([In] ULARGE_INTEGER libNewSize) + + + HRESULT IStream::CopyTo([In] IStream* pstm,[In] ULARGE_INTEGER cb,[Out, Optional] ULARGE_INTEGER* pcbRead,[Out, Optional] ULARGE_INTEGER* pcbWritten) + + + HRESULT IStream::Commit([In] STGC grfCommitFlags) + + + HRESULT IStream::Revert() + + + HRESULT IStream::LockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + + + HRESULT IStream::UnlockRegion([In] ULARGE_INTEGER libOffset,[In] ULARGE_INTEGER cb,[In] LOCKTYPE dwLockType) + + + HRESULT IStream::Stat([Out] STATSTG* pstatstg,[In] STATFLAG grfStatFlag) + + + HRESULT IStream::Clone([Out] IStream** ppstm) + + + + Converts a win32 error code to a . + + The error code. + A HRESULT code + + + + Converts a win32 error code to a . + + The error code. + A HRESULT code + + + + The namespace contains common enumerations, structures and helper classes for Win32 low-level API. + + + + + Security attributes. + + SECURITY_ATTRIBUTES + + + + Length. + + + + + Descriptor. + + + + + Gets or sets a value indicating whether [inherit handle]. + + + true if [inherit handle]; otherwise, false. + + + + + Variant COM. + + PROPVARIANT + + + + Gets the type of the element. + + + The type of the element. + + + + + Gets the type. + + + + + Gets or sets the value. + + + The value. + + + + + Type of a simple variant value. + + + + + Type of a variant + + + + + Simple value + + + + + Vector value. + + + + + Array value. + + + + + By reference. + + + + + Reserved value. + + + + + The namespace contains basic controls used to render DirectX content. + + + + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/App.g.i.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/App.g.i.cs new file mode 100644 index 0000000..d471e95 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/App.g.i.cs @@ -0,0 +1,53 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "7C1D56873BFEA4A2E2780F7410D374AF" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class App : System.Windows.Application { + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/App.xaml", System.UriKind.Relative)); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..09ad1c24cf238409a034cc323013d5945507c0ad GIT binary patch literal 14295 zcmeI3|8^6{6~}FCHW)&SNlF4VsnRBGlDevmF&J9f8p}2g78psvq{y*HyCZqC*H*+IDO@F3xi-{j6ir))) z5-a9U<<^s$FWiT`Rgt?qyjPo^tZ73E+ zT;)qlt%gw&>-X^RRp$G0k9!MR^PuLpmiA*FQmgbu+`TBnx@as5pI>oV=n0R-ynQE~ z)z|BZ?=LGB@I9$^+m|Y=hHLNkTw9jDhyH#@Co4=fc-(ocoYXXrAE6Tcv1o)+@dB?i zh+;L=G1}K{U0U(yufHj+F1__VF}R8kUO9jCshp2~>bS3&1);bbOC`9z6nQaIWzLkl zv(DljeW}rR;zFck9TK8mT~@pybgWw42PV+5n3D*vp`xS0I6}G7cc~~tvCGv*gHIQP zj(pZ4VE==eqFqlPTvyWNT1&Nn){7W@g34u&aIchvu?TqfNPkVKl(cik8FQSGkuj8K zMn^{-{6+b%v*nhKc>txusJStzQGSJoTnRV71`%w}Jb(V0TcGDpnV;}=Ce-$g&aLHG ziLf!13$!bhFKXSHbMt?mIJa-JId|^X%$?bre0u)Q=G5!j@rE|lh8#ABE7mu>y3x^7 z6}6#7o!Mlg@;6+khCG2z71V|fohsx$+COxDf?EGMx_GzxrG|%DT}j|vHD$Fd6Xo)1iAPdb7t1?LMaxnxCt**mRrt6e ze3hHTZEyUg9;6F;Rc zUqW%UryFgzpSt5r;__s6IcK_=qtlmhdfeRb4vxl{3MNQ`6F;NdN%-{Fxk5#LPlSQz zkTXA?_k7=Z-yHFMK1t)VO7~nvq3j8W#w6C&1s{S5co?rJ;pL;S;ameZw$F_sY?2tc zo2#x24f#6Aht|mz+5=UWeGx6TT%Xf_*T|hWP53#Q@V6hM2}SOSBrt9G;Kvd}Il#uv zG~q)u;qMk_XQq7VP|)}bmyS~*bVuVCXvWJE8jWr%x?;$IZ*eMMQ-{5MjJ;`fA&QDD z6m{%i^ZSACd<1gSUeAw^H;Vo2UxK{>Hg0MlN{}-_gWRY4^S3^$b_{NFHa}g>>^gPe zsI@ePw|!^66EZM{?pLV1eoW;ZW1Kruad(;NRMZP2i`!j-^68>sSRaEWZL$iyDQM{^ zBm5$jHqcK1`0~OduWuYj8{0)#V>?4aTN~QTJc%gk>i8Dk#n%wm9Gcdm% zKC>MOF^tc_5EdD{6B0DI-vYNYeB6Mr5IHkbpzT_u1ra>UFfK}u`=)!p1MuLafJ;rV z?=wvi&Q|D}2ISEIX0ZV()y&@mW5IZ4!&qQ3L&Puq#&l^KEZ16>Qp;&TGXRmFJ7~H2 z0V_hgQ-UEntz+S8L^wl4=-oIqEjPfmU|I%n%^t+`b@s%V6)F9+pEtp*T9Yr$_c;)J zYlK28WC3E)S&-Yv@fL^{mZ5CyR(x4wzIbVNCx&+$ye(@zTzzaH^MKehBAtnS2N(-p zLnb?eS=x^j-d31b38Wx*fwZ?E803?Ls}{Y&GNSwgfZNu_>k*F)<&U6fs}zvv9o=eJ zmn!J0<2|eLr0%UN5eV{#QXBFo04=yHna&Wf#J@?f`AKnq2F{+l^0@W_v7@f{@E6b; z)`syh-jk|kM>7|!!mwUu@9>O*-UqB@t!GDIOHh{ls&8H!cGYwd`27>ZuZhM^yvM0D zoiBiH&#ySz`Ceap>7=-Qb95P83K`h(qbP1lp;?WYnjRru!5TzTP&Z z2OwG4(`S~b?PGK^Dh!n3vHzfOm?ha}{mVAmW!MW7R>)#1?M9KHzd%bYDs|Qnv_SMa zKo7y)vo3&M?iU(yVe0f6;1n0OEB#)0-{dNy2^J^UK)F8)(%tPNuxr9 zH`mJCO_YdR6H+fov}zRoPLTbp-qsSoWd}T~>wZ-E$la$tH>i2LkzKriTMk&S5fPvk^t#9Nr`~;pi@Wj{=wqF4@wT52CiN{cp$=ySJNw_h OE<3feo$rG-FMJ15*MxEa literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/GamePage.g.i.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/GamePage.g.i.cs new file mode 100644 index 0000000..f1b4bf4 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/GamePage.g.i.cs @@ -0,0 +1,63 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\GamePage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "681C6CB6E71AD5BC6B550FB8BC96BB1A" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using Microsoft.Phone.Controls; +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class GamePage : Microsoft.Phone.Controls.PhoneApplicationPage { + + internal System.Windows.Controls.DrawingSurfaceBackgroundGrid XnaSurface; + + internal System.Windows.Controls.StackPanel TitlePanel; + + internal System.Windows.Controls.Grid ContentPanel; + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/GamePage.xaml", System.UriKind.Relative)); + this.XnaSurface = ((System.Windows.Controls.DrawingSurfaceBackgroundGrid)(this.FindName("XnaSurface"))); + this.TitlePanel = ((System.Windows.Controls.StackPanel)(this.FindName("TitlePanel"))); + this.ContentPanel = ((System.Windows.Controls.Grid)(this.FindName("ContentPanel"))); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/ARM/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.cs new file mode 100644 index 0000000..b88e976 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.cs @@ -0,0 +1,53 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "A6C72ABFF2214A6696E4D582096F6E58" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class App : System.Windows.Application { + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/App.xaml", System.UriKind.Relative)); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.i.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.i.cs new file mode 100644 index 0000000..d471e95 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/App.g.i.cs @@ -0,0 +1,53 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\App.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "7C1D56873BFEA4A2E2780F7410D374AF" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class App : System.Windows.Application { + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/App.xaml", System.UriKind.Relative)); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.Resources.AppResources.resources b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.Resources.AppResources.resources new file mode 100644 index 0000000000000000000000000000000000000000..47be6337866ed029846eb05d2cd96048bfce24fe GIT binary patch literal 471 zcmZWm!A`SFeb#4=O*gK6ao=N4wzJsq!F+w)yT<|^2ElnHQU`NXU`t|1qmPE z2dH-s{))fgG%7K=ud_RwnVq-IzQ29E7)0~{#QkZicvA8>O|%R-T`-S>5lhRQq+ufC zXlR+IEYm0vjcTc!m1Q<{thD5YV69{jTc)draTFf$)K9KhG={ZWuoLd=R_fbTF7MUX z|2NY@MHBw%-e;A=rSd>FT)UNh`?>ku^IGA)(5@VwJS>|7R2g!oQI38eTD#Bze1*4I%+-0Fn2k&DPx&za8-Hy|= YedoAmtaSK7`H2^eFO`vJQ9S8?0yLU+(EtDd literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.FileListAbsolute.txt b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..b9081ca --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.FileListAbsolute.txt @@ -0,0 +1,31 @@ +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\ApplicationIcon.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\Tiles\FlipCycleTileLarge.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\Tiles\FlipCycleTileMedium.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\Tiles\FlipCycleTileSmall.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\Tiles\IconicTileMediumLarge.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Assets\Tiles\IconicTileSmall.png +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Connect4MonoGame.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Connect4MonoGame.pdb +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\AppManifest.xaml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Properties\WMAppManifest.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\Connect4MonoGame_Debug_x86.xap +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\MonoGame.Framework.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.Direct3D11.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.XAudio2.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.MediaFoundation.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.DXGI.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.Direct3D11.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.XAudio2.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.MediaFoundation.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\bin\WindowsPhone\x86\Debug\SharpDX.DXGI.xml +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.csprojResolveAssemblyReference.cache +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\App.g.cs +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\GamePage.g.cs +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.g.resources +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.Resources.AppResources.resources +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.csproj.GenerateResource.Cache +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.dll +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\Connect4MonoGame.pdb +C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\obj\x86\Debug\XapCacheFile.xml diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.GenerateResource.Cache b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/Connect4MonoGame.csproj.GenerateResource.Cache new file mode 100644 index 0000000000000000000000000000000000000000..3317066be3164913536ac67c5171eed647064f41 GIT binary patch literal 921 zcma)4UrXFT5Kn4yUUDZyK`hvZqx7NR5$+VxmqXeU|Db}cB7G>7O?HCI?PbGGB3?g1 zKTtnNpZm~H(C^UBgnGysiW8Wfo&C-H_Lm*UbsXmp8Lw>J7v#QNsMH!XSsA~tl$PW8O*ND1oBZb*vWRYy=*v? zy92Q!d}e#wO!5)%81h3XAeWG*3UGt>F}-C6H5VGIrG+jta(K8MdJWwBlPSkSAh8I~}O$3|?=iPP>Wg^r6?A1_h^2`v3m0f57U)u$I9W4BF&e7Q}iOK+6LlpfCu@ zMGWQ2R)^ds&4j6J3i$b5QOq|n&BT3F_ajiyB^PlAwurm1`J5g$j{$XB7_}`*)nmrL zzN6wsWJs}ec=r56_(f{Su1Y+$SXt=u)v?+U#hiV MKfbxEoMP+z1Hs(f`lbN%EINccXs!d`(r!z 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 MQ#;%FK4|m8cME!iDgXcg literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.cs new file mode 100644 index 0000000..574a5a8 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.cs @@ -0,0 +1,63 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\GamePage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "047CAC29914B16FD2FF8CB83F3288532" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using Microsoft.Phone.Controls; +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class GamePage : Microsoft.Phone.Controls.PhoneApplicationPage { + + internal System.Windows.Controls.DrawingSurfaceBackgroundGrid XnaSurface; + + internal System.Windows.Controls.StackPanel TitlePanel; + + internal System.Windows.Controls.Grid ContentPanel; + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/GamePage.xaml", System.UriKind.Relative)); + this.XnaSurface = ((System.Windows.Controls.DrawingSurfaceBackgroundGrid)(this.FindName("XnaSurface"))); + this.TitlePanel = ((System.Windows.Controls.StackPanel)(this.FindName("TitlePanel"))); + this.ContentPanel = ((System.Windows.Controls.Grid)(this.FindName("ContentPanel"))); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.i.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.i.cs new file mode 100644 index 0000000..574a5a8 --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/GamePage.g.i.cs @@ -0,0 +1,63 @@ +#pragma checksum "C:\Users\Gustavo\Source\Repos\CSharpForFun\WindowsPhone\Connect4MonoGame\Connect4MonoGame\GamePage.xaml" "{406ea660-64cf-4c82-b6f0-42d48172a799}" "047CAC29914B16FD2FF8CB83F3288532" +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34003 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +using Microsoft.Phone.Controls; +using System; +using System.Windows; +using System.Windows.Automation; +using System.Windows.Automation.Peers; +using System.Windows.Automation.Provider; +using System.Windows.Controls; +using System.Windows.Controls.Primitives; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Interop; +using System.Windows.Markup; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Media.Imaging; +using System.Windows.Resources; +using System.Windows.Shapes; +using System.Windows.Threading; + + +namespace Connect4MonoGame { + + + public partial class GamePage : Microsoft.Phone.Controls.PhoneApplicationPage { + + internal System.Windows.Controls.DrawingSurfaceBackgroundGrid XnaSurface; + + internal System.Windows.Controls.StackPanel TitlePanel; + + internal System.Windows.Controls.Grid ContentPanel; + + private bool _contentLoaded; + + /// + /// InitializeComponent + /// + [System.Diagnostics.DebuggerNonUserCodeAttribute()] + public void InitializeComponent() { + if (_contentLoaded) { + return; + } + _contentLoaded = true; + System.Windows.Application.LoadComponent(this, new System.Uri("/Connect4MonoGame;component/GamePage.xaml", System.UriKind.Relative)); + this.XnaSurface = ((System.Windows.Controls.DrawingSurfaceBackgroundGrid)(this.FindName("XnaSurface"))); + this.TitlePanel = ((System.Windows.Controls.StackPanel)(this.FindName("TitlePanel"))); + this.ContentPanel = ((System.Windows.Controls.Grid)(this.FindName("ContentPanel"))); + } + } +} + diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TempPE/Resources.AppResources.Designer.cs.dll b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TempPE/Resources.AppResources.Designer.cs.dll new file mode 100644 index 0000000000000000000000000000000000000000..4914fee58af4d3080f997546fa8e73a03bd442d1 GIT binary patch literal 5120 zcmeHKU2Ggz75-*+vtHZrQg2EWr4@|pq;;HT<0u9-2*P^3wqs<+sdtl7sFcj^-mC}B z&MY&tiH%C-iuR#Al+uU1psG?|sQN;MB2-19&?o3aqY8>ZeL_M=2q964JXKZG@7$gJ z@ed?CAR)DP_MW-t-0z-y&bjxVxx4(W7mxsuWW9YGc!O^#c}@Q_*<^R-i#Ia3KKRbq z8^+Q*W92m`w3>lm5A23jwLQ;|tctRNmS;JhRa_}q4Zo&xBO^nHV%6v7fF&b=Q^$Y5 z+L`UoFvo_CVPG#MskZd&B;OWmo)x%9x6QWQA`ts^*(9Z0N&@+31uDPZJ7z`1^3f4s zMH+d^B@o-orM4N{#dqW_Al(N_lRwkP=OVQpkuMLCuuuCM+f7av3%HaE!k|h{+m>fT z9L=!yl{~G_106{G zpM;Iig>VyS`0b!)4v(i`*DWxv*P z)oHA%&~F7*73OA|%^p)!p;Px%kgJBdn(Ly!6SKbOscJO6?0f!#-B7viI5fhlAGl5h zrHwFB4XjkYLuAbL;W{IhZO^W&06}a9`3`u2$HI1<@7a;#dzfvxQ7cf3-etcFj%CPI zBR@c0MHjcL6XmzCFAWC*mlV?)Qjt#fvy-T8LR)mGUz&n|OZvE7#H1aGzFMGjYH)^9W& zR|O>%TyeO{TsskHH&&Hvuj^Jg6ESC1T9HCLP+;t;IIa_I^!46xw{#4c<;|k#H@XI3 zL2*0Tk*Y~gPh)$Z3hnH zc$$=pxtha`SP1;9pM-ZA)4^OXrT*?zuSY2SwLiwjHmXe3jA(TY7IFrVf4E z-l^p?$^U-@br& z^ZK;9Mf)SJ{MIP;;wP~L@81&h8G0HL+2E?V^vJs7IElxnu2}8=b?3hFsq_3ZhZ%uS E06EXbhX4Qo literal 0 HcmV?d00001 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs new file mode 100644 index 0000000..e69de29 diff --git a/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/XapCacheFile.xml b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/XapCacheFile.xml new file mode 100644 index 0000000..0a6c0da --- /dev/null +++ b/WindowsPhone/Connect4MonoGame/Connect4MonoGame/obj/x86/Debug/XapCacheFile.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- 2.1.4
    + Compute a FNV1-modified Hash from Fowler/Noll/Vo Hash improved version. +

    VoABp?C+B-fUd884`RP-nH;Cv#g0k|Q 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